RSSA

Matthew Fluet fluet@CS.Cornell.EDU
Mon, 7 Jan 2002 20:43:26 -0500 (EST)


> > There is also the C-calling convention which requires the caller to pop
> > the c-stack of callee arguments.  Technically, this seems like a CReturn
> > type of operation, but we don't know the number and/or size of the
> > arguments there.  It seems really messy to pass an args list to each
> > CReturn.  It's not a big deal; the pop is trivial (i.e., won't touch
> > any registers besides %esp) and can be done before transfering to the
> > CReturn.
> 
> Fine.  But I don't mind adding it to the CReturn as well.

O.k.  Here's a more serious concern.  Many of the primitives that are
implemented via Ccalls (the impCCall predicate) need to work with the
returned value; e.g., all the intInf operations are implemented as
C-calls, but after returning from C, I need to update the frontier and
extract the real result.  So, I think CReturn needs a Prim.t, so I know
what to do; that gets messy, because it means that the implementation of a
lot of primitives need be split into what to do at the CCall and what to
do at the CReturn.