# HG changeset patch # Parent 1916b3faf6fc73be23cf1537c20862ebe915ee7c diff -r 1916b3faf6fc -r 819b1a2f2a12 src/share/vm/opto/shenandoahSupport.cpp --- a/src/share/vm/opto/shenandoahSupport.cpp Tue Dec 11 12:35:19 2018 +0100 +++ b/src/share/vm/opto/shenandoahSupport.cpp Tue Dec 11 17:56:10 2018 +0100 @@ -323,14 +323,14 @@ if (igvn != NULL) { mem_proj = find_out_with(Op_ShenandoahWBMemProj); - if (mem_proj == NULL || mem_in == mem_proj) { + if (mem_in == mem_proj) { return this; } } Node* replacement = Identity_impl(phase); if (igvn != NULL) { - if (replacement != NULL && replacement != this) { + if (replacement != NULL && replacement != this && mem_proj != NULL) { igvn->replace_node(mem_proj, mem_in); } } diff -r 1916b3faf6fc -r 819b1a2f2a12 src/share/vm/opto/subnode.cpp --- a/src/share/vm/opto/subnode.cpp Tue Dec 11 12:35:19 2018 +0100 +++ b/src/share/vm/opto/subnode.cpp Tue Dec 11 17:56:10 2018 +0100 @@ -34,7 +34,6 @@ #include "opto/mulnode.hpp" #include "opto/opcodes.hpp" #include "opto/phaseX.hpp" -#include "opto/shenandoahSupport.hpp" #include "opto/subnode.hpp" #include "opto/shenandoahSupport.hpp" #include "runtime/sharedRuntime.hpp" @@ -107,20 +106,8 @@ if (t != NULL) { return t; } - Node* in1 = in(1); - Node* in2 = in(2); - if (Opcode() == Op_CmpP) { - Node* n = ShenandoahBarrierNode::skip_through_barrier(in1); - if (!n->is_top()) { - in1 = n; - } - n = ShenandoahBarrierNode::skip_through_barrier(in2); - if (!n->is_top()) { - in2 = n; - } - } - const Type* t1 = phase->type(in1); - const Type* t2 = phase->type(in2); + const Type* t1 = phase->type(in(1)); + const Type* t2 = phase->type(in(2)); return sub(t1,t2); // Local flavor of type subtraction } @@ -915,35 +902,6 @@ // checking to see an unknown klass subtypes a known klass with no subtypes; // this only happens on an exact match. We can shorten this test by 1 load. Node *CmpPNode::Ideal( PhaseGVN *phase, bool can_reshape ) { - if (UseShenandoahGC) { - Node* in1 = in(1); - Node* in2 = in(2); - if (in1->bottom_type() == TypePtr::NULL_PTR) { - in2 = ShenandoahBarrierNode::skip_through_barrier(in2); - } - if (in2->bottom_type() == TypePtr::NULL_PTR) { - in1 = ShenandoahBarrierNode::skip_through_barrier(in1); - } - PhaseIterGVN* igvn = phase->is_IterGVN(); - if (in1 != in(1)) { - if (igvn != NULL) { - set_req_X(1, in1, igvn); - } else { - set_req(1, in1); - } - assert(in2 == in(2), "only one change"); - return this; - } - if (in2 != in(2)) { - if (igvn != NULL) { - set_req_X(2, in2, igvn); - } else { - set_req(2, in2); - } - return this; - } - } - // Normalize comparisons between Java mirrors into comparisons of the low- // level klass, where a dependent load could be shortened. //