How can the Codec affect whether F_CALL_BUILTIN or F_CALL_OTHER opcodes are generated by the compiler? When the Codec is called, the program is already compiled, no?
/ Marcus Comstedt (ACROSS) (Hail Ilpalazzo!)
Previous text:
2004-07-04 12:19: Subject: Re: Warnings from startup script
Stephen R. van den Berg wrote:
The check is there for a reason...
Hint: Check the macro DO_CALL_BUILTIN in interpret_functions.h. What do you think happens if s->subtype isn't FUNCTION_BUILTIN?
The logfiles are cleaner as long as those werrors aren't called...
Ok, fair enough. I'll exercise some of these, and will let you know what happens.
I tried it. You were right. It segfaults upon execution of the aliased werror.
The reason is that the compiler emits different code for true efuns than for regular functions (ie methods).
In the runtime-compiled version, it doesn't segfault.
Naturally, since you will get different byte code in that case.
I'm not sure what this implies; that the static compiler is at fault here (indeed, the encode routine, most likely)?
The reasons why I suspect the change is correct anyway, is because:
- All we feed it is: add_constant("werror", roxen_werror);
Yes, but you don't adapt the Codec to correct for the change.
I presume this still is correct (given that the run-time compiler works fine with it, I'd say yes). So, what needs to be fixed instead then?
You need to provide the codec with a way to find the true werror efun.
Sincerely, srb@cuci.nl Stephen R. van den Berg (AKA BuGless).
/ Henrik Grubbström (Lysator)