Wednesday Nov 25, 2009
Tuesday Nov 10, 2009
Bytecodes meet Combinators: invokedynamic on the JVM
John Rose, VMIL '09 Workshop at OOPSLA, Orlando, October 2009
The focus of the paper is on evaluating the architectural effect of adding invokedynamic to JVM bytecodes. The description of JSR 292 is partial and provisional but I expect the part I have described is mostly stable. There is a lot of overview of (a) current implementation techniques for JVM languages, (b) how these techniques adapt to invokedynamic, and (c) how a JVM might optimize invokedynamic. The treatment is not specific to HotSpot. I hope it is useful to JVM teams and to dynamic language implementors.
Thursday Sep 17, 2009
It's been wonderful so far, and I'm looking forward to the final day tomorrow. You can see what we've been talking about by clicking on the talk links in the agenda; most of the slide decks are uploaded there...[Read More]
Monday Jul 27, 2009
Thursday Jun 04, 2009
...I have posted the slides. The code examples are also on-line.[Read More]
Wednesday Jun 03, 2009
Monday Jun 01, 2009
Wednesday Apr 15, 2009
May 8 update: After the conference I enjoyed a video chat with Charles Torre of Microsoft Channel 9 about the Da Vinci Machine Project. Charles has posted a number of very good interviews from Lang.NET; check out those with Lars, Gilad, Anders, and Erik. Also, the Lang.NET organizers have posted synchronized slides and audio of the talks.
Wednesday Mar 25, 2009
Monday Feb 16, 2009
invokedynamic. Like the other four invocation instructions, it is statically typed. What is new is that an invokedynamic instruction is dynamically linked under program control. In this blog, I will be giving “recipes” to demonstrate some of its applications. For today, here is a light aperitif showing how invokedynamic could be used to simulate the other invocation instructions. Caution: This blog post is for people who enjoy their bytecodes full strength and without mixers.[Read More]
Thursday Oct 02, 2008

Pizza with extra MOP
Here are my top-level takeaways:
- The
invokedynamicdesign is sound, but the exposition needs more work. - The synergy of JSR 292 with Attila Szegedi’s MOP looks very promising.
- Interface injection is going to be helpful to a lot of people, and it is not hard to implement (on top of method handles).
- Tailcall and value types will never go away. We have to plan for them.
- Unless we do this sort of innovation on the JVM, crucial multicore research will move elsewhere.
- We have to do this again next year.
Tuesday Aug 26, 2008
In the wee hours of this morning, the JVM has for the first time processed a full bootstrap cycle for invokedynamic instructions, linking the constant pool entries, creating the reified call site object, finding and calling the per-class bootstrap method, linking the reified call site to a method handle, and then calling the linked call site 999 more times through the method handle, at full speed. The method names mentioned by the caller and the callee were different, though the signatures were the same. The linkage was done by random, hand-written Java code inside the bootstrap methdod.
The Email thread of the announcement is truly international, since Guillaume Laforge celebrated by sending virtual champagne.
The example code is included in the Email, and also posted (as a truly rebarbative test in a NetBeans project) with the patches. As for the JVM code, it only works on x86/32; the next step is to move the assembler code into the right files, and finish the support for x86/64 and SPARC.
Happy International Invokedynamic Day!
(And by a curious anagrammatic permutation of letters, it could also be International Davinci-Monkey Day. My co-workers, who watched me pounding on my keyboard all summer, claim to see some significance in this.)
Saturday May 31, 2008
Here are the top ten things I learned about Android and the Dalvik VM...[Read More]
Monday May 19, 2008
Update: There are some good conversations going on about the EDR at the jvm-languages Google group. Here are some rough changes to the EDR I will be proposing in response; the EG may choose to make these changes (or something like them) official with an EDR update pushed through the JCP (Java Community Process).
Saturday May 10, 2008
In other news, today (May 10th) is National Train Day. On this day 139 years ago, a ceremonial golden spike was driven at Promontory Summit, Utah, joining the Central Pacific and Union Pacific railways into a single transcontinental line. The continent was very suddenly smaller, because people, goods, and mail could be moved more quickly from coast to coast, a task which was previously done with wagons, horses, and boats. In the years leading up to this watershed event, two railroads were built, with great difficulty and ingenuity, from each coast, to meet at Promontory Summit.
There is a Promontory Summit and a golden spike in our future also... [Read More]
This blog copyright 2009 by jrose


