< prev index next >

src/hotspot/cpu/x86/macroAssembler_x86.cpp

Print this page

 6061   const int mirror_offset = in_bytes(Klass::java_mirror_offset());
 6062   load_method_holder(mirror, method);
 6063   movptr(mirror, Address(mirror, mirror_offset));
 6064   resolve_oop_handle(mirror, tmp);
 6065 }
 6066 
 6067 void MacroAssembler::load_method_holder_cld(Register rresult, Register rmethod) {
 6068   load_method_holder(rresult, rmethod);
 6069   movptr(rresult, Address(rresult, InstanceKlass::class_loader_data_offset()));
 6070 }
 6071 
 6072 void MacroAssembler::load_method_holder(Register holder, Register method) {
 6073   movptr(holder, Address(method, Method::const_offset()));                      // ConstMethod*
 6074   movptr(holder, Address(holder, ConstMethod::constants_offset()));             // ConstantPool*
 6075   movptr(holder, Address(holder, ConstantPool::pool_holder_offset()));          // InstanceKlass*
 6076 }
 6077 
 6078 #ifdef _LP64
 6079 void MacroAssembler::load_narrow_klass_compact(Register dst, Register src) {
 6080   assert(UseCompactObjectHeaders, "expect compact object headers");
 6081   movq(dst, Address(src, oopDesc::mark_offset_in_bytes()));
 6082   shrq(dst, markWord::klass_shift);
 6083 }
 6084 #endif
 6085 
 6086 void MacroAssembler::load_klass(Register dst, Register src, Register tmp) {
 6087   assert_different_registers(src, tmp);
 6088   assert_different_registers(dst, tmp);
 6089 #ifdef _LP64
 6090   if (UseCompactObjectHeaders) {
 6091     load_narrow_klass_compact(dst, src);
 6092     decode_klass_not_null(dst, tmp);
 6093   } else if (UseCompressedClassPointers) {
 6094     movl(dst, Address(src, oopDesc::klass_offset_in_bytes()));
 6095     decode_klass_not_null(dst, tmp);
 6096   } else
 6097 #endif
 6098   {
 6099     movptr(dst, Address(src, oopDesc::klass_offset_in_bytes()));
 6100   }
 6101 }
 6102 

 6061   const int mirror_offset = in_bytes(Klass::java_mirror_offset());
 6062   load_method_holder(mirror, method);
 6063   movptr(mirror, Address(mirror, mirror_offset));
 6064   resolve_oop_handle(mirror, tmp);
 6065 }
 6066 
 6067 void MacroAssembler::load_method_holder_cld(Register rresult, Register rmethod) {
 6068   load_method_holder(rresult, rmethod);
 6069   movptr(rresult, Address(rresult, InstanceKlass::class_loader_data_offset()));
 6070 }
 6071 
 6072 void MacroAssembler::load_method_holder(Register holder, Register method) {
 6073   movptr(holder, Address(method, Method::const_offset()));                      // ConstMethod*
 6074   movptr(holder, Address(holder, ConstMethod::constants_offset()));             // ConstantPool*
 6075   movptr(holder, Address(holder, ConstantPool::pool_holder_offset()));          // InstanceKlass*
 6076 }
 6077 
 6078 #ifdef _LP64
 6079 void MacroAssembler::load_narrow_klass_compact(Register dst, Register src) {
 6080   assert(UseCompactObjectHeaders, "expect compact object headers");
 6081   movl(dst, Address(src, oopDesc::mark_offset_in_bytes()));
 6082   shrl(dst, markWord::klass_shift);
 6083 }
 6084 #endif
 6085 
 6086 void MacroAssembler::load_klass(Register dst, Register src, Register tmp) {
 6087   assert_different_registers(src, tmp);
 6088   assert_different_registers(dst, tmp);
 6089 #ifdef _LP64
 6090   if (UseCompactObjectHeaders) {
 6091     load_narrow_klass_compact(dst, src);
 6092     decode_klass_not_null(dst, tmp);
 6093   } else if (UseCompressedClassPointers) {
 6094     movl(dst, Address(src, oopDesc::klass_offset_in_bytes()));
 6095     decode_klass_not_null(dst, tmp);
 6096   } else
 6097 #endif
 6098   {
 6099     movptr(dst, Address(src, oopDesc::klass_offset_in_bytes()));
 6100   }
 6101 }
 6102 
< prev index next >