< prev index next >
src/hotspot/cpu/aarch64/stubGenerator_aarch64.cpp
Print this page
rev 50905 : Move Shenandoah stubs generation into ShenandoahBarrierSetAssembler
*** 40,59 ****
#include "runtime/sharedRuntime.hpp"
#include "runtime/stubCodeGenerator.hpp"
#include "runtime/stubRoutines.hpp"
#include "runtime/thread.inline.hpp"
#include "utilities/align.hpp"
- #include "utilities/macros.hpp"
#ifdef COMPILER2
#include "opto/runtime.hpp"
#endif
- #if INCLUDE_SHENANDOAHGC
- #include "gc/shenandoah/brooksPointer.hpp"
- #include "gc/shenandoah/shenandoahHeap.hpp"
- #include "gc/shenandoah/shenandoahHeapRegion.hpp"
- #include "gc/shenandoah/shenandoahRuntime.hpp"
- #endif
#ifdef BUILTIN_SIM
#include "../../../../../../simulator/simulator.hpp"
#endif
--- 40,52 ----
*** 551,614 ****
__ br(r19);
return start;
}
- #if INCLUDE_SHENANDOAHGC
- // Shenandoah write barrier.
- //
- // Input:
- // r0: OOP to evacuate. Not null.
- //
- // Output:
- // r0: Pointer to evacuated OOP.
- //
- // Trash rscratch1, rscratch2. Preserve everything else.
-
- address generate_shenandoah_wb(bool c_abi, bool do_cset_test) {
- StubCodeMark mark(this, "StubRoutines", "shenandoah_wb");
-
- __ align(6);
- address start = __ pc();
-
- if (do_cset_test) {
- Label work;
- __ mov(rscratch2, ShenandoahHeap::in_cset_fast_test_addr());
- __ lsr(rscratch1, r0, ShenandoahHeapRegion::region_size_bytes_shift_jint());
- __ ldrb(rscratch2, Address(rscratch2, rscratch1));
- __ tbnz(rscratch2, 0, work);
- __ ret(lr);
- __ bind(work);
- }
-
- Register obj = r0;
-
- __ enter(); // required for proper stackwalking of RuntimeStub frame
-
- if (!c_abi) {
- __ push_call_clobbered_registers();
- } else {
- __ push_call_clobbered_fp_registers();
- }
-
- __ mov(lr, CAST_FROM_FN_PTR(address, ShenandoahRuntime::write_barrier_JRT));
- __ blrt(lr, 1, 0, MacroAssembler::ret_type_integral);
- if (!c_abi) {
- __ mov(rscratch1, obj);
- __ pop_call_clobbered_registers();
- __ mov(obj, rscratch1);
- } else {
- __ pop_call_clobbered_fp_registers();
- }
-
- __ leave(); // required for proper stackwalking of RuntimeStub frame
- __ ret(lr);
-
- return start;
- }
- #endif
-
// Non-destructive plausibility checks for oops
//
// Arguments:
// r0: oop to verify
// rscratch1: error message
--- 544,553 ----
*** 5163,5179 ****
// We use generate_multiply() rather than generate_square()
// because it's faster for the sizes of modulus we care about.
StubRoutines::_montgomerySquare = g.generate_multiply();
}
- #if INCLUDE_SHENANDOAHGC
- if (UseShenandoahGC && (ShenandoahWriteBarrier || ShenandoahStoreValEnqueueBarrier)) {
- StubRoutines::aarch64::_shenandoah_wb = generate_shenandoah_wb(false, true);
- StubRoutines::_shenandoah_wb_C = generate_shenandoah_wb(true, !ShenandoahWriteBarrierCsetTestInIR);
- }
- #endif
-
#ifndef BUILTIN_SIM
// generate GHASH intrinsics code
if (UseGHASHIntrinsics) {
StubRoutines::_ghash_processBlocks = generate_ghash_processBlocks();
}
--- 5102,5111 ----
< prev index next >