1 m4_define(«PPI_Quote»,««««$1»»»»)
2 m4_define(«PP_CXX_VMA_BEGIN»,«m4_dnl
3 «»m4_define(«PPI_BC_Instr_Count»,0)m4_dnl
4 «»PP_FOR_EACH_INSTR(«m4_dnl
5 «»«»m4_define(m4_defn(«PP_INSTR_NAME»),«m4_dnl
6 «»«»«»m4_define(«PPI_BC_Instr»PPI_BC_Instr_Count«_Instr»,»PPI_Quote(m4_defn(«PP_INSTR_NAME»))«)m4_dnl
7 «»«»«»m4_define(«PPI_BC_Instr»PPI_BC_Instr_Count«_Init»,$»«1)m4_dnl
8 «»«»«»m4_define(«PPI_BC_Instr_Count»,m4_incr(PPI_BC_Instr_Count))m4_dnl
12 m4_define(«PPI_For_Each_BC_Instr»,«m4_dnl
13 «»m4_define(«PPI_BC_Instr»,m4_defn(«PPI_BC_Instr$1_Instr»))m4_dnl
14 «»m4_define(«PPI_BC_Init»,m4_defn(«PPI_BC_Instr$1_Init»))m4_dnl
16 m4_ifelse(«$1»,«$2»,«»,«PPI_For_Each_BC_Instr(m4_incr($1),«$2»,«$3»)»)m4_dnl
18 m4_define(«PPI_FOR_EACH_BC_INSTR»,«m4_dnl
19 PPI_For_Each_BC_Instr(0,m4_decr(PPI_BC_Instr_Count),«$1»)
21 m4_define(«PP_CXX_VMA_END»,«m4_dnl
22 «void »$1«(VM &vm, Node& target, size_t arity, size_t numG){
23 target.vt=&codeBlockVT;
25 PPI_FOR_EACH_BC_INSTR(«m4_dnl
26 «+sizeof(s_»PPI_BC_Instr«)»m4_dnl
29 target.c.ptr=operator new(sizeof(CodeBlockHeader)+size, vm);
30 CodeBlockHeader* h=(CodeBlockHeader*)target.c.ptr;
34 Instr* w=(Instr*)(h+1);
36 PPI_FOR_EACH_BC_INSTR(«m4_dnl
38 s_«»PPI_BC_Instr &i=*(s_«»PPI_BC_Instr*)w;
39 i.instr=vm.instrTable[I_«»PPI_BC_Instr];
42 w+=sizeof(s_«»PPI_BC_Instr)/sizeof(Instr);