ShenandoahBarrierSetC2::escape_is_barrier_node

Aleksey Shipilev shade at redhat.com
Thu Jun 6 20:41:58 UTC 2019


Hey Roland,

A question for you. We have a staged code in sh/jdk, which has this change in
ShenandoahBarrierSetC2::escape_is_barrier_node:
  http://hg.openjdk.java.net/shenandoah/jdk/rev/3f2b4cc07dbd#l1.47

If you revert it, then tests start to fail:

$ CONF=linux-x86_64-server-fastdebug make images run-test TEST=gc/shenandoah/TestStringDedupStress.java
...

LocalVar NoEscape(NoEscape) [ 475 1P 195P 322P [ 497 ]]   476	ShenandoahLoadReferenceBarrier	=== _
475  298  [[ 497 ]]   Oop:java/util/concurrent/atomic/AtomicLong * !jvms: Random::next @ bci:1
Random::nextInt @ bci:17 TestStringDedupStress::generateStrings @ bci:17
# To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc:  SuppressErrorAt=/escape.cpp:3098
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/home/shade/trunks/shenandoah-jdk/src/hotspot/share/opto/escape.cpp:3098),
pid=26126, tid=26151
#  assert(jobj != __null && jobj != phantom_obj) failed: escaped allocation
#

Have any insights why? Also, is it really needed for Shenandoah at this point? I see only Shenandoah
has the non-trivial BarrierSetC2::escape_is_barrier_node.

-- 
Thanks,
-Aleksey



More information about the shenandoah-dev mailing list