< 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 **** - /* /* * Copyright (c) 2013, Red Hat Inc. * Copyright (c) 1997, 2012, Oracle and/or its affiliates. * All rights reserved. --- 1,5 ----
*** 33,43 **** #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/shenandoahHeap.hpp" #include "gc_implementation/shenandoah/shenandoahHeap.inline.hpp" #include "gc_implementation/shenandoah/shenandoahHeapRegion.hpp" #include "memory/resourceArea.hpp" #include "runtime/biasedLocking.hpp" --- 32,42 ---- #include "asm/assembler.inline.hpp" #include "interpreter/interpreter.hpp" #include "compiler/disassembler.hpp" #include "gc_interface/collectedHeap.inline.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,1442 **** 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 } --- 1431,1440 ----
*** 2018,2040 **** } #endif } #endif ! void MacroAssembler::stop(const char* msg, Label *l) { 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_rarg2, sp); mov(c_rarg3, CAST_FROM_FN_PTR(address, MacroAssembler::debug64)); // call(c_rarg3); blrt(c_rarg3, 3, 0, 1); hlt(0); --- 2016,2030 ---- } #endif } #endif ! void MacroAssembler::stop(const char* msg) { address ip = pc(); pusha(); ! 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,2402 **** 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(); --- 2382,2391 ----
*** 3820,3832 **** 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())); ! } // Check for evacuation-in-progress and jump to WB slow-path if needed mov(rscratch2, ShenandoahHeap::EVACUATION); tst(rscratch1, rscratch2); br(Assembler::EQ, done); --- 3809,3819 ---- 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 ! 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 >