aboutsummaryrefslogtreecommitdiff
path: root/src/interp/i-map.boot
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2010-05-27 05:43:57 +0000
committerdos-reis <gdr@axiomatics.org>2010-05-27 05:43:57 +0000
commit8f5399e77de0741651b0d058b1aa7f57f43aedb0 (patch)
tree99afff91fbcc1a5b0668cb62c703bd52e3ecbbd6 /src/interp/i-map.boot
parenta7e98a2ab2fcc87c3505ab11708d5bf24607ae85 (diff)
downloadopen-axiom-8f5399e77de0741651b0d058b1aa7f57f43aedb0.tar.gz
* interp/i-map.boot (compileCoerceMap): Minivectors are global
variables. Generate appropriate code. * interp/i-spec1.boot (compileTargetedADEF): Likewise. (compileADEFBody): Likewise. * interp/slam.boot (isRecurrenceRelation): Likewise. Adjust patterns to match minivectors. (mkDiffAssoc): Likewise. (reportFunctionCompilation): Don't declare minivectors.
Diffstat (limited to 'src/interp/i-map.boot')
-rw-r--r--src/interp/i-map.boot12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/interp/i-map.boot b/src/interp/i-map.boot
index ab24945f..713f32d2 100644
--- a/src/interp/i-map.boot
+++ b/src/interp/i-map.boot
@@ -763,16 +763,16 @@ compileCoerceMap(op,argTypes,mm) ==
name:= makeLocalModemap(op,[first sig,:argTypes])
argCode := [objVal(coerceInteractive(objNew(arg,t1),t2) or
throwKeyedMsg("S2IC0001",[arg,$mapName,t1,t2]))
- for t1 in argTypes for t2 in rest sig for arg in parms]
+ for t1 in argTypes for t2 in sig.source for arg in parms]
$insideCompileBodyIfTrue := false
parms:= [:parms,'envArg]
body := ['SPADCALL,:argCode,['LIST,['function,imp]]]
- minivectorName := makeInternalMapMinivectorName(name)
- body := declareUnusedParameters(parms,substitute(minivectorName,"$$$",body))
+ minivectorName := makeInternalMapMinivectorName name
+ body := substitute(["%dynval",MKQ minivectorName],"$$$",body)
setDynamicBinding(minivectorName,LIST2VEC $minivector)
- compileInteractive
- [name,['LAMBDA,parms,declareGlobalVariables [minivectorName],:body]]
- first sig
+ compileInteractive
+ [name,['LAMBDA,parms,:declareUnusedParameters(parms,body)]]
+ sig.target
depthOfRecursion(opName,body) ==
-- returns the "depth" of recursive calls of opName in body