hotspot/src/cpu/x86/vm/c1_CodeStubs_x86.cpp
changeset 8725 8c1e3dd5fe1b
parent 8067 f5f4eac4c48f
child 8729 cdb7525d39cb
equal deleted inserted replaced
8724:693c6b883b54 8725:8c1e3dd5fe1b
   311     if (CommentedAssembly) {
   311     if (CommentedAssembly) {
   312       __ block_comment(" being_initialized check");
   312       __ block_comment(" being_initialized check");
   313     }
   313     }
   314     assert(_obj != noreg, "must be a valid register");
   314     assert(_obj != noreg, "must be a valid register");
   315     Register tmp = rax;
   315     Register tmp = rax;
   316     if (_obj == tmp) tmp = rbx;
   316     Register tmp2 = rbx;
   317     __ push(tmp);
   317     __ push(tmp);
       
   318     __ push(tmp2);
       
   319     __ movptr(tmp2, Address(_obj, java_lang_Class::klass_offset_in_bytes()));
   318     __ get_thread(tmp);
   320     __ get_thread(tmp);
   319     __ cmpptr(tmp, Address(_obj, instanceKlass::init_thread_offset_in_bytes() + sizeof(klassOopDesc)));
   321     __ cmpptr(tmp, Address(tmp2, instanceKlass::init_thread_offset_in_bytes() + sizeof(klassOopDesc)));
       
   322     __ pop(tmp2);
   320     __ pop(tmp);
   323     __ pop(tmp);
   321     __ jcc(Assembler::notEqual, call_patch);
   324     __ jcc(Assembler::notEqual, call_patch);
   322 
   325 
   323     // access_field patches may execute the patched code before it's
   326     // access_field patches may execute the patched code before it's
   324     // copied back into place so we need to jump back into the main
   327     // copied back into place so we need to jump back into the main