< prev index next >
src/hotspot/share/opto/subnode.cpp
Print this page
@@ -881,13 +881,11 @@
static inline Node* isa_java_mirror_load(PhaseGVN* phase, Node* n) {
// Return the klass node for (indirect load from OopHandle)
// LoadBarrier?(LoadP(LoadP(AddP(foo:Klass, #java_mirror))))
// or NULL if not matching.
BarrierSetC2* bs = BarrierSet::barrier_set()->barrier_set_c2();
- if (bs->is_gc_barrier_node(n)) {
n = bs->step_over_gc_barrier(n);
- }
if (n->Opcode() != Op_LoadP) return NULL;
const TypeInstPtr* tp = phase->type(n)->isa_instptr();
if (!tp || tp->klass() != phase->C->env()->Class_klass()) return NULL;
@@ -957,12 +955,18 @@
Node* conk2 = isa_const_java_mirror(phase, in(2));
if (k1 && (k2 || conk2)) {
Node* lhs = k1;
Node* rhs = (k2 != NULL) ? k2 : conk2;
- this->set_req(1, lhs);
- this->set_req(2, rhs);
+ PhaseIterGVN* igvn = phase->is_IterGVN();
+ if (igvn != NULL) {
+ set_req_X(1, lhs, igvn);
+ set_req_X(2, rhs, igvn);
+ } else {
+ set_req(1, lhs);
+ set_req(2, rhs);
+ }
return this;
}
}
// Constant pointer on right?
< prev index next >