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