RFR: Basic support for x86_32: build and run in STW configuration

Roman Kennke rkennke at redhat.com
Mon Apr 16 11:05:12 UTC 2018


Am 16.04.2018 um 12:58 schrieb Aleksey Shipilev:
> Our current code allows us to support x86_32, without concurrent phases enabled. Having
> semi-functional 32-bit build is interesting for footprint experiments.
> 
> The patch is trivial:
> 
> diff -r b72dda8b7c36 src/hotspot/share/gc/shenandoah/shenandoahArguments.cpp
> --- a/src/hotspot/share/gc/shenandoah/shenandoahArguments.cpp	Mon Apr 16 11:32:52 2018 +0200
> +++ b/src/hotspot/share/gc/shenandoah/shenandoahArguments.cpp	Mon Apr 16 12:50:15 2018 +0200
> @@ -32,10 +32,31 @@
> 
>  void ShenandoahArguments::initialize_flags() {
> 
> -#if !(defined AARCH64 || defined AMD64)
> +#if !(defined AARCH64 || defined AMD64 || defined IA32)
>    vm_exit_during_initialization("Shenandoah GC is not supported on this platform.");
>  #endif
> 
> +#ifdef IA32
> +  log_warning(gc)("Shenandoah GC is not fully supported on this platform:");
> +  log_warning(gc)("  concurrent modes are not supported, only STW cycles are enabled;");
> +  log_warning(gc)("  arch-specific barrier code is not implemented, disabling barriers;");
> +
> +  FLAG_SET_DEFAULT(ShenandoahGCHeuristics,           "passive");
> +
> +  FLAG_SET_DEFAULT(ShenandoahSATBBarrier,            false);
> +  FLAG_SET_DEFAULT(ShenandoahConditionalSATBBarrier, false);
> +  FLAG_SET_DEFAULT(ShenandoahKeepAliveBarrier,       false);
> +  FLAG_SET_DEFAULT(ShenandoahWriteBarrier,           false);
> +  FLAG_SET_DEFAULT(ShenandoahReadBarrier,            false);
> +  FLAG_SET_DEFAULT(ShenandoahStoreValEnqueueBarrier, false);
> +  FLAG_SET_DEFAULT(ShenandoahStoreValWriteBarrier,   false);
> +  FLAG_SET_DEFAULT(ShenandoahStoreValReadBarrier,    false);
> +  FLAG_SET_DEFAULT(ShenandoahCASBarrier,             false);
> +  FLAG_SET_DEFAULT(ShenandoahAcmpBarrier,            false);
> +  FLAG_SET_DEFAULT(ShenandoahCloneBarrier,           false);
> +  FLAG_SET_DEFAULT(UseShenandoahMatrix,              false);
> +#endif
> +
>  #ifdef _LP64
>    // The optimized ObjArrayChunkedTask takes some bits away from the full 64 addressable
>    // bits, fail if we ever attempt to address more than we can. Only valid on 64bit.
> 
> 
> Testing: x86_32 build and run, hotspot_gc_shenandoah on x86_32 (some tests fail with dull errors,
> not worth fixing specifically for x86_32).
> 

Ok. Let's do it :-)

Thanks,
Roman




More information about the shenandoah-dev mailing list