RFR: 8223312: Utilize handshakes instead of is_thread_fully_suspended [v3]
Erik Österlund
eosterlund at openjdk.java.net
Thu Oct 22 10:07:18 UTC 2020
On Thu, 22 Oct 2020 08:42:40 GMT, Richard Reingruber <rrich at openjdk.org> wrote:
>> Stack frames are counted beginning at 0. The top frame has depth 0. So object deoptimization happens in the top frame.
>>
>> Still the used method is not optimal because it assumes that objects of frames within the given depth are accessed and their escape state is changed. But potentially caller methods optimized on the escape state therefore it searches for caller frames passing ArgEscape objects and deoptimizes these too. With ForceEarlyReturn no objects are accessed but it is so uncommon that I did not bother optimizing this. Should I?
>
> @robehn you haven't messed up. Hope I havn't either. I've tested
>
> ==============================
> Test summary
> ==============================
> TEST TOTAL PASS FAIL ERROR
> jtreg:test/hotspot/jtreg:hotspot_serviceability 197 197 0 0
> jtreg:test/jdk:jdk_svc 1176 1176 0 0
> jtreg:test/jdk:jdk_jdi 174 174 0 0
> jtreg:test/hotspot/jtreg:vmTestbase_nsk_jdi 1141 1141 0 0
> jtreg:test/hotspot/jtreg:vmTestbase_nsk_jvmti 648 648 0 0
> jtreg:test/hotspot/jtreg:vmTestbase_nsk_jdwp 113 113 0 0
> ==============================
> TEST SUCCESS
> jdk_jdi now includes jdk/com/sun/jdi/EATests.java which tests PopFrame/ForceEarlyReturn with object reallocation with and without reallocation failures.
Ah. I see now the loop uses <= instead of <. So my reasoning was right but off by 1. Passing in 0 really means deopt 1 frame. Which means everything is fine and working the way I expect it to.
-------------
PR: https://git.openjdk.java.net/jdk/pull/729
More information about the serviceability-dev
mailing list