54 lines
1.5 KiB
Plaintext
54 lines
1.5 KiB
Plaintext
|
DEFINITION MODULE Storage;
|
|||
|
(*
|
|||
|
Standard dynamic storage management
|
|||
|
|
|||
|
|
|||
|
Derived from the Lilith Modula-2 system developed by the
|
|||
|
group of Prof. N. Wirth at ETH Zurich, Switzerland.
|
|||
|
|
|||
|
|
|||
|
Storage management for dynamic variables. Calls to the
|
|||
|
Modula-2 standard procedures NEW and DISPOSE are translated
|
|||
|
into calls to ALLOCATE and DEALLOCATE. The standard way to
|
|||
|
provide these two procedures is to import them from this
|
|||
|
module 'Storage'.
|
|||
|
*)
|
|||
|
|
|||
|
FROM SYSTEM IMPORT ADDRESS;
|
|||
|
|
|||
|
EXPORT QUALIFIED
|
|||
|
ALLOCATE, DEALLOCATE, Available, InstallHeap, RemoveHeap;
|
|||
|
|
|||
|
|
|||
|
PROCEDURE ALLOCATE (VAR a: ADDRESS; size: CARDINAL);
|
|||
|
(*- Allocate some dynamic storage.
|
|||
|
in: size number of bytes to allocate,
|
|||
|
out: a ADDRESS of allocated storage.
|
|||
|
|
|||
|
The actual number of bytes allocated may be slightly greater
|
|||
|
than 'size', due to administrative overhead.
|
|||
|
If not enough space is available, the calling program is
|
|||
|
terminated with the status 'heapovf'.
|
|||
|
*)
|
|||
|
|
|||
|
PROCEDURE DEALLOCATE (VAR a: ADDRESS; size: CARDINAL);
|
|||
|
(*- Release some dynamic storage.
|
|||
|
in: a ADDRESS of the area to release,
|
|||
|
size number of bytes to be released,
|
|||
|
out: a set to NIL.
|
|||
|
*)
|
|||
|
|
|||
|
PROCEDURE Available (size: CARDINAL) : BOOLEAN;
|
|||
|
(*- Test whether some number of bytes could be allocated.
|
|||
|
in: size number of bytes
|
|||
|
out: TRUE if ALLOCATE(p,size) would succeed.
|
|||
|
*)
|
|||
|
|
|||
|
PROCEDURE InstallHeap;
|
|||
|
(*- Used by the loader -*)
|
|||
|
|
|||
|
PROCEDURE RemoveHeap;
|
|||
|
(*- Used by the loader -*)
|
|||
|
|
|||
|
END Storage.
|
|||
|
|