< prev index next >

src/hotspot/cpu/x86/macroAssembler_x86.cpp

Print this page

 5944   const int mirror_offset = in_bytes(Klass::java_mirror_offset());
 5945   load_method_holder(mirror, method);
 5946   movptr(mirror, Address(mirror, mirror_offset));
 5947   resolve_oop_handle(mirror, tmp);
 5948 }
 5949 
 5950 void MacroAssembler::load_method_holder_cld(Register rresult, Register rmethod) {
 5951   load_method_holder(rresult, rmethod);
 5952   movptr(rresult, Address(rresult, InstanceKlass::class_loader_data_offset()));
 5953 }
 5954 
 5955 void MacroAssembler::load_method_holder(Register holder, Register method) {
 5956   movptr(holder, Address(method, Method::const_offset()));                      // ConstMethod*
 5957   movptr(holder, Address(holder, ConstMethod::constants_offset()));             // ConstantPool*
 5958   movptr(holder, Address(holder, ConstantPool::pool_holder_offset()));          // InstanceKlass*
 5959 }
 5960 
 5961 #ifdef _LP64
 5962 void MacroAssembler::load_narrow_klass_compact(Register dst, Register src) {
 5963   assert(UseCompactObjectHeaders, "expect compact object headers");
 5964   movq(dst, Address(src, oopDesc::mark_offset_in_bytes()));
 5965   shrq(dst, markWord::klass_shift);
 5966 }
 5967 #endif
 5968 
 5969 void MacroAssembler::load_klass(Register dst, Register src, Register tmp) {
 5970   assert_different_registers(src, tmp);
 5971   assert_different_registers(dst, tmp);
 5972 #ifdef _LP64
 5973   if (UseCompactObjectHeaders) {
 5974     load_narrow_klass_compact(dst, src);
 5975     decode_klass_not_null(dst, tmp);
 5976   } else if (UseCompressedClassPointers) {
 5977     movl(dst, Address(src, oopDesc::klass_offset_in_bytes()));
 5978     decode_klass_not_null(dst, tmp);
 5979   } else
 5980 #endif
 5981   {
 5982     movptr(dst, Address(src, oopDesc::klass_offset_in_bytes()));
 5983   }
 5984 }
 5985 

 5944   const int mirror_offset = in_bytes(Klass::java_mirror_offset());
 5945   load_method_holder(mirror, method);
 5946   movptr(mirror, Address(mirror, mirror_offset));
 5947   resolve_oop_handle(mirror, tmp);
 5948 }
 5949 
 5950 void MacroAssembler::load_method_holder_cld(Register rresult, Register rmethod) {
 5951   load_method_holder(rresult, rmethod);
 5952   movptr(rresult, Address(rresult, InstanceKlass::class_loader_data_offset()));
 5953 }
 5954 
 5955 void MacroAssembler::load_method_holder(Register holder, Register method) {
 5956   movptr(holder, Address(method, Method::const_offset()));                      // ConstMethod*
 5957   movptr(holder, Address(holder, ConstMethod::constants_offset()));             // ConstantPool*
 5958   movptr(holder, Address(holder, ConstantPool::pool_holder_offset()));          // InstanceKlass*
 5959 }
 5960 
 5961 #ifdef _LP64
 5962 void MacroAssembler::load_narrow_klass_compact(Register dst, Register src) {
 5963   assert(UseCompactObjectHeaders, "expect compact object headers");
 5964   movl(dst, Address(src, oopDesc::mark_offset_in_bytes()));
 5965   shrl(dst, markWord::klass_shift);
 5966 }
 5967 #endif
 5968 
 5969 void MacroAssembler::load_klass(Register dst, Register src, Register tmp) {
 5970   assert_different_registers(src, tmp);
 5971   assert_different_registers(dst, tmp);
 5972 #ifdef _LP64
 5973   if (UseCompactObjectHeaders) {
 5974     load_narrow_klass_compact(dst, src);
 5975     decode_klass_not_null(dst, tmp);
 5976   } else if (UseCompressedClassPointers) {
 5977     movl(dst, Address(src, oopDesc::klass_offset_in_bytes()));
 5978     decode_klass_not_null(dst, tmp);
 5979   } else
 5980 #endif
 5981   {
 5982     movptr(dst, Address(src, oopDesc::klass_offset_in_bytes()));
 5983   }
 5984 }
 5985 
< prev index next >