Re: Getting back into indy...need a better argument collector!

2021-04-02 Thread Charles Oliver Nutter
n. I am open to suggestions because my next attempt will probably be to chain a series of folds together that populate the target array directly, but it will be array.length deep. Not ideal and not a good general solution. On Thu, Apr 1, 2021 at 6:44 PM Charles Oliver Nutter wrote: > > V

Re: Getting back into indy...need a better argument collector!

2021-04-01 Thread Charles Oliver Nutter
Very nice! I will have a look at the pull request and perhaps it will lead me to a short-term work around as well. On Thu, Apr 1, 2021, 12:04 Jorn Vernee wrote: > Hi Charlie, > > (Sorry for replying out of line like this, but I'm not currently > subscribed to the mlvm-dev mailing list, so I coul

Re: Getting back into indy...need a better argument collector!

2021-03-26 Thread Charles Oliver Nutter
xt week, or > hopefully someone else can. > > Paul. > > > On Mar 25, 2021, at 9:25 PM, Charles Oliver Nutter > > wrote: > > > > JRuby branch with changes to use our own collector methods: > > https://github.com/jruby/jruby/pull/6630 > &g

Re: Getting back into indy...need a better argument collector!

2021-03-25 Thread Charles Oliver Nutter
of JRuby from the branch (or from jruby-9.2 branch or master once it is merged) compared with JRuby 9.2.16.0 should show the issue. Benchmark included in the PR above. On Thu, Mar 25, 2021 at 8:43 PM Charles Oliver Nutter wrote: > > After experimenting with MethodHandles.collectArguments (g

Re: Getting back into indy...need a better argument collector!

2021-03-25 Thread Charles Oliver Nutter
asCollector should be able to gather up Object subtypes into an Object[] subtype without an intermediate array or extra copying. On Thu, Mar 25, 2021 at 7:39 PM Charles Oliver Nutter wrote: > > Well it only took me five years to circle back to this but I can > confirm it is just as bad now as it

Re: Getting back into indy...need a better argument collector!

2021-03-25 Thread Charles Oliver Nutter
subtype of Object[]. On Thu, Jan 14, 2016 at 8:18 PM Charles Oliver Nutter wrote: > > Thanks Duncan. I will try to look under the covers this evening. > > - Charlie (mobile) > > On Jan 14, 2016 14:39, "MacGregor, Duncan (GE Energy Management)" > wrote: >>

Re: NoClassDefFoundError using LMF against a generated class's handle

2018-06-29 Thread Charles Oliver Nutter
To help illustrate a bit, here's a snippit of the code to create the allocator. It succeeds, but the allocator later throws NoClassDefFoundError. https://gist.github.com/headius/cce750221cf73df76cb7f7ce92c1a759 - Charlie On Fri, Jun 29, 2018 at 8:00 PM, Charles Oliver Nutter wrote: &g

NoClassDefFoundError using LMF against a generated class's handle

2018-06-29 Thread Charles Oliver Nutter
Hello folks! I'm improving JRuby's support for instance variables-as-fields, which involves generating a new JVM class with a field per instance variable in the Ruby class. The construction process for these classes involves an implementation of my "ObjectAllocator" interface, which is stored wit

Re: ClassValue rooting objects after it goes away?

2018-03-02 Thread Charles Oliver Nutter
, should not prevent the class from being collected. On Fri, Mar 2, 2018 at 2:19 PM Charles Oliver Nutter wrote: > I have posted a modified version of my description to the main bug report. > > TLDR: ClassValue should not root objects. > > - Charlie > > On Fri, Mar 2, 2018 at 2

Re: ClassValue rooting objects after it goes away?

2018-03-02 Thread Charles Oliver Nutter
I have posted a modified version of my description to the main bug report. TLDR: ClassValue should not root objects. - Charlie On Fri, Mar 2, 2018 at 2:13 PM Charles Oliver Nutter wrote: > Yes, it may be the same bug. > > In my case, the ClassValue is held by a utility object use

Re: ClassValue rooting objects after it goes away?

2018-03-02 Thread Charles Oliver Nutter
eturn new RubyClass(Ruby.this); > } > }; > > On 3/1/18 2:25 AM, Charles Oliver Nutter wrote: > > So I don't think we ever closed the loop here. Did anyone on the JDK > > side confirm this, file an issue, or fix it? > > > > We st

Interface injection in an age of default interface methods

2018-02-28 Thread Charles Oliver Nutter
Here's an oldie but goodie: what ever happened to interface injection? For those unfamiliar, we dynlang guys had an idea years ago that if we could simply "force" an interface into an existing Java class, with a handler dangling off the side, we could pass normal Java objects through languages tha

Re: ClassValue rooting objects after it goes away?

2018-02-28 Thread Charles Oliver Nutter
So I don't think we ever closed the loop here. Did anyone on the JDK side confirm this, file an issue, or fix it? We still have ClassValue disabled in JRuby because of the rooting issues described here and in https://github.com/jruby/jruby/pull/3228. - Charlie On Thu, Aug 27, 2015 at 7:04 AM Joc

Re: Error, Java 8, lambda form compilation

2018-02-28 Thread Charles Oliver Nutter
Ah-ha...I added some logging, which of course made the error go away...but about ten tests later I got a metaspace OOM. Could be this was all just a memory issue, but it would be nice if the error didn't get swallowed. - Charlie On Wed, Feb 28, 2018 at 12:40 PM Charles Oliver Nutter

Re: Error, Java 8, lambda form compilation

2018-02-28 Thread Charles Oliver Nutter
andles.java:3018 [exec] guardWithTest at java/lang/invoke/SwitchPoint.java:173 [exec] searchConst at org/jruby/ir/targets/ConstantLookupSite.java:103 On Fri, Jan 12, 2018 at 9:54 AM Charles Oliver Nutter wrote: > I wish I could provide more info here. Just got another one in

Performance of non-static method handles

2018-02-02 Thread Charles Oliver Nutter
Hey folks! I'm running some simple benchmarks for my FOSDEM handles talk and wanted to reopen discussion about the performance of non-static-final method handles. In my test, I just try to call a method that adds given argument to a static long. The numbers for reflection and static final handle

Re: Error, Java 8, lambda form compilation

2018-01-12 Thread Charles Oliver Nutter
nvoke/LambdaForm.java: > 659 } catch (Error | Exception ex) { > 660 throw newInternalError(this.toString(), ex); > 661 } > > Best regards, > Vladimir Ivanov > > On 1/9/18 9:10 PM, Charles Oliver Nutter wrote: > > Unfortunat

Error, Java 8, lambda form compilation

2018-01-09 Thread Charles Oliver Nutter
Unfortunately this just happened in one build, but I thought I'd post it here for posterity. Unhandled Java exception: java.lang.InternalError: identity_L=Lambda(a0:L/SpeciesData,a1:L,a2:L)=>{ [exec] t3:L=Species_L.argL0(a0:L);t3:L} [exec] java.lang.InternalError: identity_L=Lambda(a

Re: Writing a compiler to handles, but filter seems to executed in reverse

2018-01-05 Thread Charles Oliver Nutter
3 Janvier 2018 20:37:42 > *Objet: *Re: Writing a compiler to handles, but filter seems to executed > in reverse > > On Jan 2, 2018, at 12:35 PM, Charles Oliver Nutter > wrote: > > > Is there a good justification for doing it this way, rather than having > > filterAr

Re: Writing a compiler to handles, but filter seems to executed in reverse

2018-01-02 Thread Charles Oliver Nutter
; - java.lang.invoke.LambdaForm$BMH/522188921::reinvoke@50 ; - java.lang.invoke.LambdaForm$MH/1973471376::identity_L@68 ; {static_call} On Tue, Jan 2, 2018 at 3:54 PM Charles Oliver Nutter wrote: > I have released invokebinder 1.11

Re: Writing a compiler to handles, but filter seems to executed in reverse

2018-01-02 Thread Charles Oliver Nutter
3:10 PM Charles Oliver Nutter wrote: > Yes, I figured I would need it for that too, but this filter behavior sent > me off on a weird tangent. > > It is gross in code to do the filters manually in forward order, but > perhaps it's not actually a big deal? OpenJDK's impl ap

Re: Writing a compiler to handles, but filter seems to executed in reverse

2018-01-02 Thread Charles Oliver Nutter
orrow. > > cheers, > Rémi > > -------------- > > *De: *"Charles Oliver Nutter" > *À: *"Da Vinci Machine Project" > *Envoyé: *Mardi 2 Janvier 2018 21:36:33 > *Objet: *Re: Writing a compiler to handles, but filter seems to executed > in re

Re: Writing a compiler to handles, but filter seems to executed in reverse

2018-01-02 Thread Charles Oliver Nutter
An alternative workaround: I do the filters myself, manually, in the order that I want them to executed. Also gross. On Tue, Jan 2, 2018 at 2:35 PM Charles Oliver Nutter wrote: > Ahh I believe I see it now. > > filterArguments starts with the first filter, and wraps the incoming > t

Re: Writing a compiler to handles, but filter seems to executed in reverse

2018-01-02 Thread Charles Oliver Nutter
ere a good justification for doing it this way, rather than having filterArguments start with the *last* filter nearest the target? - Charlie On Tue, Jan 2, 2018 at 2:17 PM Charles Oliver Nutter wrote: > Hello all, long time no write! > > I'm finally playing with writing a "compi

Writing a compiler to handles, but filter seems to executed in reverse

2018-01-02 Thread Charles Oliver Nutter
Hello all, long time no write! I'm finally playing with writing a "compiler" for JRuby that uses only method handles to represent code structure. For most simple expressions, this obviously works well. However I'm having trouble with blocks of code that contain multiple expressions. Starting with

Managing JNI resources in a classloader that might go away

2017-02-24 Thread Charles Oliver Nutter
Hey smart folks, I have a conundrum and Google is failing me. As you may know, we have been maintaining the Java Native Runtime libraries for providing FFI from Java pre-Panama. These libraries handle loading and binding C functions to Java endpoints automagically. Unfortunately, jffi -- the base

Classloading glitch in publicLookup.findConstructor?

2017-02-24 Thread Charles Oliver Nutter
We've had a number of reports of LinkageError-related problems with a constructor handle acquired through publicLookup. Here's the commit that fixed the problem, with a link to a PR explaining the error: https://github.com/jruby/jruby/commit/32926ac194c03f0e61c0121e9da0b0427cfa5869 It seems like

Re: Leaking LambdaForm classes?

2017-01-06 Thread Charles Oliver Nutter
On Fri, Jan 6, 2017 at 2:59 PM, Vladimir Ivanov < [email protected]> wrote: > LambdaForm caches deliberately keep LF instances using SoftReferences. > > The motivation is: > (1) LFs are heavily shared; > (2) LFs are expensive to construct (LF interpreter is turned off by > default n

Leaking LambdaForm classes?

2017-01-06 Thread Charles Oliver Nutter
Anyone else encountered this? https://github.com/jruby/jruby/issues/4391 We have a user reporting metaspace getting filled up with LambdaForm classes that have no instances. I would not expect this to happen given that they're generated via AnonymousClassloader and we would need to hold a referen

Re: series of switchpoints or better

2016-10-05 Thread Charles Oliver Nutter
On Wed, Oct 5, 2016 at 6:26 PM, Jochen Theodorou wrote: > There is one more special problem I have though: per instance meta > classes. So even if a x and y have the same class as per JVM, they can have > differing meta classes. Which means a switchpoint alone is not enough... > well, trying to g

Re: series of switchpoints or better

2016-10-05 Thread Charles Oliver Nutter
On Oct 5, 2016 17:43, "Jochen Theodorou" wrote: > I see... the problem is actually similar, only that I do not have to do something like that on a per "subclass added" event, but on a per "method crud operation" event. And instead of going up to check for a devirtualization, I have to actually pro

Re: EXT: Re: series of switchpoints or better

2016-10-05 Thread Charles Oliver Nutter
On Wed, Oct 5, 2016 at 1:36 PM, Jochen Theodorou wrote: > If I hear Remi saying volatile read... then it does not sound free to me > actually. In my experience volatile reads still present inlining barriers. > But if Remi and all of you tell me it is still basically free, then I will > not look t

Re: series of switchpoints or better

2016-10-05 Thread Charles Oliver Nutter
Hi Jochen! On Wed, Oct 5, 2016 at 7:37 AM, Jochen Theodorou wrote: > > If the meta class for A is changed, all handles operating on instances of > A may have to reselect. the handles for B and Object need not to be > affected. If the meta class for Object changes, I need to invalidate all > the h

Re: ClassValue perf?

2016-05-02 Thread Charles Oliver Nutter
On Wed, May 6, 2015 at 6:36 PM, Jochen Theodorou wrote: > Charlie, did you ever get to writing some benchmarks? > Unfortunately not but we are getting into a performance phase over the next couple months. I'll see what I can come up with. - Charlie __

Re: Getting back into indy...need a better argument collector!

2016-01-14 Thread Charles Oliver Nutter
Management)" [email protected]> wrote: > > >On 11/01/2016, 03:16, "mlvm-dev on behalf of Charles Oliver Nutter" > > > >wrote: > >... > >>With asCollector: 16-17s per iteration > >> > >>With hand-written array constructi

Getting back into indy...need a better argument collector!

2016-01-10 Thread Charles Oliver Nutter
Hello folks! Now that we're a few months into JRuby 9000 I've started to hack on the indy bindings again. Things are looking good so far. I'm working on getting closures to inline where they're invoked by chaining together a number of GWT just like a polymorphic call site. Anyway, my discovery tod

ClassValue rooting objects after it goes away?

2015-08-06 Thread Charles Oliver Nutter
Pardon me if this has been discussed before, but we had a bug (with fix) reported today that seems to indicate that the JVM is rooting objects put into a ClassValue even if the ClassValue goes away. Here's the pull request: https://github.com/jruby/jruby/pull/3228 And here's one example of the ro

Re: ClassValue perf?

2015-04-30 Thread Charles Oliver Nutter
On Mon, Apr 27, 2015 at 12:50 PM, Jochen Theodorou wrote: > Am 27.04.2015 19:17, schrieb Charles Oliver Nutter: >> Jochen: Is your class-to-metaclass map usable apart from the Groovy >> codebase? > > > Yes. Look for org.codehaus.groovy.reflection.GroovyClassValuePreJ

Re: ClassValue perf?

2015-04-30 Thread Charles Oliver Nutter
On Wed, Apr 29, 2015 at 4:02 AM, Doug Simon wrote: > We considered using ClassValue in Graal for associating each Node with its > NodeClass. Accessing the NodeClass is a very common operation in Graal (e.g., > it’s used to iterate over a Node’s inputs). However, brief experimentation > showed i

Re: ClassValue perf?

2015-04-27 Thread Charles Oliver Nutter
, at 5:38 AM, Charles Oliver Nutter > wrote: > > > Hey folks! > > I'm wondering how the performance of ClassValue looks on recent > OpenJDK 7 and 8 builds. JRuby 9000 will be Java 7+ only, so this is > one place I'd like to simplify our code a bit. > > I cou

ClassValue perf?

2015-04-24 Thread Charles Oliver Nutter
Hey folks! I'm wondering how the performance of ClassValue looks on recent OpenJDK 7 and 8 builds. JRuby 9000 will be Java 7+ only, so this is one place I'd like to simplify our code a bit. I could measure myself, but I'm guessing some of you have already done a lot of exploration or have benchma

Re: IntelliJ debugger?

2015-04-06 Thread Charles Oliver Nutter
I have never gotten either Netbeans' or IntelliJ's debuggers to step through source without a .java extension (speaking specifically of Ruby code, even if source dirs and JSR-45 stuff are in place). I can easily get jdb to step through any language's source, so I know it's not a problem with how I

Re: Lost perf between 8u40 and 9 hs-comp

2015-03-06 Thread Charles Oliver Nutter
Ok, now we're cracking! Performance has definitely returned, and actually improved 15-20% beyond my current copy of 8u40. Bravo! I will try testing several other benchmarks, and perhaps set up a machine to do the big perf regression suite the JRuby+Truffle guys made for us. FWIW, the additional "

Re: What can we improve in JSR292 for Java 9?

2015-03-04 Thread Charles Oliver Nutter
On Thu, Feb 26, 2015 at 4:27 AM, Jochen Theodorou wrote: > my biggest request: allow the call of a super constructor (like > super(foo,bar)) using MethodHandles an have it understood by the JVM like a > normal super constructor call... same for this(...) Just so I understand...the problem is that

Re: What can we improve in JSR292 for Java 9?

2015-03-04 Thread Charles Oliver Nutter
Busy week, finally circling back to this thread... On Wed, Feb 25, 2015 at 8:29 PM, John Rose wrote: >> * A loop handle :-) >> >> Given a body and a test, run the body until the test is false. I'm >> guessing there's a good reason we don't have this already. > > A few reasons: 1. You can code y

Re: Lost perf between 8u40 and 9 hs-comp

2015-03-03 Thread Charles Oliver Nutter
Thanks for looking into it Vladimir...I'm standing by to test out anything! - Charlie On Tue, Mar 3, 2015 at 10:23 AM, Vladimir Ivanov wrote: > John, > >> So let's make hindsight work for us: Is there a way (either with or >> without the split you suggest) to more firmly couple the update to th

What can we improve in JSR292 for Java 9?

2015-02-25 Thread Charles Oliver Nutter
After talking with folks at the Jfokus VM Summit, it seems like there's a number of nice-to-have and a few need-to-have features we'd like to see get into java.lang.invoke. Vladimir suggested I start a thread on these features. A few from me: * A loop handle :-) Given a body and a test, run the

Lost perf between 8u40 and 9 hs-comp

2015-02-25 Thread Charles Oliver Nutter
I'm finally at home with a working machine so I can follow up on some VM Summit to-dos. Vladimir wanted me to test out jdk9 hs-comp, which has all his latest work on method handles. I wish I could report that performance looks great, but it doesn't. Here's timing (in s) of our red/black benchmark

Re: Invokedynamic and recursive method call

2015-01-07 Thread Charles Oliver Nutter
This could explain performance regressions we've seen on the performance of heavily-recursive algorithms. I'll try to get an assembly dump for fib in JRuby later today. - Charlie On Wed, Jan 7, 2015 at 10:13 AM, Remi Forax wrote: > > On 01/07/2015 10:43 AM, Marcus Lagergren wrote: >> >> Remi, I

Re: Truffle and mlvm

2014-10-03 Thread Charles Oliver Nutter
se that there is a long road ahead. But in particular in this > > context, I would like to emphasize that we are looking for more people to > > support this effort for a new language implementation platform. I > strongly > > believe that Truffle is the best currently available

Re: The Great Startup Problem

2014-09-01 Thread Charles Oliver Nutter
On Mon, Sep 1, 2014 at 2:07 AM, Vladimir Ivanov wrote: > Stack usage won't be constant though. Each compiled LF being executed > consumes 1 stack frame, so for a method handle chain of N elements, it's > invocation consumes ~N stack frames. > > Is it acceptable and solves the problem for you? Thi

Re: Class hierarchy analysis and CallSites

2014-09-01 Thread Charles Oliver Nutter
On Mon, Sep 1, 2014 at 8:46 AM, MacGregor, Duncan (GE Energy Management) wrote: > Has anybody else tried doing this sort of thing as part of their > invokeDynamic Implementation? I’m curious if anybody has data comparing the > speed of GWT & class comparison based PICs with checks that require g

Re: Truffle and mlvm

2014-08-30 Thread Charles Oliver Nutter
Removing all context, so it's clear this is just my opinions and thoughts... As most of you know, we've opened up our codebase and incorporated the graciously-donated RubyTruffle directly into JRuby. It's available on JRuby master and we are planning to ship Truffle support with JRuby 9000, our ne

Re: Defining anonymous classes

2014-08-25 Thread Charles Oliver Nutter
On Fri, Aug 15, 2014 at 5:39 PM, John Rose wrote: > If the host-class token were changed to a MethodHandles.Lookup object, we > could restrict the host-class to be one which the user already had > appropriate access to. Seems simple, but of course the rest of the project > is complicated: AP

Re: The Great Startup Problem

2014-08-25 Thread Charles Oliver Nutter
On Mon, Aug 25, 2014 at 6:59 AM, Fredrik Öhrström wrote: > Calle Wilund and I implemented such a indy/methodhandle solution for > JRockit, so I know it works. You can see a demonstration here: > http://medianetwork.oracle.com/video/player/589206011001 That > implementations jump to C-code that per

Re: The Great Startup Problem

2014-08-25 Thread Charles Oliver Nutter
On Mon, Aug 25, 2014 at 4:32 AM, Marcus Lagergren wrote: > LambdaForms were most likely introduced as a platform independent way of > implementing methodhandle combinators in 8, because the 7 native > implementation was not very stable, but it was probably a mistake to add them > as “real” clas

Re: The Great Startup Problem

2014-08-24 Thread Charles Oliver Nutter
On Sun, Aug 24, 2014 at 12:55 PM, Jochen Theodorou wrote: > afaik you can set how many times a lambda form has to be executed before it > is compiled... what happens if you set that very low... like 1 and disable > tiered compilation? Forcing all handles to compiler early has the same negative ef

Re: The Great Startup Problem

2014-08-24 Thread Charles Oliver Nutter
On Sun, Aug 24, 2014 at 12:02 PM, Per Bothner wrote: > On 08/24/2014 03:46 AM, Marcus Lagergren wrote: >> This is mostly invokedynamic related. Basically, an indy callsite >> requires a lot of implicit class and byte code generation, that is >> the source of the overhead we are mostly discussing.

The Great Startup Problem

2014-08-22 Thread Charles Oliver Nutter
Marcus coaxed me into making a post about our indy issues. Our indy issues mostly surround startup and warmup time, so I'm making this a general post about startup and warmup. When I started working on JRuby 7 years ago, I hoped we'd have a good answer for poor startup time and long warmup times.

Re: How high are he memory costs of polymorphic inline caches?

2014-08-18 Thread Charles Oliver Nutter
Hello, fellow implementer :-) On Mon, Aug 18, 2014 at 6:01 AM, Raffaello Giulietti wrote: > So, the question is whether some of you has experience with large scale > projects written in a dynamic language implemented on the JVM, that makes > heavy use of indy and PICs. I'm curious about the memor

Re: Loopy CallSite

2014-07-12 Thread Charles Oliver Nutter
I played with this some years ago. Doesn't it just become recursive, because it won't inline through the dynamicInvoker? - Charlie (mobile) On Jul 12, 2014 9:36 AM, "Remi Forax" wrote: > It seems that the JIT is lost with whe there is a loopy callsite and never > stabilize (or the steady state i

FORK

2014-04-24 Thread Charles Oliver Nutter
What would it take to make Hotspot forkable? Obviously we'd need to pause all VM threads and restarting them on the other side (or perhaps a prefork mode that doesn't spin up threads?) but I know there's challenges with signal handlers etc. I ask for a few reasons... * Dalvik has shown what you c

Re: Number of Apps per JVM

2014-01-12 Thread Charles Oliver Nutter
I think some of these requirements are at cross purposes. For example, how can you have thread-safe object access but still be able to freely pass objects across "processes"? How can you freely pass objects across in-process VMs but still enforce memory red lines? The better isolation you get betwe

Re: RFC: JDK-8031043: ClassValue's backing map should have a smaller initial size

2014-01-11 Thread Charles Oliver Nutter
On Thu, Jan 9, 2014 at 7:47 PM, Christian Thalinger wrote: > > On Jan 9, 2014, at 5:25 PM, Charles Oliver Nutter wrote: > >> runtime. Generally, this does not exceed a few dozen JRuby instances >> for an individual app, and most folks don't deploy more than a

Re: RFC: JDK-8031043: ClassValue's backing map should have a smaller initial size

2014-01-09 Thread Charles Oliver Nutter
It depends how JRuby is deployed. If the same code runs in every JRuby runtime, then there would be one value attached to a given class per runtime. Generally, this does not exceed a few dozen JRuby instances for an individual app, and most folks don't deploy more than a few apps in a given JVM. -

Re: JVM Language Summit (Europe)?

2013-10-09 Thread Charles Oliver Nutter
Not bad... I think I could manage that. - Charlie On Sat, Oct 5, 2013 at 8:23 AM, Ben Evans wrote: > How about a 1.5 day conference on Thursday 30th & morning of Friday 31st > January? > > Then people who are coming to Europe for FOSDEM can arrive in London on > Weds, have the language summit fo

Re: JVM Language Summit (Europe)?

2013-10-04 Thread Charles Oliver Nutter
On Oct 4, 2013 5:50 PM, "George Marrows" wrote: > I'd suggest 'opposite' to the existing summit, so that we might get some of the key figures from that conf (Brian Goetz, John Rose, Charlie Nutter etc) over in Europe. Charlie has certainly said he'd be interested in coming to one in Europe, partic

Re: Interpreting Mission Control numbers for indy

2013-09-18 Thread Charles Oliver Nutter
warrant investigation. Standing by! :-) - Charlie On Wed, Sep 18, 2013 at 10:39 AM, Charles Oliver Nutter wrote: > I've been playing with JMC a bit tonight, running a user's application > that's about 2x slower using indy than using trivial monomorphic > caches (and no indy

Interpreting Mission Control numbers for indy

2013-09-18 Thread Charles Oliver Nutter
I've been playing with JMC a bit tonight, running a user's application that's about 2x slower using indy than using trivial monomorphic caches (and no indy call sites). I'm trying to understand how to interpret what I see. In the Code/Overview results, where it lists "hot packages", the #1 and #2

Re: Reproducible InternalError in lambda stuff

2013-09-16 Thread Charles Oliver Nutter
On Mon, Sep 16, 2013 at 2:36 AM, John Rose wrote: > I have refreshed mlvm-dev and pushed some patches to it which may address > this problem. I'll get a build put together and see if I can get users to test it. > If you have time, please give them a try. Do "hg qgoto meth-lfc.patch". > > If thi

Re: Reproducible InternalError in lambda stuff

2013-09-14 Thread Charles Oliver Nutter
days I was frequently running out of memory when I had not been before > (i.e., doing a build, or simply initializing some of the internal tests) -- > this on a machine where when I checked, at least 4G was free for the taking. > > Something happened, and the problems went away. >

Re: Reproducible InternalError in lambda stuff

2013-09-13 Thread Charles Oliver Nutter
On Sat, Sep 14, 2013 at 12:57 AM, Charles Oliver Nutter wrote: > * More memory required when running with indy versus without, all > other things kept constant (reproduced by two people, one of them me) I should say *significantly more* memory here. The app Alex was running had to go fr

Re: Reproducible InternalError in lambda stuff

2013-09-13 Thread Charles Oliver Nutter
r Java 8 may be failing more gracefully. Feel free to discuss or offer suggestions to Alex on the bug report above. I will be monitoring. - Charlie On Mon, Sep 9, 2013 at 6:21 PM, Christian Thalinger wrote: > > On Sep 6, 2013, at 11:11 PM, Charles Oliver Nutter > wrote: > >>

Reproducible InternalError in lambda stuff

2013-09-06 Thread Charles Oliver Nutter
I can reproduce this by running a fairly normalish command in JRuby: (Java::JavaLang::InternalError) guard=Lambda(a0:L,a1:L,a2:L,a3:L,a4:L)=>{ t5:I=MethodHandle(ThreadContext,IRubyObject,IRubyObject,IRubyObject)boolean(a1:L,a2:L,a3:L,a4:L); t6:L=MethodHandleImpl.selectAlternative(t5:

Re: Classes on the stack trace (was: getElementClass/StackTraceElement, was: @CallerSensitive public API, was: sun.reflect.Reflection.getCallerClass)

2013-07-30 Thread Charles Oliver Nutter
On Tue, Jul 30, 2013 at 7:17 AM, Peter Levart wrote: > For outside JDK use, I think there are two main needs, which are actually > distinct: > > a) the caller-sensitive methods > b) anything else that is not caller-sensitive, but wants to fiddle with the > call-stack > > For caller-sensitive metho

Re: sun.reflect.Reflection.getCallerClass(int) is going to be removed... how to replace?

2013-07-10 Thread Charles Oliver Nutter
On Wed, Jul 10, 2013 at 4:30 AM, Cédric Champeau wrote: > I must second Jochen here. That getCallerClass doesn't work anymore in > an update release is unacceptable to me. As Jochen explained, there's no > suitable replacement so far. We can live with getCallerClass > disappearing if there's a rep

Re: sun.reflect.Reflection.getCallerClass(int) is going to be removed... how to replace?

2013-07-08 Thread Charles Oliver Nutter
We advise our users to pass in a classloader. Class.forName's stack-based discovery of classloaders is too magic anyway. In general, when there's magic happening at the JVM level that is not possible for us to duplicate in JRuby, we warn our users away from depending on it. - Charlie On Mon, Jul

Re: jsr292-mock in Maven; coro-mock, unsafe-mock available

2013-07-07 Thread Charles Oliver Nutter
On Sun, Jul 7, 2013 at 3:16 PM, Remi Forax wrote: > Given that there is no need to bundle the backport with the jsr292-mock, > I propose you something, > you create a project on github under your name, you give me the right to > push the code > (I will create a textual representation of the API so

jsr292-mock in Maven; coro-mock, unsafe-mock available

2013-07-07 Thread Charles Oliver Nutter
jsr292-mock: Ok Rémi, it's decision time :-) We *need* to get jsr292-mock into maven somehow for JRuby's new build, so we don't have to version the binary anymore. We'd be happy to help set up the maven pom.xml AND get a groupId set up via sonatype's maven service, or we could just start pushing

Re: idea: MethodHandle#invokeTailCall

2013-05-11 Thread Charles Oliver Nutter
On Fri, May 10, 2013 at 7:16 PM, Per Bothner wrote: > Fail hard is probably the wrong thing to do - except when debugging. > I think what you want is the default to not fail if it can't pop > the stack frame, but that there be a VM option to throw an Error > or even do a VM abort in those case.

Re: Improving the speed of Thread interrupt checking

2013-05-11 Thread Charles Oliver Nutter
On Sat, May 11, 2013 at 3:37 AM, Alexander Turner wrote: > Would not atomic increment and atomic decrement solve the multi-interrupt > issue you suggest here? Such an approach is a little more costly because in > the case of very high contention the setters need to spin to get the > increment/decr

Re: Improving the speed of Thread interrupt checking

2013-05-11 Thread Charles Oliver Nutter
locking status atomically. It seems like you can't make any guarantees here either, even with locks. - Charlie On Sat, May 11, 2013 at 3:26 AM, Charles Oliver Nutter wrote: > On Sat, May 11, 2013 at 2:49 AM, Jeroen Frijters wrote: > >> I believe Thread.interrupted() and Th

Re: Improving the speed of Thread interrupt checking

2013-05-11 Thread Charles Oliver Nutter
On Sat, May 11, 2013 at 2:49 AM, Jeroen Frijters wrote: > I believe Thread.interrupted() and Thread.isInterrupted() can both be > implemented without a lock or CAS. > > Here are correct implementations: > ... > Any interrupts that happen before we clear the flag are duplicates that we > can igno

Re: Improving the speed of Thread interrupt checking

2013-05-11 Thread Charles Oliver Nutter
On Sat, May 11, 2013 at 1:46 AM, Alexander Turner wrote: > Thanks for the explanation. I have recently (for the last 6 months) been > involved with some very performance centric multi-threaded work in > profiling the JVM. Using JVMTI as a profiling tool with C++ underneath. The > code all uses JVM

Re: Improving the speed of Thread interrupt checking

2013-05-10 Thread Charles Oliver Nutter
sn't solve the performance issue of Thread.interrupted anyway :-) - Charlie (mobile) On May 10, 2013 5:48 PM, "Remi Forax" wrote: > On 05/10/2013 06:03 PM, Charles Oliver Nutter wrote: > > This isn't strictly language-related, but I thought I'd post here >

Re: Improving the speed of Thread interrupt checking

2013-05-10 Thread Charles Oliver Nutter
atus and the rest is > version number - then can do CAS against that encoded value. > > However, I'm not sure if this case (checking interrupt and clearing) is > all that common - typically you just check interruption only - and so > unclear if this is worthwhile. > > Sen

Re: Improving the speed of Thread interrupt checking

2013-05-10 Thread Charles Oliver Nutter
n a full CAS operation. > http://nerds-central.blogspot.co.uk/2011/11/atomicinteger-volatile-synchronized-and.html > > Best wishes - AJ > > > On 10 May 2013 17:03, Charles Oliver Nutter wrote: > >> This isn't strictly language-related, but I thought I'd post here before

Re: idea: MethodHandle#invokeTailCall

2013-05-10 Thread Charles Oliver Nutter
Interesting idea...comments below. On Fri, May 10, 2013 at 12:44 PM, Per Bothner wrote: > So this idea come to me: Could we just have add a method > that tail-calls a MethodHandle? Maybe some variant of >MethodHandle#invokeAsTailCall(Object... ) > This doesn't require instruction-set or cla

Improving the speed of Thread interrupt checking

2013-05-10 Thread Charles Oliver Nutter
This isn't strictly language-related, but I thought I'd post here before I start pinging hotspot folks directly... We are looking at adding interrupt checking to our regex engine, Joni, so that long-running (or never-terminating) expressions could be terminated early. To do this we're using Thread

Re: JVM Summit Wrokshop/talk request

2013-04-12 Thread Charles Oliver Nutter
st. (We are the third largest Oracle JVM engineering site in the >> world after Santa Clara and Burlington, MA). >> >> /M >> >> On Apr 11, 2013, at 10:09 PM, Charles Oliver Nutter >> wrote: >> >> > I would absolutely love to have a European editi

Re: JVM Summit Wrokshop/talk request

2013-04-11 Thread Charles Oliver Nutter
I would absolutely love to have a European edition of the JVM Language Summit. It's not a very complicated event to put together, and it would give us an opportunity to meet with more language folks than can make it to California for JVMLS. You could count on my attendance. - Charlie On Thu, Apr

Re: [jvm-l] Improving the performance of stacktrace generation

2013-04-11 Thread Charles Oliver Nutter
to JNI only when memory was allocated and >>request a stack trace each time. The "fast" technique is about 3-10 times >>slower than running without profiling. The Netbeans profiler doesn't use >>this optimization, and its memory profiler when capturing every allocati

Re: JVM Summit Wrokshop/talk request

2013-04-08 Thread Charles Oliver Nutter
s). > > So if we can get some volunteers to be the experts I will gladly propose and > mc > a workshop/panel > > mark > > > > > From:Charles Oliver Nutter > To:Da Vinci Machine Project > Date:04/08/2013 12:26 PM > Subject:R

Re: JVM Summit Wrokshop/talk request

2013-04-08 Thread Charles Oliver Nutter
Indeed...I think we need to get all us invokedynamicists into the same room to better understand what's working, what's not, and where to go from here. Consider me in. I'm sure it would be accepted, so a proposal would probably be a formality...but do you want to throw something together, Mark? -

Re: Looking for comments on paper draft "DynaMate: Simplified and optimized invokedynamic dispatch"

2013-04-04 Thread Charles Oliver Nutter
If it's not too late...I'd like to see the paper too :-) And I also wonder whether we should start consolidating approaches a bit. InvokeBinder has become very feature-rich, now providing the ability to track arguments by name through the MH chain. I'm hoping to fill it out more and do a new relea

Perf regression since b72

2013-03-30 Thread Charles Oliver Nutter
I've been fiddling about with performance a bit again recently, and have noticed a perf degradation since b72. I mentioned this to the Nashorn guys and Marcus discovered that InlineSmallCode=2000 helped them get back to b72 performance. I can confirm this on JRuby as well, but in any case it seems

Re: New Ruby impl based on PyPy...early perf numbers ahead of JRuby

2013-02-09 Thread Charles Oliver Nutter
On Sat, Feb 9, 2013 at 1:07 PM, Thomas Wuerthinger wrote: > Do you also have startup performance metrics - I assume the numbers below > are about peak performance? It seems to warm up very quickly; there's sometimes 2x slower perf on the first iteration, but it rapidly settles. Overall startup ti

New Ruby impl based on PyPy...early perf numbers ahead of JRuby

2013-02-09 Thread Charles Oliver Nutter
So, that new Ruby implementation I hinted at was announced this week. It's called Topaz, and it's based on the RPython/PyPy toolchain. It's still very early days, of course, since the vast majority of Ruby core has not been implemented yet. But for the benchmarks it can run, it usually beats JRuby

Symbolic argument support in InvokeBinder

2013-02-02 Thread Charles Oliver Nutter
Sitting here at FOSDEM today I was showing Remi my new addition to InvokeBinder: named arguments. Background: InvokeBinder is my little Java DSL/fluent API for building method handle chains. Short example: MethodHandle mh = Binder .from(String.class, String.class, String.class) // String w(Str

Re: hotspot-comp OS X builds

2013-01-25 Thread Charles Oliver Nutter
e > it into the public repos. > > On 24/01/2013 22:47, "John Rose" wrote: > >>Thanks, Charlie! >> >>Yes, feedback makes us happy, especially small-but-representative >>benchmarks. >> >>‹ John >> >>On Jan 24, 2013, at 1:21 PM, Ch

  1   2   3   4   5   6   7   8   >