aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ChangeLog6
-rw-r--r--src/algebra/mkfunc.spad.pamphlet8
-rw-r--r--src/interp/g-opt.boot2
-rw-r--r--src/interp/lisp-backend.boot1
4 files changed, 13 insertions, 4 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 99adb3f1..6334dc87 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,9 @@
+2011-02-11 Gabriel Dos Reis <gdr@cs.tamu.edu>
+
+ * interp/g-opt.boot ($VMsideEffectFreeOperators): Include %funcall
+ and %nothing.
+ * algebra/mkfunc.spad.pamphlet: Use %funcall instead of FUNCALL.
+
2011-02-10 Gabriel Dos Reis <gdr@cs.tamu.edu>
* interp/vmlisp.lisp (VEC-SETELT): Remove.
diff --git a/src/algebra/mkfunc.spad.pamphlet b/src/algebra/mkfunc.spad.pamphlet
index 1c3cfc04..e3e81eea 100644
--- a/src/algebra/mkfunc.spad.pamphlet
+++ b/src/algebra/mkfunc.spad.pamphlet
@@ -289,7 +289,9 @@ MakeUnaryCompiledFunction(S, D, I): Exports == Implementation where
func: (SY, D) -> I
- func(name, x) == FUNCALL(name, x, NIL$Lisp)$Lisp
+ func(name: SY, x: D): I ==
+ %funcall(name, x, %nil$Foreign(Builtin))$Foreign(Builtin)
+
unaryFunction name == func(name, #1)
compiledFunction(e:S, x:SY) ==
@@ -330,9 +332,9 @@ MakeBinaryCompiledFunction(S, D1, D2, I):Exports == Implementation where
Implementation ==> add
import MakeFunction(S)
- func: (SY, D1, D2) -> I
+ func(name: SY, x: D1, y: D2): I ==
+ %funcall(name, x, y, %nil$Foreign(Builtin))$Foreign(Builtin)
- func(name, x, y) == FUNCALL(name, x, y, NIL$Lisp)$Lisp
binaryFunction name == func(name, #1, #2)
compiledFunction(e, x, y) ==
diff --git a/src/interp/g-opt.boot b/src/interp/g-opt.boot
index 6d4b3e41..797b50d8 100644
--- a/src/interp/g-opt.boot
+++ b/src/interp/g-opt.boot
@@ -404,7 +404,7 @@ optSuchthat [.,:u] == ["SUCHTHAT",:u]
++ List of VM side effect free operators.
$VMsideEffectFreeOperators ==
'(SPADfirst ASH IDENTP FLOAT_-RADIX FLOAT FLOAT_-SIGN
- %when %false %true %otherwise %2bit %2bool
+ %funcall %nothing %when %false %true %otherwise %2bit %2bool
%and %or %not %peq %ieq %ilt %ile %igt %ige %head %tail %integer?
%beq %blt %ble %bgt %bge %bitand %bitior %bitxor %bitnot %bcompl
%ilength %ibit %icst0 %icst1
diff --git a/src/interp/lisp-backend.boot b/src/interp/lisp-backend.boot
index 151520d1..915b4efb 100644
--- a/src/interp/lisp-backend.boot
+++ b/src/interp/lisp-backend.boot
@@ -587,6 +587,7 @@ for x in [
['%lam, :'LAMBDA],
['%leave, :'RETURN],
['%otherwise,:'T],
+ ['%funcall, :'FUNCALL],
['%when, :'COND]
] repeat property(first x,'%Rename) := rest x