< prev index next >

src/hotspot/cpu/s390/c1_LIRAssembler_s390.cpp

Print this page
*** 948,16 ***
        } else {
                      __ z_ly(dest->as_register(),   disp_value, disp_reg, src);
        }
        break;
      case T_ADDRESS:
!       if (UseCompressedClassPointers && addr->disp() == oopDesc::klass_offset_in_bytes()) {
-         __ z_llgf(dest->as_register(), disp_value, disp_reg, src);
-         __ decode_klass_not_null(dest->as_register());
-       } else {
-         __ z_lg(dest->as_register(), disp_value, disp_reg, src);
-       }
        break;
      case T_ARRAY : // fall through
      case T_OBJECT:
      {
        if (UseCompressedOops && !wide) {
--- 948,11 ---
        } else {
                      __ z_ly(dest->as_register(),   disp_value, disp_reg, src);
        }
        break;
      case T_ADDRESS:
!       __ z_lg(dest->as_register(), disp_value, disp_reg, src);
        break;
      case T_ARRAY : // fall through
      case T_OBJECT:
      {
        if (UseCompressedOops && !wide) {

*** 2752,10 ***
--- 2747,26 ---
      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) {
+     __ z_llgf(result, Address(obj, oopDesc::klass_offset_in_bytes()));
+     __ decode_klass_not_null(result);
+   } else {
+     __ z_lg(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 >