RFR: Revert EA difference against upstream
Aleksey Shipilev
shade at redhat.com
Mon Mar 12 16:16:04 UTC 2018
This is the difference against upstream:
https://builds.shipilev.net/patch-openjdk-shenandoah-jdk/2018-03-11-v32-vs-02404e27d356/src/hotspot/share/opto/escape.cpp.sdiff.html
It also seems incorrect. The original is:
adr->isa_oopptr() ||
((opcode == Store) && (... adr->in(0)->is_Allocate())
...while our version is:
adr_type->isa_oopptr() ||
(opcode == Store) &&
(... adr->in(0)->is_Allocate())
...which apparently makes additional constraints on "adr_type->isa_oopptr()" branch?
Reverting to upstream version:
diff -r 232c31483a6b src/hotspot/share/opto/escape.cpp
--- a/src/hotspot/share/opto/escape.cpp Thu Mar 08 16:19:36 2018 +0100
+++ b/src/hotspot/share/opto/escape.cpp Mon Mar 12 17:08:42 2018 +0100
@@ -514,11 +514,11 @@
if (adr_type == NULL) {
break; // skip dead nodes
}
- if (adr_type->isa_oopptr() ||
- (opcode == Op_StoreP || opcode == Op_StoreN || opcode == Op_StoreNKlass) &&
- (adr_type == TypeRawPtr::NOTNULL &&
- adr->in(AddPNode::Address)->is_Proj() &&
- adr->in(AddPNode::Address)->in(0)->is_Allocate())) {
+ if ( adr_type->isa_oopptr()
+ || ( (opcode == Op_StoreP || opcode == Op_StoreN || opcode == Op_StoreNKlass)
+ && adr_type == TypeRawPtr::NOTNULL
+ && adr->in(AddPNode::Address)->is_Proj()
+ && adr->in(AddPNode::Address)->in(0)->is_Allocate())) {
delayed_worklist->push(n); // Process it later.
#ifdef ASSERT
assert(adr->is_AddP(), "expecting an AddP");
@@ -733,11 +733,11 @@
opcode == Op_CompareAndExchangeN || opcode == Op_CompareAndExchangeP) {
add_local_var_and_edge(n, PointsToNode::NoEscape, adr, NULL);
}
- if (adr_type->isa_oopptr() ||
- (opcode == Op_StoreP || opcode == Op_StoreN || opcode == Op_StoreNKlass) &&
- (adr_type == TypeRawPtr::NOTNULL &&
- adr->in(AddPNode::Address)->is_Proj() &&
- adr->in(AddPNode::Address)->in(0)->is_Allocate())) {
+ if ( adr_type->isa_oopptr()
+ || ( (opcode == Op_StoreP || opcode == Op_StoreN || opcode == Op_StoreNKlass)
+ && adr_type == TypeRawPtr::NOTNULL
+ && adr->in(AddPNode::Address)->is_Proj()
+ && adr->in(AddPNode::Address)->in(0)->is_Allocate())) {
// Point Address to Value
PointsToNode* adr_ptn = ptnode_adr(adr->_idx);
assert(adr_ptn != NULL &&
Testing: hotspot_gc_shenandoah
Thanks,
-Aleksey
More information about the shenandoah-dev
mailing list