< prev index next >
src/hotspot/cpu/x86/gc/shenandoah/shenandoah_x86_64.ad
Print this page
rev 54386 : 8221766: Load-reference barriers for Shenandoah
*** 21,71 ****
//
//
source_hpp %{
#include "gc/shenandoah/shenandoahBarrierSetAssembler.hpp"
! %}
!
! instruct shenandoahRB(rRegP dst, rRegP src, rFlagsReg cr) %{
! match(Set dst (ShenandoahReadBarrier src));
! effect(DEF dst, USE src);
! ins_cost(125); // XXX
! format %{ "shenandoah_rb $dst, $src" %}
! ins_encode %{
! Register d = $dst$$Register;
! Register s = $src$$Register;
! __ movptr(d, Address(s, ShenandoahBrooksPointer::byte_offset()));
! %}
! ins_pipe(ialu_reg_mem);
! %}
!
! instruct shenandoahRBNarrow(rRegP dst, rRegN src) %{
! predicate(UseCompressedOops && (Universe::narrow_oop_shift() == 0));
! match(Set dst (ShenandoahReadBarrier (DecodeN src)));
! effect(DEF dst, USE src);
! ins_cost(125); // XXX
! format %{ "shenandoah_rb $dst, $src" %}
! ins_encode %{
! Register d = $dst$$Register;
! Register s = $src$$Register;
! __ movptr(d, Address(r12, s, Address::times_1, ShenandoahBrooksPointer::byte_offset()));
! %}
! ins_pipe(ialu_reg_mem);
! %}
!
! instruct shenandoahRBNarrowShift(rRegP dst, rRegN src) %{
! predicate(UseCompressedOops && (Universe::narrow_oop_shift() == Address::times_8));
! match(Set dst (ShenandoahReadBarrier (DecodeN src)));
! effect(DEF dst, USE src);
! ins_cost(125); // XXX
! format %{ "shenandoah_rb $dst, $src" %}
! ins_encode %{
! Register d = $dst$$Register;
! Register s = $src$$Register;
! __ movptr(d, Address(r12, s, Address::times_8, ShenandoahBrooksPointer::byte_offset()));
! %}
! ins_pipe(ialu_reg_mem);
%}
instruct compareAndSwapP_shenandoah(rRegI res,
memory mem_ptr,
rRegP tmp1, rRegP tmp2,
--- 21,31 ----
//
//
source_hpp %{
#include "gc/shenandoah/shenandoahBarrierSetAssembler.hpp"
! #include "gc/shenandoah/c2/shenandoahSupport.hpp"
%}
instruct compareAndSwapP_shenandoah(rRegI res,
memory mem_ptr,
rRegP tmp1, rRegP tmp2,
< prev index next >