< prev index next >

src/hotspot/cpu/arm/c1_CodeStubs_arm.cpp

Print this page
@@ -193,29 +193,23 @@
  }
  
  
  // Implementation of MonitorAccessStubs
  
- MonitorEnterStub::MonitorEnterStub(LIR_Opr obj_reg, LIR_Opr lock_reg, CodeEmitInfo* info)
- : MonitorAccessStub(obj_reg, lock_reg)
+ MonitorEnterStub::MonitorEnterStub(LIR_Opr obj_reg, CodeEmitInfo* info)
+ : MonitorAccessStub(obj_reg)
  {
    _info = new CodeEmitInfo(info);
  }
  
  
  void MonitorEnterStub::emit_code(LIR_Assembler* ce) {
    __ bind(_entry);
    const Register obj_reg = _obj_reg->as_pointer_register();
-   const Register lock_reg = _lock_reg->as_pointer_register();
  
    ce->verify_reserved_argument_area_size(2);
-   if (obj_reg < lock_reg) {
-     __ stmia(SP, RegisterSet(obj_reg) | RegisterSet(lock_reg));
-   } else {
-     __ str(obj_reg, Address(SP));
-     __ str(lock_reg, Address(SP, BytesPerWord));
-   }
+   __ str(obj_reg, Address(SP));
  
    Runtime1::StubID enter_id = ce->compilation()->has_fpu_code() ?
                                Runtime1::monitorenter_id :
                                Runtime1::monitorenter_nofpu_id;
    __ call(Runtime1::entry_for(enter_id), relocInfo::runtime_call_type);

@@ -225,26 +219,27 @@
  }
  
  
  void MonitorExitStub::emit_code(LIR_Assembler* ce) {
    __ bind(_entry);
-   if (_compute_lock) {
-     ce->monitor_address(_monitor_ix, _lock_reg);
-   }
-   const Register lock_reg = _lock_reg->as_pointer_register();
+   const Register obj_reg = _obj_reg->as_pointer_register();
  
    ce->verify_reserved_argument_area_size(1);
-   __ str(lock_reg, Address(SP));
+   __ str(obj_reg, Address(SP));
  
    // Non-blocking leaf routine - no call info needed
    Runtime1::StubID exit_id = ce->compilation()->has_fpu_code() ?
                               Runtime1::monitorexit_id :
                               Runtime1::monitorexit_nofpu_id;
    __ call(Runtime1::entry_for(exit_id), relocInfo::runtime_call_type);
    __ b(_continuation);
  }
  
+ void LoadKlassStub::emit_code(LIR_Assembler* ce) {
+   // Currently not needed.
+   Unimplemented();
+ }
  
  // Call return is directly after patch word
  int PatchingStub::_patch_info_offset = 0;
  
  void PatchingStub::align_patch_site(MacroAssembler* masm) {
< prev index next >