From: Juho S. <js...@us...> - 2004-11-12 21:39:20
|
Update of /cvsroot/sbcl/sbcl/src/compiler/x86-64 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15717/src/compiler/x86-64 Modified Files: Tag: x86-64-again-branch move.lisp system.lisp Log Message: 0.8.15.14.x86-64-again-branch.7: GC scavenges hashtables (and thereby corrupts less memory), compiler works in the cold core, disassembler doesn't crash immediately. ... Another 64->32 bit fixup change ... Change some hardcoded 2s to SB!VM:N-FIXNUM-TAG-BITS ... GC word-size cleanups ... Make disassembler chunks word-sized ... Fix bignum size detection in MOVE-FROM-UNSIGNED Index: move.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/x86-64/move.lisp,v retrieving revision 1.1.8.2 retrieving revision 1.1.8.3 diff -u -d -r1.1.8.2 -r1.1.8.3 --- move.lisp 8 Nov 2004 17:50:41 -0000 1.1.8.2 +++ move.lisp 12 Nov 2004 21:39:07 -0000 1.1.8.3 @@ -353,7 +353,8 @@ ;; Note: As on the mips port, space for a two word bignum is ;; always allocated and the header size is set to either one ;; or two words as appropriate. - (inst jmp :ns one-word-bignum) + (inst cmp y 63) + (inst jmp :l one-word-bignum) ;; two word bignum (inst mov y (logior (ash (1- (+ bignum-digits-offset 2)) n-widetag-bits) Index: system.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/x86-64/system.lisp,v retrieving revision 1.1 retrieving revision 1.1.8.1 diff -u -d -r1.1 -r1.1.8.1 --- system.lisp 26 Jun 2004 17:48:22 -0000 1.1 +++ system.lisp 12 Nov 2004 21:39:07 -0000 1.1.8.1 @@ -121,7 +121,7 @@ :from (:argument 1) :to (:result 0)) eax) (:generator 6 (move eax data) - (inst shl eax (- n-widetag-bits 2)) + (inst shl eax (- n-widetag-bits n-fixnum-tag-bits)) (inst mov al-tn (make-ea :byte :base x :disp (- other-pointer-lowtag))) (storew eax x 0 other-pointer-lowtag) (move res x))) @@ -142,7 +142,7 @@ (:results (res :scs (any-reg descriptor-reg) :from (:argument 0))) (:generator 2 (move res val) - (inst shl res (- n-widetag-bits 2)) + (inst shl res (- n-widetag-bits n-fixnum-tag-bits)) (inst or res (sc-case type (unsigned-reg type) (immediate (tn-value type)))))) |