From f0b6be21e20a76251afe2bc2ae92800fb267da0b Mon Sep 17 00:00:00 2001 From: dos-reis Date: Fri, 30 Apr 2010 14:53:30 +0000 Subject: * 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. --- src/interp/compiler.boot | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) (limited to 'src/interp/compiler.boot') 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) == -- cgit v1.2.3