< prev index next >
src/cpu/aarch64/vm/stubGenerator_aarch64.cpp
Print this page
rev 12153 : imported patch shared_sb_stub.patch
@@ -562,12 +562,10 @@
__ align(6);
address start = __ pc();
Label work, slow_case, lose, not_an_instance, is_array;
- Address evacuation_in_progress
- = Address(rthread, in_bytes(JavaThread::evacuation_in_progress_offset()));
__ mov(rscratch2, ShenandoahHeap::in_cset_fast_test_addr());
__ lsr(rscratch1, r0, ShenandoahHeapRegion::RegionSizeShift);
__ ldrb(rscratch2, Address(rscratch2, rscratch1));
__ tbnz(rscratch2, 0, work);
@@ -4885,14 +4883,10 @@
// 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 (UseShenandoahGC) {
- StubRoutines::aarch64::_shenandoah_wb = generate_shenandoah_wb();
- }
-
#ifndef BUILTIN_SIM
// generate GHASH intrinsics code
if (UseGHASHIntrinsics) {
StubRoutines::_ghash_processBlocks = generate_ghash_processBlocks();
}
@@ -4930,18 +4924,28 @@
&StubRoutines::_safefetchN_fault_pc,
&StubRoutines::_safefetchN_continuation_pc);
#endif
}
+ void generate_barriers() {
+ if (UseShenandoahGC) {
+ StubRoutines::aarch64::_shenandoah_wb = generate_shenandoah_wb();
+ }
+ }
+
public:
- StubGenerator(CodeBuffer* code, bool all) : StubCodeGenerator(code) {
- if (all) {
+ StubGenerator(CodeBuffer* code, int phase) : StubCodeGenerator(code) {
+ if (phase == 2) {
generate_all();
- } else {
+ } else if (phase == 1) {
generate_initial();
+ } else if (phase == 3) {
+ generate_barriers();
+ } else {
+ ShouldNotReachHere();
}
}
}; // end class declaration
-void StubGenerator_generate(CodeBuffer* code, bool all) {
- StubGenerator g(code, all);
+void StubGenerator_generate(CodeBuffer* code, int phase) {
+ StubGenerator g(code, phase);
}
< prev index next >