[LispM-Hackers] Funcall notes

James A. Crippen james@unlambda.com
18 Oct 2001 13:34:26 -0800


I just checked in a file that outlines the CALL instructions and how
they seem to work, according to the documentation.  I still have a few
unanswered questions.

Particularly, there are a few comments in the SSDN which seem opaque
to me.  The part about "Most functional objects will eventually return
here, having led to a compiled function (DTP-FUNCTION) object; this
dispatch pushes its own address and falls through on DTP-FUNCTIONs."

What is it that pushes its own address?  And why do things return
here?  Where's 'here'?

Another question is where the location-counter offset goes when it's
calculated from the previous function.

Do we need to check for PDL-buffer overflow or does PDL-buffer in this
case refer to the PDL-cache that is in the processor?  If indeed we
need to grow the PDL-buffer then what do we do?

What happens if we have too many arguments?  Do we crash?  Do we
pop the extras off and ignore them?  Do we just do nothing and hope
that the function will figure it out or that the args will just get
popped away at some point?

There's some opaque verbage in the comment about 'advancing the insn
stream'.

Anyway, I'd appreciate it if people would take a look at the file and
read this message and see if anyone has any insights into my
questions.  This part of the SSDN is not as detailed as I'd like in
some ways, and it's frustrating because it assumes the reader has
information that I haven't found yet.

'james

-- 
James A. Crippen <james@unlambda.com> ,-./-.  Anchorage, Alaska,
Lambda Unlimited: Recursion 'R' Us   |  |/  | USA, 61.2069 N, 149.766 W,
Y = \f.(\x.f(xx)) (\x.f(xx))         |  |\  | Earth, Sol System,
Y(F) = F(Y(F))                        \_,-_/  Milky Way.