Back to index

plt-scheme  4.2.1
Classes | Defines
core.h File Reference

Go to the source code of this file.

Classes

struct  jit_local_state

Defines

#define JIT_FP   _EBP
#define JIT_SP   _ESP
#define JIT_RET   _EAX
#define JIT_R_NUM   3
#define JIT_V_NUM   3
#define JIT_R(i)   (_EAX + (i))
#define JIT_V(i)   ((i) == 0 ? _EBX : _ESI + (i) - 1)
#define jit_opr_(d, s1, s2, op1d, op2d)
#define jit_qopr_(d, s1, s2, op1d, op2d)
#define jit_op_(d, s1, op2d)   ((s1 == d) ? op2d : (MOVLrr(s1, d), op2d))
#define jit_qop_(d, s1, op2d)   ((s1 == d) ? op2d : (MOVQrr(s1, d), op2d))
#define jit_opo_(d, s1, s2, op1d, op2d, op12d)
#define jit_opi_(d, rs, opdi, opdri)   ((rs == d) ? opdi : opdri)
#define jit_replace(rd, rs, forced, op)
#define jit_replace8(d, op)
#define jit_bool_r(d, s1, s2, op)   (CMPLrr(s2, s1), jit_replace8(d, op))
#define jit_bool_i(d, rs, is, op)   (CMPLir(is, rs), jit_replace8(d, op))
#define jit_bool_i0(d, rs, is, op, op0)
#define jit_bra_r(s1, s2, op)   (CMPLrr(s2, s1), op, _jit.x.pc)
#define jit_bra_qr(s1, s2, op)   (CMPQrr(s2, s1), op, _jit.x.pc)
#define jit_bra_i(rs, is, op)   (CMPLir(is, rs), op, _jit.x.pc)
#define _jit_bra_l(rs, is, op)   (CMPQir(is, rs), op, _jit.x.pc)
#define jit_bra_l(rs, is, op)   _jit_bra_l(rs, is, op)
#define jit_bra_i0(rs, is, op, op0)   ( (is) == 0 ? (TESTLrr(rs, rs), op0, _jit.x.pc) : (CMPLir(is, rs), op, _jit.x.pc))
#define jit_bra_l0(rs, is, op, op0)   ( (is) == 0 ? (TESTQrr(rs, rs), op0, _jit.x.pc) : jit_bra_l(rs, is, op))
#define jit_check8(rs)   ( (rs) <= _EBX )
#define jit_reg8(rs)   ( ((rs) == _SI || (rs) == _DI) ? _AL : ((rs) & _BH) | _AL )
#define jit_reg16(rs)   ( ((rs) & _BH) | _AX )
#define jit_movbrm(rs, dd, db, di, ds)
#define JIT_CAN_16   1
#define jit_reduce_(op)   op
#define jit_reduce(op, is, rs)
#define jit_reduceQ(op, is, rs)
#define jit_might(d, s1, op)   ((s1 == d) ? 0 : op)
#define jit_mulr_ui_(s1, s2)   jit_opr_(_EAX, s1, s2, MULLr(s1), MULLr(s2))
#define jit_mulr_i_(s1, s2)   jit_opr_(_EAX, s1, s2, IMULLr(s1), IMULLr(s2))
#define jit_muli_i_(is, rs)
#define jit_muli_ui_(is, rs)
#define jit_divi_i_(result, d, rs, is)
#define jit_divr_i_(result, d, s1, s2)
#define jit_divi_ui_(result, d, rs, is)
#define jit_divr_ui_(result, d, s1, s2)
#define jit_addi_i(d, rs, is)   jit_opi_((d), (rs), ADDLir((is), (d)), LEALmr((is), (rs), 0, 0, (d)) )
#define jit_addr_i(d, s1, s2)   jit_opo_((d), (s1), (s2), ADDLrr((s2), (d)), ADDLrr((s1), (d)), LEALmr(0, (s1), (s2), 1, (d)) )
#define jit_addci_i(d, rs, is)   jit_op_ ((d), (rs), ADDLir((is), (d)) )
#define jit_addcr_i(d, s1, s2)   jit_opr_((d), (s1), (s2), ADDLrr((s1), (d)), ADDLrr((s2), (d)) )
#define jit_addxi_i(d, rs, is)   jit_op_ ((d), (rs), ADCLir((is), (d)) )
#define jit_addxr_i(d, s1, s2)   jit_opr_((d), (s1), (s2), ADCLrr((s1), (d)), ADCLrr((s2), (d)) )
#define jit_andi_i(d, rs, is)   jit_op_ ((d), (rs), ANDLir((is), (d)) )
#define jit_andr_i(d, s1, s2)   jit_opr_((d), (s1), (s2), ANDLrr((s1), (d)), ANDLrr((s2), (d)) )
#define jit_orr_i(d, s1, s2)   jit_opr_((d), (s1), (s2), ORLrr((s1), (d)), ORLrr((s2), (d)) )
#define jit_subr_i(d, s1, s2)   jit_opr_((d), (s1), (s2), (SUBLrr((s1), (d)), NEGLr(d)), SUBLrr((s2), (d)) )
#define jit_subcr_i(d, s1, s2)   jit_subr_i((d), (s1), (s2))
#define jit_subxr_i(d, s1, s2)   jit_opr_((d), (s1), (s2), SBBLrr((s1), (d)), SBBLrr((s2), (d)) )
#define jit_subxi_i(d, rs, is)   jit_op_ ((d), (rs), SBBLir((is), (d)) )
#define jit_xorr_i(d, s1, s2)   jit_opr_((d), (s1), (s2), XORLrr((s1), (d)), XORLrr((s2), (d)) )
#define jit_addi_l(d, rs, is)   jit_opi_((d), (rs), ADDQir((is), (d)), LEAQmr((is), (rs), 0, 0, (d)) )
#define jit_addr_l(d, s1, s2)   jit_opo_((d), (s1), (s2), ADDQrr((s2), (d)), ADDQrr((s1), (d)), LEAQmr(0, (s1), (s2), 1, (d)) )
#define jit_andi_l(d, rs, is)   jit_qop_ ((d), (rs), ANDQir((is), (d)) )
#define jit_andr_l(d, s1, s2)   jit_qopr_((d), (s1), (s2), ANDQrr((s1), (d)), ANDQrr((s2), (d)) )
#define jit_orr_l(d, s1, s2)   jit_qopr_((d), (s1), (s2), ORQrr((s1), (d)), ORQrr((s2), (d)) )
#define jit_subr_l(d, s1, s2)   jit_qopr_((d), (s1), (s2), (SUBQrr((s1), (d)), NEGQr(d)), SUBQrr((s2), (d)) )
#define jit_xorr_l(d, s1, s2)   jit_qopr_((d), (s1), (s2), XORQrr((s1), (d)), XORQrr((s2), (d)) )
#define jit_ori_i(d, rs, is)   jit_op_ ((d), (rs), jit_reduce(OR, (is), (d)) )
#define jit_xori_i(d, rs, is)   jit_op_ ((d), (rs), jit_reduce(XOR, (is), (d)) )
#define jit_ori_l(d, rs, is)   jit_qop_ ((d), (rs), jit_reduceQ(OR, (is), (d)) )
#define jit_xori_l(d, rs, is)   jit_qop_ ((d), (rs), jit_reduceQ(XOR, (is), (d)) )
#define jit_muli_i(d, rs, is)   jit_op_ ((d), (rs), IMULLir((is), (d)) )
#define jit_mulr_i(d, s1, s2)   jit_opr_((d), (s1), (s2), IMULLrr((s1), (d)), IMULLrr((s2), (d)) )
#define jit_muli_ui(d, rs, is)   jit_op_ ((d), (rs), IMULLir((is), (d)) )
#define jit_mulr_ui(d, s1, s2)   jit_opr_((d), (s1), (s2), IMULLrr((s1), (d)), IMULLrr((s2), (d)) )
#define jit_hmuli_i(d, rs, is)
#define jit_hmulr_i(d, s1, s2)
#define jit_hmuli_ui(d, rs, is)
#define jit_hmulr_ui(d, s1, s2)
#define jit_divi_i(d, rs, is)   jit_divi_i_(_EAX, (d), (rs), (is))
#define jit_divi_ui(d, rs, is)   jit_divi_ui_(_EAX, (d), (rs), (is))
#define jit_modi_i(d, rs, is)   jit_divi_i_(_EDX, (d), (rs), (is))
#define jit_modi_ui(d, rs, is)   jit_divi_ui_(_EDX, (d), (rs), (is))
#define jit_divr_i(d, s1, s2)   jit_divr_i_(_EAX, (d), (s1), (s2))
#define jit_divr_ui(d, s1, s2)   jit_divr_ui_(_EAX, (d), (s1), (s2))
#define jit_modr_i(d, s1, s2)   jit_divr_i_(_EDX, (d), (s1), (s2))
#define jit_modr_ui(d, s1, s2)   jit_divr_ui_(_EDX, (d), (s1), (s2))
#define jit_lshi_i(d, rs, is)   ((is) <= 3 ? LEALmr(0, 0, (rs), 1 << (is), (d)) : jit_op_ ((d), (rs), SHLLir((is), (d)) ))
#define jit_rshi_i(d, rs, is)   jit_op_ ((d), (rs), SARLir((is), (d)) )
#define jit_rshi_ui(d, rs, is)   jit_op_ ((d), (rs), SHRLir((is), (d)) )
#define jit_lshr_i(d, r1, r2)   jit_replace((r1), (r2), _ECX, jit_op_ ((d), (r1), SHLLrr(_CL, (d)) ))
#define jit_rshr_i(d, r1, r2)   jit_replace((r1), (r2), _ECX, jit_op_ ((d), (r1), SARLrr(_CL, (d)) ))
#define jit_rshr_ui(d, r1, r2)   jit_replace((r1), (r2), _ECX, jit_op_ ((d), (r1), SHRLrr(_CL, (d)) ))
#define jit_lshi_l(d, rs, is)   ((is) <= 3 ? LEAQmr(0, 0, (rs), 1 << (is), (d)) : jit_qop_ ((d), (rs), SHLQir((is), (d)) ))
#define jit_rshi_l(d, rs, is)   jit_qop_ ((d), (rs), SARQir((is), (d)) )
#define jit_rshi_ul(d, rs, is)   jit_qop_ ((d), (rs), SHRQir((is), (d)) )
#define jit_lshr_l(d, r1, r2)   jit_replace((r1), (r2), _ECX, jit_qop_ ((d), (r1), SHLQrr(_CL, (d)) ))
#define jit_rshr_l(d, r1, r2)   jit_replace((r1), (r2), _ECX, jit_qop_ ((d), (r1), SARQrr(_CL, (d)) ))
#define jit_rshr_ul(d, r1, r2)   jit_replace((r1), (r2), _ECX, jit_qop_ ((d), (r1), SHRQrr(_CL, (d)) ))
#define jit_pushr_i(rs)   PUSHLr(rs)
#define jit_popr_i(rs)   POPLr(rs)
#define jit_pushr_l(rs)   jit_pushr_i(rs)
#define jit_popr_l(rs)   jit_popr_i(rs)
#define jit_base_prolog()   (PUSHLr(_EBP), MOVLrr(_ESP, _EBP), PUSHLr(_EBX), PUSHLr(_ESI), PUSHLr(_EDI))
#define jit_prolog(n)   (_jitl.framesize = 8, jit_base_prolog())
#define jit_prepare_i(ni)   (_jitl.argssize += (ni))
#define jit_prepare_f(nf)   (_jitl.argssize += (nf))
#define jit_prepare_d(nd)   (_jitl.argssize += 2 * (nd))
#define jit_pusharg_i(rs)   PUSHLr(rs)
#define jit_finish(sub)   ((void)jit_calli((sub)), ADDLir(sizeof(long) * _jitl.argssize, JIT_SP), _jitl.argssize = 0)
#define jit_finishr(reg)   (jit_callr((reg)), ADDLir(sizeof(long) * _jitl.argssize, JIT_SP), _jitl.argssize = 0)
#define jit_pusharg_l(rs)   jit_pusharg_i(rs)
#define jit_retval_i(rd)   ((void)jit_movr_i ((rd), _EAX))
#define jit_retval_l(rd)   ((void)jit_movr_l ((rd), _EAX))
#define jit_arg_c()   ((_jitl.framesize += sizeof(int)) - sizeof(int))
#define jit_arg_uc()   ((_jitl.framesize += sizeof(int)) - sizeof(int))
#define jit_arg_s()   ((_jitl.framesize += sizeof(int)) - sizeof(int))
#define jit_arg_us()   ((_jitl.framesize += sizeof(int)) - sizeof(int))
#define jit_arg_i()   ((_jitl.framesize += sizeof(int)) - sizeof(int))
#define jit_arg_ui()   ((_jitl.framesize += sizeof(int)) - sizeof(int))
#define jit_arg_l()   ((_jitl.framesize += sizeof(long)) - sizeof(long))
#define jit_arg_ul()   ((_jitl.framesize += sizeof(long)) - sizeof(long))
#define jit_arg_p()   ((_jitl.framesize += sizeof(long)) - sizeof(long))
#define jit_arg_f()   ((_jitl.framesize += sizeof(float)) - sizeof(float))
#define jit_arg_d()   ((_jitl.framesize += sizeof(double)) - sizeof(double))
#define jit_negr_i(d, rs)   jit_opi_((d), (rs), NEGLr(d), (XORLrr((d), (d)), SUBLrr((rs), (d))) )
#define jit_negr_l(d, rs)   jit_opi_((d), (rs), NEGQr(d), (XORQrr((d), (d)), SUBQrr((rs), (d))) )
#define jit_movr_i(d, rs)   ((void)((rs) == (d) ? 0 : MOVLrr((rs), (d))))
#define jit_movi_i(d, is)   ((is) ? MOVLir((is), (d)) : XORLrr ((d), (d)) )
#define jit_movr_l(d, rs)   ((void)((rs) == (d) ? 0 : MOVQrr((rs), (d))))
#define jit_movi_l(d, is)
#define jit_movi_p(d, is)   jit_movi_l(d, ((long)(is)))
#define jit_patchable_movi_p(d, is)   (MOVQir((is), (d)), _jit.x.pc)
#define jit_patch_movi(pa, pv)   (*_PSL((pa) - sizeof(long)) = _jit_SL((pv)))
#define jit_ntoh_ui(d, rs)   jit_op_((d), (rs), BSWAPLr(d))
#define jit_ntoh_us(d, rs)   jit_op_((d), (rs), RORWir(8, d))
#define jit_ltr_i(d, s1, s2)   jit_bool_r((d), (s1), (s2), SETLr )
#define jit_ler_i(d, s1, s2)   jit_bool_r((d), (s1), (s2), SETLEr )
#define jit_gtr_i(d, s1, s2)   jit_bool_r((d), (s1), (s2), SETGr )
#define jit_ger_i(d, s1, s2)   jit_bool_r((d), (s1), (s2), SETGEr )
#define jit_eqr_i(d, s1, s2)   jit_bool_r((d), (s1), (s2), SETEr )
#define jit_ner_i(d, s1, s2)   jit_bool_r((d), (s1), (s2), SETNEr )
#define jit_ltr_ui(d, s1, s2)   jit_bool_r((d), (s1), (s2), SETBr )
#define jit_ler_ui(d, s1, s2)   jit_bool_r((d), (s1), (s2), SETBEr )
#define jit_gtr_ui(d, s1, s2)   jit_bool_r((d), (s1), (s2), SETAr )
#define jit_ger_ui(d, s1, s2)   jit_bool_r((d), (s1), (s2), SETAEr )
#define jit_lti_i(d, rs, is)   jit_bool_i0((d), (rs), (is), SETLr, SETSr )
#define jit_lei_i(d, rs, is)   jit_bool_i ((d), (rs), (is), SETLEr )
#define jit_gti_i(d, rs, is)   jit_bool_i ((d), (rs), (is), SETGr )
#define jit_gei_i(d, rs, is)   jit_bool_i0((d), (rs), (is), SETGEr, SETNSr )
#define jit_eqi_i(d, rs, is)   jit_bool_i0((d), (rs), (is), SETEr, SETEr )
#define jit_nei_i(d, rs, is)   jit_bool_i0((d), (rs), (is), SETNEr, SETNEr )
#define jit_lti_ui(d, rs, is)   jit_bool_i ((d), (rs), (is), SETBr )
#define jit_lei_ui(d, rs, is)   jit_bool_i0((d), (rs), (is), SETBEr, SETEr )
#define jit_gti_ui(d, rs, is)   jit_bool_i0((d), (rs), (is), SETAr, SETNEr )
#define jit_gei_ui(d, rs, is)   jit_bool_i0((d), (rs), (is), SETAEr, INCLr )
#define jit_bltr_i(label, s1, s2)   jit_bra_r((s1), (s2), JLm(label, 0,0,0) )
#define jit_bler_i(label, s1, s2)   jit_bra_r((s1), (s2), JLEm(label,0,0,0) )
#define jit_bgtr_i(label, s1, s2)   jit_bra_r((s1), (s2), JGm(label, 0,0,0) )
#define jit_bger_i(label, s1, s2)   jit_bra_r((s1), (s2), JGEm(label,0,0,0) )
#define jit_beqr_i(label, s1, s2)   jit_bra_r((s1), (s2), JEm(label, 0,0,0) )
#define jit_bner_i(label, s1, s2)   jit_bra_r((s1), (s2), JNEm(label,0,0,0) )
#define jit_bltr_ui(label, s1, s2)   jit_bra_r((s1), (s2), JBm(label, 0,0,0) )
#define jit_bler_ui(label, s1, s2)   jit_bra_r((s1), (s2), JBEm(label,0,0,0) )
#define jit_bgtr_ui(label, s1, s2)   jit_bra_r((s1), (s2), JAm(label, 0,0,0) )
#define jit_bger_ui(label, s1, s2)   jit_bra_r((s1), (s2), JAEm(label,0,0,0) )
#define jit_bmsr_i(label, s1, s2)   (TESTQrr((s1), (s2)), JNZm(label,0,0,0), _jit.x.pc)
#define jit_bmcr_i(label, s1, s2)   (TESTQrr((s1), (s2)), JZm(label,0,0,0), _jit.x.pc)
#define jit_boaddr_i(label, s1, s2)   (ADDLrr((s2), (s1)), JOm(label,0,0,0), _jit.x.pc)
#define jit_bosubr_i(label, s1, s2)   (SUBLrr((s2), (s1)), JOm(label,0,0,0), _jit.x.pc)
#define jit_boaddr_ui(label, s1, s2)   (ADDLrr((s2), (s1)), JCm(label,0,0,0), _jit.x.pc)
#define jit_bosubr_ui(label, s1, s2)   (SUBLrr((s2), (s1)), JCm(label,0,0,0), _jit.x.pc)
#define jit_bltr_l(label, s1, s2)   jit_bra_qr((s1), (s2), JLm(label, 0,0,0) )
#define jit_bler_l(label, s1, s2)   jit_bra_qr((s1), (s2), JLEm(label,0,0,0) )
#define jit_bgtr_l(label, s1, s2)   jit_bra_qr((s1), (s2), JGm(label, 0,0,0) )
#define jit_bger_l(label, s1, s2)   jit_bra_qr((s1), (s2), JGEm(label,0,0,0) )
#define jit_beqr_l(label, s1, s2)   jit_bra_qr((s1), (s2), JEm(label, 0,0,0) )
#define jit_bner_l(label, s1, s2)   jit_bra_qr((s1), (s2), JNEm(label,0,0,0) )
#define jit_bltr_ul(label, s1, s2)   jit_bra_qr((s1), (s2), JBm(label, 0,0,0) )
#define jit_bler_ul(label, s1, s2)   jit_bra_qr((s1), (s2), JBEm(label,0,0,0) )
#define jit_bgtr_ul(label, s1, s2)   jit_bra_qr((s1), (s2), JAm(label, 0,0,0) )
#define jit_bger_ul(label, s1, s2)   jit_bra_qr((s1), (s2), JAEm(label,0,0,0) )
#define jit_bmsr_l(label, s1, s2)   (TESTQrr((s1), (s2)), JNZm(label,0,0,0), _jit.x.pc)
#define jit_bmcr_l(label, s1, s2)   (TESTQrr((s1), (s2)), JZm(label,0,0,0), _jit.x.pc)
#define jit_boaddr_l(label, s1, s2)   (ADDQrr((s2), (s1)), JOm(label,0,0,0), _jit.x.pc)
#define jit_bosubr_l(label, s1, s2)   (SUBQrr((s2), (s1)), JOm(label,0,0,0), _jit.x.pc)
#define jit_boaddr_ul(label, s1, s2)   (ADDQrr((s2), (s1)), JCm(label,0,0,0), _jit.x.pc)
#define jit_bosubr_ul(label, s1, s2)   (SUBQrr((s2), (s1)), JCm(label,0,0,0), _jit.x.pc)
#define jit_bomulr_l(label, s1, s2)   (IMULQrr((s2), (s1)), JOm(label,0,0,0), _jit.x.pc)
#define jit_blti_i(label, rs, is)   jit_bra_i0((rs), (is), JLm(label, 0,0,0), JSm(label, 0,0,0) )
#define jit_blei_i(label, rs, is)   jit_bra_i ((rs), (is), JLEm(label,0,0,0) )
#define jit_bgti_i(label, rs, is)   jit_bra_i ((rs), (is), JGm(label, 0,0,0) )
#define jit_bgei_i(label, rs, is)   jit_bra_i0((rs), (is), JGEm(label,0,0,0), JNSm(label,0,0,0) )
#define jit_beqi_i(label, rs, is)   jit_bra_i0((rs), (is), JEm(label, 0,0,0), JEm(label, 0,0,0) )
#define jit_bnei_i(label, rs, is)   jit_bra_i0((rs), (is), JNEm(label,0,0,0), JNEm(label,0,0,0) )
#define jit_blti_ui(label, rs, is)   jit_bra_i ((rs), (is), JBm(label, 0,0,0) )
#define jit_blei_ui(label, rs, is)   jit_bra_i0((rs), (is), JBEm(label,0,0,0), JEm(label, 0,0,0) )
#define jit_bgti_ui(label, rs, is)   jit_bra_i0((rs), (is), JAm(label, 0,0,0), JNEm(label,0,0,0) )
#define jit_bgei_ui(label, rs, is)   jit_bra_i ((rs), (is), JAEm(label,0,0,0) )
#define jit_boaddi_i(label, rs, is)   (ADDLir((is), (rs)), JOm(label,0,0,0), _jit.x.pc)
#define jit_bosubi_i(label, rs, is)   (SUBLir((is), (rs)), JOm(label,0,0,0), _jit.x.pc)
#define jit_boaddi_ui(label, rs, is)   (ADDLir((is), (rs)), JCm(label,0,0,0), _jit.x.pc)
#define jit_bosubi_ui(label, rs, is)   (SUBLir((is), (rs)), JCm(label,0,0,0), _jit.x.pc)
#define jit_blti_l(label, rs, is)   jit_bra_l0((rs), (is), JLm(label, 0,0,0), JSm(label, 0,0,0) )
#define jit_blei_l(label, rs, is)   jit_bra_l ((rs), (is), JLEm(label,0,0,0) )
#define jit_bgti_l(label, rs, is)   jit_bra_l ((rs), (is), JGm(label, 0,0,0) )
#define jit_bgei_l(label, rs, is)   jit_bra_l0((rs), (is), JGEm(label,0,0,0), JNSm(label,0,0,0) )
#define jit_beqi_l(label, rs, is)   jit_bra_l0((rs), (is), JEm(label, 0,0,0), JEm(label, 0,0,0) )
#define jit_bnei_l(label, rs, is)   jit_bra_l0((rs), (is), JNEm(label,0,0,0), JNEm(label,0,0,0) )
#define jit_blti_ul(label, rs, is)   jit_bra_l ((rs), (is), JBm(label, 0,0,0) )
#define jit_blei_ul(label, rs, is)   jit_bra_l0((rs), (is), JBEm(label,0,0,0), JEm(label, 0,0,0) )
#define jit_bgti_ul(label, rs, is)   jit_bra_l0((rs), (is), JAm(label, 0,0,0), JNEm(label,0,0,0) )
#define jit_bgei_ul(label, rs, is)   jit_bra_l ((rs), (is), JAEm(label,0,0,0) )
#define jit_boaddi_l(label, rs, is)   (ADDQir((is), (rs)), JOm(label,0,0,0), _jit.x.pc)
#define jit_bosubi_l(label, rs, is)   (SUBQir((is), (rs)), JOm(label,0,0,0), _jit.x.pc)
#define jit_boaddi_ul(label, rs, is)   (ADDQir((is), (rs)), JCm(label,0,0,0), _jit.x.pc)
#define jit_bosubi_ul(label, rs, is)   (SUBQir((is), (rs)), JCm(label,0,0,0), _jit.x.pc)
#define jit_bmsi_i(label, rs, is)   (jit_reduce(TEST, (is), (rs)), JNZm(label,0,0,0), _jit.x.pc)
#define jit_bmci_i(label, rs, is)   (jit_reduce(TEST, (is), (rs)), JZm(label,0,0,0), _jit.x.pc)
#define jit_bmsi_l(label, rs, is)   jit_bmsi_i(label, rs, is)
#define jit_bmci_l(label, rs, is)   jit_bmci_i(label, rs, is)
#define jit_jmpi(label)   (JMPm( ((unsigned long) (label)), 0, 0, 0), _jit.x.pc)
#define jit_calli(label)   (CALLm( ((unsigned long) (label)), 0, 0, 0), _jit.x.pc)
#define jit_callr(reg)   (CALLsr(reg))
#define jit_jmpr(reg)   JMPsr(reg)
#define jit_patch_long_at(jump_pc, v)
#define jit_patch_branch_at(jump_pc, v)   jit_patch_long_at(jump_pc, v)
#define jit_patch_ucbranch_at(jump_pc, v)   jit_patch_long_at(jump_pc, v)
#define jit_ret()   (POPLr(_EDI), POPLr(_ESI), POPLr(_EBX), POPLr(_EBP), RET_())
#define jit_ldi_c(d, is)   MOVSBLmr((is), 0, 0, 0, (d))
#define jit_ldr_c(d, rs)   MOVSBLmr(0, (rs), 0, 0, (d))
#define jit_ldxr_c(d, s1, s2)   MOVSBLmr(0, (s1), (s2), 1, (d))
#define jit_ldxi_c(d, rs, is)   MOVSBLmr((is), (rs), 0, 0, (d))
#define jit_ldi_uc(d, is)   MOVZBLmr((is), 0, 0, 0, (d))
#define jit_ldr_uc(d, rs)   MOVZBLmr(0, (rs), 0, 0, (d))
#define jit_ldxr_uc(d, s1, s2)   MOVZBLmr(0, (s1), (s2), 1, (d))
#define jit_ldxi_uc(d, rs, is)   MOVZBLmr((is), (rs), 0, 0, (d))
#define jit_sti_c(id, rs)   jit_movbrm((rs), (id), 0, 0, 0)
#define jit_str_c(rd, rs)   jit_movbrm((rs), 0, (rd), 0, 0)
#define jit_stxr_c(d1, d2, rs)   jit_movbrm((rs), 0, (d1), (d2), 1)
#define jit_stxi_c(id, rd, rs)   jit_movbrm((rs), (id), (rd), 0, 0)
#define jit_ldi_s(d, is)   MOVSWLmr((is), 0, 0, 0, (d))
#define jit_ldr_s(d, rs)   MOVSWLmr(0, (rs), 0, 0, (d))
#define jit_ldxr_s(d, s1, s2)   MOVSWLmr(0, (s1), (s2), 1, (d))
#define jit_ldxi_s(d, rs, is)   MOVSWLmr((is), (rs), 0, 0, (d))
#define jit_ldi_us(d, is)   MOVZWLmr((is), 0, 0, 0, (d))
#define jit_ldr_us(d, rs)   MOVZWLmr(0, (rs), 0, 0, (d))
#define jit_ldxr_us(d, s1, s2)   MOVZWLmr(0, (s1), (s2), 1, (d))
#define jit_ldxi_us(d, rs, is)   MOVZWLmr((is), (rs), 0, 0, (d))
#define jit_sti_s(id, rs)   MOVWrm(jit_reg16(rs), (id), 0, 0, 0)
#define jit_str_s(rd, rs)   MOVWrm(jit_reg16(rs), 0, (rd), 0, 0)
#define jit_stxr_s(d1, d2, rs)   MOVWrm(jit_reg16(rs), 0, (d1), (d2), 1)
#define jit_stxi_s(id, rd, rs)   MOVWrm(jit_reg16(rs), (id), (rd), 0, 0)
#define jit_ldi_i(d, is)   MOVLmr((is), 0, 0, 0, (d))
#define jit_ldr_i(d, rs)   MOVLmr(0, (rs), 0, 0, (d))
#define jit_ldxr_i(d, s1, s2)   MOVLmr(0, (s1), (s2), 1, (d))
#define jit_ldxi_i(d, rs, is)   MOVLmr((is), (rs), 0, 0, (d))
#define jit_sti_i(id, rs)   MOVLrm((rs), (id), 0, 0, 0)
#define jit_str_i(rd, rs)   MOVLrm((rs), 0, (rd), 0, 0)
#define jit_stxr_i(d1, d2, rs)   MOVLrm((rs), 0, (d1), (d2), 1)
#define jit_stxi_i(id, rd, rs)   MOVLrm((rs), (id), (rd), 0, 0)
#define _jit_ldi_l(d, is)   MOVQmr((is), 0, 0, 0, (d))
#define jit_ldr_l(d, rs)   MOVQmr(0, (rs), 0, 0, (d))
#define jit_ldxr_l(d, s1, s2)   MOVQmr(0, (s1), (s2), 1, (d))
#define jit_ldxi_l(d, rs, is)   MOVQmr((is), (rs), 0, 0, (d))
#define _jit_sti_l(id, rs)   MOVQrm((rs), (id), 0, 0, 0)
#define jit_str_l(rd, rs)   MOVQrm((rs), 0, (rd), 0, 0)
#define jit_stxr_l(d1, d2, rs)   MOVQrm((rs), 0, (d1), (d2), 1)
#define jit_stxi_l(id, rd, rs)   MOVQrm((rs), (id), (rd), 0, 0)
#define jit_ldi_l(d, is)   _jit_ldi_l(d, is)
#define jit_sti_l(id, rs)   _jit_sti_l(id, rs)
#define jit_nop()   NOP_()
#define _jit_alignment(pc, n)   (((pc ^ _MASK(4)) + 1) & _MASK(n))
#define jit_align(n)   NOPi(_jit_alignment(_jit_UL(_jit.x.pc), (n)))

Class Documentation

struct jit_local_state

Definition at line 46 of file core.h.

Class Members
int argssize
int framesize
int long_jumps
int nbArgs
int nextarg_getd
int nextarg_geti
int nextarg_putd
int nextarg_putf
int nextarg_puti
int tiny_jumps

Define Documentation

#define _jit_alignment (   pc,
 
)    (((pc ^ _MASK(4)) + 1) & _MASK(n))

Definition at line 590 of file core.h.

#define _jit_bra_l (   rs,
  is,
  op 
)    (CMPQir(is, rs), op, _jit.x.pc)

Definition at line 109 of file core.h.

#define _jit_ldi_l (   d,
  is 
)    MOVQmr((is), 0, 0, 0, (d))

Definition at line 568 of file core.h.

#define _jit_sti_l (   id,
  rs 
)    MOVQrm((rs), (id), 0, 0, 0)

Definition at line 573 of file core.h.

#define jit_addci_i (   d,
  rs,
  is 
)    jit_op_ ((d), (rs), ADDLir((is), (d)) )

Definition at line 229 of file core.h.

#define jit_addcr_i (   d,
  s1,
  s2 
)    jit_opr_((d), (s1), (s2), ADDLrr((s1), (d)), ADDLrr((s2), (d)) )

Definition at line 230 of file core.h.

#define jit_addi_i (   d,
  rs,
  is 
)    jit_opi_((d), (rs), ADDLir((is), (d)), LEALmr((is), (rs), 0, 0, (d)) )

Definition at line 227 of file core.h.

#define jit_addi_l (   d,
  rs,
  is 
)    jit_opi_((d), (rs), ADDQir((is), (d)), LEAQmr((is), (rs), 0, 0, (d)) )

Definition at line 242 of file core.h.

#define jit_addr_i (   d,
  s1,
  s2 
)    jit_opo_((d), (s1), (s2), ADDLrr((s2), (d)), ADDLrr((s1), (d)), LEALmr(0, (s1), (s2), 1, (d)) )

Definition at line 228 of file core.h.

#define jit_addr_l (   d,
  s1,
  s2 
)    jit_opo_((d), (s1), (s2), ADDQrr((s2), (d)), ADDQrr((s1), (d)), LEAQmr(0, (s1), (s2), 1, (d)) )

Definition at line 243 of file core.h.

#define jit_addxi_i (   d,
  rs,
  is 
)    jit_op_ ((d), (rs), ADCLir((is), (d)) )

Definition at line 231 of file core.h.

#define jit_addxr_i (   d,
  s1,
  s2 
)    jit_opr_((d), (s1), (s2), ADCLrr((s1), (d)), ADCLrr((s2), (d)) )

Definition at line 232 of file core.h.

#define jit_align (   n)    NOPi(_jit_alignment(_jit_UL(_jit.x.pc), (n)))

Definition at line 591 of file core.h.

#define jit_andi_i (   d,
  rs,
  is 
)    jit_op_ ((d), (rs), ANDLir((is), (d)) )

Definition at line 233 of file core.h.

#define jit_andi_l (   d,
  rs,
  is 
)    jit_qop_ ((d), (rs), ANDQir((is), (d)) )

Definition at line 244 of file core.h.

#define jit_andr_i (   d,
  s1,
  s2 
)    jit_opr_((d), (s1), (s2), ANDLrr((s1), (d)), ANDLrr((s2), (d)) )

Definition at line 234 of file core.h.

#define jit_andr_l (   d,
  s1,
  s2 
)    jit_qopr_((d), (s1), (s2), ANDQrr((s1), (d)), ANDQrr((s2), (d)) )

Definition at line 245 of file core.h.

#define jit_arg_c ( )    ((_jitl.framesize += sizeof(int)) - sizeof(int))

Definition at line 380 of file core.h.

#define jit_arg_d ( )    ((_jitl.framesize += sizeof(double)) - sizeof(double))

Definition at line 392 of file core.h.

#define jit_arg_f ( )    ((_jitl.framesize += sizeof(float)) - sizeof(float))

Definition at line 391 of file core.h.

#define jit_arg_i ( )    ((_jitl.framesize += sizeof(int)) - sizeof(int))

Definition at line 384 of file core.h.

#define jit_arg_l ( )    ((_jitl.framesize += sizeof(long)) - sizeof(long))

Definition at line 386 of file core.h.

#define jit_arg_p ( )    ((_jitl.framesize += sizeof(long)) - sizeof(long))

Definition at line 388 of file core.h.

#define jit_arg_s ( )    ((_jitl.framesize += sizeof(int)) - sizeof(int))

Definition at line 382 of file core.h.

#define jit_arg_uc ( )    ((_jitl.framesize += sizeof(int)) - sizeof(int))

Definition at line 381 of file core.h.

#define jit_arg_ui ( )    ((_jitl.framesize += sizeof(int)) - sizeof(int))

Definition at line 385 of file core.h.

#define jit_arg_ul ( )    ((_jitl.framesize += sizeof(long)) - sizeof(long))

Definition at line 387 of file core.h.

#define jit_arg_us ( )    ((_jitl.framesize += sizeof(int)) - sizeof(int))

Definition at line 383 of file core.h.

Definition at line 319 of file core.h.

#define jit_beqi_i (   label,
  rs,
  is 
)    jit_bra_i0((rs), (is), JEm(label, 0,0,0), JEm(label, 0,0,0) )

Definition at line 476 of file core.h.

#define jit_beqi_l (   label,
  rs,
  is 
)    jit_bra_l0((rs), (is), JEm(label, 0,0,0), JEm(label, 0,0,0) )

Definition at line 491 of file core.h.

#define jit_beqr_i (   label,
  s1,
  s2 
)    jit_bra_r((s1), (s2), JEm(label, 0,0,0) )

Definition at line 441 of file core.h.

#define jit_beqr_l (   label,
  s1,
  s2 
)    jit_bra_qr((s1), (s2), JEm(label, 0,0,0) )

Definition at line 458 of file core.h.

#define jit_bgei_i (   label,
  rs,
  is 
)    jit_bra_i0((rs), (is), JGEm(label,0,0,0), JNSm(label,0,0,0) )

Definition at line 475 of file core.h.

#define jit_bgei_l (   label,
  rs,
  is 
)    jit_bra_l0((rs), (is), JGEm(label,0,0,0), JNSm(label,0,0,0) )

Definition at line 490 of file core.h.

#define jit_bgei_ui (   label,
  rs,
  is 
)    jit_bra_i ((rs), (is), JAEm(label,0,0,0) )

Definition at line 481 of file core.h.

#define jit_bgei_ul (   label,
  rs,
  is 
)    jit_bra_l ((rs), (is), JAEm(label,0,0,0) )

Definition at line 496 of file core.h.

#define jit_bger_i (   label,
  s1,
  s2 
)    jit_bra_r((s1), (s2), JGEm(label,0,0,0) )

Definition at line 440 of file core.h.

#define jit_bger_l (   label,
  s1,
  s2 
)    jit_bra_qr((s1), (s2), JGEm(label,0,0,0) )

Definition at line 457 of file core.h.

#define jit_bger_ui (   label,
  s1,
  s2 
)    jit_bra_r((s1), (s2), JAEm(label,0,0,0) )

Definition at line 446 of file core.h.

#define jit_bger_ul (   label,
  s1,
  s2 
)    jit_bra_qr((s1), (s2), JAEm(label,0,0,0) )

Definition at line 463 of file core.h.

#define jit_bgti_i (   label,
  rs,
  is 
)    jit_bra_i ((rs), (is), JGm(label, 0,0,0) )

Definition at line 474 of file core.h.

#define jit_bgti_l (   label,
  rs,
  is 
)    jit_bra_l ((rs), (is), JGm(label, 0,0,0) )

Definition at line 489 of file core.h.

#define jit_bgti_ui (   label,
  rs,
  is 
)    jit_bra_i0((rs), (is), JAm(label, 0,0,0), JNEm(label,0,0,0) )

Definition at line 480 of file core.h.

#define jit_bgti_ul (   label,
  rs,
  is 
)    jit_bra_l0((rs), (is), JAm(label, 0,0,0), JNEm(label,0,0,0) )

Definition at line 495 of file core.h.

#define jit_bgtr_i (   label,
  s1,
  s2 
)    jit_bra_r((s1), (s2), JGm(label, 0,0,0) )

Definition at line 439 of file core.h.

#define jit_bgtr_l (   label,
  s1,
  s2 
)    jit_bra_qr((s1), (s2), JGm(label, 0,0,0) )

Definition at line 456 of file core.h.

#define jit_bgtr_ui (   label,
  s1,
  s2 
)    jit_bra_r((s1), (s2), JAm(label, 0,0,0) )

Definition at line 445 of file core.h.

#define jit_bgtr_ul (   label,
  s1,
  s2 
)    jit_bra_qr((s1), (s2), JAm(label, 0,0,0) )

Definition at line 462 of file core.h.

#define jit_blei_i (   label,
  rs,
  is 
)    jit_bra_i ((rs), (is), JLEm(label,0,0,0) )

Definition at line 473 of file core.h.

#define jit_blei_l (   label,
  rs,
  is 
)    jit_bra_l ((rs), (is), JLEm(label,0,0,0) )

Definition at line 488 of file core.h.

#define jit_blei_ui (   label,
  rs,
  is 
)    jit_bra_i0((rs), (is), JBEm(label,0,0,0), JEm(label, 0,0,0) )

Definition at line 479 of file core.h.

#define jit_blei_ul (   label,
  rs,
  is 
)    jit_bra_l0((rs), (is), JBEm(label,0,0,0), JEm(label, 0,0,0) )

Definition at line 494 of file core.h.

#define jit_bler_i (   label,
  s1,
  s2 
)    jit_bra_r((s1), (s2), JLEm(label,0,0,0) )

Definition at line 438 of file core.h.

#define jit_bler_l (   label,
  s1,
  s2 
)    jit_bra_qr((s1), (s2), JLEm(label,0,0,0) )

Definition at line 455 of file core.h.

#define jit_bler_ui (   label,
  s1,
  s2 
)    jit_bra_r((s1), (s2), JBEm(label,0,0,0) )

Definition at line 444 of file core.h.

#define jit_bler_ul (   label,
  s1,
  s2 
)    jit_bra_qr((s1), (s2), JBEm(label,0,0,0) )

Definition at line 461 of file core.h.

#define jit_blti_i (   label,
  rs,
  is 
)    jit_bra_i0((rs), (is), JLm(label, 0,0,0), JSm(label, 0,0,0) )

Definition at line 472 of file core.h.

#define jit_blti_l (   label,
  rs,
  is 
)    jit_bra_l0((rs), (is), JLm(label, 0,0,0), JSm(label, 0,0,0) )

Definition at line 487 of file core.h.

#define jit_blti_ui (   label,
  rs,
  is 
)    jit_bra_i ((rs), (is), JBm(label, 0,0,0) )

Definition at line 478 of file core.h.

#define jit_blti_ul (   label,
  rs,
  is 
)    jit_bra_l ((rs), (is), JBm(label, 0,0,0) )

Definition at line 493 of file core.h.

#define jit_bltr_i (   label,
  s1,
  s2 
)    jit_bra_r((s1), (s2), JLm(label, 0,0,0) )

Definition at line 437 of file core.h.

#define jit_bltr_l (   label,
  s1,
  s2 
)    jit_bra_qr((s1), (s2), JLm(label, 0,0,0) )

Definition at line 454 of file core.h.

#define jit_bltr_ui (   label,
  s1,
  s2 
)    jit_bra_r((s1), (s2), JBm(label, 0,0,0) )

Definition at line 443 of file core.h.

#define jit_bltr_ul (   label,
  s1,
  s2 
)    jit_bra_qr((s1), (s2), JBm(label, 0,0,0) )

Definition at line 460 of file core.h.

#define jit_bmci_i (   label,
  rs,
  is 
)    (jit_reduce(TEST, (is), (rs)), JZm(label,0,0,0), _jit.x.pc)

Definition at line 503 of file core.h.

#define jit_bmci_l (   label,
  rs,
  is 
)    jit_bmci_i(label, rs, is)

Definition at line 506 of file core.h.

#define jit_bmcr_i (   label,
  s1,
  s2 
)    (TESTQrr((s1), (s2)), JZm(label,0,0,0), _jit.x.pc)

Definition at line 448 of file core.h.

#define jit_bmcr_l (   label,
  s1,
  s2 
)    (TESTQrr((s1), (s2)), JZm(label,0,0,0), _jit.x.pc)

Definition at line 465 of file core.h.

#define jit_bmsi_i (   label,
  rs,
  is 
)    (jit_reduce(TEST, (is), (rs)), JNZm(label,0,0,0), _jit.x.pc)

Definition at line 502 of file core.h.

#define jit_bmsi_l (   label,
  rs,
  is 
)    jit_bmsi_i(label, rs, is)

Definition at line 505 of file core.h.

#define jit_bmsr_i (   label,
  s1,
  s2 
)    (TESTQrr((s1), (s2)), JNZm(label,0,0,0), _jit.x.pc)

Definition at line 447 of file core.h.

#define jit_bmsr_l (   label,
  s1,
  s2 
)    (TESTQrr((s1), (s2)), JNZm(label,0,0,0), _jit.x.pc)

Definition at line 464 of file core.h.

#define jit_bnei_i (   label,
  rs,
  is 
)    jit_bra_i0((rs), (is), JNEm(label,0,0,0), JNEm(label,0,0,0) )

Definition at line 477 of file core.h.

#define jit_bnei_l (   label,
  rs,
  is 
)    jit_bra_l0((rs), (is), JNEm(label,0,0,0), JNEm(label,0,0,0) )

Definition at line 492 of file core.h.

#define jit_bner_i (   label,
  s1,
  s2 
)    jit_bra_r((s1), (s2), JNEm(label,0,0,0) )

Definition at line 442 of file core.h.

#define jit_bner_l (   label,
  s1,
  s2 
)    jit_bra_qr((s1), (s2), JNEm(label,0,0,0) )

Definition at line 459 of file core.h.

#define jit_boaddi_i (   label,
  rs,
  is 
)    (ADDLir((is), (rs)), JOm(label,0,0,0), _jit.x.pc)

Definition at line 482 of file core.h.

#define jit_boaddi_l (   label,
  rs,
  is 
)    (ADDQir((is), (rs)), JOm(label,0,0,0), _jit.x.pc)

Definition at line 497 of file core.h.

#define jit_boaddi_ui (   label,
  rs,
  is 
)    (ADDLir((is), (rs)), JCm(label,0,0,0), _jit.x.pc)

Definition at line 484 of file core.h.

#define jit_boaddi_ul (   label,
  rs,
  is 
)    (ADDQir((is), (rs)), JCm(label,0,0,0), _jit.x.pc)

Definition at line 499 of file core.h.

#define jit_boaddr_i (   label,
  s1,
  s2 
)    (ADDLrr((s2), (s1)), JOm(label,0,0,0), _jit.x.pc)

Definition at line 449 of file core.h.

#define jit_boaddr_l (   label,
  s1,
  s2 
)    (ADDQrr((s2), (s1)), JOm(label,0,0,0), _jit.x.pc)

Definition at line 466 of file core.h.

#define jit_boaddr_ui (   label,
  s1,
  s2 
)    (ADDLrr((s2), (s1)), JCm(label,0,0,0), _jit.x.pc)

Definition at line 451 of file core.h.

#define jit_boaddr_ul (   label,
  s1,
  s2 
)    (ADDQrr((s2), (s1)), JCm(label,0,0,0), _jit.x.pc)

Definition at line 468 of file core.h.

#define jit_bomulr_l (   label,
  s1,
  s2 
)    (IMULQrr((s2), (s1)), JOm(label,0,0,0), _jit.x.pc)

Definition at line 470 of file core.h.

#define jit_bool_i (   d,
  rs,
  is,
  op 
)    (CMPLir(is, rs), jit_replace8(d, op))

Definition at line 96 of file core.h.

#define jit_bool_i0 (   d,
  rs,
  is,
  op,
  op0 
)
Value:
((is) != 0                                              \
         ? (CMPLir(is, rs), jit_replace8(d, op))                      \
         : (TESTLrr(rs, rs), jit_replace8(d, op0)))

Definition at line 100 of file core.h.

#define jit_bool_r (   d,
  s1,
  s2,
  op 
)    (CMPLrr(s2, s1), jit_replace8(d, op))

Definition at line 93 of file core.h.

#define jit_bosubi_i (   label,
  rs,
  is 
)    (SUBLir((is), (rs)), JOm(label,0,0,0), _jit.x.pc)

Definition at line 483 of file core.h.

#define jit_bosubi_l (   label,
  rs,
  is 
)    (SUBQir((is), (rs)), JOm(label,0,0,0), _jit.x.pc)

Definition at line 498 of file core.h.

#define jit_bosubi_ui (   label,
  rs,
  is 
)    (SUBLir((is), (rs)), JCm(label,0,0,0), _jit.x.pc)

Definition at line 485 of file core.h.

#define jit_bosubi_ul (   label,
  rs,
  is 
)    (SUBQir((is), (rs)), JCm(label,0,0,0), _jit.x.pc)

Definition at line 500 of file core.h.

#define jit_bosubr_i (   label,
  s1,
  s2 
)    (SUBLrr((s2), (s1)), JOm(label,0,0,0), _jit.x.pc)

Definition at line 450 of file core.h.

#define jit_bosubr_l (   label,
  s1,
  s2 
)    (SUBQrr((s2), (s1)), JOm(label,0,0,0), _jit.x.pc)

Definition at line 467 of file core.h.

#define jit_bosubr_ui (   label,
  s1,
  s2 
)    (SUBLrr((s2), (s1)), JCm(label,0,0,0), _jit.x.pc)

Definition at line 452 of file core.h.

#define jit_bosubr_ul (   label,
  s1,
  s2 
)    (SUBQrr((s2), (s1)), JCm(label,0,0,0), _jit.x.pc)

Definition at line 469 of file core.h.

#define jit_bra_i (   rs,
  is,
  op 
)    (CMPLir(is, rs), op, _jit.x.pc)

Definition at line 108 of file core.h.

#define jit_bra_i0 (   rs,
  is,
  op,
  op0 
)    ( (is) == 0 ? (TESTLrr(rs, rs), op0, _jit.x.pc) : (CMPLir(is, rs), op, _jit.x.pc))

Definition at line 120 of file core.h.

#define jit_bra_l (   rs,
  is,
  op 
)    _jit_bra_l(rs, is, op)

Definition at line 116 of file core.h.

#define jit_bra_l0 (   rs,
  is,
  op,
  op0 
)    ( (is) == 0 ? (TESTQrr(rs, rs), op0, _jit.x.pc) : jit_bra_l(rs, is, op))

Definition at line 122 of file core.h.

#define jit_bra_qr (   s1,
  s2,
  op 
)    (CMPQrr(s2, s1), op, _jit.x.pc)

Definition at line 107 of file core.h.

#define jit_bra_r (   s1,
  s2,
  op 
)    (CMPLrr(s2, s1), op, _jit.x.pc)

Definition at line 106 of file core.h.

#define jit_calli (   label)    (CALLm( ((unsigned long) (label)), 0, 0, 0), _jit.x.pc)

Definition at line 509 of file core.h.

#define jit_callr (   reg)    (CALLsr(reg))

Definition at line 510 of file core.h.

#define JIT_CAN_16   1

Definition at line 140 of file core.h.

#define jit_check8 (   rs)    ( (rs) <= _EBX )

Definition at line 126 of file core.h.

#define jit_divi_i (   d,
  rs,
  is 
)    jit_divi_i_(_EAX, (d), (rs), (is))

Definition at line 284 of file core.h.

#define jit_divi_i_ (   result,
  d,
  rs,
  is 
)
Value:
(jit_might (d,    _EAX, PUSHLr(_EAX)),           \
       jit_might (d,    _ECX, PUSHLr(_ECX)),            \
       jit_might (d,    _EDX, PUSHLr(_EDX)),            \
       jit_might (rs,   _EAX, MOVLrr(rs, _EAX)), \
       jit_might (rs,   _EDX, MOVLrr(rs, _EDX)), \
       MOVLir(is, _ECX),                         \
       SARLir(31, _EDX),                         \
       IDIVLr(_ECX),                             \
       jit_might(d,    result, MOVLrr(result, d)),      \
       jit_might(d,     _EDX,  POPLr(_EDX)),            \
       jit_might(d,     _ECX,  POPLr(_ECX)),            \
       jit_might(d,     _EAX,  POPLr(_EAX)))

Definition at line 167 of file core.h.

#define jit_divi_ui (   d,
  rs,
  is 
)    jit_divi_ui_(_EAX, (d), (rs), (is))

Definition at line 285 of file core.h.

#define jit_divi_ui_ (   result,
  d,
  rs,
  is 
)
Value:
(jit_might (d,    _EAX, PUSHLr(_EAX)),           \
       jit_might (d,    _ECX, PUSHLr(_ECX)),            \
       jit_might (d,    _EDX, PUSHLr(_EDX)),            \
       jit_might (rs,   _EAX, MOVLrr(rs, _EAX)), \
       MOVLir(is, _ECX),                         \
       XORLrr(_EDX, _EDX),                       \
       DIVLr(_ECX),                              \
       jit_might(d,    result, MOVLrr(result, d)),      \
       jit_might(d,     _EDX,  POPLr(_EDX)),            \
       jit_might(d,     _ECX,  POPLr(_ECX)),            \
       jit_might(d,     _EAX,  POPLr(_EAX)))

Definition at line 197 of file core.h.

#define jit_divr_i (   d,
  s1,
  s2 
)    jit_divr_i_(_EAX, (d), (s1), (s2))

Definition at line 288 of file core.h.

#define jit_divr_i_ (   result,
  d,
  s1,
  s2 
)
Value:
(jit_might (d,    _EAX, PUSHLr(_EAX)),           \
       jit_might (d,    _ECX, PUSHLr(_ECX)),            \
       jit_might (d,    _EDX, PUSHLr(_EDX)),            \
       ((s1 == _ECX) ? PUSHLr(_ECX) : 0),        \
       jit_might (s2,   _ECX, MOVLrr(s2, _ECX)), \
       ((s1 == _ECX) ? POPLr(_EDX) :                    \
       jit_might (s1,   _EDX, MOVLrr(s1, _EDX))),       \
       MOVLrr(_EDX, _EAX),                       \
       SARLir(31, _EDX),                         \
       IDIVLr(_ECX),                             \
       jit_might(d,    result, MOVLrr(result, d)),      \
       jit_might(d,     _EDX,  POPLr(_EDX)),            \
       jit_might(d,     _ECX,  POPLr(_ECX)),            \
       jit_might(d,     _EAX,  POPLr(_EAX)))

Definition at line 181 of file core.h.

#define jit_divr_ui (   d,
  s1,
  s2 
)    jit_divr_ui_(_EAX, (d), (s1), (s2))

Definition at line 289 of file core.h.

#define jit_divr_ui_ (   result,
  d,
  s1,
  s2 
)
Value:
(jit_might (d,    _EAX, PUSHLr(_EAX)),           \
       jit_might (d,    _ECX, PUSHLr(_ECX)),            \
       jit_might (d,    _EDX, PUSHLr(_EDX)),            \
       ((s1 == _ECX) ? PUSHLr(_ECX) : 0),        \
       jit_might (s2,   _ECX, MOVLrr(s2, _ECX)), \
       ((s1 == _ECX) ? POPLr(_EAX) :                    \
       jit_might (s1,   _EAX, MOVLrr(s1, _EAX))),       \
       XORLrr(_EDX, _EDX),                       \
       DIVLr(_ECX),                              \
       jit_might(d,    result, MOVLrr(result, d)),      \
       jit_might(d,     _EDX,  POPLr(_EDX)),            \
       jit_might(d,     _ECX,  POPLr(_ECX)),            \
       jit_might(d,     _EAX,  POPLr(_EAX)))

Definition at line 210 of file core.h.

#define jit_eqi_i (   d,
  rs,
  is 
)    jit_bool_i0((d), (rs), (is), SETEr, SETEr )

Definition at line 429 of file core.h.

#define jit_eqr_i (   d,
  s1,
  s2 
)    jit_bool_r((d), (s1), (s2), SETEr )

Definition at line 418 of file core.h.

#define jit_finish (   sub)    ((void)jit_calli((sub)), ADDLir(sizeof(long) * _jitl.argssize, JIT_SP), _jitl.argssize = 0)

Definition at line 366 of file core.h.

#define jit_finishr (   reg)    (jit_callr((reg)), ADDLir(sizeof(long) * _jitl.argssize, JIT_SP), _jitl.argssize = 0)

Definition at line 367 of file core.h.

#define JIT_FP   _EBP

Definition at line 37 of file core.h.

#define jit_gei_i (   d,
  rs,
  is 
)    jit_bool_i0((d), (rs), (is), SETGEr, SETNSr )

Definition at line 428 of file core.h.

#define jit_gei_ui (   d,
  rs,
  is 
)    jit_bool_i0((d), (rs), (is), SETAEr, INCLr )

Definition at line 434 of file core.h.

#define jit_ger_i (   d,
  s1,
  s2 
)    jit_bool_r((d), (s1), (s2), SETGEr )

Definition at line 417 of file core.h.

#define jit_ger_ui (   d,
  s1,
  s2 
)    jit_bool_r((d), (s1), (s2), SETAEr )

Definition at line 423 of file core.h.

#define jit_gti_i (   d,
  rs,
  is 
)    jit_bool_i ((d), (rs), (is), SETGr )

Definition at line 427 of file core.h.

#define jit_gti_ui (   d,
  rs,
  is 
)    jit_bool_i0((d), (rs), (is), SETAr, SETNEr )

Definition at line 433 of file core.h.

#define jit_gtr_i (   d,
  s1,
  s2 
)    jit_bool_r((d), (s1), (s2), SETGr )

Definition at line 416 of file core.h.

#define jit_gtr_ui (   d,
  s1,
  s2 
)    jit_bool_r((d), (s1), (s2), SETAr )

Definition at line 422 of file core.h.

#define jit_hmuli_i (   d,
  rs,
  is 
)
Value:
((d) == _EDX ? (           PUSHLr(_EAX), jit_muli_i_((is), (rs)),                               POPLr(_EAX)            ) :    \
       ((d) == _EAX ? (PUSHLr(_EDX),                 jit_muli_i_((is), (rs)), MOVLrr(_EDX, _EAX),      POPLr(_EDX) ) : \
                      (PUSHLr(_EDX), PUSHLr(_EAX), jit_muli_i_((is), (rs)), MOVLrr(_EDX, (d)), POPLr(_EAX), POPLr(_EDX) )))

Definition at line 264 of file core.h.

#define jit_hmuli_ui (   d,
  rs,
  is 
)
Value:
((d) == _EDX ? (           PUSHLr(_EAX), jit_muli_ui_((is), (rs)),                               POPLr(_EAX)           ) :    \
       ((d) == _EAX ? (PUSHLr(_EDX),                 jit_muli_ui_((is), (rs)), MOVLrr(_EDX, _EAX),             POPLr(_EDX) ) :       \
                      (PUSHLr(_EDX), PUSHLr(_EAX), jit_muli_ui_((is), (rs)), MOVLrr(_EDX, (d)), POPLr(_EAX), POPLr(_EDX) )))

Definition at line 274 of file core.h.

#define jit_hmulr_i (   d,
  s1,
  s2 
)
Value:
((d) == _EDX ? (           PUSHLr(_EAX), jit_mulr_i_((s1), (s2)),                     POPLr(_EAX)            ) :       \
       ((d) == _EAX ? (PUSHLr(_EDX),                 jit_mulr_i_((s1), (s2)), MOVLrr(_EDX, _EAX),               POPLr(_EDX)  ) :     \
                     (PUSHLr(_EDX), PUSHLr(_EAX), jit_mulr_i_((s1), (s2)), MOVLrr(_EDX, (d)),   POPLr(_EAX), POPLr(_EDX)  )))

Definition at line 269 of file core.h.

#define jit_hmulr_ui (   d,
  s1,
  s2 
)
Value:
((d) == _EDX ? (           PUSHLr(_EAX), jit_mulr_ui_((s1), (s2)),                    POPLr(_EAX)            ) :       \
       ((d) == _EAX ? (PUSHLr(_EDX),                 jit_mulr_ui_((s1), (s2)), MOVLrr(_EDX, _EAX),              POPLr(_EDX)  ) :     \
                     (PUSHLr(_EDX), PUSHLr(_EAX), jit_mulr_ui_((s1), (s2)), MOVLrr(_EDX, (d)),  POPLr(_EAX), POPLr(_EDX)  )))

Definition at line 279 of file core.h.

#define jit_jmpi (   label)    (JMPm( ((unsigned long) (label)), 0, 0, 0), _jit.x.pc)

Definition at line 508 of file core.h.

#define jit_jmpr (   reg)    JMPsr(reg)

Definition at line 511 of file core.h.

#define jit_ldi_c (   d,
  is 
)    MOVSBLmr((is), 0, 0, 0, (d))

Definition at line 528 of file core.h.

#define jit_ldi_i (   d,
  is 
)    MOVLmr((is), 0, 0, 0, (d))

Definition at line 558 of file core.h.

#define jit_ldi_l (   d,
  is 
)    _jit_ldi_l(d, is)

Definition at line 582 of file core.h.

#define jit_ldi_s (   d,
  is 
)    MOVSWLmr((is), 0, 0, 0, (d))

Definition at line 543 of file core.h.

#define jit_ldi_uc (   d,
  is 
)    MOVZBLmr((is), 0, 0, 0, (d))

Definition at line 533 of file core.h.

#define jit_ldi_us (   d,
  is 
)    MOVZWLmr((is), 0, 0, 0, (d))

Definition at line 548 of file core.h.

#define jit_ldr_c (   d,
  rs 
)    MOVSBLmr(0, (rs), 0, 0, (d))

Definition at line 529 of file core.h.

#define jit_ldr_i (   d,
  rs 
)    MOVLmr(0, (rs), 0, 0, (d))

Definition at line 559 of file core.h.

#define jit_ldr_l (   d,
  rs 
)    MOVQmr(0, (rs), 0, 0, (d))

Definition at line 569 of file core.h.

#define jit_ldr_s (   d,
  rs 
)    MOVSWLmr(0, (rs), 0, 0, (d))

Definition at line 544 of file core.h.

#define jit_ldr_uc (   d,
  rs 
)    MOVZBLmr(0, (rs), 0, 0, (d))

Definition at line 534 of file core.h.

#define jit_ldr_us (   d,
  rs 
)    MOVZWLmr(0, (rs), 0, 0, (d))

Definition at line 549 of file core.h.

#define jit_ldxi_c (   d,
  rs,
  is 
)    MOVSBLmr((is), (rs), 0, 0, (d))

Definition at line 531 of file core.h.

#define jit_ldxi_i (   d,
  rs,
  is 
)    MOVLmr((is), (rs), 0, 0, (d))

Definition at line 561 of file core.h.

#define jit_ldxi_l (   d,
  rs,
  is 
)    MOVQmr((is), (rs), 0, 0, (d))

Definition at line 571 of file core.h.

#define jit_ldxi_s (   d,
  rs,
  is 
)    MOVSWLmr((is), (rs), 0, 0, (d))

Definition at line 546 of file core.h.

#define jit_ldxi_uc (   d,
  rs,
  is 
)    MOVZBLmr((is), (rs), 0, 0, (d))

Definition at line 536 of file core.h.

#define jit_ldxi_us (   d,
  rs,
  is 
)    MOVZWLmr((is), (rs), 0, 0, (d))

Definition at line 551 of file core.h.

#define jit_ldxr_c (   d,
  s1,
  s2 
)    MOVSBLmr(0, (s1), (s2), 1, (d))

Definition at line 530 of file core.h.

#define jit_ldxr_i (   d,
  s1,
  s2 
)    MOVLmr(0, (s1), (s2), 1, (d))

Definition at line 560 of file core.h.

#define jit_ldxr_l (   d,
  s1,
  s2 
)    MOVQmr(0, (s1), (s2), 1, (d))

Definition at line 570 of file core.h.

#define jit_ldxr_s (   d,
  s1,
  s2 
)    MOVSWLmr(0, (s1), (s2), 1, (d))

Definition at line 545 of file core.h.

#define jit_ldxr_uc (   d,
  s1,
  s2 
)    MOVZBLmr(0, (s1), (s2), 1, (d))

Definition at line 535 of file core.h.

#define jit_ldxr_us (   d,
  s1,
  s2 
)    MOVZWLmr(0, (s1), (s2), 1, (d))

Definition at line 550 of file core.h.

#define jit_lei_i (   d,
  rs,
  is 
)    jit_bool_i ((d), (rs), (is), SETLEr )

Definition at line 426 of file core.h.

#define jit_lei_ui (   d,
  rs,
  is 
)    jit_bool_i0((d), (rs), (is), SETBEr, SETEr )

Definition at line 432 of file core.h.

#define jit_ler_i (   d,
  s1,
  s2 
)    jit_bool_r((d), (s1), (s2), SETLEr )

Definition at line 415 of file core.h.

#define jit_ler_ui (   d,
  s1,
  s2 
)    jit_bool_r((d), (s1), (s2), SETBEr )

Definition at line 421 of file core.h.

#define jit_lshi_i (   d,
  rs,
  is 
)    ((is) <= 3 ? LEALmr(0, 0, (rs), 1 << (is), (d)) : jit_op_ ((d), (rs), SHLLir((is), (d)) ))

Definition at line 295 of file core.h.

#define jit_lshi_l (   d,
  rs,
  is 
)    ((is) <= 3 ? LEAQmr(0, 0, (rs), 1 << (is), (d)) : jit_qop_ ((d), (rs), SHLQir((is), (d)) ))

Definition at line 302 of file core.h.

#define jit_lshr_i (   d,
  r1,
  r2 
)    jit_replace((r1), (r2), _ECX, jit_op_ ((d), (r1), SHLLrr(_CL, (d)) ))

Definition at line 298 of file core.h.

#define jit_lshr_l (   d,
  r1,
  r2 
)    jit_replace((r1), (r2), _ECX, jit_qop_ ((d), (r1), SHLQrr(_CL, (d)) ))

Definition at line 305 of file core.h.

#define jit_lti_i (   d,
  rs,
  is 
)    jit_bool_i0((d), (rs), (is), SETLr, SETSr )

Definition at line 425 of file core.h.

#define jit_lti_ui (   d,
  rs,
  is 
)    jit_bool_i ((d), (rs), (is), SETBr )

Definition at line 431 of file core.h.

#define jit_ltr_i (   d,
  s1,
  s2 
)    jit_bool_r((d), (s1), (s2), SETLr )

Definition at line 414 of file core.h.

#define jit_ltr_ui (   d,
  s1,
  s2 
)    jit_bool_r((d), (s1), (s2), SETBr )

Definition at line 420 of file core.h.

#define jit_might (   d,
  s1,
  op 
)    ((s1 == d) ? 0 : op)

Definition at line 152 of file core.h.

#define jit_modi_i (   d,
  rs,
  is 
)    jit_divi_i_(_EDX, (d), (rs), (is))

Definition at line 286 of file core.h.

#define jit_modi_ui (   d,
  rs,
  is 
)    jit_divi_ui_(_EDX, (d), (rs), (is))

Definition at line 287 of file core.h.

#define jit_modr_i (   d,
  s1,
  s2 
)    jit_divr_i_(_EDX, (d), (s1), (s2))

Definition at line 290 of file core.h.

#define jit_modr_ui (   d,
  s1,
  s2 
)    jit_divr_ui_(_EDX, (d), (s1), (s2))

Definition at line 291 of file core.h.

#define jit_movbrm (   rs,
  dd,
  db,
  di,
  ds 
)
Value:
(jit_check8(rs)                                                         \
               ? MOVBrm(jit_reg8(rs), dd, db, di, ds)                          \
               : jit_replace(_EBX, rs, _EAX, MOVBrm(_AL, dd, db, di, ds)))

Definition at line 131 of file core.h.

#define jit_movi_i (   d,
  is 
)    ((is) ? MOVLir((is), (d)) : XORLrr ((d), (d)) )

Definition at line 399 of file core.h.

#define jit_movi_l (   d,
  is 
)
Value:
((is) \
                                 ? (_u32P((long)(is)) \
                                    ? MOVLir((is), (d)) \
                                    : MOVQir((is), (d))) \
                                 : XORLrr ((d), (d)) )

Definition at line 401 of file core.h.

#define jit_movi_p (   d,
  is 
)    jit_movi_l(d, ((long)(is)))

Definition at line 406 of file core.h.

#define jit_movr_i (   d,
  rs 
)    ((void)((rs) == (d) ? 0 : MOVLrr((rs), (d))))

Definition at line 398 of file core.h.

#define jit_movr_l (   d,
  rs 
)    ((void)((rs) == (d) ? 0 : MOVQrr((rs), (d))))

Definition at line 400 of file core.h.

#define jit_muli_i (   d,
  rs,
  is 
)    jit_op_ ((d), (rs), IMULLir((is), (d)) )

Definition at line 256 of file core.h.

#define jit_muli_i_ (   is,
  rs 
)
Value:
(MOVLir(is, rs == _EAX ? _EDX : _EAX),           \
        IMULLr(rs == _EAX ? _EDX : rs))

Definition at line 159 of file core.h.

#define jit_muli_ui (   d,
  rs,
  is 
)    jit_op_ ((d), (rs), IMULLir((is), (d)) )

Definition at line 261 of file core.h.

#define jit_muli_ui_ (   is,
  rs 
)
Value:
(MOVLir(is, rs == _EAX ? _EDX : _EAX),           \
        IMULLr(rs == _EAX ? _EDX : rs))

Definition at line 163 of file core.h.

#define jit_mulr_i (   d,
  s1,
  s2 
)    jit_opr_((d), (s1), (s2), IMULLrr((s1), (d)), IMULLrr((s2), (d)) )

Definition at line 257 of file core.h.

#define jit_mulr_i_ (   s1,
  s2 
)    jit_opr_(_EAX, s1, s2, IMULLr(s1), IMULLr(s2))

Definition at line 156 of file core.h.

#define jit_mulr_ui (   d,
  s1,
  s2 
)    jit_opr_((d), (s1), (s2), IMULLrr((s1), (d)), IMULLrr((s2), (d)) )

Definition at line 262 of file core.h.

#define jit_mulr_ui_ (   s1,
  s2 
)    jit_opr_(_EAX, s1, s2, MULLr(s1), MULLr(s2))

Definition at line 155 of file core.h.

#define jit_negr_i (   d,
  rs 
)    jit_opi_((d), (rs), NEGLr(d), (XORLrr((d), (d)), SUBLrr((rs), (d))) )

Definition at line 395 of file core.h.

#define jit_negr_l (   d,
  rs 
)    jit_opi_((d), (rs), NEGQr(d), (XORQrr((d), (d)), SUBQrr((rs), (d))) )

Definition at line 396 of file core.h.

#define jit_nei_i (   d,
  rs,
  is 
)    jit_bool_i0((d), (rs), (is), SETNEr, SETNEr )

Definition at line 430 of file core.h.

#define jit_ner_i (   d,
  s1,
  s2 
)    jit_bool_r((d), (s1), (s2), SETNEr )

Definition at line 419 of file core.h.

#define jit_nop ( )    NOP_()

Definition at line 588 of file core.h.

#define jit_ntoh_ui (   d,
  rs 
)    jit_op_((d), (rs), BSWAPLr(d))

Definition at line 410 of file core.h.

#define jit_ntoh_us (   d,
  rs 
)    jit_op_((d), (rs), RORWir(8, d))

Definition at line 411 of file core.h.

#define jit_op_ (   d,
  s1,
  op2d 
)    ((s1 == d) ? op2d : (MOVLrr(s1, d), op2d))

Definition at line 68 of file core.h.

#define jit_opi_ (   d,
  rs,
  opdi,
  opdri 
)    ((rs == d) ? opdi : opdri)

Definition at line 79 of file core.h.

#define jit_opo_ (   d,
  s1,
  s2,
  op1d,
  op2d,
  op12d 
)
Value:
((s2 == d) ? op2d :                       \
       ((s1 == d) ? op1d : op12d))

Definition at line 74 of file core.h.

#define jit_opr_ (   d,
  s1,
  s2,
  op1d,
  op2d 
)
Value:
( (s2 == d) ? op1d :                                    \
         (  ((s1 == d) ? (void)0 : (void)MOVLrr(s1, d)), op2d )       \
       )

Definition at line 58 of file core.h.

#define jit_ori_i (   d,
  rs,
  is 
)    jit_op_ ((d), (rs), jit_reduce(OR, (is), (d)) )

Definition at line 251 of file core.h.

#define jit_ori_l (   d,
  rs,
  is 
)    jit_qop_ ((d), (rs), jit_reduceQ(OR, (is), (d)) )

Definition at line 253 of file core.h.

#define jit_orr_i (   d,
  s1,
  s2 
)    jit_opr_((d), (s1), (s2), ORLrr((s1), (d)), ORLrr((s2), (d)) )

Definition at line 235 of file core.h.

#define jit_orr_l (   d,
  s1,
  s2 
)    jit_qopr_((d), (s1), (s2), ORQrr((s1), (d)), ORQrr((s2), (d)) )

Definition at line 246 of file core.h.

#define jit_patch_branch_at (   jump_pc,
 
)    jit_patch_long_at(jump_pc, v)

Definition at line 522 of file core.h.

#define jit_patch_long_at (   jump_pc,
 
)
Value:
(_jitl.tiny_jumps \
                                       ? (*_PSC((jump_pc) - sizeof(char)) = _jit_SC((jit_insn *)(v) - (jump_pc))) \
                                       : (*_PSL((jump_pc) - sizeof(long)) = _jit_SL((jit_insn *)(v) - (jump_pc))))

Definition at line 519 of file core.h.

#define jit_patch_movi (   pa,
  pv 
)    (*_PSL((pa) - sizeof(long)) = _jit_SL((pv)))

Definition at line 408 of file core.h.

#define jit_patch_ucbranch_at (   jump_pc,
 
)    jit_patch_long_at(jump_pc, v)

Definition at line 523 of file core.h.

#define jit_patchable_movi_p (   d,
  is 
)    (MOVQir((is), (d)), _jit.x.pc)

Definition at line 407 of file core.h.

#define jit_popr_i (   rs)    POPLr(rs)

Definition at line 311 of file core.h.

#define jit_popr_l (   rs)    jit_popr_i(rs)

Definition at line 313 of file core.h.

#define jit_prepare_d (   nd)    (_jitl.argssize += 2 * (nd))

Definition at line 341 of file core.h.

#define jit_prepare_f (   nf)    (_jitl.argssize += (nf))

Definition at line 340 of file core.h.

#define jit_prepare_i (   ni)    (_jitl.argssize += (ni))

Definition at line 336 of file core.h.

#define jit_prolog (   n)    (_jitl.framesize = 8, jit_base_prolog())

Definition at line 320 of file core.h.

#define jit_pusharg_i (   rs)    PUSHLr(rs)

Definition at line 365 of file core.h.

#define jit_pusharg_l (   rs)    jit_pusharg_i(rs)

Definition at line 369 of file core.h.

#define jit_pushr_i (   rs)    PUSHLr(rs)

Definition at line 310 of file core.h.

#define jit_pushr_l (   rs)    jit_pushr_i(rs)

Definition at line 312 of file core.h.

#define jit_qop_ (   d,
  s1,
  op2d 
)    ((s1 == d) ? op2d : (MOVQrr(s1, d), op2d))

Definition at line 70 of file core.h.

#define jit_qopr_ (   d,
  s1,
  s2,
  op1d,
  op2d 
)
Value:
( (s2 == d) ? op1d :                                    \
         (  ((s1 == d) ? (void)0 : (void)MOVQrr(s1, d)), op2d )       \
       )

Definition at line 62 of file core.h.

#define JIT_R (   i)    (_EAX + (i))

Definition at line 43 of file core.h.

#define JIT_R_NUM   3

Definition at line 41 of file core.h.

#define jit_reduce (   op,
  is,
  rs 
)
Value:
(_u8P(is) && jit_check8(rs) ? jit_reduce_(op##Bir(is, jit_reg8(rs))) :       \
       (_u16P(is) && JIT_CAN_16 ? jit_reduce_(op##Wir(is, jit_reg16(rs))) :                \
       jit_reduce_(op##Lir(is, rs)) ))

Definition at line 143 of file core.h.

#define jit_reduce_ (   op)    op

Definition at line 142 of file core.h.

#define jit_reduceQ (   op,
  is,
  rs 
)
Value:
(_u8P(is) && jit_check8(rs) ? jit_reduce_(op##Bir(is, jit_reg8(rs))) :       \
       jit_reduce_(op##Qir(is, rs)) )

Definition at line 147 of file core.h.

#define jit_reg16 (   rs)    ( ((rs) & _BH) | _AX )

Definition at line 128 of file core.h.

#define jit_reg8 (   rs)    ( ((rs) == _SI || (rs) == _DI) ? _AL : ((rs) & _BH) | _AL )

Definition at line 127 of file core.h.

#define jit_replace (   rd,
  rs,
  forced,
  op 
)
Value:
((rd == forced) ? JITSORRY("Register conflict for " # op) :    \
        (rs == forced) ? op : (PUSHLr(forced), MOVLrr(rs, forced), op, POPLr(forced)))

Definition at line 83 of file core.h.

#define jit_replace8 (   d,
  op 
)
Value:
(jit_check8(d)                                                 \
         ? (MOVLir(0, d), op(d))                               \
         : (PUSHLr(_EAX), MOVLir(0, _EAX), op(_EAX), MOVLrr(_EAX, (d)), POPLr(_EAX)))

Definition at line 88 of file core.h.

#define JIT_RET   _EAX

Definition at line 39 of file core.h.

#define jit_ret ( )    (POPLr(_EDI), POPLr(_ESI), POPLr(_EBX), POPLr(_EBP), RET_())

Definition at line 524 of file core.h.

#define jit_retval_i (   rd)    ((void)jit_movr_i ((rd), _EAX))

Definition at line 370 of file core.h.

#define jit_retval_l (   rd)    ((void)jit_movr_l ((rd), _EAX))

Definition at line 371 of file core.h.

#define jit_rshi_i (   d,
  rs,
  is 
)    jit_op_ ((d), (rs), SARLir((is), (d)) )

Definition at line 296 of file core.h.

#define jit_rshi_l (   d,
  rs,
  is 
)    jit_qop_ ((d), (rs), SARQir((is), (d)) )

Definition at line 303 of file core.h.

#define jit_rshi_ui (   d,
  rs,
  is 
)    jit_op_ ((d), (rs), SHRLir((is), (d)) )

Definition at line 297 of file core.h.

#define jit_rshi_ul (   d,
  rs,
  is 
)    jit_qop_ ((d), (rs), SHRQir((is), (d)) )

Definition at line 304 of file core.h.

#define jit_rshr_i (   d,
  r1,
  r2 
)    jit_replace((r1), (r2), _ECX, jit_op_ ((d), (r1), SARLrr(_CL, (d)) ))

Definition at line 299 of file core.h.

#define jit_rshr_l (   d,
  r1,
  r2 
)    jit_replace((r1), (r2), _ECX, jit_qop_ ((d), (r1), SARQrr(_CL, (d)) ))

Definition at line 306 of file core.h.

#define jit_rshr_ui (   d,
  r1,
  r2 
)    jit_replace((r1), (r2), _ECX, jit_op_ ((d), (r1), SHRLrr(_CL, (d)) ))

Definition at line 300 of file core.h.

#define jit_rshr_ul (   d,
  r1,
  r2 
)    jit_replace((r1), (r2), _ECX, jit_qop_ ((d), (r1), SHRQrr(_CL, (d)) ))

Definition at line 307 of file core.h.

#define JIT_SP   _ESP

Definition at line 38 of file core.h.

#define jit_sti_c (   id,
  rs 
)    jit_movbrm((rs), (id), 0, 0, 0)

Definition at line 538 of file core.h.

#define jit_sti_i (   id,
  rs 
)    MOVLrm((rs), (id), 0, 0, 0)

Definition at line 563 of file core.h.

#define jit_sti_l (   id,
  rs 
)    _jit_sti_l(id, rs)

Definition at line 583 of file core.h.

#define jit_sti_s (   id,
  rs 
)    MOVWrm(jit_reg16(rs), (id), 0, 0, 0)

Definition at line 553 of file core.h.

#define jit_str_c (   rd,
  rs 
)    jit_movbrm((rs), 0, (rd), 0, 0)

Definition at line 539 of file core.h.

#define jit_str_i (   rd,
  rs 
)    MOVLrm((rs), 0, (rd), 0, 0)

Definition at line 564 of file core.h.

#define jit_str_l (   rd,
  rs 
)    MOVQrm((rs), 0, (rd), 0, 0)

Definition at line 574 of file core.h.

#define jit_str_s (   rd,
  rs 
)    MOVWrm(jit_reg16(rs), 0, (rd), 0, 0)

Definition at line 554 of file core.h.

#define jit_stxi_c (   id,
  rd,
  rs 
)    jit_movbrm((rs), (id), (rd), 0, 0)

Definition at line 541 of file core.h.

#define jit_stxi_i (   id,
  rd,
  rs 
)    MOVLrm((rs), (id), (rd), 0, 0)

Definition at line 566 of file core.h.

#define jit_stxi_l (   id,
  rd,
  rs 
)    MOVQrm((rs), (id), (rd), 0, 0)

Definition at line 576 of file core.h.

#define jit_stxi_s (   id,
  rd,
  rs 
)    MOVWrm(jit_reg16(rs), (id), (rd), 0, 0)

Definition at line 556 of file core.h.

#define jit_stxr_c (   d1,
  d2,
  rs 
)    jit_movbrm((rs), 0, (d1), (d2), 1)

Definition at line 540 of file core.h.

#define jit_stxr_i (   d1,
  d2,
  rs 
)    MOVLrm((rs), 0, (d1), (d2), 1)

Definition at line 565 of file core.h.

#define jit_stxr_l (   d1,
  d2,
  rs 
)    MOVQrm((rs), 0, (d1), (d2), 1)

Definition at line 575 of file core.h.

#define jit_stxr_s (   d1,
  d2,
  rs 
)    MOVWrm(jit_reg16(rs), 0, (d1), (d2), 1)

Definition at line 555 of file core.h.

#define jit_subcr_i (   d,
  s1,
  s2 
)    jit_subr_i((d), (s1), (s2))

Definition at line 237 of file core.h.

#define jit_subr_i (   d,
  s1,
  s2 
)    jit_opr_((d), (s1), (s2), (SUBLrr((s1), (d)), NEGLr(d)), SUBLrr((s2), (d)) )

Definition at line 236 of file core.h.

#define jit_subr_l (   d,
  s1,
  s2 
)    jit_qopr_((d), (s1), (s2), (SUBQrr((s1), (d)), NEGQr(d)), SUBQrr((s2), (d)) )

Definition at line 247 of file core.h.

#define jit_subxi_i (   d,
  rs,
  is 
)    jit_op_ ((d), (rs), SBBLir((is), (d)) )

Definition at line 239 of file core.h.

#define jit_subxr_i (   d,
  s1,
  s2 
)    jit_opr_((d), (s1), (s2), SBBLrr((s1), (d)), SBBLrr((s2), (d)) )

Definition at line 238 of file core.h.

#define JIT_V (   i)    ((i) == 0 ? _EBX : _ESI + (i) - 1)

Definition at line 44 of file core.h.

#define JIT_V_NUM   3

Definition at line 42 of file core.h.

#define jit_xori_i (   d,
  rs,
  is 
)    jit_op_ ((d), (rs), jit_reduce(XOR, (is), (d)) )

Definition at line 252 of file core.h.

#define jit_xori_l (   d,
  rs,
  is 
)    jit_qop_ ((d), (rs), jit_reduceQ(XOR, (is), (d)) )

Definition at line 254 of file core.h.

#define jit_xorr_i (   d,
  s1,
  s2 
)    jit_opr_((d), (s1), (s2), XORLrr((s1), (d)), XORLrr((s2), (d)) )

Definition at line 240 of file core.h.

#define jit_xorr_l (   d,
  s1,
  s2 
)    jit_qopr_((d), (s1), (s2), XORQrr((s1), (d)), XORQrr((s2), (d)) )

Definition at line 248 of file core.h.