[MLton] space safety for structures
   
    Daniel C. Wang
     
    danwang@CS.Princeton.EDU
       
    Fri, 02 Jul 2004 18:02:26 -0400
    
    
  
Stephen Weeks wrote:
{stuff deleted}
> What I'm wondering is how do separate-compilation systems deal with
> this problem, if they do, or do they just use a weaker notion of space
> safety than we do?  This question comes to mind because it seems like
> part of the reason that MLton is so slow in compiling HOL is that it
> is doing whole-program liveness analysis and completely decomposing
> structures, hence achieving a very aggressive notion of space safety.
Perhaps, I'm missing something, but this is my model of how seperate 
compilation works.
fun S () = let
  val l = <big object>
  val x = <small object>
in {x=x,l=l}
end
fun T () = let
  val _ = <long computation>
in () end
fun U Sx = let
  val _ = <use of S.x not S. l>
in () end
S, T, and U can all be compile seperately
fun main () =
  val {x=Sl,l=Sx} = S ()
  val _ = T ()
  val _ = U Sx
in ()
end
Here its clear that l is dead at runtime after we execute the effects 
associated with S. Anyway, this is my model about how it should work.