On May 25, 2011, at 12:20 PM, Ola Bini wrote:
> Hi,
> 
> Just to clarify, my builds are against the current patchset in the MLVM
> repository, so that might explain why you're not seeing these problems.

I know that.  That's why we need to find out where the problem is (some hints 
below).  Can someone provide a jar file of the current MLVM JSR 292 classes 
(like John's meth.jar)?

-- Christian

> 
> Cheers
> 
> On 2011-05-25 14.29, Christian Thalinger wrote:
>> On May 25, 2011, at 5:58 AM, Ola Bini wrote:
>>> 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
>> 
>> I tried this on solaris-i586 and it works:
>> 
>> BUILD SUCCESSFUL
>> Total time: 29 seconds
>> 
>>> 
>>> 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
>> 
>> Works too (with server compiler on b143).
>> 
>>> 
>>> 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.
>> 
>> I think I see the exception you are talking about but there is so much 
>> output that I'm not sure.
>> 
>> I curious about where the problem lies, either it's a HotSpot fix that's not 
>> in the mlvm repository yet or it's a JDK bug in one of the mlvm patches 
>> which hasn't been pushed yet into the main repository.  At least that's my 
>> best guess.
>> 
>> May I suggest that you guys also try with an official build (like JDK 7 
>> b143) from here (assuming everyone has some kind of access to a Linux box 
>> too):
>> 
>> http://jdk7.java.net/download.html
>> 
>> -- Christian
>> 
>>> 
>>> 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
>> 
>> 
>> 
>> _______________________________________________
>> 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

Reply via email to