[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Foreign code in T



I've been writing some graphics code in T lately, and I've become curious
about how T implements the interface to foreign code (on an Apollo).

First, how is the memory space for the foreign code managed?  In particular,
how is dynamic allocation/release handled?  I have written a shell for T
that allows me to run programs, etc., from inside T (so that T looks like
a shell so long as the input doesn't start with a left paren) and occasionally
I'll get a message along the lines of "Out of memory" when I try to do an
'ls' or something similar.  This usually self-corrects, which leads me to
believe that some kind of memory management is occuring in the foreign code
space.

Secondly, WATCH leads me to believe that CALL-XENOID is hellishly
expensive in terms of CONS cells.  My guess is that this arises from the
XENOIDs that are built to handle argument passing.  If this is true, can
the interface be changed to pool XENOIDs and reuse them when possible?

Thanks,

    Scott R. Turner
    ARPA:  (now) srt@UCLA-LOCUS.ARPA  (soon) srt@LOCUS.UCLA.EDU
    UUCP:  ...!{cepu,ihnp4,trwspp,ucbvax}!ucla-cs!srt
    SPUDNET: ...eye%srt@russet.spud