Skip to content
Snippets Groups Projects
Commit 7badf899 authored by rtoy's avatar rtoy
Browse files

Add support for static arrays that are not moved by GC. This is based

on an idea from Carl and Lynn Quam's foreign vector code that he sent
many years ago.  The static arrays will be GCed if nothing references
them.

The static arrays are currently limited to strings, 8, 16, and 32-bit
integers (signed and unsigned), single and double floats, and complex
single and double floats.  Static arrays are not adjustable because
adjusting an array can change the address if the array grows.  (Ok
if the array shrinks, but not implemented.)

To indicate a static array, the data portion of the vector header word
is set to 1.  It is normally 0 for all other Lisp vectors.

code/array.lisp:
o Add :ALLOCATION keyword arg to MAKE-ARRAY to allow allocation of
  static vectors.  Do the appropriate thing for static arrays.
o Add MAKE-STATIC-VECTOR.  This is Lynn's foreign vector stuff
  rewritten in Lisp instead of the original mix of Lisp and C.
o Add STATIC-ARRAY-P to tell if an array is static or not.
o Signal errors in MAKE-ARRAY and ADJUST-ARRAY for invalid options
  with static arrays.

code/describe.lisp:
o Indicate if the array is static.

compiler/fndb.lisp:
o Tell compiler about new keyword argument, :allocation, for
  MAKE-ARRAY.
parent 1bc09566
No related branches found
Tags 2.002
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment