diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2021-02-05 22:06:27 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2021-02-05 22:06:27 -0800 |
commit | 79b3a51396f069b8775a0f71849b821cb9627b29 (patch) | |
tree | 957e118338e1a660c4509800cfac6a6ae2e91278 | |
parent | a9870a810fda3bd415f4250188f0af17e53fe759 (diff) | |
download | txr-79b3a51396f069b8775a0f71849b821cb9627b29.tar.gz txr-79b3a51396f069b8775a0f71849b821cb9627b29.tar.bz2 txr-79b3a51396f069b8775a0f71849b821cb9627b29.zip |
compiler: take advantage of new scoping in optimizer.
* share/txr/stdlib/optimize.tl (basic-blocks peephole): Get
rid of @(op ...) and @(require ...) operators in favor of
direct backreferencing.
-rw-r--r-- | share/txr/stdlib/optimize.tl | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/share/txr/stdlib/optimize.tl b/share/txr/stdlib/optimize.tl index 4b446baf..4f69d424 100644 --- a/share/txr/stdlib/optimize.tl +++ b/share/txr/stdlib/optimize.tl @@ -61,8 +61,8 @@ (((jmp @jlabel) . @rest) (let ((jinsns [bb.hash jlabel])) (match-case jinsns - ((@(op eq jlabel) - (jmp @(require @jjlabel (neq jjlabel jlabel))) . @nil) + ((@jlabel + (jmp @(and @jjlabel @(not @jlabel))) . @nil) ^((jmp ,jjlabel) ,*rest)) (@jelse insns)))) (((if @reg @jlabel0) @@ -75,30 +75,30 @@ (((if @reg @jlabel) . @rest) (let ((jinsns [bb.hash jlabel])) (match-case jinsns - ((@(op eq jlabel) - (if @(op eq reg) - @(require @jjlabel (neq jjlabel jlabel))) . @nil) + ((@jlabel + (if @reg + @(and @jjlabel @(not @jlabel))) . @nil) ^((if ,reg ,jjlabel) ,*rest)) - ((@(op eq jlabel) - (jmp @(require @jjlabel (neq jjlabel jlabel))) . @nil) + ((@jlabel + (jmp @(and @jjlabel @(not @jlabel))) . @nil) ^((if ,reg ,jjlabel) ,*rest)) (@jelse insns)))) (((ifq @reg @creg @jlabel) . @rest) (let ((jinsns [bb.hash jlabel])) (match-case jinsns - ((@(op eq jlabel) - (ifq @(op eq reg) @(op eq creg) - @(require @jjlabel (neq jjlabel jlabel))) . @nil) + ((@jlabel + (ifq @reg @creg + @(and @jjlabel @(not @jlabel))) . @nil) ^((ifq ,reg ,creg ,jjlabel) ,*rest)) - ((@(op eq jlabel) - (jmp @(require @jjlabel (neq jjlabel jlabel))) . @nil) + ((@jlabel + (jmp @(and @jjlabel @(not @jlabel))) . @nil) ^((ifq ,reg ,creg ,jjlabel) ,*rest)) (@jelse insns)))) (((close @reg @nargs @jlabel . @cargs) . @rest) (let ((jinsns [bb.hash jlabel])) (match-case jinsns - ((@(op eq jlabel) - (jmp @(require @jjlabel (neq jjlabel jlabel))) . @nil) + ((@jlabel + (jmp @(and @jjlabel @(not @jlabel))) . @nil) ^((close ,reg ,nargs ,jjlabel ,*cargs) ,*rest)) (@jelse insns)))) ;; wasteful moves |