Re: the fate of java.dyn

2011-03-28 Thread Charles Oliver Nutter
Nuke it from orbit. It's the only way to be sure. On Mon, Mar 28, 2011 at 3:57 PM, Ben Evans wrote: > I say get rid of vestigial packages / names as soon as possible. > > Thanks, > > Ben > > On Mon, Mar 28, 2011 at 9:02 PM, John Rose wrote: >> >> OpenJDK b135 has JVM support for the new package

Re: JRuby test/test_crazy_blocks fails

2011-03-28 Thread Charles Oliver Nutter
Sorry :) Busy busy busy. I'll try to have a look soon. If you feel up to it, filing a bug at http://bugs.jruby.org would make sure we don't forget about it, and would act as another ping. - Charlie On Mon, Mar 28, 2011 at 4:30 AM, Christian Thalinger wrote: > On Mar 24, 2011, at 4:06 PM, Christ

Re: who needs asInstance...

2011-04-02 Thread Charles Oliver Nutter
I'd use it if there, but we already generate so much bytecode at runtime, including non-Proxy "real" implementations of interfaces, that it's really not a big deal if it isn't there. However...the fact that I *would* use it means that eventually I *will* use it, which then means yet another item I

Re: JRuby can't compile benchmark. Also package renaming

2011-04-06 Thread Charles Oliver Nutter
1. You can pass -d to JRuby to get the debug output from the failure, or -Xjit.logging.verbose=true. I can take a look at this as soon as I can update to java.lang.invoke. 2. I can fix the package reference quickly, but I'm using Rémi's backport/mock which is still on java.dyn. I can't commit chan

Re: JRuby can't compile benchmark. Also package renaming

2011-04-06 Thread Charles Oliver Nutter
On Wed, Apr 6, 2011 at 10:36 AM, Rémi Forax wrote: > On 04/06/2011 05:17 PM, Charles Oliver Nutter wrote: >> 2. I can fix the package reference quickly, but I'm using Rémi's >> backport/mock which is still on java.dyn. I can't commit changes to >> JRuby master

Re: JRuby can't compile benchmark. Also package renaming

2011-04-06 Thread Charles Oliver Nutter
On Wed, Apr 6, 2011 at 11:17 AM, Rémi Forax wrote: > you can still run using the old linkage API (for 2 or 3 builds) > using -XX:+allowTransitionalJSR292 Ok, I'll do that for now. I assume Linkage is still in the mock? >> >> What's the golden path forward at this point? Is indy solidified >> eno

Re: JRuby can't compile benchmark. Also package renaming

2011-04-06 Thread Charles Oliver Nutter
On Wed, Apr 6, 2011 at 11:22 AM, Charles Oliver Nutter wrote: > Ok, I'll do that for now. I assume Linkage is still in the mock? Linkage does not appear to be in the mock, either under java.dyn or java.lang.invoke. - Charlie ___ mlvm-dev mail

Re: JRuby can't compile benchmark. Also package renaming

2011-04-06 Thread Charles Oliver Nutter
On Wed, Apr 6, 2011 at 11:24 AM, Charles Oliver Nutter wrote: > On Wed, Apr 6, 2011 at 11:22 AM, Charles Oliver Nutter > wrote: >> Ok, I'll do that for now. I assume Linkage is still in the mock? > > Linkage does not appear to be in the mock, either under java.dyn or >

Re: JRuby can't compile benchmark. Also package renaming

2011-04-06 Thread Charles Oliver Nutter
this to JRuby master once ASM 4 is out. - Charlie On Wed, Apr 6, 2011 at 11:45 AM, John Rose wrote: > On Apr 6, 2011, at 9:35 AM, Charles Oliver Nutter wrote: > > And the flag does not seem to work either :( > > [apt] Warning: The flag +AllowTransitionalJSR292 has been EOL'd as

Re: JRuby can't compile benchmark. Also package renaming

2011-04-07 Thread Charles Oliver Nutter
On Wed, Apr 6, 2011 at 5:45 PM, Kirill Shirokov wrote: > The compilation error is most probably caused by package rename: > > warning: could not compile: bench/bench_fib_recursive.rb; full trace follows > java.lang.NoClassDefFoundError: java/dyn/CallSite >        at > org.jruby.runtime.invokedyna

More indy perf anecdotes

2011-04-10 Thread Charles Oliver Nutter
Today I played a bit more with expanding our use of invokedynamic in JRuby. The experiment today was to replace direct guarded calls with indy calls. Specifically, when calling an operator (+, -, <, etc) with a literal integer, we use a different call site that checks instanceof RubyFixnum and cal

Re: More indy perf anecdotes

2011-04-10 Thread Charles Oliver Nutter
On Sun, Apr 10, 2011 at 6:15 PM, Rémi Forax wrote: > I think you can fix a little bit your implementation: > First instead of sending the name of the operation at each call > you should use the indy name to encode that name > instead of pushing it on the stack. > So fixnumFallback should bind the

Assembly output from JRuby 'fib'

2011-04-26 Thread Charles Oliver Nutter
I prepared this for someone else, but I thought folks here might be interested in it too. This gist contains hotspot x86 (32-bit) assembly output for JRuby's dynopt mode and invokedynamic (on a couple-week-old OS X OpenJDK build). I haven't spent a lot of time investigating. https://gist.github.c

Re: review request (L): 7012648/JDK: move JSR 292 to package java.lang.invoke and adjust names

2011-04-26 Thread Charles Oliver Nutter
Yay! On Wed, Mar 23, 2011 at 4:10 AM, John Rose wrote: > http://cr.openjdk.java.net/~jrose/7012648/webrev.jdk.00/ > > Summary: JDK code for package and class renaming from java.dyn to > java.lang.invoke. > > Includes certain other small changes: >  - move remaining (miscellaneous) contents of su

Re: change invokeGeneric to invoke in MethodHandle?

2011-04-26 Thread Charles Oliver Nutter
I assume this means invokeGeneric is firmly established in the specification. I would agree with "invoke" as well. On Sun, Mar 27, 2011 at 1:27 AM, Jeroen Frijters wrote: > +1 invoke makes sense. > >> -Original Message- >> From: mlvm-dev-boun...@openjdk.java.net [mailto:mlvm-dev- >> boun.

JRuby java.lang.invoke updates moved to master

2011-04-27 Thread Charles Oliver Nutter
FYI I have finally pushed my indy updates to JRuby master for eventual release in JRuby 1.7. I have also removed the indy_update branch, since all those changes are now on master. - Charlie ___ mlvm-dev mailing list mlvm-dev@openjdk.java.net http://mail.

Coro in Java 8

2011-04-27 Thread Charles Oliver Nutter
I think it's time to start talking about what we'd need to do to get coroutines in Java 8. In the absence of forking, lightweight processes, or M:N threading, there's no efficient way to implement a large set of problems that demand fiber/coroutine-like behavior. Add to that the fact that language

Re: Coro in Java 8

2011-04-27 Thread Charles Oliver Nutter
On Wed, Apr 27, 2011 at 2:54 PM, Rémi Forax wrote: > Yes,  100% agree. > Coroutine can also be used to implement generators in Java, > introducing yield in the release that introduce lambda make a lot of > sense for me. Yeah, the Java platform is moving toward: * Lightweight concurrency models (

Re: Assembly output from JRuby 'fib'

2011-04-28 Thread Charles Oliver Nutter
On Thu, Apr 28, 2011 at 5:16 AM, Christian Thalinger wrote: > I took a look at it.  I used 64-bit x86 since the code is a bit smaller than > with 32-bit. > > The code is almost identical but three things popped into my eye (the output > is from PrintOptoAssembly): > > 1. The obvious one:  the me

Re: Assembly output from JRuby 'fib'

2011-04-28 Thread Charles Oliver Nutter
On Thu, Apr 28, 2011 at 8:19 AM, Charles Oliver Nutter wrote: > I've been trying to think of ways to reduce the guard cost, since the > perf without the JRuby guard is a fair bit better (0.79 versus 0.63s > for fib(35)). The performance without guards is actually faster than &g

Re: Coro in Java 8

2011-04-28 Thread Charles Oliver Nutter
On Thu, Apr 28, 2011 at 5:03 AM, Lukas Stadler wrote: > I totally agree as well, naturally :-) > > And I do plan on spending more time on the coroutine patch again, I > didn't do much coding in the last months because I was occupied at > university. > The result of this is my thesis on coroutines:

Re: Assembly output from JRuby 'fib'

2011-04-28 Thread Charles Oliver Nutter
On Thu, Apr 28, 2011 at 9:17 AM, Christian Thalinger wrote: > I have now a patch that makes the command line switch tweaking superfluous > and the default performance looks pretty good (see below, 32-bit x86). That's excellent! I can't wait to see that land. A couple notes I haven't included in

Re: Assembly output from JRuby 'fib'

2011-04-28 Thread Charles Oliver Nutter
On Thu, Apr 28, 2011 at 11:03 AM, Rémi Forax wrote: > On 04/28/2011 03:56 PM, Charles Oliver Nutter wrote: >> stack map is invalid. Could be an ASM bug? > > yes. it could :) > > Also it could be a bug on your side because to calculate stackmap > ASM needs to be able to f

Re: Assembly output from JRuby 'fib'

2011-04-28 Thread Charles Oliver Nutter
On Thu, Apr 28, 2011 at 11:18 AM, Rémi Forax wrote: >>> >  Any thoughts on how we can make this even faster? The bulk of the code >>> >  seems to be taken up by a few operations inherent to Fixnum math: >>> > >>> >  * Memory accesses relating to CallSite subclasses (LtCallSite and >>> > friends)

Re: Coro in Java 8

2011-04-28 Thread Charles Oliver Nutter
On Thu, Apr 28, 2011 at 11:41 AM, Rémi Forax wrote: > Lukas, if you refresh your patch, we can come at the next JVM Summit in > July with > a web server that use co-routine with nio/asyncio plus some examples > of yield/iterator/generator. And I promise to finally get coroutine-based fibers into

Unusually high polymorphic dispatch costs?

2011-04-28 Thread Charles Oliver Nutter
I'm trying to figure out why polymorphic dispatch is incredibly slow in JRuby + indy. Take this benchmark, for example: class A; def foo; end; end class B; def foo; end; end a = A.new b = B.new 5.times { puts Benchmark.measure { 100.times { a, b = b, a; a.foo; b.foo } } } a.foo and b.foo ar

Re: Unusually high polymorphic dispatch costs?

2011-04-29 Thread Charles Oliver Nutter
? > > Cheers > > On 2011-04-29 09.59, Rémi Forax wrote: >> On 04/28/2011 09:58 PM, Charles Oliver Nutter wrote: >>> I'm trying to figure out why polymorphic dispatch is incredibly slow >>> in JRuby + indy. Take this benchmark, for example: >>>

Re: Unusually high polymorphic dispatch costs?

2011-04-30 Thread Charles Oliver Nutter
up turning into a CALL (vtable? IC?) This is fun :) - Charlie On Fri, Apr 29, 2011 at 3:12 PM, Charles Oliver Nutter wrote: > I think my strategy is going to be something like this: > > * Bind first method encountered straight through with a new GWT > * Upon encountering nth new

Re: Unusually high polymorphic dispatch costs?

2011-04-30 Thread Charles Oliver Nutter
On Sat, Apr 30, 2011 at 2:27 AM, Charles Oliver Nutter wrote: > I have pushed a change to JRuby master that fails over to a simple > inline cache after one failed GWT. This is not how I would want to do > it long-term, but it does bring some benchmarks back in line with > no

Re: Unusually high polymorphic dispatch costs?

2011-04-30 Thread Charles Oliver Nutter
commit is 989 and the property to configure is jruby.invokedynamic.maxfail, which should equal the number of GWT it will attempt to chain before failing over to simple IC. Awesome stuff. - Charlie On Sat, Apr 30, 2011 at 2:27 AM, Charles Oliver Nutter wrote: > I have pushed a change to JRu

Re: Unusually high polymorphic dispatch costs?

2011-05-01 Thread Charles Oliver Nutter
On Sun, May 1, 2011 at 1:01 PM, Mark Roos wrote: > With respect to chaining gwt handles. > > Any thoughts on at what depth the chain should be converted to some other > form of dispatch? > I am currently just letting them build > > In smalltalk it seems that around 10-20 inline tests are about the

Re: Assembly output from JRuby 'fib'

2011-05-02 Thread Charles Oliver Nutter
On Thu, Apr 28, 2011 at 11:18 AM, Rémi Forax wrote: > Do you specialize the overflow check depending on the callsite ? > for fib(n - 1), you just have to check if n is different from > Integer.MIN_INT, > for fib(n - 2), if n is <= to Integer.MIN_INT - 1 > and for + use the double xor tricks. Here

Re: Assembly output from JRuby 'fib'

2011-05-03 Thread Charles Oliver Nutter
: > On May 3, 2011, at 5:06 PM, Rémi Forax wrote: >> On 05/03/2011 03:59 PM, Christian Thalinger wrote: >>> On May 2, 2011, at 9:55 PM, Charles Oliver Nutter wrote: >>>> On Thu, Apr 28, 2011 at 11:18 AM, Rémi Forax wrote: >>>>> Do you specialize

Re: mlvm build with coroutines -- but coro tests fail

2011-05-03 Thread Charles Oliver Nutter
Brainstorming coro package names... java.lang.invoke isn't bad, perhaps, but it is a different form of invocation than invokedynamic. This is a core JVM feature, so something under java.lang seems appropriate in any case... java.lang.coroutine (or coro) is maybe too specific? How far off woul

Re: Assembly output from JRuby 'fib'

2011-05-03 Thread Charles Oliver Nutter
long result, MathOperation op) where MathOperation is an enum of operations for which we want to detect overflow. Enums don't present any sort of barrier to intrinsification, do they? - Charlie (mobile) On May 3, 2011, at 15:51, Rémi Forax wrote: > On 05/03/2011 10:29 PM, Charles Oliver

invokedynamic in BiteScript

2011-05-07 Thread Charles Oliver Nutter
I finally updated BiteScript to support invokedynamic, and added a simple example: https://gist.github.com/961054 This basically just binds the given name + signature to a static method on the same class (the script class), using a ConstantCallSite. Probably the simplest-possible example in "raw"

Crash running benchmarks game's binary trees bench

2011-05-09 Thread Charles Oliver Nutter
FYI, this produced a SIGSEGV: jruby --server bench/shootout/binarytrees.ruby-2.ruby 15 14 and lower worked ok. Crash is consistent. Running macosx build from 4/28...not sure what build of mainline it maps to... ~/projects/jruby ➔ java -version openjdk version "1.7.0-internal" OpenJDK Runtime Env

Re: Crash running benchmarks game's binary trees bench

2011-05-09 Thread Charles Oliver Nutter
On Mon, May 9, 2011 at 9:33 AM, Christian Thalinger wrote: > On May 9, 2011, at 3:34 PM, Charles Oliver Nutter wrote: >> FYI, this produced a SIGSEGV: >> >> jruby --server bench/shootout/binarytrees.ruby-2.ruby 15 > > Is invokedynamic now used by default?  -- Christ

Debugging failures within method handle chain?

2011-05-11 Thread Charles Oliver Nutter
I'm at a loss for how to debug something like this: MethodHandleNatives.java:336:in `raiseException': java.lang.ClassCastException: required class org.jruby.RubyFixnum but encountered class org.jruby.RubyObject from MethodHandleImpl.java:866:in `invoke_L5' from bench/bench_fib_recu

Regression in MH building for catchException?

2011-05-12 Thread Charles Oliver Nutter
JRuby invokedynamic bindings that use catchException appear to blow up with a current MLVM build (as of a few minutes ago). The error is the same in every case: Caused by: java.lang.IllegalArgumentException: spread on invoke_F9(CacheEntry,ThreadContext,IRubyObject,IRubyObject,String,IRubyObject,IR

Poor performance on redblack tree benchmark (JRuby)

2011-05-12 Thread Charles Oliver Nutter
I've been making more and more JRuby paths use invokedynamic, and trying to get more of those to bind straight through with methodhandles (rather than via our intermediate DynamicMethod class). Most numbers are looking great...even some benchmarks against core JRuby methods that are implemented in

Re: JRuby java.lang.invoke updates moved to master

2011-05-13 Thread Charles Oliver Nutter
.  Thanks, Charlie, for all of your incredibly > constructive input to JSR 292!  -- John > > On Apr 27, 2011, at 10:34 AM, Charles Oliver Nutter wrote: > >> FYI I have finally pushed my indy updates to JRuby master for eventual >> release in JRuby 1.7. I have also removed

Re: Regression in MH building for catchException?

2011-05-14 Thread Charles Oliver Nutter
12, 2011 at 8:58 AM, Charles Oliver Nutter wrote: > JRuby invokedynamic bindings that use catchException appear to blow up > with a current MLVM build (as of a few minutes ago). The error is the > same in every case: > > Caused by: java.lang.IllegalArgumentException: spread on &

BUG! Re: Regression in MH building for catchException?

2011-05-14 Thread Charles Oliver Nutter
h, without an intermediate Object[] box? I do need to rework how these handles are wired up, but I may still get close to this 10-arg failover in some cases. - Charlie On Sat, May 14, 2011 at 10:06 AM, Charles Oliver Nutter wrote: > Still getting an error, but it's different now (updated using >

CRASH! Internal Error in methodHandleWalk.cpp

2011-05-14 Thread Charles Oliver Nutter
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,IRubyObjec

invokeinterface handle-walking unimplemented?

2011-05-14 Thread Charles Oliver Nutter
FYI, I assume I'm supposed to see this when I bind an interface method acquired from findVirtual to an indy call site: # # A fatal error has been detected by the Java Runtime Environment: # # Internal Error (methodHandleWalk.cpp:), pid=24843, tid=2962804736 # Error: Unimplemented() # # JRE v

Re: BUG! Re: Regression in MH building for catchException?

2011-05-14 Thread Charles Oliver Nutter
ons we have the Object[] box are (1) SPARC doesn't > support RF's yet, and (2) we haven't transitioned all the transform-building > code non-boxing.  Working with GWT today; would like to fix the exception > problem at the same time; need a representative test case. >

Re: hg: mlvm/mlvm/jdk: meth: adjust API, small bug fixes

2011-05-15 Thread Charles Oliver Nutter
I think I updated correctly, but still seem to run into the catchException issue...attempting to confirm now. On Sun, May 15, 2011 at 4:11 AM, wrote: > Changeset: 2cd2529d803f > Author:    jrose > Date:      2011-05-15 02:10 -0700 > URL:       http://hg.openjdk.java.net/mlvm/mlvm/jdk/rev/2cd2529

Re: 6804523: Tuple Signatures

2011-05-15 Thread Charles Oliver Nutter
Very cool! I am glad someone with the requisite skills has begun looking into John's tuples post! I am not an expert on Hotspot internals, so I am afraid I can't respond to your query. But we (JRuby and other dynlangs) most definitely have a need for tuples in representing complex numeric boxes

Re: hg: mlvm/mlvm/jdk: meth: adjust API, small bug fixes

2011-05-15 Thread Charles Oliver Nutter
Ok, nevermind...looks like it wasn't applied by Stephen's script...perhaps it's not marked as ready yet? I will be patient :) - Charlie On Sun, May 15, 2011 at 11:27 AM, Charles Oliver Nutter wrote: > I think I updated correctly, but still seem to run into the >

Expected performance difference between ConstantCallSite and unchanging MutableCallSite

2011-05-15 Thread Charles Oliver Nutter
Can I get a rough guesstimate from the JVM guys how much more overhead is involved in accessing a never-changed MutableCallSite versus a ConstantCallSite? I have a few places where I want to use invokedynamic to lazily initialize some literals. They'll never change after the initial construction, b

Re: hg: mlvm/mlvm/jdk: meth: adjust API, small bug fixes

2011-05-16 Thread Charles Oliver Nutter
On Sun, May 15, 2011 at 8:20 PM, Stephen Bannasch wrote: > It looks like both meth-args-6983728 and meth-exc-7044892 in that changeset > are being applied to the jdk. I'll give it another shot. I admit my methodology was possibly flawedI looked for changes in those patches to be in the JDK s

Re: hg: mlvm/mlvm/jdk: meth: adjust API, small bug fixes

2011-05-16 Thread Charles Oliver Nutter
Ok, nevermind...now the Java test case works for me. Odd that a simple update.sh didn't seem to do it before... Thanks! On Mon, May 16, 2011 at 7:48 AM, Charles Oliver Nutter wrote: > On Sun, May 15, 2011 at 8:20 PM, Stephen Bannasch > wrote: >> It looks like both meth-args

Re: hg: mlvm/mlvm/jdk: meth: adjust API, small bug fixes

2011-05-16 Thread Charles Oliver Nutter
Oh, somehow I missed this email too. Yes, the test case does indeed work now! - Charlie On Mon, May 16, 2011 at 2:46 AM, John Rose wrote: > On May 15, 2011, at 4:05 PM, Charles Oliver Nutter wrote: > >> I will be patient :) > > I just posted the one-line tweak which makes your

Re: invokeinterface handle-walking unimplemented?

2011-05-16 Thread Charles Oliver Nutter
> On 05/16/2011 09:48 AM, Christian Thalinger wrote: >> It seems nobody (including me) has ever bound an interface before that was >> hot to be compiled in the compiler.  I need a small test case to add the >> missing code (which should be trivial). I will try to come up with something later tod

Re: Expected performance difference between ConstantCallSite and unchanging MutableCallSite

2011-05-16 Thread Charles Oliver Nutter
On Mon, May 16, 2011 at 2:50 AM, Rémi Forax wrote: > Theoretically, the is no speed difference between a  ConstantCallSite > and a MutableCallSite that at some point never mutate. > The difference is more that a MutableCallsite has to keep metada > to trigger a de-optimization and not the Constant

Re: CRASH! Internal Error in methodHandleWalk.cpp

2011-05-16 Thread Charles Oliver Nutter
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 wrote: > Current build as of an hour ago. Made some changes to bind more > h

Re: CRASH! Internal Error in methodHandleWalk.cpp

2011-05-16 Thread Charles Oliver Nutter
A trivial reproduction against my JRuby working copy: def control end 100.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 wrote: > FYI, this is no

Re: updates to build scripts

2011-05-16 Thread Charles Oliver Nutter
Very nice, thanks. I've been using your scripts to stick to MLVM head lately. Aside from the usual frustration of riding the bleeding edge, the builds work perfectly. Does anyone know about the dev cycle for the macosx port? I almost wonder if it would be possible to rebase the patches against tha

Re: CRASH! Internal Error in methodHandleWalk.cpp

2011-05-16 Thread Charles Oliver Nutter
tly 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 wrote: >

Re: updates to build scripts

2011-05-16 Thread Charles Oliver Nutter
On Mon, May 16, 2011 at 12:09 PM, Stephen Bannasch wrote: > They now seem to be pulling in upstream changes quite quickly. > > Last Thursday they pulled in jdk7-b141: > >  http://hg.openjdk.java.net/macosx-port/macosx-port/hotspot/rev/66b35d6aefbe Very nice! Then the lag time for some of these up

Re: updates to build scripts

2011-05-16 Thread Charles Oliver Nutter
On Mon, May 16, 2011 at 2:38 PM, Stephen Bannasch wrote: > The format for how guards are expressed is a bit confusing -- preceding a > patch with a '/' turns that patch off. > > So this line builds without coro: > >  export davinci=$(pwd) guards="buildable testable /coro" Confusing is one word f

Re: Building currently fails

2011-05-17 Thread Charles Oliver Nutter
Confirmed here too. And since it wiped out my previous copy I'm dead in the water at the moment :( - Charlie On Tue, May 17, 2011 at 8:24 AM, Ola Bini wrote: > Hi, > > It seems something has introduced a failure. Updating from the bsdport > and patches repo with default settings for Stephens scr

Re: Building currently fails

2011-05-17 Thread Charles Oliver Nutter
Ok, updating now to check it out. Thanks John! On Tue, May 17, 2011 at 1:04 PM, John Rose wrote: > Sorry folks.  Stubborn rt.jar classes won't go quietly into that good night.   > Marked the new patch -buildable.  -- John > > On May 17, 2011, at 10:58 AM, Charles Ol

Re: In process debugger for Smalltak, JVMTI?

2011-05-17 Thread Charles Oliver Nutter
On Tue, May 17, 2011 at 12:08 PM, Mark Roos wrote: > It looks like JVMTI supports this but I have not been able to find a Java > class which gives access to the > apis that look interesting. > > Is this the right way to go? > > Does anyone know of some existing work that I could leverage? There's

Re: Building currently fails

2011-05-17 Thread Charles Oliver Nutter
lem... # Internal Error (methodHandleWalk.cpp:1092), pid=53532, tid=4401328128 # Error: ShouldNotReachHere() On Tue, May 17, 2011 at 1:07 PM, Charles Oliver Nutter wrote: > Ok, updating now to check it out. Thanks John! > > On Tue, May 17, 2011 at 1:04 PM, John Rose wrote: >> Sorry folks.  Stubb

Protip: -Xint

2011-05-17 Thread Charles Oliver Nutter
The invokedynamic-related compiler stuff is a bit fluxxy right now, so you may run into MLVM builds that don't work quite right. However, it occurred to me today that you can still run with -Xint (interpret only) to at least continue hacking away on JSR292 stuff. I'm doing this now locally to keep

Re: Inlining of MethodHandles chain possible/planned?

2011-05-18 Thread Charles Oliver Nutter
On Wed, May 18, 2011 at 5:34 AM, Szymon Jachim wrote: > I have to questions to you guys about possible (and planned) JIT > optimizations for MethodHandles. > 1. Assuming that there will be a chain of MH's: >       mh1(invoker) -> mh2 -> aMethod() >    and there will be no other references to mh2.

Re: hg: mlvm/mlvm/hotspot: meth: reflect pushes to hotspot-comp

2011-05-18 Thread Charles Oliver Nutter
I concur...still getting the ShouldNotReadHere error on most things I run with JRuby + indy... - Charlie On Wed, May 18, 2011 at 3:48 AM, Ola Bini wrote: > Hi, > > The latest fix to make methodHandleWalk.cpp not crash doesn't seem to > cover all cases. I still get the same error: > > # A fatal e

Re: Limit on number of inserted values in MHs?

2011-05-19 Thread Charles Oliver Nutter
On Thu, May 19, 2011 at 12:51 PM, Ola Bini wrote: > I'm currently getting this error: > > Caused by: java.lang.IllegalArgumentException: too many values to insert >        at > java.lang.invoke.MethodHandleStatics.newIllegalArgumentException(MethodHandleStatics.java:89) >        at > java.lang.in

SwitchPoint-based constant lookup in JRuby

2011-05-19 Thread Charles Oliver Nutter
In Ruby, constants...aren't. They're *mostly* constant, but they have to be looked up dynamically via the lexical scope and self class hierarchy. They can be changed after the fact, and class modifications like mixing in a module later will change the scenery, but these sorts of changes are very ra

Inserting pre and post-call logic around a handle?

2011-05-19 Thread Charles Oliver Nutter
I have cases where I want to do some pre and post-call logic around a target handle. Basically, I need to twiddle some global state before and after to set up one of our artificial call frames for the target method to use. How could I do this in handles? The logic basically looks like this: preLo

Re: Inserting pre and post-call logic around a handle?

2011-05-19 Thread Charles Oliver Nutter
On Thu, May 19, 2011 at 3:53 PM, John Rose wrote: > If you do a fold with a void return, nothing gets inserted into the argument > list. > > The doc for this needs to be fixed, but the implementation should work now. Hah...the original subject of my email was "foldArguments with void return poss

Re: SwitchPoint-based constant lookup in JRuby

2011-05-19 Thread Charles Oliver Nutter
On Thu, May 19, 2011 at 4:00 PM, John Rose wrote: > Cool!  That's one of the key use cases for SwitchPoint envisioned by the > Expert Group.  Please tell us ASAP if something goes wrong with the API! >  (The implementation we can fix, but the API is going more cryogenic as each > day passes.) Onl

Good news, bad news

2011-05-19 Thread Charles Oliver Nutter
Ok, good news first. The recent drop of fixes from Hotspot seem to have fixed the problems in methodHandleWalk.cpp. Hooray! The bad news is that performance seems to have *severely* degrade since previous builds. Here's JRuby running something simple, the fib benchmark: ~/projects/jruby ➔ jruby

Re: Good news, bad news

2011-05-19 Thread Charles Oliver Nutter
On Thu, May 19, 2011 at 11:25 PM, Charles Oliver Nutter wrote: > Ok, good news first. The recent drop of fixes from Hotspot seem to > have fixed the problems in methodHandleWalk.cpp. Hooray! > > The bad news is that performance seems to have *severely* degrade > since previou

Re: Good news, bad news

2011-05-20 Thread Charles Oliver Nutter
On Fri, May 20, 2011 at 1:07 AM, Ola Bini wrote: >> Try -XX:+UnlockDiag* -XX:-UseRicochetFrames for differential testing. >> >> If you can find a microbenchmark which shows differential slowdown, we can >> debug it. > > When trying the above all my tests fail with this: >  java.lang.RuntimeExcept

Re: Inserting pre and post-call logic around a handle?

2011-05-20 Thread Charles Oliver Nutter
On Thu, May 19, 2011 at 4:55 PM, John Rose wrote: > The last MH.invoke in my sketch could also be the indy instruction, with the > preceding stuff executed in the BSM. > > The basic idea is to package the wrapping logic in a target-independent form, > and bind it (pre-packaged) to each call site

Re: Inserting pre and post-call logic around a handle?

2011-05-20 Thread Charles Oliver Nutter
On Thu, May 19, 2011 at 3:53 PM, John Rose wrote: > Your sketch seems good, except that you cannot handle both the return value > and the thrown exception in one place.  (API limitation.)  So if your post > logic wants to see the return value, you have more work to do. > > Suggestion:  Make the

Re: Good news, bad news

2011-05-20 Thread Charles Oliver Nutter
runtime.callsite.MinusCallSite::call@24 (line 16) On Fri, May 20, 2011 at 8:10 AM, Charles Oliver Nutter wrote: > On Fri, May 20, 2011 at 1:07 AM, Ola Bini wrote: >>> Try -XX:+UnlockDiag* -XX:-UseRicochetFrames for differential testing. >>> >>> If you can fi

Re: Good news, bad news

2011-05-20 Thread Charles Oliver Nutter
harlie On Fri, May 20, 2011 at 2:59 PM, Charles Oliver Nutter wrote: > Another update...I managed to turn off the ricochet frames and have it > still work (???). The with-ricochet mode is faster, but still 2-3x > slower than no indy at all (using JRuby's IC), and 4-5x slower than >

Re: Good news, bad news

2011-05-20 Thread Charles Oliver Nutter
ested if the inline flags are tweaked ? > > Also I do not understand why you have JRuby's callsites like MinusCallSite > in the stacktrace. You should not use it if invokedynamic is enabled. > > Rémi > >> On May 20, 2011, at 1:21 PM, Charles Oliver Nutter wrote: >&g

Re: Good news, bad news

2011-05-23 Thread Charles Oliver Nutter
On Mon, May 23, 2011 at 11:05 AM, Christian Thalinger wrote: > I was on vacation for a couple of days but now I'm back. > > I looked at the inlining tree for fib_recursive and I can't see the fib_ruby > method getting compiled.  But instead I see something I've never seen before: > >   2949  105

Re: Good news, bad news

2011-05-23 Thread Charles Oliver Nutter
On Mon, May 23, 2011 at 2:02 PM, John Rose wrote: > Sometimes you can get your dumps faster by using -XX:-DisplayVMOutput along > with -XX:+PrintAssembly.  The output goes to hotspot.log anyway. > > Also, -XX:CompileCommand=print,foo::bar will focus assembly printing on the > method(s) you care

Re: Good news, bad news

2011-05-23 Thread Charles Oliver Nutter
I'm working up a set of files that show JRuby compilation output, but I noticed a couple things that might be interesting right now. First off, fairly early in the assembly output for fib, I see this: 0x02876d1f: call 0x0282d0e0 ; OopMap{[96]=Oop [100]=Oop [28]=Oop [40]=Oop [48]=Oop o

Re: Good news, bad news

2011-05-23 Thread Charles Oliver Nutter
nting back at fib_ruby * permute args * GWT - Charlie On Mon, May 23, 2011 at 4:19 PM, Charles Oliver Nutter wrote: > I'm working up a set of files that show JRuby compilation output, but > I noticed a couple things that might be interesting right now. > > First off, fairly early

Re: Good news, bad news

2011-05-23 Thread Charles Oliver Nutter
hings to >> inline better? >> >> FWIW, the handle chain in question that's not inlining is pretty simple: >> >> * DMH pointing back at fib_ruby >> * permute args >> * GWT >> >> - Charlie >> >> On Mon, May 23, 2011 at 4:19 PM, C

Re: Good news, bad news

2011-05-23 Thread Charles Oliver Nutter
inlines past this point. Usually it would say "too big" or something. I do see MinusCallSite inline earlier. - Charlie On Mon, May 23, 2011 at 4:47 PM, Charles Oliver Nutter wrote: > The following chunk should be the invokedynamic call to fib, via a > GWT, an arg permuter,

Re: Good news, bad news

2011-05-23 Thread Charles Oliver Nutter
e foo call inline...the foo calls themselves do not appear in logc inlining graph at all. - Charlie On Mon, May 23, 2011 at 4:50 PM, Charles Oliver Nutter wrote: > Also, fwiw...after these two chunks in LogCompilation output, I see > nothing else inlined into fib_ruby, including a monomorphic cal

Re: Good news, bad news

2011-05-23 Thread Charles Oliver Nutter
at 4:56 PM, Charles Oliver Nutter wrote: > Another example, running bench/language/bench_method_dispatch_only, > which runs a 1m iteration loop that invokes an empty "foo" method five > times: > > https://gist.github.com/9008f94fc677f3fe98e7 > > Note again that it seem

Re: Good news, bad news

2011-05-23 Thread Charles Oliver Nutter
On Mon, May 23, 2011 at 5:20 PM, Tom Rodriguez wrote: > > On May 23, 2011, at 2:50 PM, Charles Oliver Nutter wrote: >> I also do not see any indication *why* nothing inlines past this >> point. Usually it would say "too big" or something. > > If there's no

Re: Good news, bad news

2011-05-23 Thread Charles Oliver Nutter
> On Mon, May 23, 2011 at 5:20 PM, Tom Rodriguez > wrote: >> Actually my guess is that the selectAlternative machinery is what's screwing >> it up.  That code gets emitted as: Same benchmark but instead of binding a direct handle via a GWT, I force it to fail over to an inline cache immediately

Re: Good news, bad news

2011-05-23 Thread Charles Oliver Nutter
On Mon, May 23, 2011 at 6:17 PM, Rémi Forax wrote: > On 05/24/2011 12:44 AM, Tom Rodriguez wrote: >> 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) t

Re: Good news, bad news

2011-05-23 Thread Charles Oliver Nutter
ff as it stands right now is here: https://gist.github.com/987939 - Charlie On Mon, May 23, 2011 at 7:23 PM, Tom Rodriguez wrote: > > On May 23, 2011, at 5:13 PM, Charles Oliver Nutter wrote: > >> On Mon, May 23, 2011 at 6:17 PM, Rémi Forax wrote: >>> On 05/24/2011 12:44

Re: Good news, bad news

2011-05-23 Thread Charles Oliver Nutter
On Mon, May 23, 2011 at 7:41 PM, John Rose wrote: >> 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

Re: Good news, bad news

2011-05-25 Thread Charles Oliver Nutter
On Wed, May 25, 2011 at 12:18 AM, John Rose wrote: > On May 23, 2011, at 5:43 PM, Charles Oliver Nutter wrote: > > Well I have a prototype GWT in place, but I'm having trouble getting > invokeExact to work. As far as I can tell, incoming arguments should > match the handle typ

Re: Good news, bad news

2011-05-25 Thread Charles Oliver Nutter
On Wed, May 25, 2011 at 11:31 AM, Charles Oliver Nutter wrote: > Build in progress! I'll let you know how it goes. How low is low in "low > arity"? Ok, we're definitely back to having solid performance, but it's not as good as it was before. I'm not

Re: Good news, bad news

2011-05-25 Thread Charles Oliver Nutter
ynamic dispatch is better, but only by a tiny margin. :( I'll start browsing logs and asm dumps later today to see if I can figure out why it's not as fast as before. - Charlie On Wed, May 25, 2011 at 12:00 PM, Charles Oliver Nutter wrote: > On Wed, May 25, 2011 at 11:31 AM, Ch

Re: Good news, bad news

2011-05-25 Thread Charles Oliver Nutter
On Wed, May 25, 2011 at 2:14 PM, John Rose wrote: > On May 25, 2011, at 9:31 AM, Charles Oliver Nutter wrote: > >> Build in progress! I'll let you know how it goes. How low is low in "low >> arity"? > > About 0-9. > > Let's find the next bottle

Re: Good news, bad news

2011-05-25 Thread Charles Oliver Nutter
On Wed, May 25, 2011 at 5:12 PM, Tom Rodriguez wrote: > I've got the bimorphic method handle inline working.  I was doing something > stupid at the beginning which is why it wasn't as easy as I expected to be > and then I encountered a stupid API which wasted a little more time.  I was > able t

  1   2   3   4   5   6   7   8   >