diff options
author | dos-reis <gdr@axiomatics.org> | 2010-06-22 17:20:38 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2010-06-22 17:20:38 +0000 |
commit | b06599402ca23cce8ba7eea03886dc11a5d29af4 (patch) | |
tree | 763ae52bb73dfb7f76feb7433b7853056acb9605 /src/algebra/strap/LIST.lsp | |
parent | 48d55f8e89cdc22afbf661b823bf059d231b0db4 (diff) | |
download | open-axiom-b06599402ca23cce8ba7eea03886dc11a5d29af4.tar.gz |
Group sequence of LETT definitions into LET/LET* expressions where
appropriate.
* interp/g-opt.boot (jumpToToplevel?): New.
(singleAssignment?): Likewise.
(groupVariableDefinitions): Likewise. Use them.
(optimizeFunctionDef): Group toplevel variable definitions into
a bind expression.
* interp/g-util.boot (expandBind): Tidy.
* interp/c-util.boot (transformToBackendCode): Refrain from
enclosing let-expressions in SEQ if not needed.
Diffstat (limited to 'src/algebra/strap/LIST.lsp')
-rw-r--r-- | src/algebra/strap/LIST.lsp | 80 |
1 files changed, 33 insertions, 47 deletions
diff --git a/src/algebra/strap/LIST.lsp b/src/algebra/strap/LIST.lsp index 3eec6e6d..3f7d4cd1 100644 --- a/src/algebra/strap/LIST.lsp +++ b/src/algebra/strap/LIST.lsp @@ -74,34 +74,24 @@ (EXIT (SPADCALL |dev| (|getShellEntry| $ 24))))) (DEFUN |LIST;OMwrite;$S;6| (|x| $) - (PROG (|s| |sp| |dev|) - (RETURN - (SEQ (LETT |s| "" |LIST;OMwrite;$S;6|) - (LETT |sp| (OM-STRINGTOSTRINGPTR |s|) |LIST;OMwrite;$S;6|) - (LETT |dev| - (SPADCALL |sp| (SPADCALL (|getShellEntry| $ 26)) - (|getShellEntry| $ 27)) - |LIST;OMwrite;$S;6|) - (SPADCALL |dev| (|getShellEntry| $ 28)) - (|LIST;writeOMList| |dev| |x| $) - (SPADCALL |dev| (|getShellEntry| $ 29)) - (SPADCALL |dev| (|getShellEntry| $ 30)) - (SETQ |s| (OM-STRINGPTRTOSTRING |sp|)) (EXIT |s|))))) + (LET* ((|s| "") (|sp| (OM-STRINGTOSTRINGPTR |s|)) + (|dev| (SPADCALL |sp| (SPADCALL (|getShellEntry| $ 26)) + (|getShellEntry| $ 27)))) + (SEQ (SPADCALL |dev| (|getShellEntry| $ 28)) + (|LIST;writeOMList| |dev| |x| $) + (SPADCALL |dev| (|getShellEntry| $ 29)) + (SPADCALL |dev| (|getShellEntry| $ 30)) + (SETQ |s| (OM-STRINGPTRTOSTRING |sp|)) (EXIT |s|)))) (DEFUN |LIST;OMwrite;$BS;7| (|x| |wholeObj| $) - (PROG (|s| |sp| |dev|) - (RETURN - (SEQ (LETT |s| "" |LIST;OMwrite;$BS;7|) - (LETT |sp| (OM-STRINGTOSTRINGPTR |s|) |LIST;OMwrite;$BS;7|) - (LETT |dev| - (SPADCALL |sp| (SPADCALL (|getShellEntry| $ 26)) - (|getShellEntry| $ 27)) - |LIST;OMwrite;$BS;7|) - (COND (|wholeObj| (SPADCALL |dev| (|getShellEntry| $ 28)))) - (|LIST;writeOMList| |dev| |x| $) - (COND (|wholeObj| (SPADCALL |dev| (|getShellEntry| $ 29)))) - (SPADCALL |dev| (|getShellEntry| $ 30)) - (SETQ |s| (OM-STRINGPTRTOSTRING |sp|)) (EXIT |s|))))) + (LET* ((|s| "") (|sp| (OM-STRINGTOSTRINGPTR |s|)) + (|dev| (SPADCALL |sp| (SPADCALL (|getShellEntry| $ 26)) + (|getShellEntry| $ 27)))) + (SEQ (COND (|wholeObj| (SPADCALL |dev| (|getShellEntry| $ 28)))) + (|LIST;writeOMList| |dev| |x| $) + (COND (|wholeObj| (SPADCALL |dev| (|getShellEntry| $ 29)))) + (SPADCALL |dev| (|getShellEntry| $ 30)) + (SETQ |s| (OM-STRINGPTRTOSTRING |sp|)) (EXIT |s|)))) (DEFUN |LIST;OMwrite;Omd$V;8| (|dev| |x| $) (SEQ (SPADCALL |dev| (|getShellEntry| $ 28)) @@ -119,27 +109,23 @@ (|getShellEntry| $ 36))) (DEFUN |LIST;setIntersection;3$;11| (|l1| |l2| $) - (PROG (|u|) - (RETURN - (SEQ (LETT |u| (SPADCALL (|getShellEntry| $ 38)) - |LIST;setIntersection;3$;11|) - (SETQ |l1| (SPADCALL |l1| (|getShellEntry| $ 36))) - (LOOP - (COND - ((NOT (NOT (SPADCALL |l1| (|getShellEntry| $ 39)))) - (RETURN NIL)) - (T (SEQ (COND - ((SPADCALL - (SPADCALL |l1| (|getShellEntry| $ 20)) - |l2| (|getShellEntry| $ 40)) - (SETQ |u| - (CONS (SPADCALL |l1| - (|getShellEntry| $ 20)) - |u|)))) - (EXIT (SETQ |l1| - (SPADCALL |l1| - (|getShellEntry| $ 23)))))))) - (EXIT |u|))))) + (LET ((|u| (SPADCALL (|getShellEntry| $ 38)))) + (SEQ (SETQ |l1| (SPADCALL |l1| (|getShellEntry| $ 36))) + (LOOP + (COND + ((NOT (NOT (SPADCALL |l1| (|getShellEntry| $ 39)))) + (RETURN NIL)) + (T (SEQ (COND + ((SPADCALL + (SPADCALL |l1| (|getShellEntry| $ 20)) |l2| + (|getShellEntry| $ 40)) + (SETQ |u| + (CONS (SPADCALL |l1| + (|getShellEntry| $ 20)) + |u|)))) + (EXIT (SETQ |l1| + (SPADCALL |l1| (|getShellEntry| $ 23)))))))) + (EXIT |u|)))) (DEFUN |LIST;setDifference;3$;12| (|l1| |l2| $) (PROG (|lu| |l11|) |