[12] RFR(XS) 8208463: jdk.internal.vm.compiler's module-info.java.extra contains duplicated provides of the same service interface

Vladimir Kozlov vladimir.kozlov at oracle.com
Tue Aug 14 04:33:32 UTC 2018


Thank you, Mandy

Vladimir

On 8/13/18 8:00 PM, mandy chung wrote:
> Hi Vladimir,
> 
> This looks good.  I verified with my patch that enforces non-duplicate
> provides check and it builds successfully.  Thanks for fixing it.
> 
> thanks
> Mandy
> 
> On 8/13/18 5:06 PM, Vladimir Kozlov wrote:
>> https://bugs.openjdk.java.net/browse/JDK-8208463
>>
>> Before we did not care how module-info.java.extra is generated. The code in Gensrc-jdk.internal.vm.compiler.gmk  make 
>> file simple ordered 'providers' files (which are packages names) by name and then use their contents to generate 
>> 'provides' instructions. If following file in sorted list reference the same package it will be added to the same 
>> 'provides' as for previous file. But it did not guarantee that all referenced packages are listed in the same 
>> 'provides' command.
>>
>> The fix is to sort files not by their name but by their content. It guarantee that files with the same content will be 
>> listed together.
>>
>> Run tier1-3 testing. It included Graal JIT testing and AOT (which uses Graal) testing.
>>
>> Thanks,
>> Vladimir
>>
>> diff -r ae001a1deb74 make/gensrc/Gensrc-jdk.internal.vm.compiler.gmk
>> --- a/make/gensrc/Gensrc-jdk.internal.vm.compiler.gmk
>> +++ b/make/gensrc/Gensrc-jdk.internal.vm.compiler.gmk
>> @@ -124,7 +124,7 @@
>>       ($(CD) $(GENSRC_DIR)/META-INF/providers && \
>>           p=""; \
>>           impl=""; \
>> -        for i in $$($(LS) | $(SORT)); do \
>> +        for i in $$($(GREP) '^' * | $(SORT) -t ':' -k 2 | $(SED) 's/:.*//'); do \
>>             c=$$($(CAT) $$i | $(TR) -d '\n\r'); \
>>             if test x$$p != x$$c; then \
>>                   if test x$$p != x; then \


More information about the hotspot-compiler-dev mailing list