< prev index next >

src/cpu/aarch64/vm/macroAssembler_aarch64.cpp

Print this page
rev 10703 : [backport] More AArch64 assembler cleanups
rev 10719 : [backport] Fix up superfluous changes against upstream
rev 10764 : [backport] Rename BrooksPointer to ShenandoahBrooksPointer
rev 10777 : [backport] Remove ShenandoahWriteBarrierRB flag

@@ -1,6 +1,5 @@
-
 /*
 /*
  * Copyright (c) 2013, Red Hat Inc.
  * Copyright (c) 1997, 2012, Oracle and/or its affiliates.
  * All rights reserved.

@@ -33,11 +32,11 @@
 #include "asm/assembler.inline.hpp"
 #include "interpreter/interpreter.hpp"
 
 #include "compiler/disassembler.hpp"
 #include "gc_interface/collectedHeap.inline.hpp"
-#include "gc_implementation/shenandoah/brooksPointer.hpp"
+#include "gc_implementation/shenandoah/shenandoahBrooksPointer.hpp"
 #include "gc_implementation/shenandoah/shenandoahHeap.hpp"
 #include "gc_implementation/shenandoah/shenandoahHeap.inline.hpp"
 #include "gc_implementation/shenandoah/shenandoahHeapRegion.hpp"
 #include "memory/resourceArea.hpp"
 #include "runtime/biasedLocking.hpp"

@@ -1432,11 +1431,10 @@
 void MacroAssembler::null_check(Register reg, int offset) {
   if (needs_explicit_null_check(offset)) {
     // provoke OS NULL exception if reg = NULL by
     // accessing M[reg] w/o changing any registers
     // NOTE: this is plenty to provoke a segv
-
     ldr(zr, Address(reg));
   } else {
     // nothing to do, (later) access of M[reg + offset]
     // will provoke OS NULL exception if reg = NULL
   }

@@ -2018,23 +2016,15 @@
   }
 #endif
 }
 #endif
 
-void MacroAssembler::stop(const char* msg, Label *l) {
+void MacroAssembler::stop(const char* msg) {
   address ip = pc();
   pusha();
-  // We use movptr rather than mov here because we need code size not
-  // to depend on the pointer value of msg otherwise C2 can observe
-  // the same node with different sizes when emitted in a scratch
-  // buffer and later when emitted for good.
-  movptr(c_rarg0, (uintptr_t)msg);
-  if (! l) {
-    adr(c_rarg1, (address)ip);
-  } else {
-    adr(c_rarg1, *l);
-  }
+  mov(c_rarg0, (address)msg);
+  mov(c_rarg1, (address)ip);
   mov(c_rarg2, sp);
   mov(c_rarg3, CAST_FROM_FN_PTR(address, MacroAssembler::debug64));
   // call(c_rarg3);
   blrt(c_rarg3, 3, 0, 1);
   hlt(0);

@@ -2392,11 +2382,10 @@
     if (CountBytecodes || TraceBytecodes || StopInterpreterAt) {
       ttyLocker ttyl;
       BytecodeCounter::print();
     }
 #endif
-
     if (os::message_box(msg, "Execution stopped, print registers?")) {
       ttyLocker ttyl;
       tty->print_cr(" pc = 0x%016lx", pc);
 #ifndef PRODUCT
       tty->cr();

@@ -3820,13 +3809,11 @@
   mov(rscratch2, ShenandoahHeap::HAS_FORWARDED | ShenandoahHeap::EVACUATION);
   tst(rscratch1, rscratch2);
   br(Assembler::EQ, done);
 
   // Heap is unstable, need to perform the read-barrier even if WB is inactive
-  if (ShenandoahWriteBarrierRB) {
-    ldr(dst, Address(dst, BrooksPointer::byte_offset()));
-  }
+  ldr(dst, Address(dst, ShenandoahBrooksPointer::byte_offset()));
 
   // Check for evacuation-in-progress and jump to WB slow-path if needed
   mov(rscratch2, ShenandoahHeap::EVACUATION);
   tst(rscratch1, rscratch2);
   br(Assembler::EQ, done);
< prev index next >