Branch: Tag:

2017-02-21

2017-02-21 20:41:13 by Martin Karlgren <marty@roxen.com>

Inline the F_CATCH opcode (on AMD64 so far).

This is a prerequisite for MACHINE_CODE_STACK_FRAMES, since
inter_return_opcode_F_CATCH will "inject" itself on the C stack when the first
F_CATCH opcode is encountered (and won't vanish until inter return, which may
occur in an outer Pike frame).

23:   #include "gc.h"   #include "pike_types.h"   #include "sprintf.h" + #include "pikecode.h"      /* __attribute__ only applies to function declarations, not    definitions, so we disable them here. */
222:    accept_unfinished_type_fields--;   #endif    + #ifndef OPCODE_INLINE_CATCH    if (Pike_interpreter.catch_ctx &&    &Pike_interpreter.catch_ctx->recovery == Pike_interpreter.recoveries) {    /* This is a phony recovery made in F_CATCH that hasn't been passed
233:    LOW_LONGJMP (*Pike_interpreter.catching_eval_jmpbuf, 1);    }    else + #endif /* OPCODE_INLINE_CATCH */    LOW_LONGJMP(Pike_interpreter.recoveries->recovery,1);   }