< prev index next >
src/cpu/aarch64/vm/shenandoahBarrierSet_aarch64.cpp
Print this page
rev 10764 : [backport] Rename BrooksPointer to ShenandoahBrooksPointer
rev 10772 : [backport] Update copyrights
rev 10777 : [backport] Remove ShenandoahWriteBarrierRB flag
*** 1,7 ****
/*
! * Copyright (c) 2015, Red Hat, Inc. and/or its affiliates.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
--- 1,7 ----
/*
! * Copyright (c) 2015, 2018, Red Hat, Inc. All rights reserved.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
*** 19,30 ****
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
- #include "gc_implementation/shenandoah/brooksPointer.hpp"
#include "gc_implementation/shenandoah/shenandoahBarrierSet.inline.hpp"
#include "asm/macroAssembler.hpp"
#include "interpreter/interpreter.hpp"
#define __ masm->
--- 19,30 ----
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
#include "gc_implementation/shenandoah/shenandoahBarrierSet.inline.hpp"
+ #include "gc_implementation/shenandoah/shenandoahBrooksPointer.hpp"
#include "asm/macroAssembler.hpp"
#include "interpreter/interpreter.hpp"
#define __ masm->
*** 39,49 ****
}
}
void ShenandoahBarrierSet::interpreter_read_barrier_not_null(MacroAssembler* masm, Register dst) {
if (ShenandoahReadBarrier) {
! __ ldr(dst, Address(dst, BrooksPointer::byte_offset()));
}
}
void ShenandoahBarrierSet::interpreter_write_barrier(MacroAssembler* masm, Register dst) {
if (! ShenandoahWriteBarrier) {
--- 39,49 ----
}
}
void ShenandoahBarrierSet::interpreter_read_barrier_not_null(MacroAssembler* masm, Register dst) {
if (ShenandoahReadBarrier) {
! __ ldr(dst, Address(dst, ShenandoahBrooksPointer::byte_offset()));
}
}
void ShenandoahBarrierSet::interpreter_write_barrier(MacroAssembler* masm, Register dst) {
if (! ShenandoahWriteBarrier) {
*** 62,74 ****
__ 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);
--- 62,72 ----
__ 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);
*** 96,106 ****
__ bind(done);
}
void ShenandoahHeap::compile_prepare_oop(MacroAssembler* masm, Register obj) {
! __ add(obj, obj, BrooksPointer::byte_size());
__ str(obj, Address(obj, -1 * HeapWordSize));
}
void ShenandoahBarrierSet::asm_acmp_barrier(MacroAssembler* masm,
Register op1, Register op2) {
--- 94,104 ----
__ bind(done);
}
void ShenandoahHeap::compile_prepare_oop(MacroAssembler* masm, Register obj) {
! __ add(obj, obj, ShenandoahBrooksPointer::byte_size());
__ str(obj, Address(obj, -1 * HeapWordSize));
}
void ShenandoahBarrierSet::asm_acmp_barrier(MacroAssembler* masm,
Register op1, Register op2) {
< prev index next >