Re: RFR: 8212879: Make JVMTI TagMap table concurrent [v11]

2020-11-18 Thread Kim Barrett
On Wed, 18 Nov 2020 19:31:44 GMT, Serguei Spitsyn  wrote:

> test/hotspot/jtreg/vmTestbase/nsk/jvmti/AttachOnDemand/attach021/attach021Agent00.cpp:
> 
> The change below is not needed as the call to 
> nsk_jvmti_aod_disableEventAndFinish() does exactly the same:
> 
> ```
> -nsk_jvmti_aod_disableEventAndFinish(agentName, JVMTI_EVENT_OBJECT_FREE, 
> success, jvmti, jni);
> +
> +/* Flush any pending ObjectFree events, which may set success to 1 */
> +if (jvmti->SetEventNotificationMode(JVMTI_DISABLE,
> +JVMTI_EVENT_OBJECT_FREE,
> +NULL) != JVMTI_ERROR_NONE) {
> +success = 0;
> +}
> +
> +nsk_aod_agentFinished(jni, agentName, success);
>  }
> ```

This change really is needed.

The success variable in the test is a global, initially 0, set to 1 by the
ObjectFree handler.

In the old code, if the ObjectFree event hasn't been posted yet, we pass the
initial 0 value of success to nsk_jvmti_aod_disabledEventAndFinish, where
it's a local variable (so unaffected by any changes to the variable in the
test), so stays 0 through to the call to nsk_aod_agentFinished.  So the test
fails. 

The split in the change causes the updated post-ObjectFree event success
value of 1 to be passed to agentFinished.  So the test passes.

That required some head scratching to find at the time.  That's the point of
the comment about flushing pending events.  Maybe the comment should be
improved.

-

PR: https://git.openjdk.java.net/jdk/pull/967


Re: RFR: 8212879: Make JVMTI TagMap table concurrent [v12]

2020-11-18 Thread Coleen Phillimore
> This change turns the HashTable that JVMTI uses for object tagging into a 
> regular Hotspot hashtable - the one in hashtable.hpp with resizing and 
> rehashing.   Instead of pointing directly to oops so that GC has to walk the 
> table to follow oops and then to rehash the table, this table points to 
> WeakHandle.  GC walks the backing OopStorages concurrently.
> 
> The hash function for the table is a hash of the lower 32 bits of the 
> address.  A flag is set during GC (gc_notification if in a safepoint, and 
> through a call to JvmtiTagMap::needs_processing()) so that the table is 
> rehashed at the next use.
> 
> The gc_notification mechanism of weak oop processing is used to notify Jvmti 
> to post ObjectFree events.  In concurrent GCs there can be a window of time 
> between weak oop marking where the oop is unmarked, so dead (the phantom load 
> in peek returns NULL) but the gc_notification hasn't been done yet.  In this 
> window, a heap walk or GetObjectsWithTags call would not find an object 
> before the ObjectFree event is posted.  This is dealt with in two ways:
> 
> 1. In the Heap walk, there's an unconditional table walk to post events if 
> events are needed to post.
> 2. For GetObjectWithTags, if a dead oop is found in the table and posting is 
> required, we use the VM thread to post the event.
> 
> Event posting cannot be done in a JavaThread because the posting needs to be 
> done while holding the table lock, so that the JvmtiEnv state doesn't change 
> before posting is done.  ObjectFree callbacks are limited in what they can do 
> as per the JVMTI Specification.  The allowed callbacks to the VM already have 
> code to allow NonJava threads.
> 
> To avoid rehashing, I also tried to use object->identity_hash() but this 
> breaks because entries can be added to the table during heapwalk, where the 
> objects use marking.  The starting markWord is saved and restored.  Adding a 
> hashcode during this operation makes restoring the former markWord (locked, 
> inflated, etc) too complicated.  Plus we don't want all these objects to have 
> hashcodes because locking operations after tagging would have to always use 
> inflated locks.
> 
> Much of this change is to remove serial weak oop processing for the 
> weakProcessor, ZGC and Shenandoah.  The GCs have been stress tested with 
> jvmti code.
> 
> It has also been tested with tier1-6.
> 
> Thank you to Stefan, Erik and Kim for their help with this change.

Coleen Phillimore has updated the pull request with a new target base due to a 
merge or a rebase. The pull request now contains 17 commits:

 - Merge branch 'master' into jvmti-table
 - Fix minimal build.
 - Reverse remove_dead_entries_locked function names.
 - Merge branch 'master' into jvmti-table
 - Add shenandoah set_needs_cleaning but this doesn't work.
 - fix vmTestbase/nsk/jvmti tests
 - improve tagmap cleanup and objectfree event posting
 - Add logging to event posting in case of pauses.
 - Merge branch 'master' into jvmti-table
 - Add back WeakProcessorPhases::Phase enum.
 - ... and 7 more: https://git.openjdk.java.net/jdk/compare/2b155713...9ef44f28

-

Changes: https://git.openjdk.java.net/jdk/pull/967/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk=967=11
  Stats: 1884 lines in 49 files changed: 768 ins; 992 del; 124 mod
  Patch: https://git.openjdk.java.net/jdk/pull/967.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/967/head:pull/967

PR: https://git.openjdk.java.net/jdk/pull/967


Re: RFR: 8212879: Make JVMTI TagMap table concurrent [v11]

2020-11-18 Thread Coleen Phillimore
On Wed, 18 Nov 2020 19:31:44 GMT, Serguei Spitsyn  wrote:

> There is a double-check for _needs_cleaning, so the one at line 136 can be 
> removed:

I want to leave _needs_cleaning at 136 because even though the boolean is 
checked twice, it doesn't hurt performance and it has a nice symmetry in that 
function.

I asked Kim about the other change.

Thank you for reviewing, Serguei!

-

PR: https://git.openjdk.java.net/jdk/pull/967


Re: RFR: 8212879: Make JVMTI TagMap table concurrent [v10]

2020-11-18 Thread Coleen Phillimore
On Mon, 16 Nov 2020 23:10:21 GMT, Coleen Phillimore  wrote:

>> This change turns the HashTable that JVMTI uses for object tagging into a 
>> regular Hotspot hashtable - the one in hashtable.hpp with resizing and 
>> rehashing.   Instead of pointing directly to oops so that GC has to walk the 
>> table to follow oops and then to rehash the table, this table points to 
>> WeakHandle.  GC walks the backing OopStorages concurrently.
>> 
>> The hash function for the table is a hash of the lower 32 bits of the 
>> address.  A flag is set during GC (gc_notification if in a safepoint, and 
>> through a call to JvmtiTagMap::needs_processing()) so that the table is 
>> rehashed at the next use.
>> 
>> The gc_notification mechanism of weak oop processing is used to notify Jvmti 
>> to post ObjectFree events.  In concurrent GCs there can be a window of time 
>> between weak oop marking where the oop is unmarked, so dead (the phantom 
>> load in peek returns NULL) but the gc_notification hasn't been done yet.  In 
>> this window, a heap walk or GetObjectsWithTags call would not find an object 
>> before the ObjectFree event is posted.  This is dealt with in two ways:
>> 
>> 1. In the Heap walk, there's an unconditional table walk to post events if 
>> events are needed to post.
>> 2. For GetObjectWithTags, if a dead oop is found in the table and posting is 
>> required, we use the VM thread to post the event.
>> 
>> Event posting cannot be done in a JavaThread because the posting needs to be 
>> done while holding the table lock, so that the JvmtiEnv state doesn't change 
>> before posting is done.  ObjectFree callbacks are limited in what they can 
>> do as per the JVMTI Specification.  The allowed callbacks to the VM already 
>> have code to allow NonJava threads.
>> 
>> To avoid rehashing, I also tried to use object->identity_hash() but this 
>> breaks because entries can be added to the table during heapwalk, where the 
>> objects use marking.  The starting markWord is saved and restored.  Adding a 
>> hashcode during this operation makes restoring the former markWord (locked, 
>> inflated, etc) too complicated.  Plus we don't want all these objects to 
>> have hashcodes because locking operations after tagging would have to always 
>> use inflated locks.
>> 
>> Much of this change is to remove serial weak oop processing for the 
>> weakProcessor, ZGC and Shenandoah.  The GCs have been stress tested with 
>> jvmti code.
>> 
>> It has also been tested with tier1-6.
>> 
>> Thank you to Stefan, Erik and Kim for their help with this change.
>
> Coleen Phillimore has updated the pull request with a new target base due to 
> a merge or a rebase. The pull request now contains 15 commits:
> 
>  - Reverse remove_dead_entries_locked function names.
>  - Merge branch 'master' into jvmti-table
>  - Add shenandoah set_needs_cleaning but this doesn't work.
>  - fix vmTestbase/nsk/jvmti tests
>  - improve tagmap cleanup and objectfree event posting
>  - Add logging to event posting in case of pauses.
>  - Merge branch 'master' into jvmti-table
>  - Add back WeakProcessorPhases::Phase enum.
>  - Serguei 1.
>  - Code review comments from Kim and Albert.
>  - ... and 5 more: 
> https://git.openjdk.java.net/jdk/compare/0357db35...daaa13fe

test/hotspot/jtreg/vmTestbase/nsk/jvmti/AttachOnDemand/attach021/attach021Agent00.cpp
 line 72:

> 70: 
> Java_nsk_jvmti_AttachOnDemand_attach021_attach021Target_shutdownAgent(JNIEnv 
> * jni,
> 71: jclass klass) {
> 72: 

@kimbarrett ? I'm not sure why you made this change.  See Serguei's comment.

-

PR: https://git.openjdk.java.net/jdk/pull/967


Re: RFR: 8256497: Zero: enable G1 and Shenandoah GCs

2020-11-18 Thread Erik Joelsson
On Tue, 17 Nov 2020 19:02:03 GMT, Aleksey Shipilev  wrote:

> Following the [JDK-8255796](https://bugs.openjdk.java.net/browse/JDK-8255796) 
> improvement that ditched the inline contiguous alloc use from Zero, we can 
> now rely on GC interface to hook the GCs properly. G1 and Shenandoah are a 
> bit special here, because they require special `Reference.get` handling.
> 
> Note that it does not change the default GC for Zero, because Zero is 
> implicitly `NeverActAsServerMachine`, which still selects Serial GC by 
> default. After this change, Zero users can opt-in to G1 or Shenandoah.
> 
> Additional testing:
>  - [x] Linux x86_64 Zero fastdebug `hotspot_gc_shenandoah` (some lingering 
> failures about non-enabled compressed oops)
>  - [ ] Linux x86_64 Zero fastdebug `tier1` with `-XX:+UseG1GC`

Build change looks ok.

-

Marked as reviewed by erikj (Reviewer).

PR: https://git.openjdk.java.net/jdk/pull/1268


Re: RFR: 8256538: Fix annoying awk warning in configure for java versions [v2]

2020-11-18 Thread Magnus Ihse Bursie
> The change from grep to awk in JDK-8244248 and further bug fixed in 
> JDK-8244756 still has invalid syntax. This causes some awk (most notably 
> gawk, the most commonly used) to complain:
> 
> gawk: cmd. line:1: warning: regexp escape sequence `"' is not a known regexp 
> operator
> 
> This is annoying and should be fixed.

Magnus Ihse Bursie has updated the pull request incrementally with one 
additional commit since the last revision:

  Also fix bad code as copied in BOOTJDK_CHECK_BUILD_JDK

-

Changes:
  - all: https://git.openjdk.java.net/jdk/pull/1285/files
  - new: https://git.openjdk.java.net/jdk/pull/1285/files/9d5fd4fc..842287e0

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jdk=1285=01
 - incr: https://webrevs.openjdk.java.net/?repo=jdk=1285=00-01

  Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
  Patch: https://git.openjdk.java.net/jdk/pull/1285.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/1285/head:pull/1285

PR: https://git.openjdk.java.net/jdk/pull/1285


Integrated: 8256538: Fix annoying awk warning in configure for java versions

2020-11-18 Thread Magnus Ihse Bursie
On Wed, 18 Nov 2020 09:47:58 GMT, Magnus Ihse Bursie  wrote:

> The change from grep to awk in JDK-8244248 and further bug fixed in 
> JDK-8244756 still has invalid syntax. This causes some awk (most notably 
> gawk, the most commonly used) to complain:
> 
> gawk: cmd. line:1: warning: regexp escape sequence `"' is not a known regexp 
> operator
> 
> This is annoying and should be fixed.

This pull request has now been integrated.

Changeset: 3110d589
Author:Magnus Ihse Bursie 
URL:   https://git.openjdk.java.net/jdk/commit/3110d589
Stats: 2 lines in 1 file changed: 0 ins; 0 del; 2 mod

8256538: Fix annoying awk warning in configure for java versions

Reviewed-by: erikj

-

PR: https://git.openjdk.java.net/jdk/pull/1285


Re: RFR: 8256538: Fix annoying awk warning in configure for java versions [v2]

2020-11-18 Thread Magnus Ihse Bursie
On Wed, 18 Nov 2020 14:13:03 GMT, Bernhard Urban-Forster  
wrote:

>> Marked as reviewed by erikj (Reviewer).
>
> Thank you Magnus, this is something that has bugged me as well.
> 
> FWIW the same problem exists here with the build JDK detection: 
> https://github.com/openjdk/jdk/blob/9d5fd4fcabf7bdf580e2fff8e12c2cf130ef44c9/make/autoconf/boot-jdk.m4#L519
> 
> Would you mind fixing it as part of this PR too?

@lewurm Thanks! I had not noticed that one. (In fact, I'm unsure when we got 
such a huge chunk of duplicated code... *sigh* Should look into it some day, I 
think.)

-

PR: https://git.openjdk.java.net/jdk/pull/1285


Re: RFR: JDK-6251738: Want a top-level summary page that itemizes all spec documents referenced from javadocs (OEM spec) [v3]

2020-11-18 Thread Jonathan Gibbons
> This introduces support for a new `@spec` tag that can be used as either an 
> inline tag or as a block tag. It is used to identify references to external 
> specifications, in such a way that the references can be collected together 
> on a new summary page, called "Other Specifications", available from either 
> the static INDEX page or the interactive search box.
> 
> As an inline tag, the format is `{@spec url label}`, which is roughly 
> translated to `label` in the generated docs.
> 
> As a block tag, the format is simply
> 
> @spec url label
> 
> which is handled in a manner analogous to
> 
> @see label
> 
> The tag is notable for being the first standard/supported tag that can be 
> used as either an inline or block tag. (We have had support for bimodal 
> non-standard/custom tags for a while, such as `{@jls}` and `{@jvms}`.) To 
> support bimodal standard tags, some changes to `DocCommentParser` are 
> incorporated here.
> 
> This change is only the _support_ for the new tag;  it does _not_ include any 
> changes to API docs to _use_ the new tag.

Jonathan Gibbons has updated the pull request with a new target base due to a 
merge or a rebase. The pull request now contains 12 commits:

 - Merge master
 - Fix merge issues; review feedback
 - Merge with master
 - allow rich content in createAnchorAndSearchIndex
 - update Docs.gmk to stop disabling spec tag
 - fix TestSpecTag.testEncodedURI
 - fix tests
 - remove support to workaround legacy @spec tag
 - Merge remote-tracking branch 'upstream/master' into new-spec-tag
 - fix trailing whitespace in test
 - ... and 2 more: https://git.openjdk.java.net/jdk/compare/300cbaa6...69595e04

-

Changes: https://git.openjdk.java.net/jdk/pull/790/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk=790=02
  Stats: 1374 lines in 42 files changed: 1337 ins; 14 del; 23 mod
  Patch: https://git.openjdk.java.net/jdk/pull/790.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/790/head:pull/790

PR: https://git.openjdk.java.net/jdk/pull/790


Re: RFR: 8212879: Make JVMTI TagMap table concurrent [v11]

2020-11-18 Thread Serguei Spitsyn
On Mon, 16 Nov 2020 23:30:25 GMT, Coleen Phillimore  wrote:

>> This change turns the HashTable that JVMTI uses for object tagging into a 
>> regular Hotspot hashtable - the one in hashtable.hpp with resizing and 
>> rehashing.   Instead of pointing directly to oops so that GC has to walk the 
>> table to follow oops and then to rehash the table, this table points to 
>> WeakHandle.  GC walks the backing OopStorages concurrently.
>> 
>> The hash function for the table is a hash of the lower 32 bits of the 
>> address.  A flag is set during GC (gc_notification if in a safepoint, and 
>> through a call to JvmtiTagMap::needs_processing()) so that the table is 
>> rehashed at the next use.
>> 
>> The gc_notification mechanism of weak oop processing is used to notify Jvmti 
>> to post ObjectFree events.  In concurrent GCs there can be a window of time 
>> between weak oop marking where the oop is unmarked, so dead (the phantom 
>> load in peek returns NULL) but the gc_notification hasn't been done yet.  In 
>> this window, a heap walk or GetObjectsWithTags call would not find an object 
>> before the ObjectFree event is posted.  This is dealt with in two ways:
>> 
>> 1. In the Heap walk, there's an unconditional table walk to post events if 
>> events are needed to post.
>> 2. For GetObjectWithTags, if a dead oop is found in the table and posting is 
>> required, we use the VM thread to post the event.
>> 
>> Event posting cannot be done in a JavaThread because the posting needs to be 
>> done while holding the table lock, so that the JvmtiEnv state doesn't change 
>> before posting is done.  ObjectFree callbacks are limited in what they can 
>> do as per the JVMTI Specification.  The allowed callbacks to the VM already 
>> have code to allow NonJava threads.
>> 
>> To avoid rehashing, I also tried to use object->identity_hash() but this 
>> breaks because entries can be added to the table during heapwalk, where the 
>> objects use marking.  The starting markWord is saved and restored.  Adding a 
>> hashcode during this operation makes restoring the former markWord (locked, 
>> inflated, etc) too complicated.  Plus we don't want all these objects to 
>> have hashcodes because locking operations after tagging would have to always 
>> use inflated locks.
>> 
>> Much of this change is to remove serial weak oop processing for the 
>> weakProcessor, ZGC and Shenandoah.  The GCs have been stress tested with 
>> jvmti code.
>> 
>> It has also been tested with tier1-6.
>> 
>> Thank you to Stefan, Erik and Kim for their help with this change.
>
> Coleen Phillimore has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   Fix minimal build.

Hi Coleen,
It looks good to me.
Just a couple of nits below.

src/hotspot/share/prims/jvmtiTagMap.cpp:

There is a double-check for _needs_cleaning, so the one at line 136 can be 
removed:
 136   if (_needs_cleaning &&
 137   post_events &&
 138   env()->is_enabled(JVMTI_EVENT_OBJECT_FREE)) {
 139 remove_dead_entries(true /* post_object_free */);
1158 void JvmtiTagMap::remove_dead_entries(bool post_object_free) {
1159   assert(is_locked(), "precondition");
1160   if (_needs_cleaning) {
1161 log_info(jvmti, table)("TagMap table needs cleaning%s",
1162(post_object_free ? " and posting" : ""));
1163 hashmap()->remove_dead_entries(env(), post_object_free);
1164 _needs_cleaning = false;
1165   }
1166 }
test/hotspot/jtreg/vmTestbase/nsk/jvmti/AttachOnDemand/attach021/attach021Agent00.cpp:

The change below is not needed as the call to 
nsk_jvmti_aod_disableEventAndFinish() does exactly the same:
-nsk_jvmti_aod_disableEventAndFinish(agentName, JVMTI_EVENT_OBJECT_FREE, 
success, jvmti, jni);
+
+/* Flush any pending ObjectFree events, which may set success to 1 */
+if (jvmti->SetEventNotificationMode(JVMTI_DISABLE,
+JVMTI_EVENT_OBJECT_FREE,
+NULL) != JVMTI_ERROR_NONE) {
+success = 0;
+}
+
+nsk_aod_agentFinished(jni, agentName, success);
 }

-

Marked as reviewed by sspitsyn (Reviewer).

PR: https://git.openjdk.java.net/jdk/pull/967


Integrated: JDK-8256501: libTestMainKeyWindow fails to build with Xcode 12.2

2020-11-18 Thread Erik Joelsson
On Tue, 17 Nov 2020 21:04:08 GMT, Erik Joelsson  wrote:

> In Xcode 12.2, the framework JavaVM was removed in the sysroot and all 
> (relevant) frameworks inside were just moved one step up so we still find 
> things like JavaNativeFoundation and JavaRuntimeSupport. There is however one 
> test that currently links explicitly to JavaVM, which fails the build. The 
> fix seems to be to simply remove this from the linker flags.

This pull request has now been integrated.

Changeset: 4e5116c4
Author:Erik Joelsson 
URL:   https://git.openjdk.java.net/jdk/commit/4e5116c4
Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod

8256501: libTestMainKeyWindow fails to build with Xcode 12.2

Reviewed-by: ihse, serb

-

PR: https://git.openjdk.java.net/jdk/pull/1275


Re: RFR: 8256538: Fix annoying awk warning in configure for java versions

2020-11-18 Thread Bernhard Urban-Forster
On Wed, 18 Nov 2020 13:35:14 GMT, Erik Joelsson  wrote:

>> The change from grep to awk in JDK-8244248 and further bug fixed in 
>> JDK-8244756 still has invalid syntax. This causes some awk (most notably 
>> gawk, the most commonly used) to complain:
>> 
>> gawk: cmd. line:1: warning: regexp escape sequence `"' is not a known regexp 
>> operator
>> 
>> This is annoying and should be fixed.
>
> Marked as reviewed by erikj (Reviewer).

Thank you Magnus, this is something that has bugged me as well.

FWIW the same problem exists here with the build JDK detection: 
https://github.com/openjdk/jdk/blob/9d5fd4fcabf7bdf580e2fff8e12c2cf130ef44c9/make/autoconf/boot-jdk.m4#L519

Would you mind fixing it as part of this PR too?

-

PR: https://git.openjdk.java.net/jdk/pull/1285


Re: RFR: 8248862: Implement Enhanced Pseudo-Random Number Generators [v3]

2020-11-18 Thread Jim Laskey
On Wed, 18 Nov 2020 13:18:30 GMT, Jim Laskey  wrote:

>> I am unsure if the intent is also to support external libraries providing 
>> `RandomGenerator` implementations. Currently there is an implicit contract 
>> for properties (reflectively invoking a method returning a map with a set of 
>> entries with known keys). Since the service provider implementation is the 
>> `RandomGenerator` itself, rather than `RandomGeneratorFactory` it is harder 
>> expose the meta-data with a clearer contract.
>
> Need rebase

Created new PR because of forced push: https://github.com/openjdk/jdk/pull/1292

-

PR: https://git.openjdk.java.net/jdk/pull/1273


Re: RFR: 8256497: Zero: enable G1 and Shenandoah GCs

2020-11-18 Thread Roman Kennke
On Tue, 17 Nov 2020 19:02:03 GMT, Aleksey Shipilev  wrote:

> Following the [JDK-8255796](https://bugs.openjdk.java.net/browse/JDK-8255796) 
> improvement that ditched the inline contiguous alloc use from Zero, we can 
> now rely on GC interface to hook the GCs properly. G1 and Shenandoah are a 
> bit special here, because they require special `Reference.get` handling.
> 
> Note that it does not change the default GC for Zero, because Zero is 
> implicitly `NeverActAsServerMachine`, which still selects Serial GC by 
> default. After this change, Zero users can opt-in to G1 or Shenandoah.
> 
> Additional testing:
>  - [x] Linux x86_64 Zero fastdebug `hotspot_gc_shenandoah` (some lingering 
> failures about non-enabled compressed oops)
>  - [ ] Linux x86_64 Zero fastdebug `tier1` with `-XX:+UseG1GC`

Looks good to me! Thanks!

-

Marked as reviewed by rkennke (Reviewer).

PR: https://git.openjdk.java.net/jdk/pull/1268


RFR: 8256497: Zero: enable G1 and Shenandoah GCs

2020-11-18 Thread Aleksey Shipilev
Following the [JDK-8255796](https://bugs.openjdk.java.net/browse/JDK-8255796) 
improvement that ditched the inline contiguous alloc use from Zero, we can now 
rely on GC interface to hook the GCs properly. G1 and Shenandoah are a bit 
special here, because they require special `Reference.get` handling.

Note that it does not change the default GC for Zero, because Zero is 
implicitly `NeverActAsServerMachine`, which still selects Serial GC by default. 
After this change, Zero users can opt-in to G1 or Shenandoah.

Additional testing:
 - [x] Linux x86_64 Zero fastdebug `hotspot_gc_shenandoah` (some lingering 
failures about non-enabled compressed oops)
 - [ ] Linux x86_64 Zero fastdebug `tier1` with `-XX:+UseG1GC`

-

Commit messages:
 - Remove TODO
 - 8256497: Zero: enable G1 and Shenandoah GCs

Changes: https://git.openjdk.java.net/jdk/pull/1268/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk=1268=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8256497
  Stats: 72 lines in 5 files changed: 54 ins; 16 del; 2 mod
  Patch: https://git.openjdk.java.net/jdk/pull/1268.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/1268/head:pull/1268

PR: https://git.openjdk.java.net/jdk/pull/1268


Re: RFR: 8256538: Fix annoying awk warning in configure for java versions

2020-11-18 Thread Erik Joelsson
On Wed, 18 Nov 2020 09:47:58 GMT, Magnus Ihse Bursie  wrote:

> The change from grep to awk in JDK-8244248 and further bug fixed in 
> JDK-8244756 still has invalid syntax. This causes some awk (most notably 
> gawk, the most commonly used) to complain:
> 
> gawk: cmd. line:1: warning: regexp escape sequence `"' is not a known regexp 
> operator
> 
> This is annoying and should be fixed.

Marked as reviewed by erikj (Reviewer).

-

PR: https://git.openjdk.java.net/jdk/pull/1285


Re: RFR: 8248862: Implement Enhanced Pseudo-Random Number Generators [v3]

2020-11-18 Thread Jim Laskey
On Wed, 18 Nov 2020 00:51:43 GMT, Paul Sandoz  wrote:

>> Jim Laskey has updated the pull request with a new target base due to a 
>> merge or a rebase. The pull request now contains 40 commits:
>> 
>>  - Merge branch 'master' into 8248862
>>  - 8248862: Implement Enhanced Pseudo-Random Number Generators
>>
>>Update package-info.java
>>  - 8248862: Implement Enhanced Pseudo-Random Number Generators
>>
>>Updated RandomGeneratorFactory javadoc.
>>  - 8248862: Implement Enhanced Pseudo-Random Number Generators
>>
>>Updated documentation for RandomGeneratorFactory.
>>  - Merge branch 'master' into 8248862
>>  - Merge branch 'master' into 8248862
>>  - 8248862: Implement Enhanced Pseudo-Random Number Generators
>>
>>Move RandomGeneratorProperty
>>  - Merge branch 'master' into 8248862
>>  - 8248862: Implement Enhanced Pseudo-Random Number Generators
>>
>>Clear up javadoc
>>  - 8248862; Implement Enhanced Pseudo-Random Number Generators
>>
>>remove RandomGeneratorProperty from API
>>  - ... and 30 more: 
>> https://git.openjdk.java.net/jdk/compare/f7517386...6fe94c68
>
> I am unsure if the intent is also to support external libraries providing 
> `RandomGenerator` implementations. Currently there is an implicit contract 
> for properties (reflectively invoking a method returning a map with a set of 
> entries with known keys). Since the service provider implementation is the 
> `RandomGenerator` itself, rather than `RandomGeneratorFactory` it is harder 
> expose the meta-data with a clearer contract.

Need rebase

-

PR: https://git.openjdk.java.net/jdk/pull/1273


Withdrawn: 8248862: Implement Enhanced Pseudo-Random Number Generators

2020-11-18 Thread Jim Laskey
On Tue, 17 Nov 2020 19:58:47 GMT, Jim Laskey  wrote:

> This PR is to introduce a new random number API for the JDK. The primary API 
> is found in RandomGenerator and RandomGeneratorFactory. Further description 
> can be found in the JEP https://openjdk.java.net/jeps/356 .

This pull request has been closed without being integrated.

-

PR: https://git.openjdk.java.net/jdk/pull/1273


Re: RFR: 8256538: Fix annoying awk warning in configure for java versions

2020-11-18 Thread Magnus Ihse Bursie
On Wed, 18 Nov 2020 09:47:58 GMT, Magnus Ihse Bursie  wrote:

> The change from grep to awk in JDK-8244248 and further bug fixed in 
> JDK-8244756 still has invalid syntax. This causes some awk (most notably 
> gawk, the most commonly used) to complain:
> 
> gawk: cmd. line:1: warning: regexp escape sequence `"' is not a known regexp 
> operator
> 
> This is annoying and should be fixed.

I have gotten confirmation from Martin Doerr that this also works on AIX, which 
has an awk that previously complained about this pattern. And I've tested it on 
all platforms used in the Oracle CI system.

-

PR: https://git.openjdk.java.net/jdk/pull/1285


RFR: 8256240: Reproducible builds should turn on the "deterministic" flag for Visual Studio

2020-11-18 Thread Magnus Ihse Bursie
The microsoft toolchain now supports a new "deterministic" build mode. This 
goes a long way towards building properly deterministic. Another important 
feature is that with the deterministic build mode enabled, the -pathmap flag, 
similar to gcc's -fmacro-prefix-map, is enabled.

-

Commit messages:
 - 8256240: Reproducible builds should turn on the "deterministic" flag for 
Visual Studio

Changes: https://git.openjdk.java.net/jdk/pull/1287/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk=1287=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8256240
  Stats: 68 lines in 4 files changed: 48 ins; 14 del; 6 mod
  Patch: https://git.openjdk.java.net/jdk/pull/1287.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/1287/head:pull/1287

PR: https://git.openjdk.java.net/jdk/pull/1287


Re: RFR: 8256499: Zero: enable Epsilon GC

2020-11-18 Thread Magnus Ihse Bursie
On Tue, 17 Nov 2020 19:11:45 GMT, Aleksey Shipilev  wrote:

> Following the [JDK-8255796](https://bugs.openjdk.java.net/browse/JDK-8255796) 
> improvement that ditched the inline contiguous alloc use from Zero, we can 
> now rely on GC interface to hook the GCs properly. Epsilon GC does not 
> require anything else. Other GCs require a bit of fiddling and more testing 
> (see e.g. [JDK-8256497](https://bugs.openjdk.java.net/browse/JDK-8256497)).
> 
> Additional testing:
>  - [x] Linux x86_64 Zero {fastdebug,release}, `gc/epsilon` tests

Marked as reviewed by ihse (Reviewer).

-

PR: https://git.openjdk.java.net/jdk/pull/1269


RFR: 8256538: Fix annoying awk warning in configure for java versions

2020-11-18 Thread Magnus Ihse Bursie
The change from grep to awk in JDK-8244248 and further bug fixed in JDK-8244756 
still has invalid syntax. This causes some awk (most notably gawk, the most 
commonly used) to complain:

gawk: cmd. line:1: warning: regexp escape sequence `"' is not a known regexp 
operator

This is annoying and should be fixed.

-

Commit messages:
 - 8256538: Fix annoying awk warning in configure for java versions

Changes: https://git.openjdk.java.net/jdk/pull/1285/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk=1285=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8256538
  Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
  Patch: https://git.openjdk.java.net/jdk/pull/1285.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/1285/head:pull/1285

PR: https://git.openjdk.java.net/jdk/pull/1285


Re: RFR: 8256499: Zero: enable Epsilon GC

2020-11-18 Thread Roman Kennke
On Tue, 17 Nov 2020 19:11:45 GMT, Aleksey Shipilev  wrote:

> Following the [JDK-8255796](https://bugs.openjdk.java.net/browse/JDK-8255796) 
> improvement that ditched the inline contiguous alloc use from Zero, we can 
> now rely on GC interface to hook the GCs properly. Epsilon GC does not 
> require anything else. Other GCs require a bit of fiddling and more testing 
> (see e.g. [JDK-8256497](https://bugs.openjdk.java.net/browse/JDK-8256497)).
> 
> Additional testing:
>  - [x] Linux x86_64 Zero {fastdebug,release}, `gc/epsilon` tests

Great! Looks good!

-

Marked as reviewed by rkennke (Reviewer).

PR: https://git.openjdk.java.net/jdk/pull/1269


RFR: 8256499: Zero: enable Epsilon GC

2020-11-18 Thread Aleksey Shipilev
Following the [JDK-8255796](https://bugs.openjdk.java.net/browse/JDK-8255796) 
improvement that ditched the inline contiguous alloc use from Zero, we can now 
rely on GC interface to hook the GCs properly. Epsilon GC does not require 
anything else. Other GCs require a bit of fiddling and more testing (see e.g. 
[JDK-8256497](https://bugs.openjdk.java.net/browse/JDK-8256497)).

Additional testing:
 - [x] Linux x86_64 Zero {fastdebug,release}, `gc/epsilon` tests

-

Commit messages:
 - 8256499: Zero: enable Epsilon GC

Changes: https://git.openjdk.java.net/jdk/pull/1269/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk=1269=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8256499
  Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
  Patch: https://git.openjdk.java.net/jdk/pull/1269.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/1269/head:pull/1269

PR: https://git.openjdk.java.net/jdk/pull/1269