< prev index next >
src/hotspot/share/opto/library_call.cpp
Print this page
rev 49175 : 8198950: AArch64: org.openjdk.jcstress.tests.varhandles.DekkerTest fails
Summary: Fix breakage to AArch64 code generation caused by JDK-8181211
Reviewed-by: duke
*** 2576,2586 ****
if (p == NULL) {
// To be valid, unsafe loads may depend on other conditions than
// the one that guards them: pin the Load node
LoadNode::ControlDependency dep = LoadNode::Pinned;
Node* ctrl = control();
! if (adr_type->isa_instptr()) {
assert(adr_type->meet(TypePtr::NULL_PTR) != adr_type->remove_speculative(), "should be not null");
intptr_t offset = Type::OffsetBot;
AddPNode::Ideal_base_and_offset(adr, &_gvn, offset);
if (offset >= 0) {
int s = Klass::layout_helper_size_in_bytes(adr_type->isa_instptr()->klass()->layout_helper());
--- 2576,2587 ----
if (p == NULL) {
// To be valid, unsafe loads may depend on other conditions than
// the one that guards them: pin the Load node
LoadNode::ControlDependency dep = LoadNode::Pinned;
Node* ctrl = control();
! // non volatile loads may be able to float
! if (!need_mem_bar && adr_type->isa_instptr()) {
assert(adr_type->meet(TypePtr::NULL_PTR) != adr_type->remove_speculative(), "should be not null");
intptr_t offset = Type::OffsetBot;
AddPNode::Ideal_base_and_offset(adr, &_gvn, offset);
if (offset >= 0) {
int s = Klass::layout_helper_size_in_bytes(adr_type->isa_instptr()->klass()->layout_helper());
< prev index next >