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