< 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 >