The development of a Java VM for .NET
Milestone! I just managed to JIT the entire transitive closure of classes required to run Hello World (304 classes).
It doesn't run yet, because I don't have the required classpath native methods yet and the resulting exe (708KB) contains tons of verification errors, but this is definitely an exciting step.
I had to make a few minor changes to the classpath source:
removed java/lang/CharSequence interface from java/lang/String and added workarounds to make it compile after this
removed equals() and hashCode() from java/util/Collection
removed equals() from java/util/Comparator
The equals() and hashCode() methods in interfaces don't really do anything, but at the moment I cannot handle them. It would be trivial to add code to handle them, but I don't want to hardcode that kind of stuff, all method remapping should be based on the XML file that defines the remappings.
Download here.
Remember Me
I apologize for the lameness of this, but the comment spam was driving me nuts. In order to be able to post a comment, you need to answer a simple question. Hopefully this question is easy enough not to annoy serious commenters, but hard enough to keep the spammers away.
Anti-Spam Question: What method on java.lang.System returns an object's original hashcode (i.e. the one that would be returned by java.lang.Object.hashCode() if it wasn't overridden)? (case is significant)