306 if ((value >= -32768) && (value <= 32767))
323 if ((value >= -32768) && (value <= 32767)) {
348 checkdisp = disp + 4;
349 branchdisp = (disp - 4) >> 2;
356 if ((checkdisp < (
s4) 0xfe000000) || (checkdisp > (
s4) 0x01fffffc)) {
364 vm_abort(
"emit_branch: emit unconditional long-branch code");
373 if ((checkdisp < (
s4) 0xffff8000) || (checkdisp > (
s4) 0x00007fff)) {
383 checkdisp = checkdisp - 4;
384 branchdisp = branchdisp - 1;
386 if ((checkdisp < (int32_t) 0xfe000000) || (checkdisp > (int32_t) 0x01fffffc)) {
387 vm_abort(
"emit_branch: emit conditional long-branch code");
416 vm_abort(
"emit_branch: long BRANCH_NAN");
419 vm_abort(
"emit_branch: unknown condition %d", condition);
448 vm_abort(
"emit_branch: unknown condition %d", condition);
526 vm_abort(
"emit_classcast_check: unknown condition %d", condition);
593 uint32_t mcode = *((uint32_t*) cd->
mcodeptr);
625 # if !defined(NDEBUG)
658 # if !defined(NDEBUG)
739 #if defined(ENABLE_PROFILING)
753 #if defined(ENABLE_PROFILING)
769 #if defined(ENABLE_PROFILING)
780 #if defined(ENABLE_PROFILING)
const s4 abi_registers_float_argument[]
#define CODEGENDATA_FLAG_ERROR
dummy_java_lang_Class object
#define M_ALD(a, b, disp)
void emit_monitor_exit(jitdata *jd, int32_t syncslot_offset)
Generates synchronization code to leave a monitor.
#define M_LST(a, b, disp)
#define JITDATA_HAS_FLAG_VERBOSECALL(jd)
#define M_ILD(a, b, disp)
#define M_IST(a, b, disp)
#define M_LDA(a, b, disp)
void emit_monitor_enter(jitdata *jd, int32_t syncslot_offset)
Generates synchronization code to enter a monitor.
const s4 abi_registers_integer_argument[]
#define M_AADD_IMM(a, b, c)
s4 dseg_add_address(codegendata *cd, void *value)
#define REG_ITMP12_PACKED
s4 codegen_reg_of_var(u2 opcode, varinfo *v, s4 tempregnum)
#define BRANCH_UNCONDITIONAL
#define dseg_add_functionptr(cd, value)
void emit_arraystore_check(codegendata *cd, instruction *iptr)
#define M_FST(a, b, disp)
#define M_FLD(a, b, disp)
void trace_java_call_exit(methodinfo *m, uint64_t *return_regs)
#define CODEGENDATA_HAS_FLAG_LONGBRANCHES(cd)
#define CODEGENDATA_FLAG_LONGBRANCHES
JNIEnv jthread jobject jclass jlong size
void emit_recompute_pv(codegendata *cd)
Emit code to recompute the procedure vector.
void emit_abstractmethoderror_trap(codegendata *cd)
s4 dseg_add_s4(codegendata *cd, s4 value)
void vm_abort(const char *text,...)
void emit_verbosecall_enter(jitdata *jd)
void emit_exception_check(codegendata *cd, instruction *iptr)
void trace_java_call_enter(methodinfo *m, uint64_t *arg_regs, uint64_t *stack)
s4 emit_load_high(jitdata *jd, instruction *iptr, varinfo *src, s4 tempreg)
#define LOCK_monitor_enter
#define M_STWU(a, b, disp)
#define M_ALD_INTERN(a, b, disp)
void emit_trap_compiler(codegendata *cd)
void emit_trap(codegendata *cd, u1 Xd, int type)
s4 emit_load(jitdata *jd, instruction *iptr, varinfo *src, s4 tempreg)
void emit_store(jitdata *jd, instruction *iptr, varinfo *dst, s4 d)
#define M_AST(a, b, disp)
void emit_arithmetic_check(codegendata *cd, instruction *iptr, s4 reg)
#define LOCK_monitor_exit
void emit_icmp_imm(codegendata *cd, int reg, int32_t value)
Emits code comparing a single register.
void emit_copy(jitdata *jd, instruction *iptr)
static bool IS_INMEMORY(s4 flags)
s4 emit_load_low(jitdata *jd, instruction *iptr, varinfo *src, s4 tempreg)
void emit_classcast_check(codegendata *cd, instruction *iptr, s4 condition, s4 reg, s4 s1)
void emit_branch(codegendata *cd, s4 disp, s4 condition, s4 reg, u4 opt)
#define M_DST(a, b, disp)
void emit_iconst(codegendata *cd, s4 d, s4 value)
#define M_LDA_INTERN(a, b, disp)
#define M_LLD(a, b, disp)
#define M_IADD_IMM(a, b, c)
void emit_arrayindexoutofbounds_check(codegendata *cd, instruction *iptr, s4 s1, s4 s2)
#define M_DLD(a, b, disp)
void emit_verbosecall_exit(jitdata *jd)
#define INSTRUCTION_MUST_CHECK(iptr)
#define LA_SIZE_IN_POINTERS
void emit_nullpointer_check(codegendata *cd, instruction *iptr, s4 reg)
#define REG_RESULT_PACKED