[foreign] RFR 8222919: jextract should compile generated java sources rather than use ASM to generate class files
Jorn Vernee
jbvernee at xs4all.nl
Wed Apr 24 14:53:48 UTC 2019
Looks good!
Now that the transition to source code generation is complete, and the
ASM factories are removed, we can start looking at the plugin/extension
story some more I think?
Cheers,
Jorn
Sundararajan Athijegannathan schreef op 2019-04-24 16:16:
> Hi,
>
> Fixed. Updated webrev:
> https://cr.openjdk.java.net/~sundar/8222919/webrev.01/
>
> Issues:
>
> 1) Wrong source file name for static forwarder classes -harmless (as
> the name is used only in SourceFile attribute) and hence no test
> failure because of that. But it has been fixed to use correct source
> file name (with package name rather than just simple name).
>
> 2) '\\' in names of Zip/Jarfile:
>
> Previously Map<String, byte[]> used "/" separated names for class
> names (com/acme/Foo for com.acme.Foo). This masked the bug in
> JarWriter (which replaced '.' with File.separatorChar - but "." didn't
> occur in the name at all)! With InMemoryJavaCompiler, names are normal
> fully qualified classnames (com.acme.Foo) - which JarWriter
> transformed with "\\" (File.separatorChar) on Windows! Resulting in
> zip/jar file containing '\\' chars! This is a bug per Zip standard.
>
> https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT
>
> "4.4.17.1 The name of the file, with optional relative path. The path
> stored MUST NOT contain a drive or device letter, or a leading slash.
> All slashes MUST be forward slashes '/' as opposed to backwards
> slashes '\' for compatibility with Amiga and UNIX file systems etc. If
> input came from standard input, there is no file name field. "
>
> :)
>
> PS. Jorn and I discussed this via private emails as well - found the
> same issue independently! Submitting internal mach5 job concurrently.
>
> Thanks,
> -Sundar
>
> On 24/04/19, 6:48 PM, Sundararajan Athijegannathan wrote:
>> Hi Jorn,
>>
>> Yes, I see 3 test failures on Windows (only) with internal mach5
>> build. I'll check this out. Thanks.
>>
>> -Sundar
>>
>> On 24/04/19, 4:35 PM, Jorn Vernee wrote:
>>> Hi Sundar,
>>>
>>> In InMemoryJavaCompiler.FileManager::getJavaFileForOutput; Should
>>> this use computeIfAbsent instead of put? You're probably more aware
>>> of the backing implementation. Is there any chance a file with the
>>> same name is requested twice, and then the previously created
>>> ClassFile object being overwritten?
>>>
>>> Also, there are some tests failing. This seems to be due to Unix vs.
>>> Windows path separators, for instance in the Runner test:
>>>
>>> test Runner.testJarManifest(): failure
>>> java.lang.AssertionError: Sets differ: expected [com.acme.pad_h,
>>> com.acme.pad_h$anon$pad_h$1195, com.acme.pad_h$PaddyStruct] but got
>>> [com\\acme\\pad_h$anon$pad_h$1195, com\\acme\\pad_h,
>>> com\\acme\\pad_h$PaddyStruct]
>>> at org.testng.Assert.fail(Assert.java:94)
>>>
>>> I'm looking into this right now, but maybe you know where the problem
>>> might be?
>>>
>>> Cheers,
>>> Jorn
>>>
>>> Sundararajan Athijegannathan schreef op 2019-04-24 11:34:
>>>> Please review.
>>>>
>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8222919
>>>> Webrev: https://cr.openjdk.java.net/~sundar/8222919/webrev.00/
>>>>
>>>> Thanks
>>>> -Sundar
More information about the panama-dev
mailing list