85 #if defined(ENABLE_SOFTFLOAT)
153 #if defined(__ARMEL__)
191 #if defined(__ARMEL__)
226 #if defined(ENABLE_SOFTFLOAT)
303 #if !defined(ENABLE_SOFTFLOAT)
318 #if !defined(ENABLE_SOFTFLOAT)
334 #if defined(ENABLE_SOFTFLOAT)
411 }
else if (
IS_IMM(-value)) {
435 checkdisp = (disp - 8);
436 branchdisp = (disp - 8) >> 2;
443 if ((checkdisp < (
s4) 0xff000000) || (checkdisp > (
s4) 0x00ffffff)) {
451 vm_abort(
"emit_branch: emit unconditional long-branch code");
460 if ((checkdisp < (
s4) 0xff000000) || (checkdisp > (
s4) 0x00ffffff)) {
468 vm_abort(
"emit_branch: emit conditional long-branch code");
494 vm_abort(
"emit_branch: unknown condition %d", condition);
601 vm_abort(
"emit_classcast_check: unknown condition %d", condition);
652 mcode = *((uint32_t *) cd->
mcodeptr);
673 assert((disp & 0x03) == 0);
674 assert(disp >= 0 && disp <= 0x03ffffff);
678 if (disp > 0x0003ffff) {
682 }
else if (disp > 0x000003ff) {
702 # if !defined(NDEBUG)
705 syncslot_offset += 4 * 4;
707 #if defined(__ARMHF__)
713 syncslot_offset += FLT_ARG_CNT * 8;
733 # if !defined(NDEBUG)
735 #if defined(__ARMHF__)
770 syncslot_offset += 2 * 4;
847 #if !defined(__ARMHF__)
853 #if !defined(__ARMHF__)
858 #if defined(__ARMHF__)
877 #if defined(__ARMHF__)
885 #if defined(__ARMHF__)
906 #if !defined(__ARMHF__)
912 #if !defined(__ARMHF__)
917 #if defined(__ARMHF__)
936 #if defined(__ARMHF__)
944 #if defined(__ARMHF__)
997 #if !defined(__ARMHF__)
1003 #if !defined(__ARMHF__)
1008 #if defined(__ARMHF__)
1031 #if !defined(__ARMHF__)
1037 #if !defined(__ARMHF__)
1042 #if defined(__ARMHF__)
1071 #if defined(ENABLE_PROFILING)
1087 #if defined(ENABLE_PROFILING)
1101 #if defined(ENABLE_PROFILING)
1112 #if defined(ENABLE_PROFILING)
const s4 abi_registers_float_argument[]
#define CODEGENDATA_FLAG_ERROR
dummy_java_lang_Class object
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)
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_ADD_IMM(d, a, i)
s4 dseg_add_address(codegendata *cd, void *value)
#define M_DSEG_BRANCH(offset)
#define REG_ITMP12_PACKED
s4 codegen_reg_of_var(u2 opcode, varinfo *v, s4 tempregnum)
#define BRANCH_UNCONDITIONAL
#define dseg_add_functionptr(cd, value)
#define M_STMFD(regs, base)
#define M_DSEG_LOAD(reg, offset)
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)
static int code_is_leafmethod(codeinfo *code)
s4 dseg_add_s4(codegendata *cd, s4 value)
void vm_abort(const char *text,...)
void emit_verbosecall_enter(jitdata *jd)
#define IS_2_WORD_TYPE(a)
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 M_LDR(d, base, offset)
#define LOCK_monitor_enter
#define IS_FLT_DBL_TYPE(a)
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)
void emit_nullpointer_check_force(codegendata *cd, instruction *iptr, s4 reg)
void emit_arithmetic_check(codegendata *cd, instruction *iptr, s4 reg)
#define M_SUB_IMM(d, a, i)
#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)
#define M_ADD_IMM_EXT_MUL4(d, n, imm)
static bool IS_INMEMORY(s4 flags)
#define M_LONGBRANCH(adr)
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_LDMFD(regs, base)
#define M_LLD(a, b, disp)
#define M_STR(d, base, offset)
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 IMM_ROTL(imm, rot)
void emit_nullpointer_check(codegendata *cd, instruction *iptr, s4 reg)
#define M_SUB_IMM_EXT_MUL4(d, n, imm)
#define REG_RESULT_PACKED
#define M_ILD_INTERN(a, b, disp)