[MLton] NLFFI
   
    Matthew Fluet
     
    fluet@cs.cornell.edu
       
    Fri, 2 Jul 2004 16:34:18 -0400 (EDT)
    
    
  
> Regarding _dimport, would it be possible to think of _dimport as the
> primitive and implement _import in terms of _dimport by adding another
> primitive like _symbol?  So,
I don't necessarily think it is a good idea.  If
   _symbol "f" : Word32.word (* MLton.Pointer.t *)
and
     e : Word32.word
   -------------------
   (_import e : t) : t
Then it seems to me that the codegen will end up doing:
   (_dimport (_symbol "f"): int -> unit;) 1
as
   movl f,%eax
   pushl 1
   call (%eax)
And, I think that is bad for the processor, because calls are nicer when
they are PC relative addresses.
Arguably, it's just something for the processor to clean up after.  But, I
think that calling a static name and calling a dynamic value are fairly
different.
> For now, I'd like to keep the mlb files more focused on being in the
> clean SML world and having a clean semantics.  To solve the above
> problem, it seems better to me to adopt some convention or let our
> users figure one out, like including a top-level Makefile in each
> distributed library that has a phony "mlton-compile-options" target
> that prints out the needed options.  Yeah, it's not so composable or
> clean, but that may be a more accurate reflection of the real world
> than putting annotations in mlbs.
O.k.  I wasn't overly excited about it.