aboutsummaryrefslogtreecommitdiff
path: root/kernel/vmemitcodes.ml
diff options
context:
space:
mode:
authorGuillaume Melquiond2020-12-27 10:36:31 +0100
committerGuillaume Melquiond2021-01-10 10:24:10 +0100
commitd009572893913b889320f2fa3435543ee4c63f82 (patch)
treef15d2920bb65b888f6c21754b3cd9ee2c9723bcf /kernel/vmemitcodes.ml
parent723440611965ccdecfd56e61c8f1f8618a08841d (diff)
Remove PUSHACC0, as it is strictly equivalent to PUSH.
Diffstat (limited to 'kernel/vmemitcodes.ml')
-rw-r--r--kernel/vmemitcodes.ml4
1 files changed, 3 insertions, 1 deletions
diff --git a/kernel/vmemitcodes.ml b/kernel/vmemitcodes.ml
index c1d8fcb855..e70285d9ab 100644
--- a/kernel/vmemitcodes.ml
+++ b/kernel/vmemitcodes.ml
@@ -375,7 +375,9 @@ let rec emit env insns remaining = match insns with
| (first::rest) -> emit env first rest)
(* Peephole optimizations *)
| Kpush :: Kacc n :: c ->
- if n < 8 then out env(opPUSHACC0 + n) else (out env opPUSHACC; out_int env n);
+ if n = 0 then out env opPUSH
+ else if n < 8 then out env (opPUSHACC1 + n - 1)
+ else (out env opPUSHACC; out_int env n);
emit env c remaining
| Kpush :: Kenvacc n :: c ->
if n >= 0 && n <= 3