<br><br><div class="gmail_quote">On Sun, Mar 1, 2009 at 6:11 PM, Daniel Ingalls <span dir="ltr">&lt;<a href="mailto:dan@squeakland.org">dan@squeakland.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div style="word-wrap:break-word">Eliot Miranda &lt;<a href="mailto:eliot.miranda@gmail.com" target="_blank">eliot.miranda@gmail.com</a>&gt; wrote...<br><br><blockquote type="cite">You&#39;re absolutely right.  The major image-level change I will require is for Behavior to implement identityHash with a primitive that is different form that in Object.  Doing this allows me to implement a hidden class table in the VM where a class&#39;s identity hash is the index into the class table.  An instance of a class has the class&#39;s class table index (the class&#39;s id hash) stored in its header, not a direct pointer to the class.  So every object has a more compact class reference, say 16, 20 or 24 bits.  Also, class references in in-line and method caches are class indices, not direct class references, which means less work on GC.  But to ensure a class can be entered in the table by the VM at an unused index Behavi
ust be a special primitive that the VM implements as searching the table for an unused index.<br></blockquote><br>Hi, Eliot -<br><br>I&#39;ve been mostly lurking for a while here, but this topic has become more interesting with each tidbit.  I just wanted to say that I love the synergy between hash and class table rolled into the elimination of compact classes.  It&#39;s an improvement in every way.  I can&#39;t wait to see this all come to life.  You go, guy!</div>
</blockquote><div><br></div><div>Thanks, Dan!  The other goodness in this is that the 2-word header layout can be used in both a 32-bit and a 64-bit VM, which also means that the inline cacheing code that e.g. involves embedding a class index in a register load instruction is the same in both 32 and 64 bits, and hence is a leg up for a fast 64-bit VM.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div style="word-wrap:break-word"><br><br><span style="white-space:pre">        </span>- Dan<br></div>
<br><br>
<br></blockquote></div><br>