void ComparingStub::init(nmethod* nm) { CountCodePattern* patt = CountStub::pattern[Comparing]; int32* p = (int32*)insts(); set_recompile_addr(Memory->code->trapdoors->Recompile_stub_td()); set_count_addr(patt, (int32)&sendCounts[id()]); assert(isSetHi(p + patt->limit_sethi_offset), "wrong pattern"); fint limit = recompileLimit(nm->level()); setSetHiImm(p + patt->limit_sethi_offset, limit); }
void AgingStub::init(nmethod* nm) { CountCodePattern* patt = CountStub::pattern[Comparing]; set_recompile_addr(first_inst_addr(MakeOld_stub)); set_count_addr(patt, (int32)&sendCounts[id()]); int32* p = (int32*)(int32(insts()) + patt->limit_offset); assert(*p == patt->initial_limit, "???"); fint limit = nm->agingLimit(); *p = limit; set_count(1); }
void ComparingStub::init(nmethod* nm) { CountCodePattern* patt = CountStub::pattern[Comparing]; set_recompile_addr((pc_t)Recompile_stub); set_count_addr(patt, (int32)&sendCounts[id()]); int32* p = (int32*)(int32(insts()) + patt->limit_offset); assert(*p == patt->initial_limit, "???"); fint limit = recompileLimit(nm->level()); *p = limit; }
void AgingStub::init(nmethod* nm) { CountCodePattern* patt = CountStub::pattern[Comparing]; int32* p = (int32*)insts(); set_recompile_addr(first_inst_addr(MakeOld_stub)); set_count_addr(patt, (int32)&sendCounts[id()]); fint limit = nm->agingLimit(); if (limit > 1023) { setSetHiImm(p + patt->limit_sethi_offset, limit); } else { // setHi would set to 0, so use an add instead p[patt->limit_sethi_offset] = add_inst; setArithImm(p + patt->limit_sethi_offset, limit); } set_count(1); }