< prev index next >

src/hotspot/share/opto/library_call.cpp

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

*** 2965,2974 **** --- 2965,2975 ---- // (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,3408 **** --- 3400,3411 ---- 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,6123 **** --- 6117,6127 ---- 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 >