about summary refs log tree commit diff stats
path: root/apps
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2020-06-28 23:09:10 -0700
committerKartik Agaram <vc@akkartik.com>2020-06-28 23:09:10 -0700
commit896e3bcfb28eeb27cf67289e38b26156b872e1df (patch)
treea914c89e144cc0e4d4802ccebd3b14339e5434d9 /apps
parentd31bd529f756e2b26bb05a1e9b1ad04d451d934b (diff)
downloadmu-896e3bcfb28eeb27cf67289e38b26156b872e1df.tar.gz
6589
Diffstat (limited to 'apps')
-rwxr-xr-xapps/mubin338359 -> 338299 bytes
-rw-r--r--apps/mu.subx17
2 files changed, 5 insertions, 12 deletions
diff --git a/apps/mu b/apps/mu
index 2561389a..7a11220f 100755
--- a/apps/mu
+++ b/apps/mu
Binary files differdiff --git a/apps/mu.subx b/apps/mu.subx
index 9ded880c..15e9e51e 100644
--- a/apps/mu.subx
+++ b/apps/mu.subx
@@ -10655,12 +10655,11 @@ check-mu-numberlike-primitive:  # stmt: (addr stmt), fn: (addr function), err: (
     # var gas/ecx: int = 2
     b9/copy-to-ecx 2/imm32
     # - check at most 1 output
-    # var output/edi: (addr var) = stmt->outputs->value
+    # var output/eax: (addr stmt-var) = stmt->outputs
     (lookup *(esi+0x14) *(esi+0x18))  # Stmt1-outputs Stmt1-outputs => eax
     {
       3d/compare-eax-and 0/imm32
-      0f 84/jump-if-= break/disp32
-      89/<- %edi 0/r32/eax
+      74/jump-if-= break/disp8
       (lookup *(eax+8) *(eax+0xc))  # Stmt-var-next Stmt-var-next => eax
       3d/compare-eax-and 0/imm32
       0f 85/jump-if-!= $check-mu-numberlike-primitive:error-too-many-outputs/disp32
@@ -10672,25 +10671,19 @@ check-mu-numberlike-primitive:  # stmt: (addr stmt), fn: (addr function), err: (
     (lookup *(esi+0xc) *(esi+0x10))  # Stmt1-inouts Stmt1-inouts => eax
     {
       3d/compare-eax-and 0/imm32
-      0f 84/jump-if-= break/disp32
-      81 7/subop/compare %ecx 0/imm32
-      0f 84/jump-if-= break/disp32
+      74/jump-if-= $check-mu-numberlike-primitive:end/disp8
       # --gas
       49/decrement-ecx
     }
     # - check second inout
-    (lookup *(esi+0xc) *(esi+0x10))  # Stmt1-inouts Stmt1-inouts => eax
+    (lookup *(eax+8) *(eax+0xc))  # Stmt-var-next Stmt-var-next => eax
     {
       3d/compare-eax-and 0/imm32
-      0f 84/jump-if-= break/disp32
-      (lookup *(eax+8) *(eax+0xc))  # Stmt-var-next Stmt-var-next => eax
-      3d/compare-eax-and 0/imm32
-      0f 84/jump-if-= break/disp32
+      74/jump-if-= break/disp8
       # is a second inout allowed?
       81 7/subop/compare %ecx 0/imm32
       0f 84/jump-if-= $check-mu-numberlike-primitive:error-too-many-inouts/disp32
     }
-    # check types are one of literal, int, boolean
 $check-mu-numberlike-primitive:end:
     # . restore registers
     5e/pop-to-esi