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