aboutsummaryrefslogtreecommitdiff
path: root/src/interp/lisp-backend.boot
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2011-09-11 21:16:16 +0000
committerdos-reis <gdr@axiomatics.org>2011-09-11 21:16:16 +0000
commit82b165809b7b67864b2ed9bc8217a2a197f58621 (patch)
tree72e0709c43ae8c844b85c1346870229ea5426860 /src/interp/lisp-backend.boot
parentc868015d912449eb551ff379031b4fe4b3fab255 (diff)
downloadopen-axiom-82b165809b7b67864b2ed9bc8217a2a197f58621.tar.gz
* interp/lisplib.boot (isFunctor): Noe recognize Mapping as a functor.
* interp/g-opt.boot (doInlineCall): Tidy one more time. ($VMsideEffectFreeOperators): Move %aplly to $simpleVMoperators. (optLET): Remove as unused. * interp/lisp-backend.boot (expandApply): New. Register as expander for %apply forms. * interp/define.boot (getXmode): New. (displayMissingFunctions): Use it instead of getmode. (compDefineCapsuleFunction): Likewise. (addDomain): Likewise. (getSignature): Likewise. (compile): Likewise. (compJoin): Likewise. * interp/compiler.boot (comp3): Likewise. (compWithMappingMode): Likewise. (applyMapping): Generate %apply form. (compApplication): Likewise. (autoCoerceByModemap): Likewise. (extractCodeAndConstructTriple): Handle %apply forms. (setqSingle): For domain variables, put corresponding macro forms in the environment. * algebra/ore.spad.pamphlet (Automorphism): Define Rep as a constant. Adjust; include explicit uses of rep and per.
Diffstat (limited to 'src/interp/lisp-backend.boot')
-rw-r--r--src/interp/lisp-backend.boot6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/interp/lisp-backend.boot b/src/interp/lisp-backend.boot
index 6354a5cf..79200c61 100644
--- a/src/interp/lisp-backend.boot
+++ b/src/interp/lisp-backend.boot
@@ -461,6 +461,9 @@ expandTry ['%try,expr,handlers,cleanup] ==
cleanup = nil => tryBlock
['UNWIND_-PROTECT,tryBlock,:expandToVMForm rest cleanup]
+expandApply ['%apply,op,:args] ==
+ ['SPADCALL,:args,op]
+
++ Opcodes with direct mapping to target operations.
for x in [
-- Boolean constants
@@ -701,7 +704,8 @@ for x in [
['%store, :function expandStore],
['%dynval, :function expandDynval],
['%throw, :function expandThrow],
- ['%try, :function expandTry]
+ ['%try, :function expandTry],
+ ['%apply, :function expandApply]
] repeat property(first x,'%Expander) := rest x
++ Return the expander of a middle-end opcode, or nil if there is none.