Re: [jvm-l] still active?

2023-08-22 Thread Charles Oliver Nutter
I'm still here too! Probably making a big performance push with JRuby soon that will obviously involve lots of indy and method handles. On Tue, Aug 22, 2023 at 3:14 PM Theodore Neward wrote: > > Well, I’m still here. :-) Dunno if I am who you’re looking for, though, since > I probably have more

[jvm-l] 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

Re: [jvm-l] Tool to convert call sites into invokedynamic?

2016-07-20 Thread Charles Oliver Nutter
On Wed, Jul 20, 2016 at 12:41 PM, Remi Forax wrote: > yes, the rewriting part is easy, the question is more how to find the call > you > want to rewrite and how to find the bootstrap method and the bootstrap > arguments associated with that call. > At the moment I am using my

Re: [jvm-l] Introducing GCC-Bridge: a C/Fortran Compiler targeting the JVM

2016-02-01 Thread Charles Oliver Nutter
On Mon, Feb 1, 2016 at 11:55 PM, Alexander Bertram wrote: > You can basically tell the compiler to map a C struct to a given java class, > for example, mapping CRuby's VALUE to org.jruby.RubyBasicObject and import > > GimpleCompiler compiler = new GimpleCompiler(); >

Re: [jvm-l] Introducing GCC-Bridge: a C/Fortran Compiler targeting the JVM

2016-02-01 Thread Charles Oliver Nutter
Yay! I will have to look into this. We have an interest in compiling Ruby C extensions to Java and providing a JVM-level implementation of Ruby's C API. - Charlie (mobile) On Feb 1, 2016 1:09 PM, "Alexander Bertram" wrote: > Hi all, > > I've finally gotten around to

Re: [jvm-l] JEP 276: Dynamic Linking of Language-Defined Object Models

2015-10-22 Thread Charles Oliver Nutter
Excellent! I endorse! This will allow Mirah to support dynamic dispatch while still not shipping any runtime. I will jump in on the core-libs conversation after we've got our JavaOne talk ready :-) - Charlie On Thu, Oct 22, 2015 at 11:24 AM, Attila Szegedi wrote: > Hi

[jvm-l] Fwd: JFokus 2015 - the VM Tech Day

2015-01-21 Thread Charles Oliver Nutter
john.r.r...@oracle.com, Daniel Heidinga daniel_heidi...@ca.ibm.com, Remi Forax fo...@univ-mlv.fr, Attila Szegedi attila.szeg...@oracle.com, Vyacheslav Egorov m...@mrale.ph, Mattias Karlsson mattias.g.karls...@gmail.com, Fredrik Öhrström oehrstr...@gmail.com, Charles Oliver Nutter head...@headius.com

Re: [jvm-l] MethodHandle usage for interpreters

2013-12-27 Thread Charles Oliver Nutter
Definitely appropriate! Please repost! - Charlie (mobile) On Dec 27, 2013 3:43 AM, James Mitchell jimd...@jimdesu.com wrote: Hi there, I sent a question on MethodHandle use to the regular Sun/Oracle java forum and didn't get any responses, and I'm wondering: is this forum appropriate to

[jvm-l] Fwd: JVM Language Summit (Europe)?

2013-10-04 Thread Charles Oliver Nutter
-- Forwarded message -- From: Martijn Verburg martijnverb...@gmail.com Date: Oct 2, 2013 7:38 AM Subject: JVM Language Summit (Europe)? To: Da Vinci Machine Project mlvm-...@openjdk.java.net Cc: Hi all, Hope this is the right mailing list to post on, apologies for the slight OT

[jvm-l] New group to discuss adding FFI to the JVM

2013-08-22 Thread Charles Oliver Nutter
I've set up a google group to discuss adding FFI to the JVM. On the JRuby project, we've been working to improve our integration of native libraries for years. At JVMLS 2013, I presented on the Java Native Runtime (JNR) project, created by Wayne Meissner. We've been using JNR for years to support

Re: [jvm-l] LispCast Videos

2013-02-26 Thread Charles Oliver Nutter
On Tue, Feb 19, 2013 at 7:35 AM, Kevin Wright kev.lee.wri...@gmail.com wrote: On 19 February 2013 15:24, Remi Forax fo...@univ-mlv.fr wrote: I heard somewhere that God starts to use Clojure or the opposite. Ostensibly, yes… http://xkcd.com/224/ You know, I debated moderating this post, but I

Re: [jvm-l] Re: invokedynamic newbie question

2012-08-05 Thread Charles Oliver Nutter
, 3:18 am, Charles Oliver Nutter head...@headius.com wrote: A simple way to do what you want might be sketched out like this: * The bootstrap method returns a CallSite + handle for your multi-dispatch logic contained in another method. * The multi-dispatch logic receives the actual arguments

[jvm-l] Improving the performance of stacktrace generation

2012-07-07 Thread Charles Oliver Nutter
Today I have a new conundrum for you all: I need stack trace generation on Hotspot to be considerably faster than it is now. In order to simulate many Ruby features, JRuby (over)uses Java stack traces. We recently (JRuby 1.6, about a year ago) moved to using the Java stack trace as the source of

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

2012-07-07 Thread Charles Oliver Nutter
On Saturday, July 7, 2012, Alex Cruise wrote: Forgive me if this is a naive question, but as regards the caller/current-method question, since you have the complete AST in front of you, why not just synthesize extra arguments to any method that happens to use the caller or __method__ magic?

[jvm-l] Slides from JAX 2012 invokedynamic keynote

2012-04-20 Thread Charles Oliver Nutter
I thought this might be interesting to some folks on these lists, and I am also interested in input on ways to improve this talk. I think it will make a good intro to invokedynamic talk for other confs, so I'll probably do it again. I'm also *finally* going to do an epic blog post summarizing all

[jvm-l] Clever uses of InvokeDynamic

2012-04-17 Thread Charles Oliver Nutter
I'm filling out the remaining slides in my JAX keynote on InvokeDynamic, and I'm interested in additional clever uses of invokedynamic folks have discovered. I have included the following, which we make use of in JRuby: * Dynamic invocation (obviously) * Lazy constants * Multiple dispatch I'll

Re: [jvm-l] Fwd: Call for speakers -- 2012 JVM Language Summit

2012-04-12 Thread Charles Oliver Nutter
On Thu, Apr 12, 2012 at 12:29 PM, Jochen Theodorou blackd...@gmx.org wrote: I was thinking about making an invokedynamic workshop in which you show the API, how to use it and several examples, pitfalls and maybe some tricks in a hands-on fashion. But because I never did one before I was

Re: [jvm-l] Fwd: Call for speakers -- 2012 JVM Language Summit

2012-04-12 Thread Charles Oliver Nutter
Isn't that what he said? On Thu, Apr 12, 2012 at 1:08 PM, Matt Fowles matt.fow...@gmail.com wrote: Jochen~ I would suggest doing it as one of the more focused workshops instead of as a general talk for the whole assembly. Matt On Thu, Apr 12, 2012 at 2:00 PM, Charles Oliver Nutter head

[jvm-l] ANN: InvokeBinder

2012-02-04 Thread Charles Oliver Nutter
InvokeBinder is a small Java DSL for binding method handles *forward* rather than *backward* from target endpoint. https://github.com/headius/invokebinder/ I've finished mapping MethodHandles.* and Lookup.* to its API, and have also added a couple convenience utilities like tryFinally and nop

[jvm-l] No way to create a no-op MethodHandle that returns void?

2012-01-23 Thread Charles Oliver Nutter
I discovered a possible gap in the MethodHandles API. Say I want to create an exception handler that does nothing but ignore the exception. The target handle is a method that looks like this: void foo(String) I have my target handle pointing at foo. I want to catch all Throwable and ignore

[jvm-l] Re: No way to create a no-op MethodHandle that returns void?

2012-01-23 Thread Charles Oliver Nutter
/invokebinder - Charlie On Tue, Jan 24, 2012 at 1:07 AM, Noctarius m...@noctarius.com wrote: Hi Charly, why not use Void and return null what behaves like using void as the return type. Cheers Chris Am 24.01.2012 08:01, schrieb Charles Oliver Nutter: I discovered a possible gap

Re: [jvm-l] JSR 292 Goodness: Almost static final field

2011-12-18 Thread Charles Oliver Nutter
loaded. Regards, Kirk On Dec 17, 2011, at 10:34 PM, Charles Oliver Nutter wrote: CounterDecay is new to me...am I reading the code right when I get that it basically decays compiled code over time, eventually forcing a reprofile and recompile of steady-state code? I know there's a SmallTalk

Re: [jvm-l] JSR 292 Goodness: Almost static final field

2011-12-17 Thread Charles Oliver Nutter
I have a mode in JRuby where I am doing essentially the same thing, eliminating accesses to essentially final values that are initialized lazily but never updated again. I don't have it on by default because the additional indy+MH does tips many methods over the inlining budget, making them slower

Re: [jvm-l] JSR 292 Goodness: Almost static final field

2011-12-17 Thread Charles Oliver Nutter
On Sat, Dec 17, 2011 at 1:10 PM, Rémi Forax fo...@univ-mlv.fr wrote: So there is a bug in the way the inlining budget is computed. The pattern doesn't use any side methods is the fast path, only method handle adapters so it should not entail the inlining budget at all. I've only tested on

Re: [jvm-l] JSR 292 Goodness: Almost static final field

2011-12-17 Thread Charles Oliver Nutter
, Charles Oliver Nutter wrote: On Sat, Dec 17, 2011 at 1:10 PM, Rémi Forax fo...@univ-mlv.fr wrote: So there is a bug in the way the inlining budget is computed. The pattern doesn't use any side methods is the fast path, only method handle adapters so it should not entail the inlining budget at all

Re: [jvm-l] Hiphop virtual machine

2011-12-09 Thread Charles Oliver Nutter
I especially like the unreadable performance graph and inferred numbers due to their stability gap. - Charlie On Fri, Dec 9, 2011 at 3:20 PM, Rémi Forax fo...@univ-mlv.fr wrote: PHP will have a VM after all.

Re: [jvm-l] getting started with invokedynamic for real

2011-11-30 Thread Charles Oliver Nutter
On Wed, Nov 30, 2011 at 7:26 AM, Rémi Forax fo...@univ-mlv.fr wrote: This is something that currently doesn't work well with invokedynamic, we need a way to ask the VM to use a different profile for a method handle used at different callsite. The only way to get that currently is to generate

Re: [jvm-l] getting started with invokedynamic for real

2011-11-29 Thread Charles Oliver Nutter
On Mon, Nov 28, 2011 at 10:20 AM, Jochen Theodorou blackd...@gmx.org wrote: if the guards produce stackframes visible to Class.forName, then putting the bootstrap method on each class, won't do it...I guess it won't do it anyway, since I need the first time to invoke the method handle myself

Re: [jvm-l] getting started with invokedynamic for real

2011-11-29 Thread Charles Oliver Nutter
On Tue, Nov 29, 2011 at 12:59 PM, Jochen Theodorou blackd...@gmx.org wrote: I should add, that the problems I have now are still very basic ones... more about how to use the API correctly. I have for example to replace an argument with a new value, but no real idea how to do that. I

Re: [jvm-l] getting started with invokedynamic for real

2011-11-29 Thread Charles Oliver Nutter
On Tue, Nov 29, 2011 at 6:39 AM, Jochen Theodorou blackd...@gmx.org wrote: Am 28.11.2011 17:38, schrieb Julien Ponge: Is it very different from the call sites in JRuby? They have a solid invokedynamic implementation to look at already. Might inspire you in a few places :-) Is it different?

[jvm-l] Report on JRuby + invokedynamic

2011-11-29 Thread Charles Oliver Nutter
I posted this to the MLVM list, but I thought it would be interesting here. I'm happy to answer any questions about JRuby's uses of invokedynamic. Hello friends! Just updating you on the status of JRuby + invokedynamic, for those of you following along. About halfway through this month I did

Re: [jvm-l] Dart on JVM

2011-10-18 Thread Charles Oliver Nutter
I knew it wouldn't take long :) Over the weekend perhaps? Awesome work Remi...maybe more people will start to realize what power we have in invokedynamic. - Charlie (mobile) On Oct 17, 2011 3:43 PM, Rémi Forax fo...@univ-mlv.fr wrote: I'm please to announce that Dart (a small subset in fact)

Re: [jvm-l] Re: Another invokedynamic challenge: try/finally and pre/post logic

2011-06-12 Thread Charles Oliver Nutter
On Sun, Jun 12, 2011 at 4:57 AM, Kirk kirk.pepperd...@gmail.com wrote: On Jun 11, 2011, at 2:26 AM, Charles Oliver Nutter wrote: I think I have it, and maybe I am wrong after all! What!!! Last time I stick my neck out for you!!! ;-) Yeah, it turns out I'm not perfect after all...disappointing

Re: [jvm-l] invokedynamic: return incoming argument?

2011-06-11 Thread Charles Oliver Nutter
as i can. - Charlie (mobile) On Jun 11, 2011, at 5:18, Rémi Forax fo...@univ-mlv.fr wrote: On 06/11/2011 02:18 AM, Charles Oliver Nutter wrote: John Rose to the rescue... by reversing the order of foldArguments, you can post-process the arguments *and* return value of the target. See

Re: [jvm-l] JVM Summit'11 (agenda)

2011-06-10 Thread Charles Oliver Nutter
Looks great! Jeroen will be there for iKVM, that's so cool. Maybe we can get him to add invokedynamic using DLR? :D On Fri, Jun 10, 2011 at 4:23 AM, Rémi Forax fo...@univ-mlv.fr wrote: The agenda of the JVM Summit has been published.

Re: [jvm-l] Newly introduced OpenJDK javac bug?

2011-06-10 Thread Charles Oliver Nutter
On Fri, Jun 10, 2011 at 10:01 AM, Neal Gafter n...@gafter.com wrote: Charles- This makes a lot of sense.  My concern is that such a change may break an unknown number of other, different examples. Rather than trying to construct an overload resolution algorithm that makes this example work

[jvm-l] invokedynamic: return incoming argument?

2011-06-10 Thread Charles Oliver Nutter
I have a case in JRuby where I need to return one of the incoming arguments as the result of the call, and I can't figure out how to do it with MethodHandle alone. Basically, any Ruby code that looks like this: a.foo = 'bar' ...or this: a[1] = 'bar' ...needs to return the RHS, not the result

[jvm-l] Re: Another invokedynamic challenge: try/finally and pre/post logic

2011-06-10 Thread Charles Oliver Nutter
On Fri, Jun 10, 2011 at 6:36 PM, Charles Oliver Nutter head...@headius.com wrote: I can handle the exceptional case with MethodHandles.catchException ok. There's no return value because an exception was thrown, so I just do the post logic and propagate the exception. But I can't handle the non

[jvm-l] Re: Another invokedynamic challenge: try/finally and pre/post logic

2011-06-10 Thread Charles Oliver Nutter
On Fri, Jun 10, 2011 at 7:04 PM, Charles Oliver Nutter head...@headius.com wrote: Brainstorming ways this could be fixed in JSR-292, if it's not already impossible to do so. 1. A new MethodHandles API postProcess, that receives all incoming arguments, invokes the handle, and runs a post

[jvm-l] Re: Another invokedynamic challenge: try/finally and pre/post logic

2011-06-10 Thread Charles Oliver Nutter
On Fri, Jun 10, 2011 at 7:11 PM, Charles Oliver Nutter head...@headius.com wrote: Ok, John Rose pointed out on MLVM list that a finally that does not return would be the same as foldArguments, by flipping the order: int foo(Object arg1) {  ... return some int } int postCall(int retVal

Re: [jvm-l] Re: Another invokedynamic challenge: try/finally and pre/post logic

2011-06-10 Thread Charles Oliver Nutter
On Fri, Jun 10, 2011 at 7:36 PM, John Rose john.r.r...@oracle.com wrote: Yes.   Put the postCall wrapper *outside* the postException wrapper.  That way the postCall guy won't participate in the special exception processing. If postException catches and discards the exception, then it will

[jvm-l] Newly introduced OpenJDK javac bug?

2011-06-09 Thread Charles Oliver Nutter
Recent OpenJDK 7 builds seem to have introduced a bug into javac. Correct me if I'm wrong. https://gist.github.com/1016436 public class Foo { public static void main(String[] args) { method(str); method(str, 1); method(str, 1, data); } public static void

Re: [jvm-l] Newly introduced OpenJDK javac bug?

2011-06-09 Thread Charles Oliver Nutter
On Thu, Jun 9, 2011 at 1:11 PM, Attila Szegedi szege...@gmail.com wrote: The question however is whether these solutions we perceive as intuitive can indeed be formally valid under some set of consistent rules, without running into a contradiction. In answer to you and Neal, it seems there's

Re: [jvm-l] Newly introduced OpenJDK javac bug?

2011-06-09 Thread Charles Oliver Nutter
On Thu, Jun 9, 2011 at 5:12 PM, Rémi Forax fo...@univ-mlv.fr wrote: You can, just consider int and Integer has the same node:   int = Integer int = Integer because int == Integer In addition, I don't see how Integer would ever need to be considered more specific than int, for an int input. In

Re: [jvm-l] Flags to test for invoke dynamic

2011-05-28 Thread Charles Oliver Nutter
On Sat, May 28, 2011 at 7:10 AM, Alex Turner nerdscent...@googlemail.com wrote: All, Hi! This is my first post here. I am Alex Turner, currently technical team lead for the JVM compiler ground at Micro Focus. I have a great interest in invokedynamic and its performance. I created a

Re: [jvm-l] Re: new milestone build for Renjin - R for the JVM

2011-05-17 Thread Charles Oliver Nutter
On Tue, May 17, 2011 at 9:39 AM, James Iry james...@gmail.com wrote: I think all the compiled JVM languages currently create a new jvm class for each lambda expression (by which I also include the eta expansion typically used to turn a regular function into an function value) and allocate an

Re: [jvm-l] Re: new milestone build for Renjin - R for the JVM

2011-05-17 Thread Charles Oliver Nutter
On Tue, May 17, 2011 at 10:02 AM, John Cowan johnwco...@gmail.com wrote: FWIU, the optimal approach if you are batch-compiling is to stuff N functions into a single class as static methods using this sort of framework: public class FooBarBaz {  private int _function;  private

Re: [jvm-l] Re: new milestone build for Renjin - R for the JVM

2011-05-17 Thread Charles Oliver Nutter
On Tue, May 17, 2011 at 1:35 PM, John Cowan johnwco...@gmail.com wrote: Does this mean that there are Foo, Bar, and Baz classes, each providing a non-static apply method that calls the appropriate static method in FooBarBaz?  I don't see why that's better than just having one class per

Re: [jvm-l] Multitenancy and malicious code

2011-04-20 Thread Charles Oliver Nutter
On Tue, Apr 19, 2011 at 6:07 PM, Rémi Forax fo...@univ-mlv.fr wrote: And as far as I know the ARM JIT doesn't inline method, so it's a pretty basic JIT. I was under the impression that it's a tracing jit, so there should be some level of cross-call optimization happening. - Charlie -- You

Re: [jvm-l] Multitenancy and malicious code

2011-04-19 Thread Charles Oliver Nutter
On Tue, Apr 19, 2011 at 2:55 AM, Miles Sabin mi...@milessabin.com wrote: On Tue, Apr 19, 2011 at 4:51 AM, David Schlosnagle schlo...@gmail.com wrote: I'd be interested to see what you find. Here are a few links [1] [2] [3] from a few years back when I did a little investigation of isolating

Re: [jvm-l] Re: Strategies for optimizing closure invocations

2011-04-05 Thread Charles Oliver Nutter
On Tue, Apr 5, 2011 at 8:25 AM, Kresten Krab Thorup k...@trifork.com wrote: Even if C_3 inlines, C_1 remains megamorphic because Hotspot treats it as a lone call site independent of calls around it. There's no concept of the C_1 call site when called from C_3. That is actually not how I

Re: [jvm-l] Re: Strategies for optimizing closure invocations

2011-04-04 Thread Charles Oliver Nutter
On Mon, Apr 4, 2011 at 9:46 AM, Jochen Theodorou blackd...@gmx.org wrote: public static void doSomething(MyInterface x, Object[] args) {  x.call(args) //C_1 } public static void doSomethingSmall(){...} MyInterface mi = new MyInterface() {  public void call(Object[] args) {    

Re: [jvm-l] Strategies for optimizing closure invocations

2011-04-03 Thread Charles Oliver Nutter
On Sun, Apr 3, 2011 at 11:48 AM, Robert Fischer smokejumpe...@gmail.com wrote: Now, there's no way that I am aware of to go from a MethodHandle to a java.lang.reflect.Method instance and an array of arguments, which would then enable me to inline it at runtime. There are good reasons I can

[jvm-l] Strategies for optimizing closure invocations

2011-04-02 Thread Charles Oliver Nutter
I'm getting deeper into JRuby optimization lately, and starting to ponder strategies for optimizing closures (or, in the case of Clojure and Scala, optimizing pass-through methods that make megamorphic callbacks to functions). First, some explanation... In Ruby, the each method on Array receives

Re: [jvm-l] Strategies for optimizing closure invocations

2011-04-02 Thread Charles Oliver Nutter
On Sat, Apr 2, 2011 at 5:30 PM, Robert Fischer smokejumpe...@gmail.com wrote: I've been looking into exactly this kind of problem for my functional programming language. The sheer amount of megamorphic love that fold receives got me thinking about this. Although there's some work that I could

Re: [jvm-l] fork(2) in the JVM?

2011-02-17 Thread Charles Oliver Nutter
On Thu, Feb 17, 2011 at 12:25 PM, John Rose john.r.r...@oracle.com wrote: On Feb 17, 2011, at 9:45 AM, Patrick Wright wrote: Medium term, I think it would be interesting if the organizers of the summer JVM Lanugages Summit could have someone with JVM experience address this topic in a talk,

Re: [jvm-l] fork(2) in the JVM?

2011-02-17 Thread Charles Oliver Nutter
On Thu, Feb 17, 2011 at 12:58 PM, Rémi Forax fo...@univ-mlv.fr wrote: fork is one way to address that, by keeping a hot VM and spawning instances of it, but JVMs that save their jit products (like Excelsior JET) do an excellent job too (once primed. JET starts up JRuby stuff *much* faster than

[jvm-l] fork(2) in the JVM?

2011-02-01 Thread Charles Oliver Nutter
This question has come up on JRuby lists many times, and I thought I'd take it to the JVM language crew: Why doesn't the JVM support fork? I understand the technical reasons: threads don't migrate, so they'd have to be restarted (including GC, compiler, signals, finalizers, etc); userland

Re: [jvm-l] performance of invokedynamic

2011-01-26 Thread Charles Oliver Nutter
didn't see this as a flaw in invokedynamic, just tuning of default JVM settings (and especially inlining budgets) that had not happened yet... - Charlie On Wed, Jan 26, 2011 at 5:09 PM, Charles Oliver Nutter head...@headius.com wrote: Is there still a requirement that you tweak a few JVM flags? When I

[jvm-l] Time for a 64-bit client JVM

2011-01-13 Thread Charles Oliver Nutter
So, anyone know what the deal is with there *still* being no 64-bit client mode in OpenJDK? We're running into more and more folks on 64-bit platforms complaining about the poor startup, and the best suggestion we can offer them is to install a 32-bit JVM instead. There's the possibility of the

Re: [jvm-l] JSR292 backport jdk1.7 b123

2010-12-27 Thread Charles Oliver Nutter
Very nice, thanks Remi! I'll pull it into JRuby and see if I can't update JRuby's indy stuff for JRuby 1.6. On Mon, Dec 27, 2010 at 3:45 PM, Rémi Forax fo...@univ-mlv.fr wrote: Hi all, I've updated the JSR292 backport to be in sync with jdk7 b123.

Re: [jvm-l] Re: primitives as objects

2010-12-06 Thread Charles Oliver Nutter
On Sun, Dec 5, 2010 at 9:58 AM, Subbu Sastry sss.li...@gmail.com wrote: So, while it is true that the runtime of a dynamic language has to transform the dynamic language to a typed bytecode, I think it also means that the rntime has to implement any optimizations (inlining, type guards,

Re: [jvm-l] Re: primitives as objects

2010-12-04 Thread Charles Oliver Nutter
On Fri, Dec 3, 2010 at 12:21 PM, John Rose john.r.r...@oracle.com wrote: With closures, if you are desperate to keep one entry point, you can play around with thread-local values to pass in the data links:    static Object p = #localPutsProcBodyUsingTL;    static ThreadLocal reg42 = new

Re: [jvm-l] Re: primitives as objects

2010-12-04 Thread Charles Oliver Nutter
On Fri, Dec 3, 2010 at 12:21 PM, John Rose john.r.r...@oracle.com wrote: If you are able to prove (in the JRuby compiler and runtime) that 'p' does not escape the 'each' call, you can pass a static code pointer for 'p' and handle the data link ('i' or a frame containing 'i') via another means.  

Re: [jvm-l] Re: primitives as objects

2010-12-04 Thread Charles Oliver Nutter
On Sat, Dec 4, 2010 at 6:12 AM, Rémi Forax fo...@univ-mlv.fr wrote: On 12/04/2010 10:58 AM, Charles Oliver Nutter wrote: My current plan for the latter case is to have the compile emit a specialized each that we dispatch to rather than the canonical, global each. The code would be identical

Re: [jvm-l] Re: primitives as objects

2010-12-01 Thread Charles Oliver Nutter
On Wed, Dec 1, 2010 at 8:20 AM, Rémi Forax fo...@univ-mlv.fr wrote: i = 1234 p = proc {|i| puts i } You mean p = proc {|anything_but_i| puts i } Er, yeah :) objs = ['foo', [:a, :b], {:a =  :b}] for j in 1..1000 do   objs[j % 3].eachp end ... Here objs[..].each is megamorphic. That's

Re: [jvm-l] Re: primitives as objects

2010-11-30 Thread Charles Oliver Nutter
On Tue, Nov 30, 2010 at 5:59 PM, Rémi Forax fo...@univ-mlv.fr wrote: You're right. But in that case, you always execute the same code. So your runtime should do the stack allocation i.e use int instead of Integer. Well the case I'm interested in is for heap-based local variables. If it were

Re: [jvm-l] IO, finalization, and expectations from the Ruby community

2010-11-19 Thread Charles Oliver Nutter
On Fri, Nov 19, 2010 at 2:05 AM, David MacIver da...@drmaciver.com wrote: One solution you could use here is to use a weak reference on the original channel object instead of a finalizer and have a background thread (you're already running one for the JIT or something like that, right?)

Re: [jvm-l] IO, finalization, and expectations from the Ruby community

2010-11-19 Thread Charles Oliver Nutter
On Thu, Nov 18, 2010 at 11:02 PM, John Rose john.r.r...@oracle.com wrote: Suggestion:  Make the close behavior optional, per wrapper. Only set the mustClose bit on channels created via Ruby APIs. Yes, unfortunately that seems to be the only option, since pretty much everybody believes we need

Re: [jvm-l] IO, finalization, and expectations from the Ruby community

2010-11-19 Thread Charles Oliver Nutter
On Fri, Nov 19, 2010 at 11:50 AM, Charles Oliver Nutter head...@headius.com wrote: In order for the WeakReference to show up in the queue, the Channel it references would have to get collected...in which case I would no longer be able to close it. Am I missing something? It's worth saying

Re: [jvm-l] JVM options to turn server into client?

2010-11-09 Thread Charles Oliver Nutter
On Tue, Nov 9, 2010 at 9:09 AM, Rémi Forax fo...@univ-mlv.fr wrote: Do you try profile the rails apps + your runtime ? Yes, but unfortunately profiling either introduces so much overhead it masks the actual startup time...and profiling isn't particularly good at startup anyway. As far as

Re: [jvm-l] A second way of getting Class information needed?

2010-10-02 Thread Charles Oliver Nutter
On Sat, Oct 2, 2010 at 10:04 AM, Jochen Theodorou blackd...@gmx.org wrote: runtime class mirors means what? Parsing the jars and class files? Yes, just like javac loads classes into an internal mirror representation, that's what you would need to do in Groovy. Mirah's compiler also does this,

Re: [jvm-l] More on: Small static method marked not entrant, inlining reversed?

2010-09-25 Thread Charles Oliver Nutter
Thanks for a more complete example, Rémi :) Also interesting to find out that C1 handles the case better. So the manual workaround in my code (instanceof + cast) is only necessary on C2 :( - Charlie On Sat, Sep 18, 2010 at 12:25 PM, Rémi Forax fo...@univ-mlv.fr wrote: I take a little time to

[jvm-l] Re: Non-volatile fields as an ok soft thread local?

2010-09-13 Thread Charles Oliver Nutter
. On Mon, Sep 13, 2010 at 2:50 PM, Charles Oliver Nutter head...@headius.com wrote: I'm looking for a clear answer on this. I have various places in JRuby where I've been hassled for not using volatile fields. Specifically, on some of the method caches. These caches have non-volatile fields

[jvm-l] Re: Non-volatile fields as an ok soft thread local?

2010-09-13 Thread Charles Oliver Nutter
). With kind regards Ben On 13 Sep., 18:49, Charles Oliver Nutter head...@headius.com wrote: The objects in question are fully immutable with all final fields, so it sounds like I'm good to go. On Monday, September 13, 2010, Christian Vest Hansen karmazi...@gmail.com wrote: On Mon, Sep 13

Re: [jvm-l] Battling the code size monster

2010-09-10 Thread Charles Oliver Nutter
On Fri, Sep 10, 2010 at 4:26 PM, Matt Fowles matt.fow...@gmail.com wrote: Not to add to your woes, but argument length limits also bite us periodically.  The server JIT will refuse to compile any argument with 32 words of arguments, since we make heavy use of value types, we run afoul of this

Re: [jvm-l] Battling the code size monster

2010-09-10 Thread Charles Oliver Nutter
On Fri, Sep 10, 2010 at 4:53 PM, Rémi Forax fo...@univ-mlv.fr wrote: Like Matt says, I do variable-uses analysis. Our new compiler will be able to do that. It's too hard to do against the AST (or hard enough that I don't want to try). Of course banking on the new compiler is always a gamble :)

Re: [jvm-l] Small static method marked not entrant, inlining reversed?

2010-09-08 Thread Charles Oliver Nutter
generation) {       return klass.getCacheToken() == generation;   } then call getMetaClass() up one level of call stack? Matt On Tue, Sep 7, 2010 at 5:44 PM, Charles Oliver Nutter head...@headius.com wrote: I've been working on JRuby performance lately and ran into a peculiar situation. I

[jvm-l] Re: Small static method marked not entrant, inlining reversed?

2010-09-08 Thread Charles Oliver Nutter
hierarchy. - Charlie On Wed, Sep 8, 2010 at 6:34 AM, Charles Oliver Nutter head...@headius.com wrote: I'll give that a shot, Tom, thanks. Should have thought of it myself. On Wed, Sep 8, 2010 at 12:04 AM, Tom Rodriguez tom.rodrig...@oracle.com wrote: Did you run with -XX:+PrintInlining

[jvm-l] Re: Small static method marked not entrant, inlining reversed?

2010-09-08 Thread Charles Oliver Nutter
to inline that method? It seems like a case against using invokeinterface if at all possible, even against a shared class hierarchy. - Charlie On Wed, Sep 8, 2010 at 6:34 AM, Charles Oliver Nutter head...@headius.com wrote: I'll give that a shot, Tom, thanks. Should have thought of it myself

Re: [jvm-l] Re: Small static method marked not entrant, inlining reversed?

2010-09-08 Thread Charles Oliver Nutter
On Wed, Sep 8, 2010 at 7:10 AM, John Rose john.r.r...@oracle.com wrote: Also, to make the compiler really spill its guts, try +LogCompilation (google for the wiki page that discusses it). For whatever reaons, PrintInlining wouldn't show anything but intrinsics. Perhaps it's my build. I opted

Re: [jvm-l] Re: Small static method marked not entrant, inlining reversed?

2010-09-08 Thread Charles Oliver Nutter
On Wed, Sep 8, 2010 at 2:29 AM, John Rose john.r.r...@oracle.com wrote: That's exactly right.  Sounds like CHA (class hierarchy analysis) under interfaces would bail you out, at least until you created too many (1 or 2) disjoint IRubyObject implementations. Yes, it sounds like exactly what I

[jvm-l] Re: loading metaclasses quickly

2010-09-08 Thread Charles Oliver Nutter
On Thu, Sep 9, 2010 at 2:53 AM, John Rose john.r.r...@oracle.com wrote: Here's something to think about as an alternative to the instanceof/cast/invoke dance for getting metaclasses. At the Summit we were talking about managing metaobjects via a class-specific analogue of ThreadLocal.  

Re: [jvm-l] Naming the new language

2010-09-07 Thread Charles Oliver Nutter
On Mon, Sep 6, 2010 at 10:42 PM, Dibyendu Majumdar mob...@majumdar.org.uk wrote: [snip] The initial problem is how to load classes referred to in the source code, i.e., how to handle imports. Do I need to use something like ASM to locate and load references to classes, or is it possible to use

Re: [jvm-l] Totally OT (Jvm Summit)

2010-07-25 Thread Charles Oliver Nutter
Attila: I'll be showing Mirah + invokedynamic using your dynalang stuff, assuming I get it updated and working today. I'll be sure to give you props :) On Sun, Jul 25, 2010 at 1:59 AM, Attila Szegedi szege...@gmail.com wrote: Mustang convertible is way cooler than whatever is it you rented last

Re: [jvm-l] Totally OT (Jvm Summit)

2010-07-25 Thread Charles Oliver Nutter
(but will unfortunately be occupied during the days and cannot attend the actual summit). -tobias On Sun, Jul 25, 2010 at 8:51 PM, Charles Oliver Nutter head...@headius.comwrote: Attila: I'll be showing Mirah + invokedynamic using your dynalang stuff, assuming I get it updated and working today. I'll

Re: [jvm-l] Re: Google Go like language on JVM

2010-07-15 Thread Charles Oliver Nutter
On Wed, Jul 14, 2010 at 12:23 PM, Rémi Forax fo...@univ-mlv.fr wrote: Indeed. It was originally designed to help the adoption of JSR 292 but as far as I know few dynamic language developers use it :( We would love to use it, if it didn't require installing an agent. The offline weaver makes it

Re: [jvm-l] Re: Google Go like language on JVM

2010-07-15 Thread Charles Oliver Nutter
A bit of musing on which of these features I agree/disagree with and what's in Mirah or planned for Mirah... On Wed, Jul 14, 2010 at 4:52 AM, Shantanu Kumar kumar.shant...@gmail.com wrote: 1. Data should be immutable by default. I like Clojure's implementation of immutability and atom/ref

Re: [jvm-l] Re: Google Go like language on JVM

2010-07-13 Thread Charles Oliver Nutter
Looks like it is intended to be java with more language-level concurrency primitives. Probably worth looking into, if only to steal. :) - Charlie (from mobile) On Jul 13, 2010 6:16 PM, Mark Derricutt m...@talios.com wrote: Speaking about other new languages, Has anyone here looked at JR?

Re: [jvm-l] Google Go like language on JVM

2010-07-12 Thread Charles Oliver Nutter
Yes, that's a good reason not to implement another language :) I think Lisp has already done everything, hasn't it? Scala shouldn't have bothered! On Mon, Jul 12, 2010 at 7:00 PM, Kevin Wright kev.lee.wri...@gmail.com wrote: I think you'll find that Scala has already beaten you to it! As a

Re: [jvm-l] Google Go like language on JVM

2010-07-12 Thread Charles Oliver Nutter
You can certainly use JVM coroutines if you're willing to work in MLVM country: http://classparser.blogspot.com/2010/04/jruby-coroutines-really-fast.html Perhaps Mirah (Duby) should support JVM-native coroutines like JRuby will? I have no qualms about adding (optional) features to Mirah that

Re: [jvm-l] Google Go like language on JVM

2010-07-12 Thread Charles Oliver Nutter
On Mon, Jul 12, 2010 at 6:41 PM, Dibyendu Majumdar mob...@majumdar.org.uk wrote: Hi, I am thinking of creating a Google Go type language which can run on the JVM. The goal is to keep to the features supported efficiently in Java but (taking inspiration from Go), reduce the verbosity in the

Re: [jvm-l] Re: bignum implementation [was: Trace compiler]

2010-06-05 Thread Charles Oliver Nutter
Thanks very much Kresten. That satisfies my curiousity, and it makes perfect sense that you'd get performance close to the JRuby dynopt version with the way this compiles. It makes me wish Ruby were as straightforward at times :) I also see something else I find interesting: EObject apparently

Re: [jvm-l] Re: bignum implementation [was: Trace compiler]

2010-06-05 Thread Charles Oliver Nutter
On Sat, Jun 5, 2010 at 2:06 PM, Kresten Krab Thorup k...@trifork.com wrote: Oh, btw, ... In HotRuby I do the same.  The codegen for X + B is  X.fast_plus(B, SEL_PLUS).  (SEL_PLUS is statically allocated Selector object which is akin to a CallSite object)   And then fast_plus is implemented as

[jvm-l] Building base-hsdis disassembler for great justice

2010-06-04 Thread Charles Oliver Nutter
Thought I'd toss this out there for folks interested (or that might be able to help me). John Rose has been maintaining (or at least has pointers to) a Hotspot disassembler plugin here: http://wikis.sun.com/display/HotSpotInternals/PrintAssembly I've used it in the past, and although it's

Re: [jvm-l] Re: bignum implementation [was: Trace compiler]

2010-06-04 Thread Charles Oliver Nutter
On Fri, Jun 4, 2010 at 3:04 AM, John Cowan johnwco...@gmail.com wrote: I actually tested Integers (with autoboxing) against BigIntegers on a 32-bit system (I don't have a 64-bit system at present), and I made sure that the arithmetic operations I was performing never overflowed 32 bits.  The

Re: [jvm-l] Re: bignum implementation [was: Trace compiler]

2010-06-04 Thread Charles Oliver Nutter
On Fri, Jun 4, 2010 at 1:36 PM, Rémi Forax fo...@univ-mlv.fr wrote: Le 03/06/2010 08:17, Charles Oliver Nutter a écrit : [...] I'm curious why your base perf is so close to this final number, since it seems pretty amazing to me, and still doesn't have the guards it needs to be really valid

Re: [jvm-l] Growing GC Young Gen Times

2010-06-04 Thread Charles Oliver Nutter
Wow, very interesting! (he says, knowing full well 99% of the world would not find this interesting at all) I'll have to check the various JRuby-related JNI-based projects to see if we have any potential issues. On Fri, Jun 4, 2010 at 4:33 PM, Matt Fowles matt.fow...@gmail.com wrote: All~ For

Re: [jvm-l] Re: bignum implementation [was: Trace compiler]

2010-06-04 Thread Charles Oliver Nutter
On Fri, Jun 4, 2010 at 5:27 PM, Rémi Forax fo...@univ-mlv.fr wrote: Le 04/06/2010 23:08, Charles Oliver Nutter a écrit : I'll go as far as I can with this and meanwhile Tom and Subbu will continue working on the newer JRuby compiler that can actually do things like constant and type

Re: [jvm-l] Re: bignum implementation [was: Trace compiler]

2010-06-03 Thread Charles Oliver Nutter
Another data point for JRuby. JRuby has only two integer data types: Fixnum (implemented by RubyFixnum, always containing a long) and Bignum (implemented by RubyBignum, using BigDecimal). All Fixnum math operations have an overflow check, and the arbitrary-precision nature of integers will

  1   2   3   >