RTAllocator
provides access to the runtime storage allocator.
\index{allocator}
\index{storage allocator}
\index{heap}
INTERFACEEach of the procedures described below allocates and initializes heap storage. Calling any of these procedures with a typecodeRTAllocator ; FROM RTType IMPORT Typecode;
tc
that
names a type T
is equivalent to calling NEW
for that type. It is a
checked runtime error to pass a typecode that is not proper. (See
RTType
for the definition of proper typecode.)
PROCEDURE NewTraced(tc: Typecode): REFANY RAISES {OutOfMemory};
Return a reference to a freshly allocated and initialized, traced referent with typecodetc
. It is a checked runtime error iftc
does not name a traced reference type other thanREFANY
, or if its referent is an open array.
PROCEDURE NewUntraced(tc: Typecode): ADDRESS RAISES {OutOfMemory};
Return a reference to a freshly allocated and initialized, untraced referent with typecodetc
. It is a checked runtime error iftc
does not name an untraced reference type other thanADDRESS
, or if it names an untraced object type, or if its referent is an open array.
PROCEDURE NewUntracedObject(tc: Typecode): UNTRACED ROOT RAISES {OutOfMemory};
Return a freshly allocated and initialized, untraced object with typecodetc
. It is a checked runtime error iftc
does not name an untraced object type.
TYPE Shape = ARRAY OF INTEGER; PROCEDURE NewTracedArray(tc: Typecode; READONLY s: Shape): REFANY RAISES {OutOfMemory};
Return a reference to a freshly allocated and initialized, traced open array referent with typecodetc
and sizess[0]
, ...,s[LAST(s)]
. It is a checked runtime error iftc
does not name a traced reference to an open array, or if anys[i]
is negative, or ifNUMBER(s)
does not equal the number of open dimensions of the array.
PROCEDURE NewUntracedArray(tc: Typecode; READONLY s: Shape): ADDRESS RAISES {OutOfMemory};
Return a reference to a freshly allocated and initialized, untraced open array referent with typecodetc
and sizess[0]
, ...,s[LAST(s)]
. It is a checked runtime error iftc
does not name an untraced reference to an open array, or if anys[i]
is negative, or ifNUMBER(s)
does not equal the number of open dimensions of the array.
PROCEDURE Clone (ref: REFANY): REFANY RAISES {OutOfMemory};
Return a reference to a freshly allocated and initialized, traced reference, object or array. The new referent will have the same runtime type asref
and a copy of its contents,ref^
.
EXCEPTION OutOfMemory;
Raised if the allocator was unable to allocate the requested object
--------------------------------------------------------- SRC only ---
VAR callback: PROCEDURE (ref: REFANY) := NIL;
If non-NIL, the allocator callscallback(r)
just before returning a new traced referencer
. SeeRTAllocStats
for an example client.
END RTAllocator.