summaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2021-02-19 19:03:41 -0800
committerKaz Kylheku <kaz@kylheku.com>2021-02-19 19:03:41 -0800
commitb935372fce93056240e3fae71c5095fd26fbdb13 (patch)
tree5a21bf5f7e513e43248d80bff577d0a1e15d2d9c /share
parentf42715f03ed773d375d88717c65605b020cfc467 (diff)
downloadtxr-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.tl2
-rw-r--r--share/txr/stdlib/compiler.tl5
-rw-r--r--share/txr/stdlib/vm-param.tl6
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)