
Bits of Advice for the VM Writer - jsnell
http://www.slideshare.net/curryon/cliff-clickbitsofadviceforthevmwriter
======
hga
By Clifford Click, from ~20 years of experience with just Hotspot.

Some hard earned knowledge, like:

    
    
      • GC requires SP (& usually PC) for stack roots
      • Hard to find the SP+PC of remote thread
       ─ Common problem of OS's
       ─ ! Very surprising to me, until I tried it !
       ─ Fails (w/low frequency) on many “robust” OSes!
       ─ Caught in page fault handler, nested in tlb handler, nested in stack overflow handler nested in ....
    

Ouch!

------
viraptor
I'd like to go back in time a few years and show people slide 7 saying:
"Footprint: embedded (1G), desktop (32G+), ...". While it's mostly true, my
initial response was "WHAT?"

I still remember the J2ME which was running on tiny feature phones. And carry
a yubikey which runs JavaCard.

------
desdiv
From page 40:

>Thing I won't do again...

>Write a VM in C/C++

>-Java plenty fast now

What is he trying to say here?

Is he saying that he would use Java to write a VM? Wouldn't there be two
layers of GC then?

Or is he suggesting a stripped-down, GC-less variant Java instead?

~~~
jerven
There a number of JVM's written in Java with an mini interpreter in machine
code. All code starts in the interpreter. GC and JIT run on themselves, more
and more code gets optimized and no longer runs in the mini interpreter but
actually is machine code.

I believe maxime and JikesVM are java with minimal assembly interpreters.
There is one for Squeek and smalltalk as well. PyPy probably fits in this
category as well.

All though all of these are meta circular now. i.e. the assembly mini
interpreter has been thrown away and the generated machine code saved and
shipped as a bin/exe.

