< prev index next >

src/hotspot/cpu/x86/c1_Runtime1_x86.cpp

Print this page
@@ -1038,11 +1038,21 @@
  
          // rax,: new instance
        }
  
        break;
- 
+ #ifdef _LP64
+     case load_klass_id:
+       {
+         StubFrame f(sasm, "load_klass", dont_gc_arguments);
+         sasm->save_live_registers_no_oop_map(true);
+         f.load_argument(0, c_rarg0); // obj
+         __ call_VM_leaf(CAST_FROM_FN_PTR(address, oopDesc::load_nklass_runtime), c_rarg0);
+         sasm->restore_live_registers_except_rax(true);
+       }
+       break;
+ #endif
      case counter_overflow_id:
        {
          Register bci = rax, method = rbx;
          __ enter();
          OopMap* map = save_live_registers(sasm, 3);

@@ -1291,18 +1301,17 @@
        save_fpu_registers = false;
        // fall through
      case monitorenter_id:
        {
          StubFrame f(sasm, "monitorenter", dont_gc_arguments);
-         OopMap* map = save_live_registers(sasm, 3, save_fpu_registers);
+         OopMap* map = save_live_registers(sasm, 2, save_fpu_registers);
  
          // Called with store_parameter and not C abi
  
-         f.load_argument(1, rax); // rax,: object
-         f.load_argument(0, rbx); // rbx,: lock address
+         f.load_argument(0, rax); // rax,: object
  
-         int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, monitorenter), rax, rbx);
+         int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, monitorenter), rax);
  
          oop_maps = new OopMapSet();
          oop_maps->add_gc_map(call_offset, map);
          restore_live_registers(sasm, save_fpu_registers);
        }

@@ -1316,11 +1325,11 @@
          StubFrame f(sasm, "monitorexit", dont_gc_arguments);
          OopMap* map = save_live_registers(sasm, 2, save_fpu_registers);
  
          // Called with store_parameter and not C abi
  
-         f.load_argument(0, rax); // rax,: lock address
+         f.load_argument(0, rax); // rax: obj
  
          // note: really a leaf routine but must setup last java sp
          //       => use call_RT for now (speed can be improved by
          //       doing last java sp setup manually)
          int call_offset = __ call_RT(noreg, noreg, CAST_FROM_FN_PTR(address, monitorexit), rax);
< prev index next >