< prev index next >

src/hotspot/share/opto/library_call.cpp

Print this page
rev 51712 : 8210656: Object equals abstraction for BarrierSetC2

@@ -2965,10 +2965,11 @@
 
   // (a) Receiving thread must be the current thread.
   Node* rec_thr = argument(0);
   Node* tls_ptr = NULL;
   Node* cur_thr = generate_current_thread(tls_ptr);
+  access_resolve_for_obj_equals(cur_thr, rec_thr);
   Node* cmp_thr = _gvn.transform(new CmpPNode(cur_thr, rec_thr));
   Node* bol_thr = _gvn.transform(new BoolNode(cmp_thr, BoolTest::ne));
 
   generate_slow_guard(bol_thr, slow_region);
 

@@ -3399,10 +3400,12 @@
     Node* p = basic_plus_adr(arg, class_klass_offset);
     Node* kls = LoadKlassNode::make(_gvn, NULL, immutable_memory(), p, adr_type, kls_type);
     klasses[which_arg] = _gvn.transform(kls);
   }
 
+  access_resolve_for_obj_equals(args[0], args[1]);
+
   // Having loaded both klasses, test each for null.
   bool never_see_null = !too_many_traps(Deoptimization::Reason_null_check);
   for (which_arg = 0; which_arg <= 1; which_arg++) {
     Node* kls = klasses[which_arg];
     Node* null_ctl = top();

@@ -6114,10 +6117,11 @@
     return ctrl;
   }
 
   src = must_be_not_null(src, true);
   dest = must_be_not_null(dest, true);
+  access_resolve_for_obj_equals(src, dest);
 
   ciInstanceKlass* instklass_AESCrypt = klass_AESCrypt->as_instance_klass();
 
   Node* instof = gen_instanceof(embeddedCipherObj, makecon(TypeKlassPtr::make(instklass_AESCrypt)));
   Node* cmp_instof  = _gvn.transform(new CmpINode(instof, intcon(1)));
< prev index next >