Actions
Bug #2182
closedjava.lang.RuntimeException: Method code too large thrown in query
Status:
Closed
Priority:
Normal
Assignee:
Category:
Byte code generation
Sprint/Milestone:
Start date:
2014-10-15
Due date:
% Done:
100%
Estimated time:
Legacy ID:
Applies to branch:
9.6
Fix Committed on Branch:
9.6
Fixed in Maintenance Release:
Platforms:
Description
Reported by Gunther Rademacher:
The following exception is thrown by the attached xquery file when bytecode generation is switched on:
java.lang.RuntimeException: Method code too large!
at com.saxonica.objectweb.asm.MethodWriter.a(Unknown Source)
at com.saxonica.objectweb.asm.ClassWriter.toByteArray(Unknown Source)
at com.saxonica.ee.bytecode.util.CompilerService.makeClass(CompilerService.java:959)
at com.saxonica.ee.bytecode.util.CompilerService.compileToByteCode(CompilerService.java:673)
at com.saxonica.ee.bytecode.LetExpressionCompiler.makeClosure(LetExpressionCompiler.java:636)
at com.saxonica.ee.bytecode.LetExpressionCompiler.compileCommonExpr(LetExpressionCompiler.java:177)
at com.saxonica.ee.bytecode.LetExpressionCompiler.compileToIterator(LetExpressionCompiler.java:133)
at com.saxonica.ee.bytecode.util.CompilerService.compileToIterator(CompilerService.java:739)
at com.saxonica.ee.bytecode.LetExpressionCompiler.compileToIterator(LetExpressionCompiler.java:142)
at com.saxonica.ee.bytecode.util.CompilerService.compileToIterator(CompilerService.java:739)
at com.saxonica.ee.bytecode.LetExpressionCompiler.compileToIterator(LetExpressionCompiler.java:142)
at com.saxonica.ee.bytecode.util.CompilerService.compileToIterator(CompilerService.java:739)
at com.saxonica.ee.bytecode.util.CompilerService.compileToByteCode(CompilerService.java:505)
at com.saxonica.ee.optim.OptimizerEE.compileToByteCode(OptimizerEE.java:1334)
at net.sf.saxon.query.XQueryFunction.optimize(XQueryFunction.java:527)
at net.sf.saxon.query.XQueryFunctionLibrary.optimizeGlobalFunctions(XQueryFunctionLibrary.java:326)
at net.sf.saxon.query.QueryModule.optimizeGlobalFunctions(QueryModule.java:1200)
at net.sf.saxon.expr.instruct.Executable.fixupQueryModules(Executable.java:597)
at net.sf.saxon.query.XQueryParser.makeXQueryExpression(XQueryParser.java:159)
at net.sf.saxon.query.StaticQueryContext.compileQuery(StaticQueryContext.java:570)
at net.sf.saxon.query.StaticQueryContext.compileQuery(StaticQueryContext.java:633)
at net.sf.saxon.s9api.XQueryCompiler.compile(XQueryCompiler.java:592)
at net.sf.saxon.Query.compileQuery(Query.java:787)
at net.sf.saxon.Query.doQuery(Query.java:340)
at net.sf.saxon.Query.main(Query.java:111)
Fatal error during query: java.lang.RuntimeException: Method code too large!
Files
Updated by O'Neil Delpratt about 10 years ago
- File xquery-update-30.xquery xquery-update-30.xquery added
Updated by O'Neil Delpratt about 10 years ago
The ASM library at version 5.0.3 now throws a RuntimeException in the method toByteArray of the ClassWriter class if the method length is greater than 65535. See below:
public byte[] toByteArray() {
if (index > 0xFFFF)
throw new RuntimeException("Class file too large!");
}
...
ASM 3.3.1 did not have this condition, therefore it would fail later with a ClassFormatError when we call the loadCLass
method from the ClassLoader
class.
Updated by O'Neil Delpratt about 10 years ago
- Status changed from New to Resolved
Added the RuntimeException catch clause in the compiletoByteCode of the CompilerService class.
Updated by O'Neil Delpratt about 10 years ago
Committed to subversion on the SAxon 9.6 branch.
Updated by O'Neil Delpratt about 10 years ago
- Status changed from Resolved to Closed
- % Done changed from 0 to 100
- Fixed in version set to 9.6.0.2
Bug fix applied to the maintenance release Saxon 9.6.0.2
Updated by O'Neil Delpratt almost 9 years ago
- Sprint/Milestone set to 9.6.0.2
- Applies to branch 9.6 added
- Fix Committed on Branch 9.6 added
- Fixed in Maintenance Release 9.6.0.2 added
Please register to edit this issue
Actions