equal
deleted
inserted
replaced
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 } |