The RTAllocator interface

RTAllocator provides access to the runtime storage allocator. allocator

storage allocator

heap

INTERFACE RTAllocator;

FROM RTType IMPORT Typecode;

Each of the procedures described below allocates and initializes heap storage. Calling any of these procedures with a 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;

Return a reference to a freshly allocated and initialized, traced referent with typecode tc. It is a checked runtime error if tc does not name a traced reference type other than REFANY, or if its referent is an open array.

PROCEDURE NewUntraced(tc: Typecode): ADDRESS;

Return a reference to a freshly allocated and initialized, untraced referent with typecode tc. It is a checked runtime error if tc does not name an untraced reference type other than ADDRESS, or if it names an untraced object type, or if its referent is an open array.

PROCEDURE NewUntracedObject(tc: Typecode): UNTRACED ROOT;

Return a freshly allocated and initialized, untraced object with typecode tc. It is a checked runtime error if tc does not name an untraced object type.

TYPE Shape = ARRAY OF INTEGER;

PROCEDURE NewTracedArray(
    tc: Typecode;
    READONLY s: Shape): REFANY;

Return a reference to a freshly allocated and initialized, traced open array referent with typecode tc and sizes s[0], ..., s[LAST(s)]. It is a checked runtime error if tc does not name a traced reference to an open array, or if any s[i] is negative, or if NUMBER(s) does not equal the number of open dimensions of the array.

PROCEDURE NewUntracedArray(
    tc: Typecode;
    READONLY s: Shape): ADDRESS;

Return a reference to a freshly allocated and initialized, untraced open array referent with typecode tc and sizes s[0], ..., s[LAST(s)]. It is a checked runtime error if tc does not name an untraced reference to an open array, or if any s[i] is negative, or if NUMBER(s) does not equal the number of open dimensions of the array.

--------------------------------------------------------- SRC only ---

VAR callback: PROCEDURE (ref: REFANY) := NIL;

If non-NIL, the allocator calls callback(r) just before returning a new traced reference r. See RTAllocStats for an example client.

END RTAllocator.