diff options
author | dos-reis <gdr@axiomatics.org> | 2010-04-30 14:53:30 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2010-04-30 14:53:30 +0000 |
commit | f0b6be21e20a76251afe2bc2ae92800fb267da0b (patch) | |
tree | 738bf6386eb25b036815808639ae1dd5e78d8cc9 /src/interp/compiler.boot | |
parent | 95a8891a808572509f7449aa32022df42f8b7ab8 (diff) | |
download | open-axiom-f0b6be21e20a76251afe2bc2ae92800fb267da0b.tar.gz |
* interp/macros.lisp (|check-subtype|): Return coerced value if can.
(|check-union|): Likewise.
* interp/compiler.boot (coerceSuperset): Tidy. Generate %Retract
instruction.
* interp/g-opt.boot (optRetract): New.
Diffstat (limited to 'src/interp/compiler.boot')
-rw-r--r-- | src/interp/compiler.boot | 13 |
1 files changed, 1 insertions, 12 deletions
diff --git a/src/interp/compiler.boot b/src/interp/compiler.boot index a8f63b8a..74847aaa 100644 --- a/src/interp/compiler.boot +++ b/src/interp/compiler.boot @@ -1762,18 +1762,7 @@ coerceSuperset(T,sub) == rplac(second T',"$") T' pred := isSubset(sub,T.mode,T.env) => - -- Don't bother introducing a temporary if we have an - -- atomic expression. - simple? := atom T.expr and not MEMQ(T.expr,$functorLocalParameters) - g := - simple? => T.expr - GENSYM() - result := - simple? => g - ["%LET",g,T.expr] - pred := substitute(g,"#1",pred) - code := ["PROG1",result, ["check-subtype",pred,MKQ sub,g]] - [code,sub,T.env] + [["%Retract",T.expr,sub,pred],sub,T.env] nil compCoerce1(x,m',e) == |