[aarch64-port-dev ] RFR: 8144993: Elide redundant memory barrier after AllocationNode

Lindenmaier, Goetz goetz.lindenmaier at sap.com
Tue Dec 15 14:54:23 UTC 2015


Hi,

It's explained in escape.hpp.  The proper name is 'ArgEscape'.

  typedef enum {
    UnknownEscape = 0,
    NoEscape      = 1, // An object does not escape method or thread and it is
                       // not passed to call. It could be replaced with scalar.
    ArgEscape     = 2, // An object does not escape method or thread but it is
                       // passed as argument to call or referenced by argument
                       // and it does not escape during call.
    GlobalEscape  = 3  // An object escapes the method or thread.
  } EscapeState;

I.e., an object passed to a callee that is a pure function
can not be scalar replaced, as you have to keep the object 
layout to pass it down.
But the callee does not publish the reference to any other
thread, so we don't need to execute locks. Also, we
can remove barriers.

Actually, we see a whole bunch of errors on ppc recently.
I thought it's all related to ComressedStrings, but not all
are investigated yet.  So it could also stem from "8136596: Remove aarch64: 
MemBarRelease when final field's allocation is NoEscape or ArgEscape"
http://hg.openjdk.java.net/jdk9/hs-comp/hotspot/rev/6cc606e29b74
We'll investigate ...

Best regards,
  Goetz.




> -----Original Message-----
> From: Andrew Haley [mailto:aph at redhat.com]
> Sent: Dienstag, 15. Dezember 2015 15:43
> To: Lindenmaier, Goetz <goetz.lindenmaier at sap.com>; Vitaly Davidovich
> <vitalyd at gmail.com>
> Cc: Doerr, Martin <martin.doerr at sap.com>; Aleksey Shipilev
> <aleksey.shipilev at oracle.com>; Vladimir Kozlov
> <vladimir.kozlov at oracle.com>; Hui Shi <hui.shi at linaro.org>; hotspot
> compiler <hotspot-compiler-dev at openjdk.java.net>; aarch64-port-dev
> <aarch64-port-dev at openjdk.java.net>; Mikael Gerdin
> <mikael.gerdin at oracle.com> (mikael.gerdin at oracle.com)
> <mikael.gerdin at oracle.com>
> Subject: Re: [aarch64-port-dev ] RFR: 8144993: Elide redundant memory
> barrier after AllocationNode
> 
> On 12/15/2015 02:37 PM, Lindenmaier, Goetz wrote:
> > If object arg_escape, locking, barriers etc can be relaxed, but scalar
> replacement is not possible.
> > Oop maps are needed, else these don’t survive the gc.
> 
> I don't know what this means.
> 
> Andrew.



More information about the aarch64-port-dev mailing list