aboutsummaryrefslogtreecommitdiff
path: root/src/interp
diff options
context:
space:
mode:
Diffstat (limited to 'src/interp')
-rw-r--r--src/interp/c-util.boot3
-rw-r--r--src/interp/i-map.boot2
-rw-r--r--src/interp/i-spec1.boot2
-rw-r--r--src/interp/slam.boot2
-rw-r--r--src/interp/vmlisp.lisp10
5 files changed, 6 insertions, 13 deletions
diff --git a/src/interp/c-util.boot b/src/interp/c-util.boot
index cfb1b9da..d5e78051 100644
--- a/src/interp/c-util.boot
+++ b/src/interp/c-util.boot
@@ -800,8 +800,7 @@ sublisV(p,e) ==
suba(p,e) ==
STRINGP e => e
-- no need to descend vectors unless they are categories
- --REFVECP e => LIST2REFVEC [suba(p,e.i) for i in 0..MAXINDEX e]
- isCategory e => LIST2REFVEC [suba(p,e.i) for i in 0..MAXINDEX e]
+ isCategory e => LIST2VEC [suba(p,e.i) for i in 0..MAXINDEX e]
atom e => (y:= ASSQ(e,p) => rest y; e)
u:= suba(p,QCAR e)
v:= suba(p,QCDR e)
diff --git a/src/interp/i-map.boot b/src/interp/i-map.boot
index 241ba8e0..2199f298 100644
--- a/src/interp/i-map.boot
+++ b/src/interp/i-map.boot
@@ -759,7 +759,7 @@ compileCoerceMap(op,argTypes,mm) ==
body := ['SPADCALL,:argCode,['LIST,['function,imp]]]
minivectorName := makeInternalMapMinivectorName(name)
body := substitute(minivectorName,"$$$",body)
- setDynamicBinding(minivectorName,LIST2REFVEC $minivector)
+ setDynamicBinding(minivectorName,LIST2VEC $minivector)
compileInteractive
[name,['LAMBDA,parms,declareGlobalVariables [minivectorName],body]]
CAR sig
diff --git a/src/interp/i-spec1.boot b/src/interp/i-spec1.boot
index 7f9600c0..f9b1fb60 100644
--- a/src/interp/i-spec1.boot
+++ b/src/interp/i-spec1.boot
@@ -156,7 +156,7 @@ compileADEFBody(t,vars,types,body,computedResultType) ==
$compiledOpNameList := [$mapName]
minivectorName := makeInternalMapMinivectorName(PNAME $mapName)
body := substitute(minivectorName,"$$$",body)
- setDynamicBinding(minivectorName,LIST2REFVEC $minivector)
+ setDynamicBinding(minivectorName,LIST2VEC $minivector)
-- The use of the three variables $definingMap, $genValue and $compilingMap
-- is to cover the following cases:
diff --git a/src/interp/slam.boot b/src/interp/slam.boot
index 8adf4882..9e950e61 100644
--- a/src/interp/slam.boot
+++ b/src/interp/slam.boot
@@ -45,7 +45,7 @@ reportFunctionCompilation(op,nam,argl,body,isRecursive) ==
$compiledOpNameList := [nam]
minivectorName := makeInternalMapMinivectorName(nam)
body := substitute(minivectorName,"$$$",body)
- setDynamicBinding(minivectorName,LIST2REFVEC $minivector)
+ setDynamicBinding(minivectorName,LIST2VEC $minivector)
argl := COPY argl -- play it safe for optimization
init :=
not(isRecursive and $compileRecurrence and #argl = 1) => nil
diff --git a/src/interp/vmlisp.lisp b/src/interp/vmlisp.lisp
index d47b763c..72d79e12 100644
--- a/src/interp/vmlisp.lisp
+++ b/src/interp/vmlisp.lisp
@@ -962,14 +962,8 @@
(defun LIST2VEC (list)
(if (consp list)
- (let* ((len (length list))
- (vec (make-array len)))
- (dotimes (i len)
- (setf (aref vec i) (pop list)))
- vec)
- (coerce list 'vector)))
-
-(define-function 'LIST2REFVEC #'LIST2VEC)
+ (make-array (list-length list) :initial-contents list)
+ (coerce list 'vector)))
; 16.2 Accessing