| /* normal engine */ |
/* normal engine */ |
| #define VARIANT(v) (v) |
#define VARIANT(v) (v) |
| #define JUMP(target) goto I_noop |
#define JUMP(target) goto I_noop |
| #define LABEL(name) I_##name: |
#define LABEL(name) H_##name: I_##name: |
| |
|
| #elif ENGINE==2 |
#elif ENGINE==2 |
| /* variant with padding between VM instructions for finding out |
/* variant with padding between VM instructions for finding out |
| #define engine engine2 |
#define engine engine2 |
| #define VARIANT(v) (v) |
#define VARIANT(v) (v) |
| #define JUMP(target) goto I_noop |
#define JUMP(target) goto I_noop |
| #define LABEL(name) SKIP16; I_##name: |
#define LABEL(name) H_##name: SKIP16; I_##name: |
| #define IN_ENGINE2 |
#define IN_ENGINE2 |
| |
|
| #elif ENGINE==3 |
#elif ENGINE==3 |
| #define engine engine3 |
#define engine engine3 |
| #define VARIANT(v) ((v)^0xffffffff) |
#define VARIANT(v) ((v)^0xffffffff) |
| #define JUMP(target) goto K_lit |
#define JUMP(target) goto K_lit |
| #define LABEL(name) I_##name: |
#define LABEL(name) H_##name: I_##name: |
| #else |
#else |
| #error illegal ENGINE value |
#error illegal ENGINE value |
| #endif /* ENGINE */ |
#endif /* ENGINE */ |
| #undef INST_ADDR |
#undef INST_ADDR |
| (Label)&&after_last, |
(Label)&&after_last, |
| (Label)&&before_goto, |
(Label)&&before_goto, |
| (Label)&&after_goto |
(Label)&&after_goto, |
| |
/* just mention the H_ labels, so the SKIP16s are not optimized away */ |
| |
#define INST_ADDR(name) ((Label)&&H_##name) |
| |
#include PRIM_LAB_I |
| |
#undef INST_ADDR |
| }; |
}; |
| #ifdef CPU_DEP2 |
#ifdef CPU_DEP2 |
| CPU_DEP2 |
CPU_DEP2 |
| CPU_DEP3 |
CPU_DEP3 |
| #endif |
#endif |
| |
|
| before_goto: |
|
| goto *real_ca; |
|
| after_goto: |
|
| |
|
| #include PRIM_I |
#include PRIM_I |
| after_last: return (Label *)0; |
after_last: return (Label *)0; |
| /*needed only to get the length of the last primitive */ |
/*needed only to get the length of the last primitive */ |
| |
|
| |
before_goto: |
| |
goto *real_ca; |
| |
after_goto: |
| |
return (Label *)0; |
| } |
} |