[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-serviceability-dev
Subject:    RFR(L) 8227745: Enable Escape Analysis for better performance when debugging
From:       "Reingruber, Richard" <richard.reingruber () sap ! com>
Date:       2019-07-16 17:23:15
Message-ID: VI1PR02MB48299ED70102800599FB28609BCE0 () VI1PR02MB4829 ! eurprd02 ! prod ! outlook ! com
[Download RAW message or body]

// repost including hotspot-compiler-dev@openjdk.java.net

Hi,

Please review this implementation for the RFE to enable escape analysis whe=
n debugging.

Bug:
https://bugs.openjdk.java.net/browse/JDK-8227745

Webrev:
http://cr.openjdk.java.net/~rrich/webrevs/2019/8227745/webrev.0/

In short the JVMTI implementation is changed to revert EA based optimizatio=
ns
just before objects escape through JVMTI. At runtime there is no escape
information for each object in scope. Instead each scope is annotated, if
non-escaping objects exist and if some are passed as parameters.  If a JVMT=
I
agent accesses a reference on stack, then the owning compiled frame C is
deoptimized, if any non-escaping object is in scope. Scalar replaced object=
s are
reallocated on the heap and objects with eliminated locking are relocked. T=
his
is called "deoptimizing objects" for short.

If the agent accesses a reference in a callee frame of C and C is passing a=
ny
non-escaping object as argument then C and its objects are deoptimized as w=
ell.

Deoptimized objects are kept as deferred updates (preexisting
JavaThread::_deferred_locals_updates).  Either all objects of a compiled fr=
ame
are deoptimized or none. It is annotated at the corresponding deferred upda=
tes
if it happened already in order to avoid doing it twice.

There is preexisting code to deoptimize objects when deoptimizing a compile=
d
frame. The code was extended to be able to deoptimize objects of a frame th=
at is
not the top frame and to let another thread than the owning thread do it.

Thanks, Richard.
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic