merged branch-1.1.0 back into trunk

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401960
This commit is contained in:
David Anderson
2008-03-26 03:52:37 +00:00
parent 3bcd296d99
commit c5af41d983
52 changed files with 8062 additions and 39 deletions
+22
View File
@@ -1209,6 +1209,28 @@ inline void WriteOp_Stack(JitWriter *jit)
}
}
inline void WriteOp_StackAdjust(JitWriter *jit)
{
cell_t val = jit->read_cell();
assert(val <= 0);
//lea edi, [ebx-val]
if (val < SCHAR_MAX && val > SCHAR_MIN)
{
IA32_Lea_DispRegImm8(jit, AMX_REG_STK, AMX_REG_FRM, val);
}
else
{
IA32_Lea_DispRegImm32(jit, AMX_REG_STK, AMX_REG_FRM, val);
}
/* We assume the compiler has generated good code --
* That is, we do not bother validating this amount!
*/
}
inline void WriteOp_Heap(JitWriter *jit)
{
//mov edx, [esi+hea]
+5 -22
View File
@@ -124,8 +124,8 @@ typedef enum
OP_LOAD_ALT, //~!VERIFIED (load.pri)
OP_LOAD_S_PRI, //VERIFIED
OP_LOAD_S_ALT, //VERIFIED
OP_LREF_PRI, // !GEN :TODO: we will need this for dynarrays
OP_LREF_ALT, // !GEN :TODO: we will need this for dynarrays
OP_LREF_PRI, //VERIFIED
OP_LREF_ALT, //~VERIFIED
OP_LREF_S_PRI, //VERIFIED
OP_LREF_S_ALT, //~VERIFIED (lref.s.pri)
OP_LOAD_I, //VERIFIED
@@ -138,8 +138,8 @@ typedef enum
OP_STOR_ALT, //~VERIFIED (stor.pri)
OP_STOR_S_PRI, //VERIFIED
OP_STOR_S_ALT, //~VERIFIED (stor.s.pri)
OP_SREF_PRI, // !GEN :TODO: we will need this for dynarrays
OP_SREF_ALT, // !GEN :TODO: we will need this for dynarrays
OP_SREF_PRI, //VERIFIED
OP_SREF_ALT, //~VERIFIED
OP_SREF_S_PRI, //VERIFIED
OP_SREF_S_ALT, //~VERIFIED (stor.s.alt)
OP_STOR_I, //VERIFIED
@@ -286,6 +286,7 @@ typedef enum
OP_GENARRAY, //VERIFIED
OP_GENARRAY_Z, //-VERIFIED (not tested for 1D arrays)
OP_STRADJUST_PRI, //VERIFIED
OP_STACKADJUST, //:TODO: VERIFY
OP_FABS, //VERIFIED
OP_FLOAT, //VERIFIED
OP_FLOATADD, //VERIFIED
@@ -301,22 +302,4 @@ typedef enum
OP_NUM_OPCODES
} OPCODE;
/*
* :TODO: List of ASM Opts
* from jit_x86.cpp
* DONE: Rest of opcodes including the SYSREQ.N inlined version (rev2)
* Including genarray and the 2 tracker ones
* DONE: ALL ungen opcodes (rev1)
* from opcode_helpers.cpp
* DONE: SYSREQ.N .C (rev2)
* MACRO OPCODES (rev2)
* ERROR CHECKS\{VERIFY ADDR} (rev2)
* ARRAY STUFF
* TODO: BrkDebug
* EXEC FUNCTION
* VERIFY ADDR
*
* Oh and ALIGN to 16BYTES all stuff that is called via CALL and frequently used jump labels like what's done with PROC.
*/
#endif //_INCLUDE_SOURCEPAWN_JIT_X86_OPCODE_INFO_H_
+5
View File
@@ -748,6 +748,11 @@
WriteOp_FloatCompare(jit);
break;
}
case OP_STACKADJUST:
{
WriteOp_StackAdjust(jit);
break;
}
#if defined USE_UNGEN_OPCODES
#include "ungen_opcode_switch.inc"
#endif