[MLton-devel] datatype variant tag optimization
   
    Stephen Weeks
     
    MLton@mlton.org
       
    Sat, 16 Nov 2002 13:46:12 -0800
    
    
  
> The object types are really just object masks indicating size and
> pointers.  If we ever wanted a type-safe/directed GC, then we would
> likely need a lot more object types, although I suspect still well
> below 2^19.
Agreed (on both counts).
> I wouldn't say 2 has no additional limitations.  If I had a datatype with
> 100 value carrying variants, all with the same pointer mask, then you're
> going to induce 100 different object types, because each one needs it's
> own variant tag.  So, you still cut into total number of object types.
> The advantage of 2 is that it is "dynamic" with respect to the program
> being compiled.
Agreed.
> Also, it's not clear that you need the extra memory reference to get the
> variant tag.  If each variant tag corresponds to a unique type index, why
> not just use the type index as the variant? 
An excellent idea.
> All we do with it is compare it for equality on pattern matches, so
> the actual number isn't important.
Not entirely agreed.  :-)
Both gcc and the native backend sometimes use the fact that the
variant tags are consecutive integers in order to build a jump table.
But, there is no reason why we couldn't arrange the type indices to be
consecutive.  It would still save us the extra memory reference.
-------------------------------------------------------
This sf.net email is sponsored by: To learn the basics of securing 
your web site with SSL, click here to get a FREE TRIAL of a Thawte 
Server Certificate: http://www.gothawte.com/rd524.html
_______________________________________________
MLton-devel mailing list
MLton-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mlton-devel