RFR: CODETOOLS-7902944: JMH: Avoid weak references in Blackhole.consume(Object)

Aleksey Shipilev shade at openjdk.java.net
Wed May 26 10:58:30 UTC 2021


CODETOOLS-7901867 wrapped the stored object reference with a `WeakReference`. This unfortunately fails with Value Type boxes that throw the exceptions like:


java.lang.IllegalArgumentException: cannot reference a primitive type: org.openjdk.PrimitiveClasses$Value
at java.base/java.lang.ref.Reference.<init>(Reference.java:495)
at java.base/java.lang.ref.Reference.<init>(Reference.java:489)
at java.base/java.lang.ref.WeakReference.<init>(WeakReference.java:62)
at org.openjdk.jmh.infra.Blackhole.consumeFull(Blackhole.java:515)
at org.openjdk.jmh.infra.Blackhole.consume(Blackhole.java:315)
at org.openjdk.jmh_generated.PrimitiveClasses_test_jmhTest.test_avgt_jmhStub(PrimitiveClasses_test_jmhTest.java:190)
at org.openjdk.jmh_generated.PrimitiveClasses_test_jmhTest.test_AverageTime(PrimitiveClasses_test_jmhTest.java:152)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.openjdk.jmh.runner.BenchmarkHandler$BenchmarkTask.call(BenchmarkHandler.java:470)
at org.openjdk.jmh.runner.BenchmarkHandler$BenchmarkTask.call(BenchmarkHandler.java:453)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:831)


Wrapping in `WeakReference` is not reliable anyway, so it might make more sense to drop it.

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

Commit messages:
 - CODETOOLS-7902944: JMH: Avoid weak references in Blackhole.consume(Object)

Changes: https://git.openjdk.java.net/jmh/pull/42/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jmh&pr=42&range=00
  Issue: https://bugs.openjdk.java.net/browse/CODETOOLS-7902944
  Stats: 4 lines in 1 file changed: 0 ins; 2 del; 2 mod
  Patch: https://git.openjdk.java.net/jmh/pull/42.diff
  Fetch: git fetch https://git.openjdk.java.net/jmh pull/42/head:pull/42

PR: https://git.openjdk.java.net/jmh/pull/42


More information about the jmh-dev mailing list