Request for Review (s) - 8133023: ParallelGCThreads is not calculated correctly

Kim Barrett kim.barrett at oracle.com
Thu Nov 26 22:34:18 UTC 2015


On Nov 25, 2015, at 5:10 PM, Jon Masamitsu <jon.masamitsu at oracle.com> wrote:
> 
> I have a new fix for this bug.  My previous fix broke solaris-x86 (I 
> had not defined an early_initialize() for x86).  This fix is slightly
> smaller and has the virtue of moving the required initialization
> closer to where it is used.
> 
> http://cr.openjdk.java.net/~jmasa/8133023/webrev.03/index.html
> 
> Testing: JPRT build on all platforms, checked by hand that the correct number
> of GC worker threads are created on later Niagara platforms.
> 
> Thanks.

------------------------------------------------------------------------------  
The new location for this setup (from os::init_before_ergo) is better
than the earlier proposed change, which had it in
VM_version::early_initialize.  The latter is incorrect, because
determine_features (sparc) examines some command-line arguments, and
those aren't parsed until a later stage of Threads::create_vm.

Specifically, determine_features (sparc) is presently looking at two
CLAs: UseV8InstrsOnly (develop) and UseNiagaraInstrs (product).  I
suspect UseV8InstrsOnly has served its purpose and could be purged.
But moving the call to determine_features before argument parsing
would have unintentionally ignored UseNiagaraInstrs.

The new location doesn't have this problem.  Sorry I missed this in my
earlier review.

------------------------------------------------------------------------------  
src/cpu/x86/vm/vm_version_x86.hpp
 595   static void vm_init_before_ergo() {};

Trailing semi-colon is not needed.

------------------------------------------------------------------------------ 
src/cpu/sparc/vm/vm_version_sparc.cpp
  39   guarantee(VM_Version::has_v9(), "only SPARC v9 is supported");
  40   assert(_features != VM_Version::unknown_m, "System pre-initialization is not complete.");

I think the assert should be first.  The test performed by the
guarantee is really only valid if the pre-initialization has been
performed.

------------------------------------------------------------------------------ 
src/share/vm/runtime/os.cpp
 319   VM_Version::vm_init_before_ergo();

This call is in generic code, but only two definitions have been
provided, for sparc and x86.  Missing are aarch64, ppc, and zero.

------------------------------------------------------------------------------



More information about the hotspot-gc-dev mailing list