diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2021-02-19 19:03:41 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2021-02-19 19:03:41 -0800 |
commit | b935372fce93056240e3fae71c5095fd26fbdb13 (patch) | |
tree | 5a21bf5f7e513e43248d80bff577d0a1e15d2d9c /share | |
parent | f42715f03ed773d375d88717c65605b020cfc467 (diff) | |
download | txr-b935372fce93056240e3fae71c5095fd26fbdb13.tar.gz txr-b935372fce93056240e3fae71c5095fd26fbdb13.tar.bz2 txr-b935372fce93056240e3fae71c5095fd26fbdb13.zip |
compiler: constant fold pred/succ functions.
* share/txr/stdlib/compiler.tl (%const-foldable-funs%): Add
pred, succ and their sisters.
* share/txr/stdlib/vm-param.tl (%max-lev-idx%, %max-v-lev%,
%max-sm-lev-idx%): Get rid of macro-time wrapping in
calculation, which are there for manual constant folding.
* share/txr/stdlib/asm.tl (with-lev-idx): Remove macro-time
providing manual constant folding.
Diffstat (limited to 'share')
-rw-r--r-- | share/txr/stdlib/asm.tl | 2 | ||||
-rw-r--r-- | share/txr/stdlib/compiler.tl | 5 | ||||
-rw-r--r-- | share/txr/stdlib/vm-param.tl | 6 |
3 files changed, 8 insertions, 5 deletions
diff --git a/share/txr/stdlib/asm.tl b/share/txr/stdlib/asm.tl index 89ad4b3a..624ddff6 100644 --- a/share/txr/stdlib/asm.tl +++ b/share/txr/stdlib/asm.tl @@ -270,7 +270,7 @@ (defmacro with-lev-idx ((lev-var idx-var) val-expr . body) (with-gensyms (val-var) ^(let* ((,val-var ,val-expr) - (,lev-var (ash ,val-var (macro-time (- %lev-bits%)))) + (,lev-var (ash ,val-var (- %lev-bits%))) (,idx-var (logtrunc ,val-var %lev-bits%))) ,*body)))) diff --git a/share/txr/stdlib/compiler.tl b/share/txr/stdlib/compiler.tl index 774a1616..f7ed530e 100644 --- a/share/txr/stdlib/compiler.tl +++ b/share/txr/stdlib/compiler.tl @@ -258,7 +258,10 @@ (defvarl %bin-op% (relate %nary-ops% %bin-ops% nil)) -(defvarl %const-foldable-funs% '(+ - * / b- b+ b* b/ car cdr cadr caddr first second)) +(defvarl %const-foldable-funs% '(+ - * / b- b+ b* b/ + pred ppred ppred pppred + succ ssucc ssucc sssucc + car cdr cadr caddr first second)) (defvarl assumed-fun) diff --git a/share/txr/stdlib/vm-param.tl b/share/txr/stdlib/vm-param.tl index b8b8d77f..d87e5bf3 100644 --- a/share/txr/stdlib/vm-param.tl +++ b/share/txr/stdlib/vm-param.tl @@ -25,12 +25,12 @@ ;; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. (defsymacro %lev-size% 1024) -(defsymacro %max-lev-idx% (macro-time (pred %lev-size%))) +(defsymacro %max-lev-idx% (pred %lev-size%)) (defsymacro %lev-bits% 10) (defsymacro %max-lev% 63) -(defsymacro %max-v-lev% (macro-time (ppred %max-lev%))) +(defsymacro %max-v-lev% (ppred %max-lev%)) (defsymacro %sm-lev-size% 64) -(defsymacro %max-sm-lev-idx% (macro-time (pred %sm-lev-size%))) +(defsymacro %max-sm-lev-idx% (pred %sm-lev-size%)) (defsymacro %max-sm-lev% 15) (defsymacro %sm-lev-bits% 6) (defsymacro %max-lambda-fixed-args% 127) |