Change for 8248135: Build microbenchmarks with --enable-preview makes other non-preview JMH benchmarks to fail

Peter Levart peter.levart at gmail.com
Tue Jul 7 08:59:13 UTC 2020


The following patch seems to fix this problem:


===================================================================
--- make/RunTests.gmk    (revision 
60064:00a964b6ab716706f0deab6dd04b43f31b1939c0)
+++ make/RunTests.gmk    (revision 60064+:00a964b6ab71+)
@@ -693,6 +693,9 @@
    # Set library path for native dependencies
    $1_JMH_JVM_ARGS := -Djava.library.path=$$(TEST_IMAGE_DIR)/micro/native

+  # Micro benchmarks are compiled with --enable-preview so we must run 
them with --enable-preview
+  $1_JMH_JVM_ARGS += --enable-preview
+
    ifneq ($$(MICRO_VM_OPTIONS)$$(MICRO_JAVA_OPTIONS), )
      $1_JMH_JVM_ARGS += $$(MICRO_VM_OPTIONS) $$(MICRO_JAVA_OPTIONS)
    endif


...I can prepare a formal RFR quickly if this is the way to go.


Regards, Peter


On 7/7/20 10:41 AM, Peter Levart wrote:
> A quick work-around for anyone wanting to run the microbenchmarks is 
> to pass --enable-preview explicitly. For example:
>
>
> make test TEST="micro:java.util.stream.ops" 
> MICRO="JAVA_OPTIONS=--enable-preview"
>
>
> Regards, Peter
>
>
> On 7/7/20 10:23 AM, Peter Levart wrote:
>>
>> On 7/7/20 10:13 AM, David Holmes wrote:
>>> Hi Peter,
>>>
>>> cc Claes
>>>
>>> On 7/07/2020 5:59 pm, Peter Levart wrote:
>>>> Hi,
>>>>
>>>>
>>>> Recently I proposed and pushed a change for [1] which adds 
>>>> --enable-preview option to javac compilation of JMH microbenchmarks 
>>>> in general to enable running a benchmark that uses preview feature 
>>>> (Records). This makes the class files produced marked with version 
>>>> 60.65535. The benchmark that uses preview feature executes without 
>>>> problems because it explicitly specifies the following in its code:
>>>>
>>>>
>>>> @Fork(value = 1, warmups = 0, jvmArgsAppend = "--enable-preview")
>>>>
>>>>
>>>> Recently I wanted to run JMH benchmarks for Stream ops with:
>>>>
>>>>
>>>> make test TEST="micro:java.util.stream.ops"
>>>>
>>>>
>>>> ...but all of them fail to run with the following exception:
>>>>
>>>>
>>>> java.lang.UnsupportedClassVersionError: Preview features are not 
>>>> enabled for 
>>>> org/openjdk/bench/java/util/stream/ops/value/generated/NoneMatchShort_seq_start_jmhTest 
>>>> (class file version 60.65535). Try running with '--enable-preview'
>>>>
>>>>
>>>> What shall we do? Add similar annotation to all of them? Is there a 
>>>> way to specify that all micro benchmarks should be run with 
>>>> --enable-preview option passed to java?
>>>
>>> So this breaks running all non-preview using benchmarks? If so I say 
>>> we need to backout the change for 8248135 while a proper solution is 
>>> found.
>>
>>
>> I guess it does break (at least the way I tried to run them). The 
>> problem is that this little change:
>>
>>
>> --- a/make/test/BuildMicrobenchmark.gmk    Wed Jun 24 01:02:19 2020 
>> +0200
>> +++ b/make/test/BuildMicrobenchmark.gmk    Wed Jun 24 11:05:09 2020 
>> +0200
>> @@ -90,10 +90,11 @@
>>      TARGET_RELEASE := $(TARGET_RELEASE_NEWJDK_UPGRADED), \
>>      SMALL_JAVA := false, \
>>      CLASSPATH := $(MICROBENCHMARK_CLASSPATH), \
>> -    DISABLED_WARNINGS := processing rawtypes cast serial, \
>> +    DISABLED_WARNINGS := processing rawtypes cast serial preview, \
>>      SRC := $(MICROBENCHMARK_SRC), \
>>      BIN := $(MICROBENCHMARK_CLASSES), \
>>      JAVA_FLAGS := --add-modules jdk.unsupported --limit-modules 
>> java.management, \
>> +    JAVAC_FLAGS := --enable-preview, \
>>  ))
>>
>>
>> ...was pushed as part of larger fix for 8247532 which has already 
>> been forward and backported. So I think backing out the whole patch 
>> (which is perfectly OK by itself) would cause more problems then 
>> fixing this particular problem in a followup, given that we can find 
>> a fix quickly. Its has been 14 days since the above was pushed and 
>> nobody noticed until now, so I guess this is not a big problem?
>>
>>
>> Regards, Peter
>>
>>
>>
>>>
>>> David
>>> -----
>>>
>>>>
>>>> [1] https://bugs.openjdk.java.net/browse/JDK-8248135
>>>>
>>>>
>>>> Regards, Peter
>>>>
>>>>



More information about the build-dev mailing list