]> gitweb.factorcode.org Git - factor.git/commitdiff
100kb image size reduction on x86 from addressing mode optimization
authorslava <slava@factorcode.org>
Thu, 9 Nov 2006 07:06:53 +0000 (07:06 +0000)
committerslava <slava@factorcode.org>
Thu, 9 Nov 2006 07:06:53 +0000 (07:06 +0000)
library/compiler/x86/assembler.factor

index b1ca1999afd5cb78b155a2edbed5573f7eea2a70..62a423898c9e595cf7de27424524388f957a3f70 100644 (file)
@@ -115,7 +115,8 @@ M: indirect extended? indirect-base extended? ;
 : canonicalize ( indirect -- )
     #! Modify the indirect to work around certain addressing mode
     #! quirks.
-    dup canonicalize-EBP canonicalize-ESP ;
+    dup canonicalize-EBP
+    canonicalize-ESP ;
 
 C: indirect ( base index scale displacement -- indirect )
     [ set-indirect-displacement ] keep
@@ -128,7 +129,10 @@ C: indirect ( base index scale displacement -- indirect )
     dup integer? [ >r f f f r> ] [ f f f ] if <indirect> ;
 
 : [+] ( reg displacement -- indirect )
-    dup integer? [ >r f f r> ] [ f f ] if <indirect> ;
+    dup integer?
+    [ dup zero? [ drop f ] when >r f f r> ]
+    [ f f ] if
+    <indirect> ;
 
 : reg-code "register" word-prop 7 bitand ;