]> gitweb.factorcode.org Git - factor.git/commitdiff
Merge branch 'master' into more_aggressive_coalescing
authorSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Mon, 28 Sep 2009 00:29:50 +0000 (19:29 -0500)
committerSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Mon, 28 Sep 2009 00:29:50 +0000 (19:29 -0500)
1  2 
basis/compiler/cfg/instructions/instructions.factor
basis/cpu/architecture/architecture.factor
basis/cpu/ppc/ppc.factor
basis/cpu/x86/x86.factor

Simple merge
index 3a41b331d9e2c3f180301b01285ba1e5c1eaac2f,51b5cef23a334ce9060c6b051e0cdb89a4a71891..e78519b9e0f389242bd78640176f700e9768d036
@@@ -142,16 -135,23 +142,19 @@@ M: double-2-rep copy-register* drop MOV
  M: vector-rep copy-register* drop MOVDQU ;
  
  M: x86 %copy ( dst src rep -- )
-     2over eq? [ 3drop ] [ copy-register* ] if ;
+     2over eq? [ 3drop ] [
+         [ [ dup spill-slot? [ n>> spill@ ] when ] bi@ ] dip
+         copy-register*
+     ] if ;
  
 -:: overflow-template ( label dst src1 src2 insn -- )
 -    src1 src2 insn call
 -    label JO ; inline
 -
  M: x86 %fixnum-add ( label dst src1 src2 -- )
 -    [ ADD ] overflow-template ;
 +    int-rep two-operand ADD JO ;
  
  M: x86 %fixnum-sub ( label dst src1 src2 -- )
 -    [ SUB ] overflow-template ;
 +    int-rep two-operand SUB JO ;
  
  M: x86 %fixnum-mul ( label dst src1 src2 -- )
 -    [ swap IMUL2 ] overflow-template ;
 +    int-rep two-operand swap IMUL2 JO ;
  
  : bignum@ ( reg n -- op )
      cells bignum tag-number - [+] ; inline