about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2020-05-18 01:02:35 -0700
committerKartik Agaram <vc@akkartik.com>2020-05-20 11:39:19 -0700
commitae911a6d85e2f483c0f5f983c754c7d7ba03aa01 (patch)
tree3984131f66f72e8db9380832f291a8b2a3562d94
parentc41528dfe6364919feaf1d8e049c37d9b8ce5ca2 (diff)
downloadmu-ae911a6d85e2f483c0f5f983c754c7d7ba03aa01.tar.gz
mu.subx: 37 failing tests remaining
-rw-r--r--apps/mu.subx24
1 files changed, 13 insertions, 11 deletions
diff --git a/apps/mu.subx b/apps/mu.subx
index 000d4af7..7c66a90d 100644
--- a/apps/mu.subx
+++ b/apps/mu.subx
@@ -941,7 +941,7 @@ test-convert-function-with-local-var-in-mem:
     5d/pop-to-ebp
     c3/return
 
-_failing-test-convert-function-with-local-var-with-compound-type-in-mem:
+test-convert-function-with-local-var-with-compound-type-in-mem:
     # . prologue
     55/push-ebp
     89/<- %ebp 4/r32/esp
@@ -985,7 +985,7 @@ _failing-test-convert-function-with-local-var-with-compound-type-in-mem:
     5d/pop-to-ebp
     c3/return
 
-_failing-test-convert-function-with-local-var-in-reg:
+test-convert-function-with-local-var-in-reg:
     # . prologue
     55/push-ebp
     89/<- %ebp 4/r32/esp
@@ -7134,18 +7134,20 @@ is-mu-array?:  # t: (addr tree type-id) -> result/eax: boolean
     51/push-ecx
     # ecx = t
     8b/-> *(ebp+8) 1/r32/ecx
-    # result = false
-    b8/copy-to-eax 0/imm32/false
-    # if t->left-is-atom, return false
-    81 7/subop/compare *ecx 0/imm32/false  # Tree-is-atom
-    75/jump-if-!= $is-mu-array?:end/disp8
-    # if !t->left->left-is-atom, return false
-    8b/-> *(ecx+4) 1/r32/ecx  # Tree-left
+    # if t->is-atom?, return false
     81 7/subop/compare *ecx 0/imm32/false  # Tree-is-atom
-    74/jump-if-= $is-mu-array?:end/disp8
+    75/jump-if-!= $is-mu-array?:return-false/disp8
+    # if !t->left->is-atom?, return false
+    (lookup *(ecx+4) *(ecx+8))  # Tree-left Tree-left => eax
+    81 7/subop/compare *eax 0/imm32/false  # Tree-is-atom
+    74/jump-if-= $is-mu-array?:return-false/disp8
     # return t->left->value == array
-    81 7/subop/compare *(ecx+4) 3/imm32/array-type-id  # Tree-value
+    81 7/subop/compare *(eax+4) 3/imm32/array-type-id  # Tree-value
     0f 94/set-if-= %al
+    81 4/subop/and %eax 0xff/imm32
+    eb/jump $is-mu-array?:end/disp8
+$is-mu-array?:return-false:
+    b8/copy-to-eax 0/imm32/false
 $is-mu-array?:end:
     # . restore registers
     59/pop-to-ecx