< prev index next >

src/hotspot/cpu/x86/macroAssembler_x86.cpp

Print this page
@@ -33,10 +33,11 @@
  #include "gc/shared/barrierSetAssembler.hpp"
  #include "gc/shared/collectedHeap.inline.hpp"
  #include "gc/shared/tlab_globals.hpp"
  #include "interpreter/bytecodeHistogram.hpp"
  #include "interpreter/interpreter.hpp"
+ #include "interpreter/interpreterRuntime.hpp"
  #include "jvm.h"
  #include "memory/resourceArea.hpp"
  #include "memory/universe.hpp"
  #include "oops/accessDecorators.hpp"
  #include "oops/compressedKlass.inline.hpp"

@@ -526,11 +527,10 @@
  
  #ifdef _WIN64
    // restore stack pointer
    addq(rsp, frame::arg_reg_save_area_bytes);
  #endif
- 
  }
  
  void MacroAssembler::cmp64(Register src1, AddressLiteral src2, Register rscratch) {
    assert(!src2.is_lval(), "should use cmpptr");
    assert(rscratch != noreg || always_reachable(src2), "missing");

@@ -3031,29 +3031,17 @@
    pop(rthread);
  #endif
  }
  
  void MacroAssembler::inc_held_monitor_count() {
- #ifndef _LP64
-   Register thread = rax;
-   push(thread);
-   get_thread(thread);
-   incrementl(Address(thread, JavaThread::held_monitor_count_offset()));
-   pop(thread);
- #else // LP64
+ #ifdef _LP64
    incrementq(Address(r15_thread, JavaThread::held_monitor_count_offset()));
  #endif
  }
  
  void MacroAssembler::dec_held_monitor_count() {
- #ifndef _LP64
-   Register thread = rax;
-   push(thread);
-   get_thread(thread);
-   decrementl(Address(thread, JavaThread::held_monitor_count_offset()));
-   pop(thread);
- #else // LP64
+ #ifdef _LP64
    decrementq(Address(r15_thread, JavaThread::held_monitor_count_offset()));
  #endif
  }
  
  #ifdef ASSERT

@@ -3146,10 +3134,21 @@
      lea(java_pc, InternalAddress(last_java_pc), rscratch);
    }
    movptr(Address(java_thread, JavaThread::last_Java_sp_offset()), last_java_sp);
  }
  
+ #ifdef _LP64
+ void MacroAssembler::set_last_Java_frame(Register last_java_sp,
+                                          Register last_java_fp,
+                                          Label &L,
+                                          Register scratch) {
+   lea(scratch, L);
+   movptr(Address(r15_thread, JavaThread::last_Java_pc_offset()), scratch);
+   set_last_Java_frame(r15_thread, last_java_sp, last_java_fp, nullptr, scratch);
+ }
+ #endif
+ 
  void MacroAssembler::shlptr(Register dst, int imm8) {
    LP64_ONLY(shlq(dst, imm8)) NOT_LP64(shll(dst, imm8));
  }
  
  void MacroAssembler::shrptr(Register dst, int imm8) {
< prev index next >