1.1 --- a/sourcepawn/vm/jit/x86/jit_x86.cpp Wed Sep 20 04:52:13 2006 +0000
1.2 +++ b/sourcepawn/vm/jit/x86/jit_x86.cpp Wed Sep 20 07:07:49 2006 +0000
1.3 @@ -830,7 +830,6 @@
1.4 //add ebp, 4
1.5 IA32_Mov_Reg_Rm(jit, AMX_REG_PRI, AMX_REG_STK, MOD_MEM_REG);
1.6 IA32_Add_Rm_Imm8(jit, AMX_REG_STK, 4, MOD_REG);
1.7 -
1.8 }
1.9
1.10 inline void WriteOp_Pop_Alt(JitWriter *jit)
1.11 @@ -1049,16 +1048,6 @@
1.12 } else if (op_c == -1) {
1.13 switch (op)
1.14 {
1.15 - case OP_SYSREQ_C:
1.16 - case OP_SYSREQ_PRI:
1.17 - case OP_SYSREQ_N:
1.18 - {
1.19 - if (!data->always_inline)
1.20 - {
1.21 - reloc_count++;
1.22 - }
1.23 - break;
1.24 - }
1.25 case OP_CASETBL:
1.26 {
1.27 ucell_t num = *(ucell_t *)cip;
1.28 @@ -1083,14 +1072,30 @@
1.29 *********************************************/
1.30
1.31 JitWriter writer;
1.32 + JitWriter *jit = &writer;
1.33 + cell_t *endptr = (cell_t *)(end_cip);
1.34 + jitoffs_t jit_return;
1.35
1.36 + /* Initial code is written "blank,"
1.37 + * so we can check the exact memory usage.
1.38 + */
1.39 writer.inptr = (cell_t *)code;
1.40 writer.outptr = NULL;
1.41 writer.outbase = NULL;
1.42
1.43 -//redo_pass:
1.44 - cell_t *endptr = (cell_t *)(end_cip);
1.45 - JitWriter *jit = &writer;
1.46 + /* Get inlining level */
1.47 + int inline_level = data->inline_level;
1.48 + bool never_inline = false;
1.49 +
1.50 + if (inline_level == 0)
1.51 + {
1.52 + never_inline = true;
1.53 + }
1.54 +
1.55 +//:TODO: Jump back here once finished!
1.56 + /* Start writing the actual code */
1.57 + jit_return = Write_Execute_Function(jit, never_inline);
1.58 +
1.59 for (; writer.inptr <= endptr;)
1.60 {
1.61 op = (OPCODE)writer.read_cell();