FYI, some findings from sitting down with Christian: * It fails at 10000.times { control } but not at 9999.times { ... which is default server JIT threshold. That tells me it's not something I'm doing, since it interprets fine. * It's encountering a void argument in an arg list at methodHandleWalk.cpp:1092 * It works without the "control" call or without the "times" call, but fails with both together. That also tells me it's not something I'm doing. * Christian also found this line of code related to arg spreading that appears to be explicitly changing an arg to void:
change_argument(T_OBJECT, arg_slot, T_VOID, ArgToken(tt_void)); So perhaps the switch at methodHandleWalk.cpp:1092 hasn't been updated for whatever logic needed this void transformation? - Charlie On Mon, May 16, 2011 at 10:21 AM, Charles Oliver Nutter <head...@headius.com> wrote: > A trivial reproduction against my JRuby working copy: > > def control > end > > 1000000.times { control } > > It seems to have something to do with the block...doing the "control" > call alone works ok. > > - Charlie > > On Mon, May 16, 2011 at 10:13 AM, Charles Oliver Nutter > <head...@headius.com> wrote: >> FYI, this is now the primary issue keeping me from continuing to wire >> up invokedynamic paths in JRuby. Have not yet reduced a test case for >> it. >> >> - Charlie >> >> On Sat, May 14, 2011 at 11:26 AM, Charles Oliver Nutter >> <head...@headius.com> wrote: >>> Current build as of an hour ago. Made some changes to bind more >>> handles straight through, and got this: >>> >>> ~/projects/jruby ➔ jruby -d -X+C --server -e "class Foo; attr_accessor >>> :bar; end; f = Foo.new; loop do; f.bar; end" >>> argCount: 4 >>> inbound: >>> (ThreadContext,IRubyObject,IRubyObject,String,IRubyObject[],Block)IRubyObject >>> permute: [2, 0, 4] >>> before permute: >>> attr_accessor(IRubyObject,ThreadContext,IRubyObject[])IRubyObject >>> # >>> # A fatal error has been detected by the Java Runtime Environment: >>> # >>> # Internal Error (methodHandleWalk.cpp:1092), pid=24359, tid=2962804736 >>> # Error: ShouldNotReachHere() >>> # >>> # JRE version: 7.0 >>> # Java VM: OpenJDK Server VM (21.0-b09 mixed mode bsd-x86 ) >>> # Failed to write core dump. Core dumps have been disabled. To enable >>> core dumping, try "ulimit -c unlimited" before starting Java again >>> # >>> # An error report file with more information is saved as: >>> # /Users/headius/projects/jruby/hs_err_pid24359.log >>> [thread -1332695040 also had an error] >>> # >>> # If you would like to submit a bug report, please visit: >>> # http://bugreport.sun.com/bugreport/crash.jsp >>> # >>> Abort trap >>> >>> Apparently I did reach "Here" :) >>> >>> I'm going to push my changes so others can try it out, and try to >>> narrow down where it's happening. >>> >>> Log is attached. >>> >>> - Charlie >>> >> > _______________________________________________ mlvm-dev mailing list mlvm-dev@openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev