aboutsummaryrefslogtreecommitdiffstats
path: root/java/debug.sh
diff options
context:
space:
mode:
authorMattias Engdegård2023-02-10 14:38:26 +0100
committerMattias Engdegård2023-02-11 12:52:18 +0100
commit85a2eb2c789e7f9c1afa838817b3e9ebecb49da4 (patch)
tree5f7bf9440b12a25a9dbf2d5e02f99f7986c18cb0 /java/debug.sh
parentdc3604cadfa8f4bc3e5d9346029e48b4268fcd60 (diff)
downloademacs-85a2eb2c789e7f9c1afa838817b3e9ebecb49da4.tar.gz
emacs-85a2eb2c789e7f9c1afa838817b3e9ebecb49da4.zip
LAP peephole optimiser improvementsa
* lisp/emacs-lisp/byte-opt.el (byte-optimize-lapcode): Make the improvements: - Add the rule stack-ref(X) discardN-preserve-tos(Y) --> discard(Y) stack-ref(X-Y), X≥Y discard(X) discardN-preserve-tos(Y-X-1), X<Y with the usual equivalences: stack-set(1) = discardN-preserve-tos(1) stack-ref(0) = dup discard(0) = discardN-preserve-tos(0) = no-op This rule hoists stack reduction to where it is more likely to be exploited further, may reduce the op size through smaller immediates, and sometimes removes either or both operations outright. The rule is inhibited by an immediately following `return` op because other rules will produce better code in that case. - Add the rule (discardN-preserve-tos|dup) OP return --> OP return where OP is a unary operation such as `not` or `car`. - Generalise a previous rule to NOEFFECT PRODUCER return --> PRODUCER return where PRODUCER is now any op that pushes a value without looking at the stack: const, varref, point etc.
Diffstat (limited to 'java/debug.sh')
0 files changed, 0 insertions, 0 deletions