< prev index next >

src/hotspot/cpu/x86/c1_LIRAssembler_x86.cpp

Print this page

        

*** 357,366 **** --- 357,382 ---- __ align(CodeEntryAlignment); } return offset; } + void LIR_Assembler::clinit_barrier(ciMethod* method) { + assert(UseFastClassInitChecks, "sanity"); + assert(method->is_loaded(), "sanity"); + + Label L_skip_barrier; + Register klass = rscratch1; + Register thread = LP64_ONLY( r15_thread ) NOT_LP64( noreg ); + assert(thread != noreg, "x86_32 not implemented"); + + __ mov_metadata(klass, method->holder()->constant_encoding()); + __ clinit_barrier(klass, thread, &L_skip_barrier /*L_fast_path*/); + + __ jump(RuntimeAddress(SharedRuntime::get_handle_wrong_method_stub())); + + __ bind(L_skip_barrier); + } void LIR_Assembler::jobject2reg_with_patching(Register reg, CodeEmitInfo* info) { jobject o = NULL; PatchingStub* patch = new PatchingStub(_masm, patching_id(info)); __ movoop(reg, o);
< prev index next >