diff options
-rw-r--r-- | src/ChangeLog | 6 | ||||
-rw-r--r-- | src/algebra/mkfunc.spad.pamphlet | 8 | ||||
-rw-r--r-- | src/interp/g-opt.boot | 2 | ||||
-rw-r--r-- | src/interp/lisp-backend.boot | 1 |
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 |