sourcepawn/vm/jit/x86/jit_x86.cpp
changeset 74 935d64738275
parent 73 9d08f3f63830
child 75 55682fa202ea
     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();