hotspot/src/cpu/x86/vm/macroAssembler_x86.cpp
changeset 34633 2a6c7c7b30a7
parent 34211 d25c2fc1e248
child 35071 a0910b1d3e0d
equal deleted inserted replaced
34632:bf3518bba285 34633:2a6c7c7b30a7
    37 #include "runtime/interfaceSupport.hpp"
    37 #include "runtime/interfaceSupport.hpp"
    38 #include "runtime/objectMonitor.hpp"
    38 #include "runtime/objectMonitor.hpp"
    39 #include "runtime/os.hpp"
    39 #include "runtime/os.hpp"
    40 #include "runtime/sharedRuntime.hpp"
    40 #include "runtime/sharedRuntime.hpp"
    41 #include "runtime/stubRoutines.hpp"
    41 #include "runtime/stubRoutines.hpp"
       
    42 #include "runtime/thread.hpp"
    42 #include "utilities/macros.hpp"
    43 #include "utilities/macros.hpp"
    43 #if INCLUDE_ALL_GCS
    44 #if INCLUDE_ALL_GCS
    44 #include "gc/g1/g1CollectedHeap.inline.hpp"
    45 #include "gc/g1/g1CollectedHeap.inline.hpp"
    45 #include "gc/g1/g1SATBCardTableModRefBS.hpp"
    46 #include "gc/g1/g1SATBCardTableModRefBS.hpp"
    46 #include "gc/g1/heapRegion.hpp"
    47 #include "gc/g1/heapRegion.hpp"
 10832 }
 10833 }
 10833 
 10834 
 10834 SkipIfEqual::~SkipIfEqual() {
 10835 SkipIfEqual::~SkipIfEqual() {
 10835   _masm->bind(_label);
 10836   _masm->bind(_label);
 10836 }
 10837 }
       
 10838 
       
 10839 // 32-bit Windows has its own fast-path implementation
       
 10840 // of get_thread
       
 10841 #if !defined(WIN32) || defined(_LP64)
       
 10842 
       
 10843 // This is simply a call to Thread::current()
       
 10844 void MacroAssembler::get_thread(Register thread) {
       
 10845   if (thread != rax) {
       
 10846     push(rax);
       
 10847   }
       
 10848   LP64_ONLY(push(rdi);)
       
 10849   LP64_ONLY(push(rsi);)
       
 10850   push(rdx);
       
 10851   push(rcx);
       
 10852 #ifdef _LP64
       
 10853   push(r8);
       
 10854   push(r9);
       
 10855   push(r10);
       
 10856   push(r11);
       
 10857 #endif
       
 10858 
       
 10859   MacroAssembler::call_VM_leaf_base(CAST_FROM_FN_PTR(address, Thread::current), 0);
       
 10860 
       
 10861 #ifdef _LP64
       
 10862   pop(r11);
       
 10863   pop(r10);
       
 10864   pop(r9);
       
 10865   pop(r8);
       
 10866 #endif
       
 10867   pop(rcx);
       
 10868   pop(rdx);
       
 10869   LP64_ONLY(pop(rsi);)
       
 10870   LP64_ONLY(pop(rdi);)
       
 10871   if (thread != rax) {
       
 10872     mov(thread, rax);
       
 10873     pop(rax);
       
 10874   }
       
 10875 }
       
 10876 
       
 10877 #endif