< prev index next >

src/hotspot/cpu/arm/c1_LIRAssembler_arm.cpp

Print this page
@@ -719,15 +719,11 @@
          __ ldr(dest->as_register(), as_Address(addr));
        }
        break;
  
      case T_ADDRESS:
-       if (UseCompressedClassPointers && addr->disp() == oopDesc::klass_offset_in_bytes()) {
-         __ ldr_u32(dest->as_pointer_register(), as_Address(addr));
-       } else {
-         __ ldr(dest->as_pointer_register(), as_Address(addr));
-       }
+       __ ldr(dest->as_pointer_register(), as_Address(addr));
        break;
  
      case T_INT:
  #ifdef __SOFTFP__
      case T_FLOAT:

@@ -2452,10 +2448,25 @@
      ShouldNotReachHere();
    }
    __ bind(*op->stub()->continuation());
  }
  
+ void LIR_Assembler::emit_load_klass(LIR_OpLoadKlass* op) {
+   Register obj = op->obj()->as_pointer_register();
+   Register result = op->result_opr()->as_pointer_register();
+ 
+   CodeEmitInfo* info = op->info();
+   if (info != NULL) {
+     add_debug_info_for_null_check_here(info);
+   }
+ 
+   if (UseCompressedClassPointers) { // On 32 bit arm??
+     __ ldr_u32(result, Address(obj, oopDesc::klass_offset_in_bytes()));
+   } else {
+     __ ldr(result, Address(obj, oopDesc::klass_offset_in_bytes()));
+   }
+ }
  
  void LIR_Assembler::emit_profile_call(LIR_OpProfileCall* op) {
    ciMethod* method = op->profiled_method();
    int bci          = op->profiled_bci();
    ciMethod* callee = op->profiled_callee();
< prev index next >