diff options
author | dos-reis <gdr@axiomatics.org> | 2012-02-27 02:16:00 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2012-02-27 02:16:00 +0000 |
commit | 5a8ab1eee58ce44dbdadc47b079b5925cbbf46b4 (patch) | |
tree | 3a5e28c98c2bc510e2765d4dececce7f34318c59 | |
parent | f719c82a459f911b71b8f9e445c7d1c872ead927 (diff) | |
download | open-axiom-5a8ab1eee58ce44dbdadc47b079b5925cbbf46b4.tar.gz |
* interp/compiler.boot (compFormWithModemap): Mark implementation
resolution as appropriate.
-rw-r--r-- | src/ChangeLog | 5 | ||||
-rw-r--r-- | src/interp/compiler.boot | 14 |
2 files changed, 13 insertions, 6 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index fcc54354..b84d41f2 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,10 @@ 2012-02-26 Gabriel Dos Reis <gdr@cs.tamu.edu> + * interp/compiler.boot (compFormWithModemap): Mark implementation + resolution as appropriate. + +2012-02-26 Gabriel Dos Reis <gdr@cs.tamu.edu> + * interp/compiler.boot (emitLocalCallInsn): Mark external operators as such, and local functions as such. (freeVarUsage): Do not count external and local functions. diff --git a/src/interp/compiler.boot b/src/interp/compiler.boot index f3420579..5692bc63 100644 --- a/src/interp/compiler.boot +++ b/src/interp/compiler.boot @@ -616,21 +616,23 @@ compFormWithModemap(form,m,e,modemap) == T := [x',target,e'] where x':= - form':= [f,:[t.expr for t in Tl]] + args := [t.expr for t in Tl] target = $Category or isCategoryForm(target,e) => -- Constructor instantiations are direct calls - ident? f and constructorDB f ~= nil => form' + ident? f and constructorDB f ~= nil => [f,:args] -- Otherwise, this is an indirect call - ['%call,:form'] + ['%call,f,:args] -- try to deal with new-style Unions where we know the conditions op = "elt" and f is ['XLAM,:.] and ident?(z := first argl) and (c := get(z,'condition,e)) and c is [["case",=z,c1]] and (c1 is [":",=(second argl),=m] or sameObject?(c1,second argl) ) => - -- first is a full tag, as placed by getInverseEnvironment - -- second is what getSuccessEnvironment will place there + -- first is a full tag, as placed by getInverseEnvironment + -- second is what getSuccessEnvironment will place there ['%tail,z] - ['%call,:form'] + -- Mark atomic implementations as external + f isnt [.,:.] => ['%call,['%external,f],:args] + ['%call,f,:args] e':= Tl ~= nil => last(Tl).env e |