hotspot/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp
changeset 34633 2a6c7c7b30a7
parent 34211 d25c2fc1e248
child 35135 dd2ce9021031
child 35201 996db89f378e
equal deleted inserted replaced
34632:bf3518bba285 34633:2a6c7c7b30a7
    39 #include "opto/node.hpp"
    39 #include "opto/node.hpp"
    40 #include "runtime/biasedLocking.hpp"
    40 #include "runtime/biasedLocking.hpp"
    41 #include "runtime/icache.hpp"
    41 #include "runtime/icache.hpp"
    42 #include "runtime/interfaceSupport.hpp"
    42 #include "runtime/interfaceSupport.hpp"
    43 #include "runtime/sharedRuntime.hpp"
    43 #include "runtime/sharedRuntime.hpp"
       
    44 #include "runtime/thread.hpp"
    44 
    45 
    45 #if INCLUDE_ALL_GCS
    46 #if INCLUDE_ALL_GCS
    46 #include "gc/g1/g1CollectedHeap.inline.hpp"
    47 #include "gc/g1/g1CollectedHeap.inline.hpp"
    47 #include "gc/g1/g1SATBCardTableModRefBS.hpp"
    48 #include "gc/g1/g1SATBCardTableModRefBS.hpp"
    48 #include "gc/g1/heapRegion.hpp"
    49 #include "gc/g1/heapRegion.hpp"
  4651       br(GT, NEXT_1);
  4652       br(GT, NEXT_1);
  4652 
  4653 
  4653     BIND(DONE);
  4654     BIND(DONE);
  4654       sub(result, result, len); // Return index where we stopped
  4655       sub(result, result, len); // Return index where we stopped
  4655 }
  4656 }
       
  4657 
       
  4658 // get_thread() can be called anywhere inside generated code so we
       
  4659 // need to save whatever non-callee save context might get clobbered
       
  4660 // by the call to JavaThread::aarch64_get_thread_helper() or, indeed,
       
  4661 // the call setup code.
       
  4662 //
       
  4663 // aarch64_get_thread_helper() clobbers only r0, r1, and flags.
       
  4664 //
       
  4665 void MacroAssembler::get_thread(Register dst) {
       
  4666   RegSet saved_regs = RegSet::range(r0, r1) + lr - dst;
       
  4667   push(saved_regs, sp);
       
  4668 
       
  4669   mov(lr, CAST_FROM_FN_PTR(address, JavaThread::aarch64_get_thread_helper));
       
  4670   blrt(lr, 1, 0, 1);
       
  4671   if (dst != c_rarg0) {
       
  4672     mov(dst, c_rarg0);
       
  4673   }
       
  4674 
       
  4675   pop(saved_regs, sp);
       
  4676 }