welcome to the Da Vinci archipelago

John Rose John.Rose at Sun.COM
Tue Apr 15 02:45:34 PDT 2008


As you can see from the Mercurial changeset notifications that just  
went out, we have a repository for the Da Vinci Machine project.

The repository does not hold a separate copy of the JVM.  Rather, it  
is a Mercurial patch repository[0], a system of version-controlled  
patch files, each of which applies to the OpenJDK master source  
repository.

At this point, there are three parts, three islands in what I trust  
will someday be a thriving cyber-polynesia:

0. The rules under which patches will co-exist are embodied in a  
README, assisted by a few shell scripts.
1. The anonk patch set, an implementation of VM-native anonymous  
classes, as previously blogged by me.
2. The callcc patch set, a first cut at VM-native continuations.

All of these are works in progress.  Please try out the setup, and if  
you find something that doesn't work right or is unclear, please  
propose a fix and send me a patch.  At first, I'll apply the patches,  
with suitable Contributed-by lines.[1]

To start, pull http://hg.openjdk.java.net/mlvm/mlvm and read the  
README.  Or just browse:  http://hg.openjdk.java.net/mlvm/mlvm/rev/ 
1e070e27ffd7

The anonk patch set is a proposed fast path[2] for loading bytecodes,  
such as JRuby invokers.  It currently needs a pre-JDK7 emulation  
package, which takes the bytes, applies the CP patches the hard way,  
chooses a strange name (instead of no name), probably creates a fresh  
class loader, and loads it up.

The callcc patch set is a proof of concept of the copyStack/ 
restoreStack API.  It is an early snapshot of something Lukas Stadler 
[3] is now working on.

Another island which will soon rise out of the sea will be the home  
of method handles.[4]  Unlike the first two projects, method handles  
are likely to be included in the first version of JSR 292, as an  
essential underpinning of invokedynamic.  (Thus, it will be the first  
civilized island, since it will evolve under JCP oversight.)

Best wishes,
-- John Rose

[0] http://hgbook.red-bean.com/hgbookch12.html , http:// 
www.selenic.com/mercurial/wiki/index.cgi/MqExtension
[1] http://openjdk.java.net/guide/producingChangeset.html
[2] http://blogs.sun.com/jrose/entry/anonymous_classes_in_the_vm
[3] http://mail.openjdk.java.net/pipermail/mlvm-dev/2008-April/ 
000037.html
[4] http://openjdk.java.net/projects/mlvm/subprojects.html#MethodHandles




More information about the mlvm-dev mailing list