[JAXP] RFR: 8153082: Update XSTL compiler to generate classes that invoke addReads

Daniel Fuchs daniel.fuchs at oracle.com
Mon Jul 25 14:59:35 UTC 2016


Hi Alan,

On 23/07/16 07:57, Alan Bateman wrote:
> On 22/07/2016 17:16, Daniel Fuchs wrote:
>
>> Hi,
>>
>> Please find below a fix for
>> 8153082: Update XSTL compiler to generate classes that invoke addReads
>> https://bugs.openjdk.java.net/browse/JDK-8153082
>>
>> This fix removes a dependency from java.xml to an internal
>> java base API.
> This looks good. The only thing that looks a bit strange is changing the
> class file version during generation. It there any reason not to bump
> the default? Separately, we should cache the Configuration as each
> translet has the same but that is a separate issue of course.

I've done the experiment and bumped the default class file version
to 49. But then some other tests (e.g. SAXTFactoryTest) started failing
with strange ClassFileFormat errors (see at the end of the mail).

My guess is that the XSLT compiler (or is it BCEL?) is not ready for
a global upgrade of class file version to 49.
It seems that something is sometimes genereting bytecode that's
incompatible with class file version 49
(I verified that those tests would pass with 48, but they fail with 49).

I have unfortunately no idea what exactly is causing the issue - so
I've revised my patch to generate 1.1 compatible byte code instead.
(mixing bytecode that requires v < 49 with bytecode that requires v > 48
  does not sound like a good idea ;-( )

So here is a new webrev that does not require 49 and makes all
the tests happy:

http://cr.openjdk.java.net/~dfuchs/webrev_8153082/webrev.01/

best regards,

-- daniel

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

---- ClassFormatError in SAXTFactoryTest when class file
      version is > 48

java.lang.ClassFormatError: Illegal class name "die/verwandlung/" in 
class file <Unknown>
	at java.lang.ClassLoader.defineClass1(java.base at 9-internal/Native Method)
	at 
java.lang.ClassLoader.defineClass(java.base at 9-internal/ClassLoader.java:942)
	at 
java.lang.ClassLoader.defineClass(java.base at 9-internal/ClassLoader.java:806)
	at 
com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl$TransletClassLoader.defineClass(java.xml at 9-internal/TemplatesImpl.java:197)
	at 
com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl.defineTransletClasses(java.xml at 9-internal/TemplatesImpl.java:492)
	at 
com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl.getTransletInstance(java.xml at 9-internal/TemplatesImpl.java:529)
	at 
com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl.newTransformer(java.xml at 9-internal/TemplatesImpl.java:564)
	at 
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTransformer(java.xml at 9-internal/TransformerFactoryImpl.java:798)
	at 
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTransformerHandler(java.xml at 9-internal/TransformerFactoryImpl.java:1105)
	at 
javax.xml.transform.ptests.SAXTFactoryTest.testcase06(SAXTFactoryTest.java:237)
	at 
jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base at 9-internal/Native 
Method)
	at 
jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base at 9-internal/NativeMethodAccessorImpl.java:62)
	at 
jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base at 9-internal/DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(java.base at 9-internal/Method.java:533)
	at 
org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84)
	at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
	at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
	at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
	at 
org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
	at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
	at org.testng.TestRunner.privateRun(TestRunner.java:767)
	at org.testng.TestRunner.run(TestRunner.java:617)
	at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
	at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
	at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
	at org.testng.SuiteRunner.run(SuiteRunner.java:240)
	at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
	at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
	at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224)
	at org.testng.TestNG.runSuitesLocally(TestNG.java:1149)
	at org.testng.TestNG.run(TestNG.java:1057)
	at 
com.sun.javatest.regtest.TestNGAction$TestNGRunner.main(TestNGAction.java:220)
	at 
com.sun.javatest.regtest.TestNGAction$TestNGRunner.main(TestNGAction.java:184)
	at 
jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base at 9-internal/Native 
Method)
	at 
jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base at 9-internal/NativeMethodAccessorImpl.java:62)
	at 
jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base at 9-internal/DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(java.base at 9-internal/Method.java:533)
	at 
com.sun.javatest.regtest.agent.MainWrapper$MainThread.run(MainWrapper.java:110)
	at java.lang.Thread.run(java.base at 9-internal/Thread.java:843)






More information about the core-libs-dev mailing list