< prev index next >

src/hotspot/cpu/x86/x86_64.ad

Print this page
rev 51400 : [mq]: remove-c2-wb.patch


6647     Register s = $src$$Register;
6648     __ movptr(d, Address(r12, s, Address::times_1, BrooksPointer::byte_offset()));
6649   %}
6650   ins_pipe(ialu_reg_mem);
6651 %}
6652 
6653 instruct shenandoahRBNarrowShift(rRegP dst, rRegN src) %{
6654   predicate(UseCompressedOops && (Universe::narrow_oop_shift() == Address::times_8));
6655   match(Set dst (ShenandoahReadBarrier (DecodeN src)));
6656   effect(DEF dst, USE src);
6657   ins_cost(125); // XXX
6658   format %{ "shenandoah_rb $dst, $src" %}
6659   ins_encode %{
6660     Register d = $dst$$Register;
6661     Register s = $src$$Register;
6662     __ movptr(d, Address(r12, s, Address::times_8, BrooksPointer::byte_offset()));
6663   %}
6664   ins_pipe(ialu_reg_mem);
6665 %}
6666 
6667 instruct shenandoahWB(rRegP dst, rRegP src, rFlagsReg cr) %{
6668   match(Set dst (ShenandoahWriteBarrier src));
6669   effect(DEF dst, USE src, KILL cr);
6670   ins_cost(300); // XXX
6671   format %{ "shenandoah_wb $dst,$src" %}
6672   ins_encode %{
6673 #if INCLUDE_SHENANDOAHGC
6674     Register s = $src$$Register;
6675     Register d = $dst$$Register;
6676     // We need that first read barrier in order to trigger a SEGV/NPE on incoming NULL.
6677     // Also, it brings s into d in preparation for the call to shenandoah_write_barrier().
6678     __ movptr(d, Address(s, BrooksPointer::byte_offset()));
6679     __ shenandoah_write_barrier(d);
6680 #else
6681     ShouldNotReachHere();
6682 #endif
6683   %}
6684   ins_pipe(pipe_slow);
6685 %}
6686 
6687 // Convert oop pointer into compressed form
6688 instruct encodeHeapOop(rRegN dst, rRegP src, rFlagsReg cr) %{
6689   predicate(n->bottom_type()->make_ptr()->ptr() != TypePtr::NotNull);
6690   match(Set dst (EncodeP src));
6691   effect(KILL cr);
6692   format %{ "encode_heap_oop $dst,$src" %}
6693   ins_encode %{
6694     Register s = $src$$Register;
6695     Register d = $dst$$Register;
6696     if (s != d) {
6697       __ movq(d, s);
6698     }
6699     __ encode_heap_oop(d);
6700   %}
6701   ins_pipe(ialu_reg_long);
6702 %}
6703 
6704 instruct encodeHeapOop_not_null(rRegN dst, rRegP src, rFlagsReg cr) %{
6705   predicate(n->bottom_type()->make_ptr()->ptr() == TypePtr::NotNull);
6706   match(Set dst (EncodeP src));




6647     Register s = $src$$Register;
6648     __ movptr(d, Address(r12, s, Address::times_1, BrooksPointer::byte_offset()));
6649   %}
6650   ins_pipe(ialu_reg_mem);
6651 %}
6652 
6653 instruct shenandoahRBNarrowShift(rRegP dst, rRegN src) %{
6654   predicate(UseCompressedOops && (Universe::narrow_oop_shift() == Address::times_8));
6655   match(Set dst (ShenandoahReadBarrier (DecodeN src)));
6656   effect(DEF dst, USE src);
6657   ins_cost(125); // XXX
6658   format %{ "shenandoah_rb $dst, $src" %}
6659   ins_encode %{
6660     Register d = $dst$$Register;
6661     Register s = $src$$Register;
6662     __ movptr(d, Address(r12, s, Address::times_8, BrooksPointer::byte_offset()));
6663   %}
6664   ins_pipe(ialu_reg_mem);
6665 %}
6666 




















6667 // Convert oop pointer into compressed form
6668 instruct encodeHeapOop(rRegN dst, rRegP src, rFlagsReg cr) %{
6669   predicate(n->bottom_type()->make_ptr()->ptr() != TypePtr::NotNull);
6670   match(Set dst (EncodeP src));
6671   effect(KILL cr);
6672   format %{ "encode_heap_oop $dst,$src" %}
6673   ins_encode %{
6674     Register s = $src$$Register;
6675     Register d = $dst$$Register;
6676     if (s != d) {
6677       __ movq(d, s);
6678     }
6679     __ encode_heap_oop(d);
6680   %}
6681   ins_pipe(ialu_reg_long);
6682 %}
6683 
6684 instruct encodeHeapOop_not_null(rRegN dst, rRegP src, rFlagsReg cr) %{
6685   predicate(n->bottom_type()->make_ptr()->ptr() == TypePtr::NotNull);
6686   match(Set dst (EncodeP src));


< prev index next >