/* $Header$ */
/*
* Copyright © 1988-2004 Keith Packard and Bart Massey.
* All Rights Reserved. See the file COPYING in this directory
* for licensing information.
*/
#include "nickle.h"
static void
FrameMark (void *object)
{
Frame *frame = object;
do
{
MemReference (frame->staticLink);
MemReference (frame->function);
MemReference (frame->frame);
MemReference (frame->statics);
MemReference (frame->saveObj);
frame = frame->previous;
} while (MemReferenceNoRecurse (frame) == 0);
}
DataType FrameType = { FrameMark, 0, "FrameType" };
FramePtr
NewFrame (Value function,
FramePtr previous,
FramePtr staticLink,
BoxTypesPtr dynamics,
BoxPtr statics)
{
ENTER ();
FramePtr frame;
frame = ALLOCATE (&FrameType, sizeof (Frame));
frame->previous = previous;
frame->staticLink = staticLink;
frame->function = function;
frame->savePc = 0;
frame->saveObj = 0;
frame->statics = statics;
frame->frame = 0;
if (dynamics)
frame->frame = NewTypedBox (False, dynamics);
RETURN (frame);
}
syntax highlighted by Code2HTML, v. 0.9.1