src/hotspot/cpu/x86/c1_LIRAssembler_x86.cpp
changeset 55105 9ad765641e8f
parent 53171 3ab3cb8a8d41
child 55253 3c905e67e380
equal deleted inserted replaced
55104:a72e187adb54 55105:9ad765641e8f
   357     __ align(CodeEntryAlignment);
   357     __ align(CodeEntryAlignment);
   358   }
   358   }
   359   return offset;
   359   return offset;
   360 }
   360 }
   361 
   361 
       
   362 void LIR_Assembler::clinit_barrier(ciMethod* method) {
       
   363   assert(VM_Version::supports_fast_class_init_checks(), "sanity");
       
   364   assert(method->holder()->is_being_initialized() || method->holder()->is_initialized(),
       
   365          "initialization should have been started");
       
   366 
       
   367   Label L_skip_barrier;
       
   368   Register klass = rscratch1;
       
   369   Register thread = LP64_ONLY( r15_thread ) NOT_LP64( noreg );
       
   370   assert(thread != noreg, "x86_32 not implemented");
       
   371 
       
   372   __ mov_metadata(klass, method->holder()->constant_encoding());
       
   373   __ clinit_barrier(klass, thread, &L_skip_barrier /*L_fast_path*/);
       
   374 
       
   375   __ jump(RuntimeAddress(SharedRuntime::get_handle_wrong_method_stub()));
       
   376 
       
   377   __ bind(L_skip_barrier);
       
   378 }
   362 
   379 
   363 void LIR_Assembler::jobject2reg_with_patching(Register reg, CodeEmitInfo* info) {
   380 void LIR_Assembler::jobject2reg_with_patching(Register reg, CodeEmitInfo* info) {
   364   jobject o = NULL;
   381   jobject o = NULL;
   365   PatchingStub* patch = new PatchingStub(_masm, patching_id(info));
   382   PatchingStub* patch = new PatchingStub(_masm, patching_id(info));
   366   __ movoop(reg, o);
   383   __ movoop(reg, o);