X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=src%2Fvm%2Fjit%2Fi386%2Fcodegen.c;h=fb557a460e537fc08c05681b757750495d04d8a9;hb=e6e5fae4a078bce1ad035d0a6e0f15d61fadb746;hp=8e14c4ec94ba9c205b05950797a9771b235c3f7d;hpb=818a8edae2484dbb9e832aa44285b70bca7945a6;p=cacao.git diff --git a/src/vm/jit/i386/codegen.c b/src/vm/jit/i386/codegen.c index 8e14c4ec9..fb557a460 100644 --- a/src/vm/jit/i386/codegen.c +++ b/src/vm/jit/i386/codegen.c @@ -30,7 +30,7 @@ Christian Ullrich Edwin Steiner - $Id: codegen.c 6065 2006-11-27 15:24:39Z edwin $ + $Id: codegen.c 6264 2007-01-02 19:40:18Z edwin $ */ @@ -391,17 +391,11 @@ bool codegen(jitdata *jd) #endif #if !defined(NDEBUG) - if (JITDATA_HAS_FLAG_VERBOSECALL(jd)) - emit_verbosecall_enter(jd); + emit_verbosecall_enter(jd); #endif } - /* create replacement points */ - - if (!replace_create_replacement_points(jd)) - return false; - #if defined(ENABLE_SSA) /* with SSA Header is Basic Block 0 - insert phi Moves if necessary */ if ( ls != NULL) @@ -410,7 +404,9 @@ bool codegen(jitdata *jd) /* end of header generation */ - cd->replacementpoint = jd->code->rplpoints; + /* create replacement points */ + + REPLACEMENT_POINTS_INIT(cd, jd); /* walk through all basic blocks */ @@ -425,8 +421,7 @@ bool codegen(jitdata *jd) /* handle replacement points */ - if (bptr->bitflags & BBFLAG_REPLACEMENT) - codegen_set_replacement_point(cd RPLPOINT_CHECK_BB(bptr)); + REPLACEMENT_POINT_BLOCK_START(cd, bptr); /* copy interface registers to their destination */ @@ -513,18 +508,21 @@ bool codegen(jitdata *jd) MCODECHECK(1024); /* 1kB should be enough */ switch (iptr->opc) { + case ICMD_NOP: /* ... ==> ... */ + case ICMD_POP: /* ..., value ==> ... */ + case ICMD_POP2: /* ..., value, value ==> ... */ + break; case ICMD_INLINE_START: - codegen_set_replacement_point(cd RPLPOINT_CHECK(INLINE)); - - dseg_addlinenumber_inline_start(cd, iptr); + REPLACEMENT_POINT_INLINE_START(cd, iptr); break; case ICMD_INLINE_BODY: - /* non-trappable replacement point */ - codegen_set_replacement_point_notrap(cd RPLPOINT_CHECK(BODY)); + REPLACEMENT_POINT_INLINE_BODY(cd, iptr); + dseg_addlinenumber_inline_start(cd, iptr); + dseg_addlinenumber(cd, iptr->line); break; case ICMD_INLINE_END: @@ -533,15 +531,10 @@ bool codegen(jitdata *jd) dseg_addlinenumber(cd, iptr->line); break; - case ICMD_NOP: /* ... ==> ... */ - break; - case ICMD_CHECKNULL: /* ..., objectref ==> ..., objectref */ s1 = emit_load_s1(jd, iptr, REG_ITMP1); - M_TEST(s1); - M_BEQ(0); - codegen_add_nullpointerexception_ref(cd); + emit_nullpointer_check(cd, iptr, s1); break; /* constant operations ************************************************/ @@ -662,15 +655,6 @@ bool codegen(jitdata *jd) emit_copy(jd, iptr, VAROP(iptr->s1), VAROP(iptr->dst)); break; - /* pop operations *****************************************************/ - - /* attention: double and longs are only one entry in CACAO ICMDs */ - - case ICMD_POP: /* ..., value ==> ... */ - case ICMD_POP2: /* ..., value, value ==> ... */ - - break; - /* integer operations *************************************************/ @@ -931,12 +915,7 @@ bool codegen(jitdata *jd) s1 = emit_load_s1(jd, iptr, EAX); s2 = emit_load_s2(jd, iptr, REG_ITMP2); d = codegen_reg_of_dst(jd, iptr, EAX); - - if (checknull) { - M_TEST(s2); - M_BEQ(0); - codegen_add_arithmeticexception_ref(cd); - } + emit_arithmetic_check(cd, iptr, s2); M_INTMOVE(s1, EAX); /* we need the first operand in EAX */ @@ -958,12 +937,7 @@ bool codegen(jitdata *jd) s1 = emit_load_s1(jd, iptr, EAX); s2 = emit_load_s2(jd, iptr, REG_ITMP2); d = codegen_reg_of_dst(jd, iptr, EDX); - - if (checknull) { - M_TEST(s2); - M_BEQ(0); - codegen_add_arithmeticexception_ref(cd); - } + emit_arithmetic_check(cd, iptr, s2); M_INTMOVE(s1, EAX); /* we need the first operand in EAX */ @@ -1023,8 +997,8 @@ bool codegen(jitdata *jd) M_INTMOVE(GET_LOW_REG(s2), REG_ITMP3); M_OR(GET_HIGH_REG(s2), REG_ITMP3); - M_BEQ(0); - codegen_add_arithmeticexception_ref(cd); + /* XXX could be optimized */ + emit_arithmetic_check(cd, iptr, REG_ITMP3); bte = iptr->sx.s23.s3.bte; md = bte->md; @@ -1937,7 +1911,7 @@ bool codegen(jitdata *jd) s1 = emit_load_s1(jd, iptr, REG_ITMP1); d = codegen_reg_of_dst(jd, iptr, REG_ITMP1); - gen_nullptr_check(s1); + emit_nullpointer_check(cd, iptr, s1); M_ILD(d, s1, OFFSET(java_arrayheader, size)); emit_store_dst(jd, iptr, d); break; @@ -1947,10 +1921,7 @@ bool codegen(jitdata *jd) s1 = emit_load_s1(jd, iptr, REG_ITMP1); s2 = emit_load_s2(jd, iptr, REG_ITMP2); d = codegen_reg_of_dst(jd, iptr, REG_ITMP1); - if (INSTRUCTION_MUST_CHECK(iptr)) { - gen_nullptr_check(s1); - gen_bound_check; - } + emit_array_checks(cd, iptr, s1, s2); emit_movsbl_memindex_reg(cd, OFFSET(java_bytearray, data[0]), s1, s2, 0, d); emit_store_dst(jd, iptr, d); @@ -1961,10 +1932,7 @@ bool codegen(jitdata *jd) s1 = emit_load_s1(jd, iptr, REG_ITMP1); s2 = emit_load_s2(jd, iptr, REG_ITMP2); d = codegen_reg_of_dst(jd, iptr, REG_ITMP1); - if (INSTRUCTION_MUST_CHECK(iptr)) { - gen_nullptr_check(s1); - gen_bound_check; - } + emit_array_checks(cd, iptr, s1, s2); emit_movzwl_memindex_reg(cd, OFFSET(java_chararray, data[0]), s1, s2, 1, d); emit_store_dst(jd, iptr, d); @@ -1975,10 +1943,7 @@ bool codegen(jitdata *jd) s1 = emit_load_s1(jd, iptr, REG_ITMP1); s2 = emit_load_s2(jd, iptr, REG_ITMP2); d = codegen_reg_of_dst(jd, iptr, REG_ITMP1); - if (INSTRUCTION_MUST_CHECK(iptr)) { - gen_nullptr_check(s1); - gen_bound_check; - } + emit_array_checks(cd, iptr, s1, s2); emit_movswl_memindex_reg(cd, OFFSET(java_shortarray, data[0]), s1, s2, 1, d); emit_store_dst(jd, iptr, d); @@ -1989,10 +1954,7 @@ bool codegen(jitdata *jd) s1 = emit_load_s1(jd, iptr, REG_ITMP1); s2 = emit_load_s2(jd, iptr, REG_ITMP2); d = codegen_reg_of_dst(jd, iptr, REG_ITMP1); - if (INSTRUCTION_MUST_CHECK(iptr)) { - gen_nullptr_check(s1); - gen_bound_check; - } + emit_array_checks(cd, iptr, s1, s2); emit_mov_memindex_reg(cd, OFFSET(java_intarray, data[0]), s1, s2, 2, d); emit_store_dst(jd, iptr, d); @@ -2003,12 +1965,9 @@ bool codegen(jitdata *jd) s1 = emit_load_s1(jd, iptr, REG_ITMP1); s2 = emit_load_s2(jd, iptr, REG_ITMP2); d = codegen_reg_of_dst(jd, iptr, REG_ITMP3); - if (INSTRUCTION_MUST_CHECK(iptr)) { - gen_nullptr_check(s1); - gen_bound_check; - } + emit_array_checks(cd, iptr, s1, s2); - var = VAROP(iptr->dst); + var = VAROP(iptr->dst); assert(var->flags & INMEMORY); emit_mov_memindex_reg(cd, OFFSET(java_longarray, data[0]), @@ -2024,10 +1983,7 @@ bool codegen(jitdata *jd) s1 = emit_load_s1(jd, iptr, REG_ITMP1); s2 = emit_load_s2(jd, iptr, REG_ITMP2); d = codegen_reg_of_dst(jd, iptr, REG_FTMP1); - if (INSTRUCTION_MUST_CHECK(iptr)) { - gen_nullptr_check(s1); - gen_bound_check; - } + emit_array_checks(cd, iptr, s1, s2); emit_flds_memindex(cd, OFFSET(java_floatarray, data[0]), s1, s2, 2); emit_store_dst(jd, iptr, d); break; @@ -2037,10 +1993,7 @@ bool codegen(jitdata *jd) s1 = emit_load_s1(jd, iptr, REG_ITMP1); s2 = emit_load_s2(jd, iptr, REG_ITMP2); d = codegen_reg_of_dst(jd, iptr, REG_FTMP3); - if (INSTRUCTION_MUST_CHECK(iptr)) { - gen_nullptr_check(s1); - gen_bound_check; - } + emit_array_checks(cd, iptr, s1, s2); emit_fldl_memindex(cd, OFFSET(java_doublearray, data[0]), s1, s2,3); emit_store_dst(jd, iptr, d); break; @@ -2050,10 +2003,7 @@ bool codegen(jitdata *jd) s1 = emit_load_s1(jd, iptr, REG_ITMP1); s2 = emit_load_s2(jd, iptr, REG_ITMP2); d = codegen_reg_of_dst(jd, iptr, REG_ITMP1); - if (INSTRUCTION_MUST_CHECK(iptr)) { - gen_nullptr_check(s1); - gen_bound_check; - } + emit_array_checks(cd, iptr, s1, s2); emit_mov_memindex_reg(cd, OFFSET(java_objectarray, data[0]), s1, s2, 2, d); emit_store_dst(jd, iptr, d); @@ -2064,10 +2014,7 @@ bool codegen(jitdata *jd) s1 = emit_load_s1(jd, iptr, REG_ITMP1); s2 = emit_load_s2(jd, iptr, REG_ITMP2); - if (INSTRUCTION_MUST_CHECK(iptr)) { - gen_nullptr_check(s1); - gen_bound_check; - } + emit_array_checks(cd, iptr, s1, s2); s3 = emit_load_s3(jd, iptr, REG_ITMP3); if (s3 >= EBP) { /* because EBP, ESI, EDI have no xH and xL nibbles */ @@ -2082,10 +2029,7 @@ bool codegen(jitdata *jd) s1 = emit_load_s1(jd, iptr, REG_ITMP1); s2 = emit_load_s2(jd, iptr, REG_ITMP2); - if (INSTRUCTION_MUST_CHECK(iptr)) { - gen_nullptr_check(s1); - gen_bound_check; - } + emit_array_checks(cd, iptr, s1, s2); s3 = emit_load_s3(jd, iptr, REG_ITMP3); emit_movw_reg_memindex(cd, s3, OFFSET(java_chararray, data[0]), s1, s2, 1); @@ -2095,10 +2039,7 @@ bool codegen(jitdata *jd) s1 = emit_load_s1(jd, iptr, REG_ITMP1); s2 = emit_load_s2(jd, iptr, REG_ITMP2); - if (INSTRUCTION_MUST_CHECK(iptr)) { - gen_nullptr_check(s1); - gen_bound_check; - } + emit_array_checks(cd, iptr, s1, s2); s3 = emit_load_s3(jd, iptr, REG_ITMP3); emit_movw_reg_memindex(cd, s3, OFFSET(java_shortarray, data[0]), s1, s2, 1); @@ -2108,10 +2049,7 @@ bool codegen(jitdata *jd) s1 = emit_load_s1(jd, iptr, REG_ITMP1); s2 = emit_load_s2(jd, iptr, REG_ITMP2); - if (INSTRUCTION_MUST_CHECK(iptr)) { - gen_nullptr_check(s1); - gen_bound_check; - } + emit_array_checks(cd, iptr, s1, s2); s3 = emit_load_s3(jd, iptr, REG_ITMP3); emit_mov_reg_memindex(cd, s3, OFFSET(java_intarray, data[0]), s1, s2, 2); @@ -2121,12 +2059,9 @@ bool codegen(jitdata *jd) s1 = emit_load_s1(jd, iptr, REG_ITMP1); s2 = emit_load_s2(jd, iptr, REG_ITMP2); - if (INSTRUCTION_MUST_CHECK(iptr)) { - gen_nullptr_check(s1); - gen_bound_check; - } + emit_array_checks(cd, iptr, s1, s2); - var = VAROP(iptr->sx.s23.s3); + var = VAROP(iptr->sx.s23.s3); assert(var->flags & INMEMORY); emit_mov_membase_reg(cd, REG_SP, var->vv.regoff * 4, REG_ITMP3); @@ -2141,10 +2076,7 @@ bool codegen(jitdata *jd) s1 = emit_load_s1(jd, iptr, REG_ITMP1); s2 = emit_load_s2(jd, iptr, REG_ITMP2); - if (INSTRUCTION_MUST_CHECK(iptr)) { - gen_nullptr_check(s1); - gen_bound_check; - } + emit_array_checks(cd, iptr, s1, s2); s3 = emit_load_s3(jd, iptr, REG_FTMP1); emit_fstps_memindex(cd, OFFSET(java_floatarray, data[0]), s1, s2,2); break; @@ -2153,10 +2085,7 @@ bool codegen(jitdata *jd) s1 = emit_load_s1(jd, iptr, REG_ITMP1); s2 = emit_load_s2(jd, iptr, REG_ITMP2); - if (INSTRUCTION_MUST_CHECK(iptr)) { - gen_nullptr_check(s1); - gen_bound_check; - } + emit_array_checks(cd, iptr, s1, s2); s3 = emit_load_s3(jd, iptr, REG_FTMP1); emit_fstpl_memindex(cd, OFFSET(java_doublearray, data[0]), s1, s2, 3); @@ -2166,10 +2095,7 @@ bool codegen(jitdata *jd) s1 = emit_load_s1(jd, iptr, REG_ITMP1); s2 = emit_load_s2(jd, iptr, REG_ITMP2); - if (INSTRUCTION_MUST_CHECK(iptr)) { - gen_nullptr_check(s1); - gen_bound_check; - } + emit_array_checks(cd, iptr, s1, s2); s3 = emit_load_s3(jd, iptr, REG_ITMP3); M_AST(s1, REG_SP, 0 * 4); @@ -2191,10 +2117,7 @@ bool codegen(jitdata *jd) s1 = emit_load_s1(jd, iptr, REG_ITMP1); s2 = emit_load_s2(jd, iptr, REG_ITMP2); - if (INSTRUCTION_MUST_CHECK(iptr)) { - gen_nullptr_check(s1); - gen_bound_check; - } + emit_array_checks(cd, iptr, s1, s2); emit_movb_imm_memindex(cd, iptr->sx.s23.s3.constval, OFFSET(java_bytearray, data[0]), s1, s2, 0); break; @@ -2203,10 +2126,7 @@ bool codegen(jitdata *jd) s1 = emit_load_s1(jd, iptr, REG_ITMP1); s2 = emit_load_s2(jd, iptr, REG_ITMP2); - if (INSTRUCTION_MUST_CHECK(iptr)) { - gen_nullptr_check(s1); - gen_bound_check; - } + emit_array_checks(cd, iptr, s1, s2); emit_movw_imm_memindex(cd, iptr->sx.s23.s3.constval, OFFSET(java_chararray, data[0]), s1, s2, 1); break; @@ -2215,10 +2135,7 @@ bool codegen(jitdata *jd) s1 = emit_load_s1(jd, iptr, REG_ITMP1); s2 = emit_load_s2(jd, iptr, REG_ITMP2); - if (INSTRUCTION_MUST_CHECK(iptr)) { - gen_nullptr_check(s1); - gen_bound_check; - } + emit_array_checks(cd, iptr, s1, s2); emit_movw_imm_memindex(cd, iptr->sx.s23.s3.constval, OFFSET(java_shortarray, data[0]), s1, s2, 1); break; @@ -2227,10 +2144,7 @@ bool codegen(jitdata *jd) s1 = emit_load_s1(jd, iptr, REG_ITMP1); s2 = emit_load_s2(jd, iptr, REG_ITMP2); - if (INSTRUCTION_MUST_CHECK(iptr)) { - gen_nullptr_check(s1); - gen_bound_check; - } + emit_array_checks(cd, iptr, s1, s2); emit_mov_imm_memindex(cd, iptr->sx.s23.s3.constval, OFFSET(java_intarray, data[0]), s1, s2, 2); break; @@ -2239,10 +2153,7 @@ bool codegen(jitdata *jd) s1 = emit_load_s1(jd, iptr, REG_ITMP1); s2 = emit_load_s2(jd, iptr, REG_ITMP2); - if (INSTRUCTION_MUST_CHECK(iptr)) { - gen_nullptr_check(s1); - gen_bound_check; - } + emit_array_checks(cd, iptr, s1, s2); emit_mov_imm_memindex(cd, (u4) (iptr->sx.s23.s3.constval & 0x00000000ffffffff), OFFSET(java_longarray, data[0]), s1, s2, 3); @@ -2255,10 +2166,7 @@ bool codegen(jitdata *jd) s1 = emit_load_s1(jd, iptr, REG_ITMP1); s2 = emit_load_s2(jd, iptr, REG_ITMP2); - if (INSTRUCTION_MUST_CHECK(iptr)) { - gen_nullptr_check(s1); - gen_bound_check; - } + emit_array_checks(cd, iptr, s1, s2); emit_mov_imm_memindex(cd, 0, OFFSET(java_objectarray, data[0]), s1, s2, 2); break; @@ -2428,7 +2336,7 @@ bool codegen(jitdata *jd) case ICMD_GETFIELD: /* .., objectref. ==> ..., value */ s1 = emit_load_s1(jd, iptr, REG_ITMP1); - gen_nullptr_check(s1); + emit_nullpointer_check(cd, iptr, s1); if (INSTRUCTION_IS_UNRESOLVED(iptr)) { unresolved_field *uf = iptr->sx.s23.s3.uf; @@ -2477,7 +2385,7 @@ bool codegen(jitdata *jd) case ICMD_PUTFIELD: /* ..., objectref, value ==> ... */ s1 = emit_load_s1(jd, iptr, REG_ITMP1); - gen_nullptr_check(s1); + emit_nullpointer_check(cd, iptr, s1); /* must be done here because of code patching */ @@ -2541,7 +2449,7 @@ bool codegen(jitdata *jd) /* following NOP) */ s1 = emit_load_s1(jd, iptr, REG_ITMP1); - gen_nullptr_check(s1); + emit_nullpointer_check(cd, iptr, s1); if (INSTRUCTION_IS_UNRESOLVED(iptr)) { unresolved_field *uf = iptr->sx.s23.s3.uf; @@ -2942,21 +2850,21 @@ bool codegen(jitdata *jd) case ICMD_IRETURN: /* ..., retvalue ==> ... */ - codegen_set_replacement_point(cd RPLPOINT_CHECK(RETURN)); + REPLACEMENT_POINT_RETURN(cd, iptr); s1 = emit_load_s1(jd, iptr, REG_RESULT); M_INTMOVE(s1, REG_RESULT); goto nowperformreturn; case ICMD_LRETURN: /* ..., retvalue ==> ... */ - codegen_set_replacement_point(cd RPLPOINT_CHECK(RETURN)); + REPLACEMENT_POINT_RETURN(cd, iptr); s1 = emit_load_s1(jd, iptr, REG_RESULT_PACKED); M_LNGMOVE(s1, REG_RESULT_PACKED); goto nowperformreturn; case ICMD_ARETURN: /* ..., retvalue ==> ... */ - codegen_set_replacement_point(cd RPLPOINT_CHECK(RETURN)); + REPLACEMENT_POINT_RETURN(cd, iptr); s1 = emit_load_s1(jd, iptr, REG_RESULT); M_INTMOVE(s1, REG_RESULT); @@ -2975,13 +2883,13 @@ bool codegen(jitdata *jd) case ICMD_FRETURN: /* ..., retvalue ==> ... */ case ICMD_DRETURN: - codegen_set_replacement_point(cd RPLPOINT_CHECK(RETURN)); + REPLACEMENT_POINT_RETURN(cd, iptr); s1 = emit_load_s1(jd, iptr, REG_FRESULT); goto nowperformreturn; case ICMD_RETURN: /* ... ==> ... */ - codegen_set_replacement_point(cd RPLPOINT_CHECK(RETURN)); + REPLACEMENT_POINT_RETURN(cd, iptr); nowperformreturn: { @@ -2990,8 +2898,7 @@ nowperformreturn: p = cd->stackframesize; #if !defined(NDEBUG) - if (JITDATA_HAS_FLAG_VERBOSECALL(jd)) - emit_verbosecall_exit(jd); + emit_verbosecall_exit(jd); #endif #if defined(ENABLE_THREADS) @@ -3153,7 +3060,7 @@ nowperformreturn: case ICMD_INVOKEVIRTUAL:/* op1 = arg count, val.a = method pointer */ case ICMD_INVOKEINTERFACE: - codegen_set_replacement_point(cd RPLPOINT_CHECK(CALL)); + REPLACEMENT_POINT_INVOKE(cd, iptr); if (INSTRUCTION_IS_UNRESOLVED(iptr)) { md = iptr->sx.s23.s3.um->methodref->parseddesc.md; @@ -3257,7 +3164,7 @@ gen_method: case ICMD_INVOKEVIRTUAL: M_ALD(REG_ITMP1, REG_SP, 0 * 4); - gen_nullptr_check(REG_ITMP1); + emit_nullpointer_check(cd, iptr, s1); if (lm == NULL) { unresolved_method *um = iptr->sx.s23.s3.um; @@ -3285,7 +3192,7 @@ gen_method: case ICMD_INVOKEINTERFACE: M_ALD(REG_ITMP1, REG_SP, 0 * 4); - gen_nullptr_check(REG_ITMP1); + emit_nullpointer_check(cd, iptr, s1); if (lm == NULL) { unresolved_method *um = iptr->sx.s23.s3.um; @@ -3319,9 +3226,7 @@ gen_method: /* store size of call code in replacement point */ - if (iptr->opc != ICMD_BUILTIN) - cd->replacementpoint[-1].callsize = (cd->mcodeptr - cd->mcodebase) - - (ptrint) cd->replacementpoint[-1].pc; + REPLACEMENT_POINT_INVOKE_RETURN(cd, iptr); /* d contains return type */ @@ -3855,7 +3760,7 @@ gen_method: emit_exception_stubs(jd); emit_patcher_stubs(jd); - emit_replacement_stubs(jd); + REPLACEMENT_EMIT_STUBS(jd); codegen_finish(jd); @@ -4049,7 +3954,6 @@ u1 *createcompilerstub(methodinfo *m) { u1 *s; /* memory to hold the stub */ ptrint *d; - codeinfo *code; codegendata *cd; s4 dumpsize; @@ -4067,14 +3971,12 @@ u1 *createcompilerstub(methodinfo *m) cd = DNEW(codegendata); cd->mcodeptr = s; - /* Store the codeinfo pointer in the same place as in the - methodheader for compiled methods. */ - - code = code_codeinfo_new(m); + /* The codeinfo pointer is actually a pointer to the + methodinfo. This fakes a codeinfo structure. */ d[0] = (ptrint) asm_call_jit_compiler; d[1] = (ptrint) m; - d[2] = (ptrint) code; + d[2] = (ptrint) &d[1]; /* fake code->m */ /* code for the stub */ @@ -4163,8 +4065,7 @@ u1 *createnativestub(functionptr f, jitdata *jd, methoddesc *nmd) M_ASUB_IMM(cd->stackframesize * 4, REG_SP); #if !defined(NDEBUG) - if (JITDATA_HAS_FLAG_VERBOSECALL(jd)) - emit_verbosecall_enter(jd); + emit_verbosecall_enter(jd); #endif /* get function address (this must happen before the stackframeinfo) */ @@ -4263,8 +4164,7 @@ u1 *createnativestub(functionptr f, jitdata *jd, methoddesc *nmd) } #if !defined(NDEBUG) - if (JITDATA_HAS_FLAG_VERBOSECALL(jd)) - emit_verbosecall_exit(jd); + emit_verbosecall_exit(jd); #endif /* remove native stackframe info */