diff options
Diffstat (limited to 'vm_exec.h')
-rw-r--r-- | vm_exec.h | 12 |
1 files changed, 9 insertions, 3 deletions
@@ -66,6 +66,9 @@ error ! #define NEXT_INSN() return reg_cfp; +#define START_OF_ORIGINAL_INSN(x) /* ignore */ +#define DISPATCH_ORIGINAL_INSN(x) return LABEL(x)(ec, reg_cfp); + /************************************************/ #elif OPT_TOKEN_THREADED_CODE || OPT_DIRECT_THREADED_CODE /* threaded code with gcc */ @@ -95,10 +98,8 @@ error ! #else #define DISPATCH_ARCH_DEPEND_WAY(addr) \ /* do nothing */ - #endif - /**********************************/ #if OPT_DIRECT_THREADED_CODE @@ -134,6 +135,9 @@ error ! #define NEXT_INSN() TC_DISPATCH(__NEXT_INSN__) +#define START_OF_ORIGINAL_INSN(x) start_of_##x: +#define DISPATCH_ORIGINAL_INSN(x) goto start_of_##x; + /************************************************/ #else /* no threaded code */ /* most common method */ @@ -145,7 +149,6 @@ case BIN(insn): DEBUG_END_INSN(); \ break; - #define INSN_DISPATCH() \ while (1) { \ switch (GET_CURRENT_INSN()) { @@ -159,6 +162,9 @@ default: \ #define NEXT_INSN() goto first +#define START_OF_ORIGINAL_INSN(x) start_of_##x: +#define DISPATCH_ORIGINAL_INSN(x) goto start_of_##x; + #endif #define VM_SP_CNT(ec, sp) ((sp) - (ec)->vm_stack) |