RFR: Revert EA difference against upstream

Roman Kennke rkennke at redhat.com
Mon Mar 12 16:26:57 UTC 2018


Yes. It is the same thing. Let's revert it to the upstream version.

Roman

> 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