about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2020-07-24 22:10:09 -0700
committerKartik Agaram <vc@akkartik.com>2020-07-24 22:10:09 -0700
commit2a1b9d32d7bdeb2fe148f51e83bc28a68b23d431 (patch)
treeb7675f1c6838320fc03bb470329cd91d53e74350
parent750f490b4d195259821e77ba23540ebd252f1af6 (diff)
downloadmu-2a1b9d32d7bdeb2fe148f51e83bc28a68b23d431.tar.gz
6668
type-match? is no longer symmetric; we have to be careful about arg ordering.
-rwxr-xr-xapps/mubin359122 -> 359122 bytes
-rw-r--r--apps/mu.subx7
2 files changed, 4 insertions, 3 deletions
diff --git a/apps/mu b/apps/mu
index e3382205..1926795b 100755
--- a/apps/mu
+++ b/apps/mu
Binary files differdiff --git a/apps/mu.subx b/apps/mu.subx
index a68ee60d..9a024318 100644
--- a/apps/mu.subx
+++ b/apps/mu.subx
@@ -12471,13 +12471,14 @@ $type-component-match?:compare-addr:
     39/compare %edx 0/r32/eax  # Var-type
     b8/copy-to-eax 1/imm32/true
     0f 84/jump-if-= $type-component-match?:end/disp32
-$type-component-match?:check-type-parameter:
     # if def is a type parameter, return true
     {
+$type-component-match?:check-type-parameter:
       81 7/subop/compare *ecx 0/imm32/false  # Type-tree-is-atom
       74/jump-if-= break/disp8
       81 7/subop/compare *(ecx+4) 0xa/imm32/type-parameter  # Type-tree-value
       75/jump-if-!= break/disp8
+$type-component-match?:type-parameter:
       b8/copy-to-eax 1/imm32/true
       0f 84/jump-if-= $type-component-match?:end/disp32
     }
@@ -12504,7 +12505,7 @@ $type-component-match?:check-left:
     (lookup *(ecx+4) *(ecx+8))  # Type-tree-left Type-tree-left => eax
     89/<- %ebx 0/r32/eax
     (lookup *(edx+4) *(edx+8))  # Type-tree-left Type-tree-left => eax
-    (type-component-match? %eax %ebx)  # => eax
+    (type-component-match? %ebx %eax)  # => eax
     3d/compare-eax-and 0/imm32/false
     74/jump-if-= $type-component-match?:end/disp8
 $type-component-match?:check-right:
@@ -12512,7 +12513,7 @@ $type-component-match?:check-right:
     (lookup *(ecx+0xc) *(ecx+0x10))  # Type-tree-right Type-tree-right => eax
     89/<- %ebx 0/r32/eax
     (lookup *(edx+0xc) *(edx+0x10))  # Type-tree-right Type-tree-right => eax
-    (type-component-match? %eax %ebx)  # => eax
+    (type-component-match? %ebx %eax)  # => eax
 $type-component-match?:end:
     # . restore registers
     5b/pop-to-ebx