< prev index next >

src/hotspot/cpu/x86/macroAssembler_x86.cpp

Print this page

 5960   const int mirror_offset = in_bytes(Klass::java_mirror_offset());
 5961   load_method_holder(mirror, method);
 5962   movptr(mirror, Address(mirror, mirror_offset));
 5963   resolve_oop_handle(mirror, tmp);
 5964 }
 5965 
 5966 void MacroAssembler::load_method_holder_cld(Register rresult, Register rmethod) {
 5967   load_method_holder(rresult, rmethod);
 5968   movptr(rresult, Address(rresult, InstanceKlass::class_loader_data_offset()));
 5969 }
 5970 
 5971 void MacroAssembler::load_method_holder(Register holder, Register method) {
 5972   movptr(holder, Address(method, Method::const_offset()));                      // ConstMethod*
 5973   movptr(holder, Address(holder, ConstMethod::constants_offset()));             // ConstantPool*
 5974   movptr(holder, Address(holder, ConstantPool::pool_holder_offset()));          // InstanceKlass*
 5975 }
 5976 
 5977 #ifdef _LP64
 5978 void MacroAssembler::load_narrow_klass_compact(Register dst, Register src) {
 5979   assert(UseCompactObjectHeaders, "expect compact object headers");
 5980   movq(dst, Address(src, oopDesc::mark_offset_in_bytes()));
 5981   shrq(dst, markWord::klass_shift);
 5982 }
 5983 #endif
 5984 
 5985 void MacroAssembler::load_klass(Register dst, Register src, Register tmp) {
 5986   assert_different_registers(src, tmp);
 5987   assert_different_registers(dst, tmp);
 5988 #ifdef _LP64
 5989   if (UseCompactObjectHeaders) {
 5990     load_narrow_klass_compact(dst, src);
 5991     decode_klass_not_null(dst, tmp);
 5992   } else if (UseCompressedClassPointers) {
 5993     movl(dst, Address(src, oopDesc::klass_offset_in_bytes()));
 5994     decode_klass_not_null(dst, tmp);
 5995   } else
 5996 #endif
 5997   {
 5998     movptr(dst, Address(src, oopDesc::klass_offset_in_bytes()));
 5999   }
 6000 }
 6001 

 5960   const int mirror_offset = in_bytes(Klass::java_mirror_offset());
 5961   load_method_holder(mirror, method);
 5962   movptr(mirror, Address(mirror, mirror_offset));
 5963   resolve_oop_handle(mirror, tmp);
 5964 }
 5965 
 5966 void MacroAssembler::load_method_holder_cld(Register rresult, Register rmethod) {
 5967   load_method_holder(rresult, rmethod);
 5968   movptr(rresult, Address(rresult, InstanceKlass::class_loader_data_offset()));
 5969 }
 5970 
 5971 void MacroAssembler::load_method_holder(Register holder, Register method) {
 5972   movptr(holder, Address(method, Method::const_offset()));                      // ConstMethod*
 5973   movptr(holder, Address(holder, ConstMethod::constants_offset()));             // ConstantPool*
 5974   movptr(holder, Address(holder, ConstantPool::pool_holder_offset()));          // InstanceKlass*
 5975 }
 5976 
 5977 #ifdef _LP64
 5978 void MacroAssembler::load_narrow_klass_compact(Register dst, Register src) {
 5979   assert(UseCompactObjectHeaders, "expect compact object headers");
 5980   movl(dst, Address(src, oopDesc::mark_offset_in_bytes()));
 5981   shrl(dst, markWord::klass_shift);
 5982 }
 5983 #endif
 5984 
 5985 void MacroAssembler::load_klass(Register dst, Register src, Register tmp) {
 5986   assert_different_registers(src, tmp);
 5987   assert_different_registers(dst, tmp);
 5988 #ifdef _LP64
 5989   if (UseCompactObjectHeaders) {
 5990     load_narrow_klass_compact(dst, src);
 5991     decode_klass_not_null(dst, tmp);
 5992   } else if (UseCompressedClassPointers) {
 5993     movl(dst, Address(src, oopDesc::klass_offset_in_bytes()));
 5994     decode_klass_not_null(dst, tmp);
 5995   } else
 5996 #endif
 5997   {
 5998     movptr(dst, Address(src, oopDesc::klass_offset_in_bytes()));
 5999   }
 6000 }
 6001 
< prev index next >