Build change looks good.

/Erik

On 2019-05-30 04:44, Aleksey Shipilev wrote:
http://cr.openjdk.java.net/~shade/8225048/webrev.01/

Some history: Shenandoah used to support x86_32 in "passive" mode long time 
ago. This mode relies
only on stop-the-world GC to avoid implementing barriers (basically, runs 
Degenerated GC all the
time). It was an interesting mode to see the footprint numbers you can get with 
uncommits and
slimmer native pointers with really small microservice-size VMs. This mode was 
dropped before
integration upstream, because many Shenandoah tests expect all heuristics/modes 
to work properly,
and having the rudimentary x86_32 support was breaking tier1 tests. So we 
disabled it.

Today, we have significantly simplified runtime interface thanks to LRB and 
elimination of separate
forwarding pointer slot, and we can build the fully concurrent x86_32 with 
ease. This allows us to
maintain 32-bit cleanness in Shenandoah code, plus serves as the proof of 
concept that Shenandoah
can be implemented on 32-bit platform.

I am planning to backport this all the way to 8u, once other improvements are 
backported, so keeping
the patch simple is paramount.

A brief tour of changes:

  *) One minor change in build config to accept both x86_32 and x86_64 
(therefore, cc'ing build-dev);
this is the same check we had before reversal in jdk12;

  *) C1 changes need to disambiguate for single/double-cpu slots in CAS, this 
is the same other
BarrierSets do;

  *) C2 changes need shenandoah_x86_32.ad to carry adapters for CAS barriers, 
plus accept
StoreIConditional for raw ptr stores on some paths.

  *) SBSAssembler change reshuffles _LP64 checks to enable x86_32 paths. It 
needs to deal with
UseCompressedOops blocks, getting threads into a separate register, etc.;

  *) Test changes enable running them on x86_32, and generally 32-bit platforms 
-- I can split them
out, but they make little sense on their own, without having the product code 
that actually uses them;

Builds: {x86_32, x86_64} with/without PCH; other platform builds in CI
Testing: hotspot_gc_shenandoah, CTW tests, jcstress, ad-hoc footprint 
experiments

IIRC, Oracle does not build either x86_32 or Shenandoah, so I did not run it 
through jdk-submit.

Reply via email to