Hi, There are at least three problems that are still there. They might be connected, or not. (I will tell you how to reproduce these at the end)
I just built a new JVM: openjdk version "1.7.0-internal" OpenJDK Runtime Environment (build 1.7.0-internal-olabini_2011_05_25_08_06-b00) OpenJDK Server VM (build 21.0-b09, mixed mode) I get that weird missing class error when running my test suite: java.lang.NoClassDefFoundError: seph/lang/SephObject java.lang.RuntimeException: java.lang.NoClassDefFoundError: seph/lang/SephObject at seph.lang.Runtime.evaluateStream(Runtime.java:132) at seph.lang.Runtime.evaluateString(Runtime.java:146) at seph.lang.code.BasicSanityTest.recursive_odd_and_even_that_should_blow_the_stack(BasicSanityTest.java:214) Caused by: java.lang.NoClassDefFoundError: seph/lang/SephObject at java.lang.invoke.MethodHandle.invokeExact(MethodHandle.java) at java.lang.invoke.MethodHandle.invokeExact(MethodHandle.java) at seph$gen$abstraction$41$even?.argument_0_0(<eval>:7) at seph.lang.compiler.Bootstrap.intrinsic_if(Bootstrap.java:654) at seph$gen$abstraction$41$even?.even?(<eval>:7) at seph$gen$abstraction$39$toplevel.toplevel(<eval>:25) at seph.lang.Runtime.evaluateStream(Runtime.java:125) This is obviously a complete blocker. Turning off the ricochet frames hits an NYI error when running the test suite. I'm still seeing a crash in ricochet frames: # # A fatal error has been detected by the Java Runtime Environment: # # SIGBUS (0xa) at pc=0x0104884f, pid=85043, tid=2953850880 # # JRE version: 7.0 # Java VM: OpenJDK Client VM (21.0-b09 mixed mode bsd-x86 ) # Problematic frame: # V [libjvm.dylib+0x4884f] MethodHandles::ricochet_frame_oops_do(frame const&, OopClosure*, RegisterMap const*)+0x12f # # 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/olabini/workspace/seph/hs_err_pid85043.log # # If you would like to submit a bug report, please visit: # http://bugreport.sun.com/bugreport/crash.jsp # I've attached the error file. The third error (in frame.cpp) only happens on master of seph, but there are some other problems with master that means you get lots of weird output. In order to reproduce problem 1 and 2: git clone git://github.com/seph-lang/seph.git git checkout 9075c0f4ffe1adac0657057aee2193f16ad12a43 (build.xml: remove lines with <jvmarg value="-Xint"/>) problem 1: ant This should show you one entry of the missing class problem problem 2: ant jar-notest bin/seph bench/bench_arithmetic.sp This should show you problem 2. If you for reference want to see the benchmark run correctly, do bin/seph -J-Xint bench/bench_arithmetic.sp problem 3: git checkout master git checkout 99c8f2609d468835390e39b68c73f21cc78e5ab5 ant clean jar-notest bin/seph bench/bench_arithmetic.sp This should show you problem 3. You will also see loads of other exceptions, since that point generates slightly bad bytecode. That shouldn't make the JVM crash though, I assume - and I've seen the frame.cpp should not reach here without seeing those exceptions. All of these require that JAVA_HOME points to the Java 7 you want to use Cheers > > tom > > On May 23, 2011, at 7:33 PM, Ola Bini wrote: > >> Hi, >> >> I'm happy to see that the performance degradation is getting >> addressed. I would like to point out that there is still a serious >> crash in the machinery too... Have you seen any reason why that >> happens? >> >> Cheers >> >> >> On 2011-05-24 06.11, John Rose wrote: >>> On May 23, 2011, at 3:44 PM, Tom Rodriguez wrote: >>> >>>>> I'd *love* for intermediate static Java snippits like this >>>>> to inline straight through, even if invokeExact would be >>>>> megamorphic under normal circumstances...but I don't think >>>>> that's the case right now, right? >>>> >>>> I haven't been following 292 that closely but it used to be a >>>> piece of code that did precisely that. >>>> >>>> + private Object invoke_L0() throws Throwable { + if >>>> ((boolean) test.invokeExact()) + return >>>> target.invokeExact(); + return >>>> fallback.invokeExact(); + } >>>> >>>> It looks like it was reworked at some point to use >>>> selectAlternative but the optimizer was never updated to deal >>>> with it properly. It's not particularly hard, we just need to >>>> generate code like we would for a bimorphic call site. The >>>> current code expects to either get a constant or something else >>>> and doesn't inline if it's something else. In this case we >>>> have a Phi of two constants which we just need to split. >>> >>> Yes, it would be a quasi-bimorphic call site keyed from a phi of >>> two constants, instead of a profile of two receiver classes. >>> >>>> I'm still unclear why you couldn't write your own variant of >>>> guardWithTest and have it work but my knowledge of what's >>>> really allowed is somewhat limited. >>> >>> Those snippets will inline (I think), but at some point Charlie >>> will want to fetch a bit of constant stuff out of an instance >>> variable. That will look non-constant to the optimizer, even if >>> the instance variable is final and the enclosing object is a >>> constant reference. We made sure this happens for >>> java.lang.invoke classes, but we haven't extended it yet to user >>> code, in part because it would have its own bug tail to work >>> through. >>> >>> -- John _______________________________________________ mlvm-dev >>> mailing list mlvm-dev@openjdk.java.net >>> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev >>> >> >> >> -- Ola Bini (http://olabini.com) Ioke - JRuby - ThoughtWorks >> >> "Yields falsehood when quined" yields falsehood when quined. >> >> _______________________________________________ mlvm-dev mailing >> list mlvm-dev@openjdk.java.net >> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev > > _______________________________________________ mlvm-dev mailing > list mlvm-dev@openjdk.java.net > http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev > -- Ola Bini (http://olabini.com) Ioke - JRuby - ThoughtWorks "Yields falsehood when quined" yields falsehood when quined.
# # A fatal error has been detected by the Java Runtime Environment: # # Internal Error (frame.cpp:1158), pid=85367, tid=2953850880 # Error: ShouldNotReachHere() # # JRE version: 7.0 # Java VM: OpenJDK Client 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 # # If you would like to submit a bug report, please visit: # http://bugreport.sun.com/bugreport/crash.jsp # --------------- T H R E A D --------------- Current thread (0x02039800): VMThread [stack: 0xb0083000,0xb0103000] [id=-1341116416] Stack: [0xb0083000,0xb0103000], sp=0xb01021b0, free space=508k Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) V [libjvm.dylib+0x7b341] VMError::report_and_die()+0x191 V [libjvm.dylib+0x2d354] report_should_not_reach_here(char const*, int)+0x44 V [libjvm.dylib+0x21dab3] frame::oops_do_internal(OopClosure*, CodeBlobClosure*, RegisterMap*, bool)+0xa3 V [libjvm.dylib+0x49422d] JavaThread::oops_do(OopClosure*, CodeBlobClosure*)+0x18d V [libjvm.dylib+0x4946ac] Threads::oops_do(OopClosure*, CodeBlobClosure*)+0x3c V [libjvm.dylib+0x43a54c] SharedHeap::process_strong_roots(bool, bool, SharedHeap::ScanningOption, OopClosure*, CodeBlobClosure*, OopsInGenClosure*)+0x1ec V [libjvm.dylib+0x247fb2] GenCollectedHeap::gen_process_strong_roots(int, bool, bool, bool, SharedHeap::ScanningOption, OopsInGenClosure*, bool, OopsInGenClosure*)+0x92 V [libjvm.dylib+0x205e6a] DefNewGeneration::collect(bool, bool, unsigned long, bool)+0x2da V [libjvm.dylib+0x249e2a] GenCollectedHeap::do_collection(bool, bool, unsigned long, bool, int)+0x76a V [libjvm.dylib+0x1b7f73] GenCollectorPolicy::satisfy_failed_allocation(unsigned long, bool)+0xa3 V [libjvm.dylib+0x246f08] GenCollectedHeap::satisfy_failed_allocation(unsigned long, bool)+0x38 V [libjvm.dylib+0x4d160b] VM_GenCollectForAllocation::doit()+0xeb V [libjvm.dylib+0x80cb5] VM_Operation::evaluate()+0x45 V [libjvm.dylib+0x4d34dd] VMThread::evaluate_operation(VM_Operation*)+0x7d V [libjvm.dylib+0x4d3ed2] VMThread::loop()+0x3f2 V [libjvm.dylib+0x4d408c] VMThread::run()+0x8c V [libjvm.dylib+0x3f3cf5] java_start(Thread*)+0xc5 C [libSystem.B.dylib+0x2e7fd] _pthread_start+0x159 C [libSystem.B.dylib+0x2e682] thread_start+0x22 JavaThread 0x02000000 (nid = 2953318400) was being processed Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) v ~RuntimeStub::fast_new_instance Runtime1 stub J java.lang.invoke.MethodHandle.bindTo(Ljava/lang/Object;)Ljava/lang/invoke/MethodHandle; j seph$gen$abstraction$2.activateWith(Lseph/lang/SephObject;Lseph/lang/SThread;Lseph/lang/LexicalScope;)Lseph/lang/SephObject;+4157 J seph$gen$abstraction$0.argument_2_3(Lseph/lang/LexicalScope;Lseph/lang/SephObject;Lseph/lang/SThread;Lseph/lang/LexicalScope;ZZ)Lseph/lang/SephObject; J seph.lang.ControlDefaultBehavior.evaluateArgument(Ljava/lang/Object;Lseph/lang/LexicalScope;Lseph/lang/SThread;Z)Lseph/lang/SephObject; j java.lang.System.nanoTime()J+-1685669308 C 0x09ea28d8 [error occurred during error reporting (printing target Java thread stack), id 0xa] VM_Operation (0xb00804ac): GenCollectForAllocation, mode: safepoint, requested by thread 0x02000000 --------------- P R O C E S S --------------- Java Threads: ( => current thread ) 0x02043400 JavaThread "Service Thread" daemon [_thread_blocked, id=-1338454016, stack(0xb030d000,0xb038d000)] 0x00833400 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=-1338986496, stack(0xb028b000,0xb030b000)] 0x00832400 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=-1339518976, stack(0xb0209000,0xb0289000)] 0x00812c00 JavaThread "Finalizer" daemon [_thread_blocked, id=-1340051456, stack(0xb0187000,0xb0207000)] 0x00811c00 JavaThread "Reference Handler" daemon [_thread_blocked, id=-1340583936, stack(0xb0105000,0xb0185000)] 0x02000000 JavaThread "main" [_thread_blocked, id=-1341648896, stack(0xb0001000,0xb0081000)] Other Threads: =>0x02039800 VMThread [stack: 0xb0083000,0xb0103000] [id=-1341116416] 0x0204cc00 WatcherThread [stack: 0xb038f000,0xb040f000] [id=-1337921536] VM state:at safepoint (normal execution) VM Mutex/Monitor currently owned by a thread: ([mutex/lock_event]) [0x00102970] Threads_lock - owner thread: 0x02039800 [0x00102d30] Heap_lock - owner thread: 0x02000000 Heap def new generation total 4928K, used 4486K [75497472, 81068032, 164954112) eden space 4416K, 100% used [75497472, 80019456, 80019456) from space 512K, 13% used [80019456, 80091472, 80543744) to space 512K, 0% used [80543744, 80543800, 81068032) tenured generation total 10944K, used 1865K [164954112, 176160768, 343932928) the space 10944K, 17% used [164954112, 166864656, 166864896, 176160768) compacting perm gen total 12288K, used 3112K [343932928, 356515840, 411041792) the space 12288K, 25% used [343932928, 347120456, 347120640, 356515840) No shared spaces configured. Code Cache [41943040, 43188224, 75497472) total_blobs=563 nmethods=421 adapters=75 free_code_cache=31573Kb largest_free_block=32330752 Dynamic libraries: 0x00000000 /usr/lib/libSystem.B.dylib 0x00000000 /usr/lib/system/libmathCommon.A.dylib 0x01000000 /usr/local/java-1.7.0-internal-2011_05_25/jre/lib/i386/client/libjvm.dylib 0x00000000 /usr/lib/libstdc++.6.dylib 0x0003b000 /usr/local/java-1.7.0-internal-2011_05_25/jre/lib/i386/libverify.dylib 0x00049000 /usr/local/java-1.7.0-internal-2011_05_25/jre/lib/i386/libjava.dylib 0x00078000 /usr/local/java-1.7.0-internal-2011_05_25/jre/lib/i386/libzip.dylib VM Arguments: jvm_args: -Dseph.memory.max=256m -Dseph.stack.max=512k -Xmx256m -Xss512k -Xbootclasspath/a:/Users/olabini/workspace/seph/lib/seph.jar -Dseph.home=/Users/olabini/workspace/seph -Dfile.encoding=UTF-8 -Dseph.lib=/Users/olabini/workspace/seph/lib -Dseph.script=seph java_command: seph.lang.Main bench/bench_arithmetic.sp Launcher Type: SUN_STANDARD Environment Variables: JAVA_HOME=/usr/local/java-1.7.0 CLASSPATH=.:/Users/olabini/programming/lib/XmlSchema-1.3.1.jar:/Users/olabini/programming/lib/axis.jar:/Users/olabini/programming/lib/backport-util-concurrent.jar:/Users/olabini/programming/lib/commons-codec-1.3.jar:/Users/olabini/programming/lib/commons-discovery-0.4.jar:/Users/olabini/programming/lib/commons-httpclient-3.0.jar:/Users/olabini/programming/lib/commons-logging-1.1-dev.jar:/Users/olabini/programming/lib/derby.jar:/Users/olabini/programming/lib/derbyclient.jar:/Users/olabini/programming/lib/derbynet.jar:/Users/olabini/programming/lib/jakarta-oro-2.0.8.jar:/Users/olabini/programming/lib/javac2.jar:/Users/olabini/programming/lib/jaxrpc.jar:/Users/olabini/programming/lib/jdom-1.0.jar:/Users/olabini/programming/lib/jinput.jar:/Users/olabini/programming/lib/jme-audio.jar:/Users/olabini/programming/lib/jme-awt.jar:/Users/olabini/programming/lib/jme-collada.jar:/Users/olabini/programming/lib/jme-editors.jar:/Users/olabini/programming/lib/jme-effects.jar:/Users/olabini/programming/lib/jme-font.jar:/Users/olabini/programming/lib/jme-gamestates.jar:/Users/olabini/programming/lib/jme-model.jar:/Users/olabini/programming/lib/jme-ogrexml.jar:/Users/olabini/programming/lib/jme-scene.jar:/Users/olabini/programming/lib/jme-swt.jar:/Users/olabini/programming/lib/jme-terrain.jar:/Users/olabini/programming/lib/jme.jar:/Users/olabini/programming/lib/junit-3.8.1.jar:/Users/olabini/programming/lib/lwjgl.jar:/Users/olabini/programming/lib/lwjgl_util.jar:/Users/olabini/programming/lib/lwjgl_util_applet.jar:/Users/olabini/programming/lib/ojdbc14.jar:/Users/olabini/programming/lib/postgresql-8.1-407.jdbc3.jar:/Users/olabini/programming/lib/sqljdbc.jar:/Users/olabini/programming/lib/wsdl4j-1.6.1.jar PATH=/usr/local/rvm/gems/ruby-1.8.7-p334/bin:/usr/local/rvm/gems/ruby-1.8.7-p334@global/bin:/usr/local/rvm/rubies/ruby-1.8.7-p334/bin:/usr/local/rvm/bin:/Library/Frameworks/Python.framework/Versions/Current/bin:/Users/olabini/bin:/usr/local/scala/bin:/usr/local/bin:/usr/local/sbin:/usr/local/mysql/bin:/opt/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/Library/Frameworks/Python.framework/Versions/Current/bin:/Users/olabini/bin:/usr/local/scala/bin:/usr/local/sbin:/usr/local/mysql/bin:/opt/local/bin:/Users/olabini/.emacs.d/vm:/usr/X11R6/bin:/usr/local/ruby/bin:~/bin:/usr/local/maven/bin:/usr/local/maven2/bin:/usr/local/ant/bin:/Users/olabini/workspace/rhino/bin:/usr/local/pgsql/bin:/usr/local/java-1.7.0/bin:/Library/PostgreSQL8/bin:/Library/Frameworks/Python.framework/Versions/2.5/bin:/Users/olabini/workspace/jatha:/Users/olabini/workspace/ioke/bin:/Users/olabini/workspace/clojure:/Users/olabini/workspace/pygments:/usr/local/ruby19/bin:/usr/local/ruby-snapshot/bin:/Users/olabini/workspace/seph/bin:/usr/local/fantom/bin:/opt/local/lib/oracle:/Applications/YourKit_Java_Profiler_8.0.12.app/bin/mac:/Users/olabini/workspace/jruby/bin:/usr/X11R6/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/ruby/bin:~/bin:/usr/local/maven/bin:/usr/local/maven2/bin:/usr/local/ant/bin:/Users/olabini/workspace/jruby/bin:/Users/olabini/workspace/rhino/bin:/usr/local/pgsql/bin:/usr/local/java-1.7.0/bin:/usr/local/maven2/bin:/Library/PostgreSQL8/bin:/Library/Frameworks/Python.framework/Versions/2.5/bin:/Users/olabini/workspace/jatha:/Users/olabini/workspace/ioke/bin:/Users/olabini/workspace/clojure:/usr/local/scala/bin:/Users/olabini/workspace/pygments:/usr/local/ruby19/bin:/usr/local/ruby-snapshot/bin:/Users/olabini/workspace/seph/bin:/usr/local/fantom/bin:/opt/local/lib/oracle:/Applications/YourKit_Java_Profiler_8.0.12.app/bin/mac SHELL=/bin/zsh DISPLAY=/tmp/launch-JauvO7/org.x:0 DYLD_LIBRARY_PATH=/opt/local/lib/oracle:/Applications/YourKit_Java_Profiler_8.0.12.app/bin/mac Signal Handlers: SIGSEGV: [libjvm.dylib+0x4d0fd0], sa_mask[0]=0xfffefeff, sa_flags=0x00000042 SIGBUS: [libjvm.dylib+0x4d0fd0], sa_mask[0]=0xfffefeff, sa_flags=0x00000042 SIGFPE: [libjvm.dylib+0x3f0ed0], sa_mask[0]=0xfffefeff, sa_flags=0x00000042 SIGPIPE: [libjvm.dylib+0x3f0ed0], sa_mask[0]=0xfffefeff, sa_flags=0x00000042 SIGXFSZ: [libjvm.dylib+0x3f0ed0], sa_mask[0]=0xfffefeff, sa_flags=0x00000042 SIGILL: [libjvm.dylib+0x3f0ed0], sa_mask[0]=0xfffefeff, sa_flags=0x00000042 SIGUSR1: SIG_DFL, sa_mask[0]=0x00000000, sa_flags=0x00000002 SIGUSR2: [libjvm.dylib+0x3f1c40], sa_mask[0]=0x00000000, sa_flags=0x00000042 SIGHUP: [libjvm.dylib+0x3f2db0], sa_mask[0]=0xfffefeff, sa_flags=0x00000042 SIGINT: [libjvm.dylib+0x3f2db0], sa_mask[0]=0xfffefeff, sa_flags=0x00000042 SIGTERM: [libjvm.dylib+0x3f2db0], sa_mask[0]=0xfffefeff, sa_flags=0x00000042 SIGQUIT: [libjvm.dylib+0x3f2db0], sa_mask[0]=0xfffefeff, sa_flags=0x00000042 --------------- S Y S T E M --------------- OS:Bsd uname:Darwin 10.7.0 Darwin Kernel Version 10.7.0: Sat Jan 29 15:17:16 PST 2011; root:xnu-1504.9.37~1/RELEASE_I386 i386 rlimit: STACK 8192k, CORE 0k, NPROC 266, NOFILE 10240 CPU:total 2 (2 cores per cpu, 1 threads per core) family 6 model 23 stepping 10, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1 Memory: 4k page, physical 1749312k(437328k free) /proc/meminfo: vm_info: OpenJDK Client VM (21.0-b09) for bsd-x86 JRE (1.7.0-internal-olabini_2011_05_25_08_06-b00), built on May 25 2011 08:24:18 by "olabini" with gcc 4.0.1 (Apple Inc. build 5494) time: Wed May 25 09:28:27 2011 elapsed time: 1 seconds
_______________________________________________ mlvm-dev mailing list mlvm-dev@openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev