-
Type: Improvement
-
Resolution: Duplicate
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: None
-
Labels:None
-
Environment:OSX 10.6.2, 64-bit Java 6 update 13, JRuby 1.5.0-dev
Running the ruby driver under JRuby 1.5-dev throws an exception when JITing the driver code. Obviously we want as much code as possible to JIT under JRuby for maximum performance.
The exception produces the following backtrace:
org.jruby.compiler.NotCompilableException: JITed method size exceeds configured max of 10000 for method [deserialize]
at org.jruby.compiler.JITCompiler$JITClassGenerator.compile(JITCompiler.java:301)
at org.jruby.compiler.JITCompiler$JITClassGenerator.generate(JITCompiler.java:349)
at org.jruby.util.ClassCache.defineClass(ClassCache.java:123)
at org.jruby.util.ClassCache.cacheClassByKey(ClassCache.java:92)
at org.jruby.compiler.JITCompiler.jitThresholdReached(JITCompiler.java:140)
at org.jruby.compiler.JITCompiler.jitIsEnabled(JITCompiler.java:102)
at org.jruby.compiler.JITCompiler.tryJIT(JITCompiler.java:82)
at org.jruby.internal.runtime.methods.DefaultMethod.tryJitReturnMethod(DefaultMethod.java:131)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:172)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:309)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:148)
at ruby.jit.deserialize_4F36EF1FEC5433E3DFC5812D15D25DF19345BE41._file_(bson_ruby.rb:95)
at ruby.jit.deserialize_4F36EF1FEC5433E3DFC5812D15D25DF19345BE41._file_(bson_ruby.rb)
at org.jruby.ast.executable.AbstractScript._file_(AbstractScript.java:39)
at org.jruby.internal.runtime.methods.JittedMethod.call(JittedMethod.java:153)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:172)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:146)
at org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
at org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.ast.WhileNode.interpret(WhileNode.java:131)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:262)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:204)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:349)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:228)
at org.jruby.ast.FCallThreeArgNode.interpret(FCallThreeArgNode.java:40)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:180)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:172)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:309)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:148)
at org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
at org.jruby.ast.LocalAsgnNode.interpret(LocalAsgnNode.java:123)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:373)
at org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:346)
at org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:303)
at org.jruby.runtime.Block.yield(Block.java:194)
at org.jruby.libraries.ThreadLibrary$Mutex.synchronize(ThreadLibrary.java:195)
at org.jruby.libraries.ThreadLibrary$Mutex$i_method_0_0$RUBYINVOKER$synchronize.call(org/jruby/libraries/ThreadLibrary$Mutex$i_method_0_0$RUBYINVOKER$synchronize.gen)
at org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:115)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:122)
at org.jruby.ast.CallNoArgBlockNode.interpret(CallNoArgBlockNode.java:64)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:113)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:127)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:147)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:279)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:68)
at org.jruby.ast.CallManyArgsNode.interpret(CallManyArgsNode.java:59)
at org.jruby.ast.ToAryNode.interpret(ToAryNode.java:69)
at org.jruby.ast.MultipleAsgnNode.interpret(MultipleAsgnNode.java:127)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.ast.IfNode.interpret(IfNode.java:119)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:139)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:156)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:106)
at org.jruby.ast.VCallNode.interpret(VCallNode.java:85)
at org.jruby.ast.OrNode.interpret(OrNode.java:94)
at org.jruby.ast.IfNode.interpret(IfNode.java:111)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:139)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:156)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:106)
at org.jruby.ast.VCallNode.interpret(VCallNode.java:85)
at org.jruby.ast.IfNode.interpret(IfNode.java:117)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:139)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:156)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:106)
at org.jruby.ast.VCallNode.interpret(VCallNode.java:85)
at org.jruby.ast.CallOneArgFixnumNode.interpret(CallOneArgFixnumNode.java:61)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:139)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:156)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:289)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:108)
at org.jruby.ast.FCallNoArgNode.interpret(FCallNoArgNode.java:31)
at org.jruby.ast.AndNode.interpret(AndNode.java:90)
at org.jruby.ast.WhileNode.interpret(WhileNode.java:127)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:160)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:164)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:299)
at org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:117)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:122)
at org.jruby.ast.CallNoArgBlockNode.interpret(CallNoArgBlockNode.java:64)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:373)
at org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:346)
at org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:303)
at org.jruby.runtime.Block.yield(Block.java:194)
at org.jruby.RubyArray.eachCommon(RubyArray.java:1644)
at org.jruby.RubyArray.each(RubyArray.java:1651)
at org.jruby.RubyArray$i_method_0_0$RUBYFRAMEDINVOKER$each.call(org/jruby/RubyArray$i_method_0_0$RUBYFRAMEDINVOKER$each.gen)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:299)
at org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:117)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:122)
at org.jruby.ast.CallNoArgBlockNode.interpret(CallNoArgBlockNode.java:64)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:139)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:156)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:289)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:108)
at wk_eu6.block_5$RUBY$_block_(wk_eu6.rb:74)
at wk_eu6BlockCallback$block_5$RUBY$_block_xx1.call(Unknown Source)
at org.jruby.runtime.CompiledBlock.yield(CompiledBlock.java:115)
at org.jruby.runtime.CompiledBlock.yield(CompiledBlock.java:98)
at org.jruby.runtime.Block.yield(Block.java:194)
at org.jruby.RubyArray.eachCommon(RubyArray.java:1644)
at org.jruby.RubyArray.each(RubyArray.java:1651)
at org.jruby.RubyArray$i_method_0_0$RUBYFRAMEDINVOKER$each.call(org/jruby/RubyArray$i_method_0_0$RUBYFRAMEDINVOKER$each.gen)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:299)
at org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:117)
at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:132)
at wk_eu6.block_4$RUBY$_block_(wk_eu6.rb:63)
at wk_eu6BlockCallback$block_4$RUBY$_block_xx1.call(Unknown Source)
at org.jruby.runtime.CompiledBlock.yield(CompiledBlock.java:115)
at org.jruby.runtime.CompiledBlock.yield(CompiledBlock.java:98)
at org.jruby.runtime.Block.yield(Block.java:194)
at org.jruby.RubyArray.eachCommon(RubyArray.java:1644)
at org.jruby.RubyArray.each(RubyArray.java:1651)
at org.jruby.RubyArray$i_method_0_0$RUBYFRAMEDINVOKER$each.call(org/jruby/RubyArray$i_method_0_0$RUBYFRAMEDINVOKER$each.gen)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:299)
at org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:117)
at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:132)
at wk_eu6.block_3$RUBY$_block_(wk_eu6.rb:61)
at wk_eu6BlockCallback$block_3$RUBY$_block_xx1.call(Unknown Source)
at org.jruby.runtime.CompiledBlock.yield(CompiledBlock.java:115)
at org.jruby.runtime.CompiledBlock.yield(CompiledBlock.java:98)
at org.jruby.runtime.Block.yield(Block.java:194)
at org.jruby.RubyArray.eachCommon(RubyArray.java:1644)
at org.jruby.RubyArray.each(RubyArray.java:1651)
at org.jruby.RubyArray$i_method_0_0$RUBYFRAMEDINVOKER$each.call(org/jruby/RubyArray$i_method_0_0$RUBYFRAMEDINVOKER$each.gen)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:299)
at org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:117)
at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:132)
at wk_eu6.ensure_1$RUBY$_ensure__2(wk_eu6.rb:60)
at wk_eu6._file_(wk_eu6.rb:41)
at wk_eu6.load(wk_eu6.rb)
at org.jruby.Ruby.runScript(Ruby.java:631)
at org.jruby.Ruby.runNormally(Ruby.java:549)
at org.jruby.Ruby.runFromMain(Ruby.java:395)
at org.jruby.Main.run(Main.java:272)
at org.jruby.Main.run(Main.java:117)
at org.jruby.Main.main(Main.java:97)