Re: Hotspot loves PHP.reboot

2011-09-08 Thread Remi Forax
If we have coroutine, yes! Remi John Rose john.r.r...@oracle.com wrote: On Sep 8, 2011, at 3:06 PM, Rémi Forax wrote: but you can get live value unless you allow to insert live values to the constant pool when linking the class (another old dream). Can we make a solution from ClassValue?

Re: hg: mlvm/mlvm/hotspot: 2 new changesets

2011-09-27 Thread Remi Forax
Cool ! Remi lukas.stad...@jku.at wrote: Changeset: 9bb80f812fd7 Author:Lukas Stadler lukas.stad...@jku.at Date: 2011-09-26 15:11 +0200 URL: http://hg.openjdk.java.net/mlvm/mlvm/hotspot/rev/9bb80f812fd7 rebase coro to current hsx/hotspot-comp ! coro.patch ! series Changeset:

Re: strange ClassFormatError with indy

2012-08-30 Thread Remi Forax
The JVMS says the name must be a method name, http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-5.html#jvms-5.1 A symbolic reference to a /call site specifier/ is derived from a |CONSTANT_InvokeDynamic_info| structure (§4.4.10

Re: thinking about proper implementation of tail calls

2012-09-01 Thread Remi Forax
On 09/01/2012 01:26 PM, Florian Weimer wrote: * John Rose: As I recall, Doug Lea noted at the 2010 JVM Language Summit that tail calls would seem to allow work-stealing algorithms to be implemented somewhat more cleanly or efficiently. (How's that for tentative?) A worker thread goes from

Re: loop customization: a key challenge

2012-09-14 Thread Remi Forax
On 09/14/2012 06:22 AM, John Rose wrote: On Sep 11, 2012, at 2:09 AM, Aleksey Shipilev wrote: On 09/10/2012 11:13 PM, John Rose wrote: The methods strongly hint to implementors and users that bind and findVirtual + bindTo perform the obvious devirtualization. I haven't been following jsr292

Re: Latest experiments...happiness and sadness

2012-10-17 Thread Remi Forax
On 10/17/2012 02:53 AM, Charles Oliver Nutter wrote: Hello all! I've recently been informed that a new Ruby implementation is about to be announced that puts JRuby's numeric perf to shame. Boo hoo. It's not like I expected us to retain the numeric crown since we're still allocating objects

Re: hg: mlvm/mlvm/hotspot: value-obj: first cut

2012-10-17 Thread Remi Forax
On 10/17/2012 05:23 PM, David Chase wrote: On 2012-10-16, at 5:14 AM, Remi Forax fo...@univ-mlv.fr wrote: Frozen/locked is a runtime property, not a type property so it's harder that that. You have to do a frozen check at the beginning of the method and pray that people will only use

Re: Latest experiments...happiness and sadness

2012-10-17 Thread Remi Forax
On 10/17/2012 09:07 PM, Christian Thalinger wrote: On Oct 17, 2012, at 8:33 AM, David Chase david.r.ch...@oracle.com wrote: On 2012-10-16, at 8:53 PM, Charles Oliver Nutter head...@headius.com wrote: So *almost* everything is inlining, but one path (I believe it's the failure path from GWT

Re: hg: mlvm/mlvm/hotspot: value-obj: first cut

2012-10-18 Thread Remi Forax
On 10/17/2012 10:41 PM, David Chase wrote: On 2012-10-17, at 2:12 PM, Remi Forax fo...@univ-mlv.fr wrote: But we can't rely on this, hence it is not a true type property. But we could make it be as-if. I think I have to assume some sort of a marker class (implements PermanentlyLockable

Re: hg: mlvm/mlvm/hotspot: value-obj: first cut

2012-10-18 Thread Remi Forax
://blogs.oracle.com/jrose/entry/value_types_in_the_vm and the Array 2.0 persentation at the summit http://www.oracle.com/technetwork/java/javase/community/jvmls2012-1840099.html otherwise, some ideas float around since a long time :) On 2012-10-18, at 3:21 AM, Remi Forax fo...@univ-mlv.fr wrote: You can't

Re: value types at the jvm level?

2012-10-19 Thread Remi Forax
On 10/19/2012 07:31 PM, Mark Roos wrote: I see an interesting discussion here on value types. I assume that at least part of the intent is to solve the performance hit by using boxed integers. As such I was thinking about how that would affect my Smalltalk implementation. A simple case

Re: unreflectGetter and static class initialization

2012-10-29 Thread Remi Forax
On 10/29/2012 05:03 PM, Christian Thalinger wrote: On Oct 24, 2012, at 3:32 PM, John Rose john.r.r...@oracle.com mailto:john.r.r...@oracle.com wrote: On Oct 24, 2012, at 1:08 PM, Jochen Theodorou wrote: what do you suggest as workaround? You could force the class to be initialized when

Re: unreflectGetter and static class initialization

2012-10-29 Thread Remi Forax
, I like the fact that you have to do some magic to access to the Unsafe instance, to don't forget that using killing curses is a good way to visit Azkaban. - Julien Rémi Le 29 oct. 2012 à 17:29, Remi Forax fo...@univ-mlv.fr a écrit : On 10/29/2012 05:03 PM, Christian Thalinger wrote: On Oct

Re: unreflectGetter and static class initialization

2012-10-30 Thread Remi Forax
On 10/30/2012 09:59 AM, Jochen Theodorou wrote: Am 29.10.2012 17:29, schrieb Remi Forax: [...] In my opinion, the best is to use Unsafe.ensureClassInitialized() the first time you call the BSM, it should be enough. That one I did not know so far, interesting. My current work around is to go

Re: JEP 169: Value Objects

2012-11-07 Thread Remi Forax
On 11/07/2012 11:30 PM, BGB wrote: On 11/7/2012 4:15 PM, Vitaly Davidovich wrote: Hi John, Nice to see this effort moving forward. While reading the JEP, I can't help but think how complicated this sounds for JVM implementors. Is introducing bytecodes and new value type representation

Re: JEP 169: Value Objects

2012-11-07 Thread Remi Forax
On 11/07/2012 10:35 PM, John Rose wrote: Thanks! This will move the conversation forward. -- John (on my iPhone) John, Mark, please the name 'locked object' should be changed, first because the fact that the value object uses bits also used to bias a lock is just an implementation detail

Re: JEP 169: Value Objects

2012-11-08 Thread Remi Forax
On 11/08/2012 05:47 AM, John Rose wrote: On Nov 7, 2012, at 5:12 PM, Remi Forax wrote: please the name 'locked object' should be changed, first because the fact that the value object uses bits also used to bias a lock is just an implementation detail and the name is too close

Re: Way to statically initialize a class before or during MethodHandle creation, Unsafe crashes JVM

2012-11-16 Thread Remi Forax
Jochen, can you extract a simple test class that reproduce the bug ? Also, methods of sun.misc.Unsafe are not protected again send null as arguments, so you have to do the check before calling unsafe.XXX. Rémi On 11/16/2012 03:36 PM, Jochen Theodorou wrote: Hi all, in another thread I was

Re: Way to statically initialize a class before or during MethodHandle creation, Unsafe crashes JVM

2012-11-16 Thread Remi Forax
On 11/16/2012 05:15 PM, Jochen Theodorou wrote: Am 16.11.2012 16:05, schrieb Remi Forax: Jochen, can you extract a simple test class that reproduce the bug ? Also, methods of sun.misc.Unsafe are not protected again send null as arguments, so you have to do the check before calling

Re: Way to statically initialize a class before or during MethodHandle creation, Unsafe crashes JVM

2012-11-19 Thread Remi Forax
On 11/19/2012 12:20 PM, Jochen Theodorou wrote: Am 16.11.2012 20:43, schrieb Jochen Theodorou: Am 16.11.2012 17:31, schrieb Remi Forax: [...] clinit is called the first time you call a constructor, a static method or get/set the value of a static field. Remi I am aware of that, but I cannot

title of bugs 8001106 and 8001107 have been swaped

2012-12-04 Thread Remi Forax
Hi John, Bugs 8001106 and 8001107 have the wrong title description, bug 8001106 as the title of 8001107 and vice-versa. cheers, Rémi ___ mlvm-dev mailing list mlvm-dev@openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev

Re: again on megamorphic problems

2012-12-20 Thread Remi Forax
On 12/20/2012 11:44 PM, Jochen Theodorou wrote: Am 20.12.2012 22:35, schrieb Mark Roos: [...] [...] Another thought I had was to determine if a method has megamorphic call sites internally and if so then creating new methods during my lookup rather than caching the existing ones. This

Re: Performance of invalidating unused SwitchPoint

2013-01-05 Thread Remi Forax
On 01/05/2013 07:19 PM, Charles Oliver Nutter wrote: Hello all! I can accept that invalidating a SwitchPoint that's in use would cause some perf impact. But I'm wondering why we'd see the same perf hit for invalidating a SwitchPoint that has never been bound. Is there a reason for this? I

Re: Proposal for Property Accessors

2013-01-05 Thread Remi Forax
On 01/05/2013 07:37 PM, Noctarius wrote: Am 05.01.2013 19:15, schrieb BGB: On 1/5/2013 10:17 AM, Noctarius wrote: Ok I took some time to make a deeper introduction in what I imagine to do: https://www.sourceprojects.org/default/2013/01/05/135739572.html As mentioned before it would be

Re: Performance of invalidating unused SwitchPoint

2013-01-05 Thread Remi Forax
On 01/05/2013 08:08 PM, Charles Oliver Nutter wrote: On Sat, Jan 5, 2013 at 12:37 PM, Remi Forax fo...@univ-mlv.fr wrote: No. invalidating a SwitchPoint that is JITed cost your an harm, invalidating a SwitchPoint which is not JITed is just a volatile write but you still have to update

Re: Proposal for Property Accessors

2013-01-05 Thread Remi Forax
On 01/05/2013 07:53 PM, Noctarius wrote: Am 05.01.2013 19:41, schrieb Remi Forax: On 01/05/2013 07:37 PM, Noctarius wrote: Am 05.01.2013 19:15, schrieb BGB: On 1/5/2013 10:17 AM, Noctarius wrote: Ok I took some time to make a deeper introduction in what I imagine to do: https

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

2013-02-09 Thread Remi Forax
On 02/09/2013 06:19 PM, Charles Oliver Nutter wrote: 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.

Re: another question about megamorphic call sites in combination with MethodHandles

2013-03-21 Thread Remi Forax
On 03/21/2013 08:31 PM, Krystal Mo wrote: Hi Jochen, At least with the current tip version of HotSpot, the mh.invokeWithArguments() callsite is not likely to get its actual target inlined into the caller; we depended a lot on being able to prove that the MethodHandle is a (JIT-)compiled-time

Re: another question about megamorphic call sites in combination with MethodHandles

2013-03-22 Thread Remi Forax
On 03/22/2013 07:52 AM, Jochen Theodorou wrote: Am 21.03.2013 20:49, schrieb Remi Forax: [...] I suppose you take a look to the instances. You can do something similar actually by using invokedynamic + a guardWithTest that checks already seen instances instead of doing a plain mh.invoke* I

Re: another question about megamorphic call sites in combination with MethodHandles

2013-03-22 Thread Remi Forax
On 03/22/2013 07:57 AM, Jochen Theodorou wrote: Am 21.03.2013 20:31, schrieb Krystal Mo: Hi Jochen, At least with the current tip version of HotSpot, the mh.invokeWithArguments() callsite is not likely to get its actual target inlined into the caller; we depended a lot on being able to prove

Re: another question about megamorphic call sites in combination with MethodHandles

2013-03-22 Thread Remi Forax
On 03/22/2013 10:06 AM, Remi Forax wrote: On 03/22/2013 07:52 AM, Jochen Theodorou wrote: Am 21.03.2013 20:49, schrieb Remi Forax: [...] I suppose you take a look to the instances. You can do something similar actually by using invokedynamic + a guardWithTest that checks already seen

Re: another question about megamorphic call sites in combination with MethodHandles

2013-03-22 Thread Remi Forax
On 03/22/2013 10:24 AM, Jochen Theodorou wrote: Am 22.03.2013 10:11, schrieb Remi Forax: [...] I don't think it's a good idea to expose directly method handles to users, it's better to encapsulate it into a Groovy object corresponding to a function or a closure so you can add a bunch

Re: another question about megamorphic call sites in combination with MethodHandles

2013-03-22 Thread Remi Forax
On 03/22/2013 11:12 AM, Jochen Theodorou wrote: Am 22.03.2013 10:35, schrieb Remi Forax: On 03/22/2013 10:24 AM, Jochen Theodorou wrote: Am 22.03.2013 10:11, schrieb Remi Forax: [...] I don't think it's a good idea to expose directly method handles to users, it's better to encapsulate

Re: another question about megamorphic call sites in combination with MethodHandles

2013-03-23 Thread Remi Forax
On 03/23/2013 04:30 PM, Peter Levart wrote: On 03/22/2013 11:50 AM, Remi Forax wrote: On 03/22/2013 11:12 AM, Jochen Theodorou wrote: Am 22.03.2013 10:35, schrieb Remi Forax: On 03/22/2013 10:24 AM, Jochen Theodorou wrote: Am 22.03.2013 10:11, schrieb Remi Forax: [...] I don't think it's

Re: MethodHandle.invoke* performance

2013-04-03 Thread Remi Forax
On 04/03/2013 05:03 PM, Cédric Champeau wrote: Hi guys, Hi Cedric, First of all, sorry if my question looks stupid, but I have difficulties explaining what I see. I made a small benchmark for various MethodHandle.invoke* combinations. Of course, micro-benchmarks are evil, but in that

Re: MethodHandle.invoke* performance

2013-04-03 Thread Remi Forax
On 04/03/2013 06:12 PM, Cédric Champeau wrote: Le 03/04/2013 17:50, Remi Forax a écrit : Sorry to be rude, but it's still a micro-benchmark ... First of all, yes, it is :) And as the classical fibonacci benchmark, it's useless but relevant for understanding how things work

Re: MethodHandle.invoke* performance

2013-04-03 Thread Remi Forax
will be available ... when available. Cheers cheers, Rémi On Wed, Apr 3, 2013 at 6:32 PM, Remi Forax fo...@univ-mlv.fr mailto:fo...@univ-mlv.fr wrote: On 04/03/2013 06:12 PM, Cédric Champeau wrote: Le 03/04/2013 17:50, Remi Forax a écrit : Sorry to be rude, but it's still a micro

Re: JVM Summit Wrokshop/talk request

2013-04-08 Thread Remi Forax
On 04/08/2013 11:01 PM, Jim Laskey wrote: John Rose and Christian Thalinger will likely there from the JVM team. Marcus Lagergren and Attila Szegedi from the Nashorn team are not confirmed but if available would be good for user experience. Cheers, -- Jim yes, I'm in it too, and we have

Re: method handle cracking API

2013-04-25 Thread Remi Forax
On 04/25/2013 08:39 PM, John Rose wrote: On Apr 25, 2013, at 8:58 AM, MacGregor, Duncan (GE Energy Management) duncan.macgre...@ge.com mailto:duncan.macgre...@ge.com wrote: I would have thought one of the most common uses of breaking down a method handle like this would be to immediately

Re: method handle cracking API

2013-04-25 Thread Remi Forax
On 04/25/2013 05:18 AM, John Rose wrote: On Apr 24, 2013, at 7:45 PM, Mark Roos mr...@roos.com mailto:mr...@roos.com wrote: Any chance that one could walk the GWT chain from a call site in order to build a different look up structure or maybe even some specialized code? Currently I keep

Re: speed of invokeExact

2013-05-07 Thread Remi Forax
On 05/07/2013 07:31 PM, Christian Thalinger wrote: On May 7, 2013, at 8:04 AM, Jochen Theodorou blackd...@gmx.org wrote: Hi, I am currently investigating here some performance issues and I may have found a culprint here - invokeExact. My case is one where method caching fails and I will

Re: Improving the speed of Thread interrupt checking

2013-05-10 Thread Remi Forax
On 05/10/2013 06:03 PM, Charles Oliver Nutter wrote: 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)

Re: idea: MethodHandle#invokeTailCall

2013-05-11 Thread Remi Forax
On 05/11/2013 12:24 PM, Alexander Turner wrote: Hi Per, the snag with expecting code to be inlined is that so much of modern JVM work uses instrumentation. If the JVM will inline the non instrumented code it probably will not / cannot do so for instrumented code. Thus code coverage and

Re: method handle cracking API

2013-05-15 Thread Remi Forax
On 05/15/2013 07:27 PM, Mark Roos wrote: Just for my learning, what is the use model for this form of method handle inspection? Is there some cool technique that this facilitates? yes, if you crack a method handle, you get the reference to a method (the constructor etc.) so you can by

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

2013-07-07 Thread Remi Forax
On 07/07/2013 07:30 PM, Charles Oliver Nutter wrote: 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

Re: Calls to native methods setCallSiteTargetNormal and defineAnonymousClass taking very long

2013-09-20 Thread Remi Forax
I think you have your answer in the stack traces. The problem arise when you (or nashorn) call eval(). I see two solutions, either ask Nashorn guys why they create callsites too often when you use eval() in javascript or stop using eval() in your js script ! (if eval() is something you use and

Re: Calls to native methods setCallSiteTargetNormal and defineAnonymousClass taking very long

2013-09-20 Thread Remi Forax
eval on a script, binding are compiled as constant. - if you call eval on a compiled script, the binding are not constant because you want to reuse the script. The relinking you see may be because nashorn think that your bindings are constant. Regards Rémi 2013/9/20 Remi Forax fo

Re: RFR(S+M) / 8022701 Accessibility checking: InvocationTargetException is thrown instead of IllegalAccessError

2013-09-27 Thread Remi Forax
On 09/27/2013 06:33 AM, John Rose wrote: On Sep 19, 2013, at 9:57 AM, David Chase david.r.ch...@oracle.com wrote: Recommended changes made: http://cr.openjdk.java.net/~drchase/8022701/webrev.04/ Good; reviewed. Consider adding this tweak, which would close the loop on alternation between

Re: State of lambda forms stealing stack frames?

2013-12-21 Thread Remi Forax
On 12/20/2013 10:09 PM, Jochen Theodorou wrote: I know on the jvm languages summit this year many already complained about this problem. It is not new (this and the additional memory consumption). I know there have been plans to make lambda forms more lean. What I don't know is the progress

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

2014-01-08 Thread Remi Forax
On 01/07/2014 11:54 PM, Christian Thalinger wrote: Can I get some comments on this bug from people who are using ClassValue? [#JDK-8031043] ClassValue's backing map should have a smaller initial size - Java Bug System https://bugs.openjdk.java.net/browse/JDK-8031043 Is my assumption correct

JIT and invalidation

2014-02-16 Thread Remi Forax
Hi John, Hi Christian, Hi all, I don't know if you can test this little code, but when I run it on my laptop (linux 64bits) it can terminate in 45s or 2 minutes, it seems that it depends on the order the JIT compiles the method handles. https://gist.github.com/forax/9041030 Sometimes it also

Re: JIT and invalidation

2014-02-17 Thread Remi Forax
- boun...@openjdk.java.net] On Behalf Of Remi Forax Sent: Sunday, February 16, 2014 22:54 To: Da Vinci Machine Project Subject: JIT and invalidation Hi John, Hi Christian, Hi all, I don't know if you can test this little code, but when I run it on my laptop (linux 64bits) it can terminate in 45s

Re: [9] RFR (M): 8027827: Improve performance of catchException combinator

2014-02-21 Thread Remi Forax
Hi Valdimir, is there a reason to generate try { ... } catch(Throwable t) { if (Klass.isInstance(t)) { ... } throw t; } instead of: try { ... } catch(Klass t) { ... } maybe because the Klass can be resolved by the wrong classloader ? Rémi

Re: RFR (L) 8037210: Get rid of char-based descriptions 'J' of basic types

2014-03-21 Thread Remi Forax
On 03/21/2014 07:54 PM, John Rose wrote: On Mar 21, 2014, at 8:49 AM, Vladimir Ivanov vladimir.x.iva...@oracle.com mailto:vladimir.x.iva...@oracle.com wrote: Thanks for the feedback. What do you think about the following: http://cr.openjdk.java.net/~vlivanov/8037210/webrev.01/

Re: Object arrays with no referrers.

2014-06-02 Thread Remi Forax
On 06/02/2014 12:30 PM, MacGregor, Duncan (GE Energy Management) wrote: Okay, I¹ve done some more digging, and although I still can¹t track down the source of individual referrer-less Object arrays (I¹m not sure the necessary information is even present in an hprof dump) I can say that they are

Re: [9] RFR (M): 8037209: Improvements and cleanups to bytecode assembly for lambda forms

2014-07-08 Thread Remi Forax
In my opinion, there are two issues here, the first one is the extra Class.cast which is inserted and as John said it should be interesting to try to remove them. the second one is why when there is a Class.cast, the cast is effectively removed but a null check stay. regards, Rémi On

Loopy CallSite

2014-07-12 Thread Remi Forax
It seems that the JIT is lost with whe there is a loopy callsite and never stabilize (or the steady state is after the program ends). import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; import java.lang.invoke.MethodType; import java.lang.invoke.MutableCallSite; public

Re: Loopy CallSite

2014-07-12 Thread Remi Forax
, it will generate too much assembly code. The actual problem is that the JIT generate assembly code and then try again, and again, and again ... Rémi On Jul 12, 2014 9:36 AM, Remi Forax fo...@univ-mlv.fr mailto:fo...@univ-mlv.fr wrote: It seems that the JIT is lost with whe there is a loopy

Re: Loopy CallSite

2014-07-16 Thread Remi Forax
On 7/12/14 6:05 PM, Remi Forax wrote: It seems that the JIT is lost with whe there is a loopy callsite and never stabilize (or the steady state is after the program ends). import java.lang.invoke.MethodHandle; import java.lang.invoke.MethodHandles; import java.lang.invoke.MethodType; import

Re: Defining anonymous classes

2014-08-16 Thread Remi Forax
On 08/16/2014 12:39 AM, John Rose wrote: On Aug 15, 2014, at 5:03 AM, Florian Weimer fwei...@redhat.com wrote: On 08/14/2014 10:15 PM, Mark Roos wrote: Look into sun.Misc.Unsafe [and at defineAnonymousClass(Class, byte[], Object[])] Thanks. Could we turn this into a supported API, with a

Re: Defining anonymous classes

2014-08-17 Thread Remi Forax
On 08/17/2014 12:55 PM, Florian Weimer wrote: On 08/16/2014 12:39 AM, John Rose wrote: Do you have a use case in mind that could be expressed as a more tightly focused API? My use-case is run-time class generation and avoiding unnecessary retention of classes which are referred to by the

Re: Direct method handles to static methods

2014-08-18 Thread Remi Forax
On 08/18/2014 12:19 PM, Raffaello Giulietti wrote: What happens to direct method handles to *static* methods when the underlying method implementation changes at runtime, for example by using java.lang.instrument transformations or redefinitions? Before doing some experiments, I would just

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

2014-08-18 Thread Remi Forax
On 08/18/2014 12:01 PM, Raffaello Giulietti wrote: Starting with Java 7, the recommended way to implement dynamic languages is to build upon invokedynamic (indy), method handles (MH) and their combinators, all of which are intrinsically known to the JVM. This intimacy allows the JVM to

Re: [9] RFR (L): 8057042: LambdaFormEditor: derive new LFs from a base LF

2014-09-05 Thread Remi Forax
On 09/03/2014 07:46 PM, John Rose wrote: On Sep 3, 2014, at 10:35 AM, Mark Roos mr...@roos.com wrote: From Morris All that assert laden code is nice to see. I just finished watching a video from Doug Lea where he mentioned that having asserts can inhibit inlining due to the

Re: Defining anonymous classes

2014-09-05 Thread Remi Forax
On 08/14/2014 12:52 PM, Florian Weimer wrote: Is there an end-user accessible way of defining anonymous classes (by which I mean classes which are kept alive only by explicit references or their instances, and not their class loader)? Searching for the term anonymous classes isn't

Re: Truffle and mlvm

2014-09-05 Thread Remi Forax
I think that in term of concepts there is a kind of convergence between the couples Graal/Truffle and c2/java.lang.invoke. The force of Graal is to be able to do partial evaluation directed user code or by annotations, for me, Hotspot is moving in that direction too, it already has special

Re: Truffle and mlvm

2014-09-05 Thread Remi Forax
On 09/05/2014 11:41 AM, Ali Ebrahimi wrote: Hi, On Fri, Sep 5, 2014 at 1:47 PM, Remi Forax fo...@univ-mlv.fr mailto:fo...@univ-mlv.fr wrote: I think that in term of concepts there is a kind of convergence between the couples Graal/Truffle and c2/java.lang.invoke. The force

Re: [9] RFR (L): 8057042: LambdaFormEditor: derive new LFs from a base LF

2014-09-05 Thread Remi Forax
. After the dust settles, creating a debugging subclass used for testing, and moving some of the asserts to unit tests might be helpful for performance. --mm Hi Morris, I fully agree. Rémi On 9/5/14, 2:59 AM, Remi Forax wrote: On 09/03/2014 07:46 PM, John Rose wrote: On Sep 3

Re: [9] RFR (XXS): 8058309: Unsafe.defineAnonymousClass deoptimization checks scale devastatingly poorly

2014-09-17 Thread Remi Forax
On 09/17/2014 06:55 PM, Vladimir Ivanov wrote: It's not specific to U.dAC(). Regular class loaders can hit similar problem as well. Even better, this is even more generic. Please, update bug synopsis then. If you want to use 8058309 for dependency tracking improvments in VM, let me know.

Re: [9] RFR (S): 8058892: FILL_ARRAYS and ARRAYS are eagely initialized in MethodHandleImpl

2014-10-02 Thread Remi Forax
On 10/02/2014 07:00 PM, Aleksey Shipilev wrote: I have three comments: * Since initialization order is important, why don't put the initialization in the existing static initializer? This will secure for inadvertent field reordering in future. good idea. * Any reason two new fields are

Re: invoking a interface default method from within an InvocationHandler

2014-10-09 Thread Remi Forax
public static void main(String[] args) throws NoSuchFieldException, IllegalArgumentException, IllegalAccessException { Lookup lookup = MethodHandles.publicLookup().in(Consumer.class); Field allowedModes = Lookup.class.getDeclaredField(allowedModes); allowedModes.setAccessible(true);

Re: [9] [8u40] RFR (M): 8059877: GWT branch frequencies pollution due to LF sharing

2014-10-10 Thread Remi Forax
Hi Vladimir, Why do you need getHistoricInt ? Is it because Unsafe.getInt() doesn't do any constant folding ? BTW, why getHistoricInt is named getHistoricInt ? cheers, Rémi On 10/10/2014 09:08 PM, Vladimir Ivanov wrote: http://cr.openjdk.java.net/~vlivanov/8059877/webrev.00/

Re: [9] [8u40] RFR (M): 8059877: GWT branch frequencies pollution due to LF sharing

2014-10-10 Thread Remi Forax
On 10/10/2014 10:42 PM, Vladimir Ivanov wrote: Remi, Why do you need getHistoricInt ? Is it because Unsafe.getInt() doesn't do any constant folding ? Exactly. I need a compile-time constant to feed it to the compiler to guide compilation. BTW, why getHistoricInt is named getHistoricInt ?

Re: invoking a interface default method from within an InvocationHandler

2014-10-16 Thread Remi Forax
such circumstances i believe that should be safe. Paul. Rémi On Oct 9, 2014, at 7:07 PM, Remi Forax fo...@univ-mlv.fr wrote: public static void main(String[] args) throws NoSuchFieldException, IllegalArgumentException, IllegalAccessException { Lookup lookup = MethodHandles.publicLookup

Re: invoking a interface default method from within an InvocationHandler

2014-10-22 Thread Remi Forax
On 10/17/2014 11:58 AM, Paul Sandoz wrote: On Oct 16, 2014, at 12:43 PM, Remi Forax fo...@univ-mlv.fr wrote: On 10/15/2014 06:54 PM, Paul Sandoz wrote: Hi Remi, I did some brief evaluation of this area. MethodHandleProxies.asInterfaceInstance currently does not support proxying to default

Re: invoking a interface default method from within an InvocationHandler

2014-10-22 Thread Remi Forax
On 10/20/2014 11:25 AM, Cédric Champeau wrote: For what it's worth, in Groovy, we have two separate pathes to implement classes at runtime, that is to say generating proxies. In the case of an interface, we rely on the JDK proxy just because it is *much* faster than generating a class through

Invokedynamic and recursive method call

2014-12-30 Thread Remi Forax
Hi guys, I've found a bug in the interaction between the lambda form and inlining algorithm, basically if the inlining heuristic bailout because the method is recursive and already inlined once, instead to emit a code to do a direct call, it revert to do call to linkStatic with the method as

Re: [9] RFR (M): 8069591: Customize LambdaForms which are invoked using MH.invoke/invokeExact

2015-01-21 Thread Remi Forax
Hi Vladimir, in Invokers.java, I think that checkCustomized should take an Object and not a MethodHandle exactly like getCallSiteTarget takes an Object and not a CallSite. in MethodHandle.java, customizationCount is declared as a byte and there is no check that the CUSTOMIZE_THRESHOLD is not

Re: Use of JDK interanl ASM vs external

2015-02-18 Thread Remi Forax
an official, supported public API? On Tue, Feb 17, 2015 at 7:58 PM, Remi Forax fo...@univ-mlv.fr wrote: On 02/17/2015 08:30 PM, Mark Roos wrote: I see that jdk8 now includes a copy of ASM (jdk.internal.org.objectweb.asm). Is it recommended to use that instance vs suppling a copy with my application

Re: Use of JDK interanl ASM vs external

2015-02-18 Thread Remi Forax
/modules.xml#l221 On Tue, Feb 17, 2015 at 7:58 PM, Remi Forax fo...@univ-mlv.fr wrote: On 02/17/2015 08:30 PM, Mark Roos wrote: I see that jdk8 now includes a copy of ASM (jdk.internal.org.objectweb.asm). Is it recommended to use that instance vs suppling a copy with my application? thanks

Re: Use of JDK interanl ASM vs external

2015-02-17 Thread Remi Forax
On 02/17/2015 08:30 PM, Mark Roos wrote: I see that jdk8 now includes a copy of ASM (jdk.internal.org.objectweb.asm). Is it recommended to use that instance vs suppling a copy with my application? thanks mark Hi Mark, These classes are not the one you are looking for :) As the

Re: Invokedynamic and recursive method call

2015-01-31 Thread Remi Forax
Thank you, Vladimir ! Rémi On 01/30/2015 04:07 PM, Vladimir Ivanov wrote: Remi, thanks for the report! Filed JDK-8072008 [1]. Best regards, Vladimir Ivanov [1] https://bugs.openjdk.java.net/browse/JDK-8072008 On 1/30/15 4:03 AM, Remi Forax wrote: On 01/30/2015 01:48 AM, John Rose wrote

Re: Invokedynamic and recursive method call

2015-01-07 Thread Remi Forax
sys0m0.019s as you can see, it was faster with a JDK before jdk7u40. Regards Marcus cheers, Rémi On 30 Dec 2014, at 20:48, Remi Forax fo...@univ-mlv.fr wrote: Hi guys, I've found a bug in the interaction between the lambda form and inlining algorithm, basically if the inlining

Re: Use of JDK interanl ASM vs external

2015-02-18 Thread Remi Forax
On 02/18/2015 11:30 PM, Attila Szegedi wrote: With Nashorn, we're language implementers who happen to have their runtime shipped as part of the JRE. For better or worse, we need to have our dependencies shipped with it, hence a privately bundled ASM. We have a somewhat unique deployment model,

Re: Use of JDK interanl ASM vs external

2015-02-18 Thread Remi Forax
or is this something also addressed in Java 9? no, module spec doesn't address the kind of isolation or sandboxing you describe, you have to rely on a third party framework on top of modules for that. Rémi On 18/02/2015 12:29, Remi Forax wrote: On 02/18/2015 11:26 AM, Debasish Ray Chawdhuri wrote: So

Re: A simple PIC api

2015-03-11 Thread Remi Forax
On 03/11/2015 11:12 PM, Mark Roos wrote: From Jochen Do I also understand right, that your test for checking if the current target is still valid is limited to only the receiver? Well yes and no. In my case the test examines all of the arguments on the stack and computes an 'behavior'

Re: A simple PIC api

2015-03-11 Thread Remi Forax
On 03/11/2015 11:12 PM, Mark Roos wrote: Remi commented I think you can adapt this code to implement what Mark want quite easily I don't disagree that pics are easy to code, my premise is that with a construct such I I proposed the jvm would do a better job of optimizing. Especially taking

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

2015-03-07 Thread Remi Forax
On 03/07/2015 06:31 AM, John Rose wrote: [...] (I wish we had a similar candidate for invokespecial/super. That is badly twisted around the verifier.) One way to solve the problem is to consider that invokedynamic init is a special 'bytecode' for the verifier and that the verifier will

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

2015-03-08 Thread Remi Forax
On 03/08/2015 12:56 AM, Peter Levart wrote: On 03/07/2015 02:53 PM, Remi Forax wrote: On 03/07/2015 06:31 AM, John Rose wrote: [...] (I wish we had a similar candidate for invokespecial/super. That is badly twisted around the verifier.) One way to solve the problem is to consider

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

2015-03-04 Thread Remi Forax
On 03/04/2015 12:00 PM, Julien Ponge wrote: Hello, I echo Jochen's griefs on constructors. There are cases of dynamic subclassing or bytecode wizardry where one would like to make that call with invokedynamic, and being forced into doing so with an invokespecial to not break the verifier

Re: Invokedynamic and recursive method call

2015-01-29 Thread Remi Forax
On 01/30/2015 01:48 AM, John Rose wrote: On Jan 7, 2015, at 8:13 AM, Remi Forax fo...@univ-mlv.fr mailto:fo...@univ-mlv.fr wrote: But if fibo is called through an invokedynamic, instead of emitting a direct call to fibo, the JIT generates a code that push the method handle on stack

Re: Implementing VarHandle

2015-04-14 Thread Remi Forax
On 04/14/2015 10:38 AM, MacGregor, Duncan (GE Energy Management) wrote: On 12/04/2015 15:54, Remi Forax fo...@univ-mlv.fr wrote: Hi guys, I was about to write a blog post explaining why i don't like the way VarHandle are currently implemented when it occurs to me that providing another

Re: Implementing VarHandle

2015-04-20 Thread Remi Forax
On 04/20/2015 11:06 AM, Paul Sandoz wrote: Hi Peter, We did consider supporting field and method literals in 9, leveraging the same syntax as for method references combined with target typing. But, we have currently concluded it would be best to punt it to post-9. As a result there is

Re: ClassLoader leak in MethodHandle.asType()

2015-04-25 Thread Remi Forax
On 04/25/2015 12:24 AM, Peter Levart wrote: On 04/24/2015 11:06 PM, John Rose wrote: Good point. Are you seeing a leak in practice? The cache is important, especially to inexact MH.invoke. — John Well, yes. I am (re)implementing annotations (proxies) using Remi's Proxy2 and made it all

Re: ClassValue perf?

2015-04-25 Thread Remi Forax
On 04/24/2015 11:17 PM, John Rose wrote: On Apr 24, 2015, at 5:38 AM, Charles Oliver Nutter head...@headius.com 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

Re: Implementing VarHandle

2015-05-02 Thread Remi Forax
of the experimentation doesn't worst the cost. And if you still want to introduce a new semantics into Java, having a way to invoke invokedynamic in Java is the one you want :) cheers, Rémi On Apr 12, 2015, at 4:54 PM, Remi Forax fo...@univ-mlv.fr wrote: Hi guys, I was about to write

Re: ClassValue perf?

2015-05-03 Thread Remi Forax
Hi Peter, computeValue() may recursively call get() by example to crawle the inheritance hierarchy so i am not sure a lock is a good idea here because in that case, it usually takes several millis to complete the to level computeValue. regards, Rémi On 05/03/2015 12:32 AM, Peter Levart

Implementing VarHandle

2015-04-12 Thread Remi Forax
Hi guys, I was about to write a blog post explaining why i don't like the way VarHandle are currently implemented when it occurs to me that providing another implementation may be a more efficient to discuss about implementation. So my implementation is here,

Re: Need to access syntactic method out of package using Bootstrap attribute

2015-06-17 Thread Remi Forax
Hi Puneet, On 06/17/2015 06:58 PM, Vladimir Ivanov wrote: Puneet, How did you end up with such bytecode? Was it generated by javac? Rejecting access to a method which is not visible from the context where invokedynamic is linked is the correct behavior. The error you describe is weird, the

Re: Proposed API for JEP 259: Stack-Walking API

2015-10-31 Thread Remi Forax
Hi Mandy, hi all, - Mail original - > De: "Mandy Chung" > À: "David M. Lloyd" > Cc: core-libs-...@openjdk.java.net > Envoyé: Vendredi 30 Octobre 2015 21:39:38 > Objet: Re: Proposed API for JEP 259: Stack-Walking API > > > > On Oct 30,

  1   2   >