projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
0.8.0.78.vector-nil-string.3:
[sbcl.git]
/
src
/
compiler
/
x86
/
alloc.lisp
diff --git
a/src/compiler/x86/alloc.lisp
b/src/compiler/x86/alloc.lisp
index
47408a6
..
c01f9a2
100644
(file)
--- a/
src/compiler/x86/alloc.lisp
+++ b/
src/compiler/x86/alloc.lisp
@@
-30,14
+30,14
@@
(move result (tn-ref-tn things)))
(t
(macrolet
(move result (tn-ref-tn things)))
(t
(macrolet
- ((store-car (tn list &optional (slot sb!vm:cons-car-slot))
+ ((store-car (tn list &optional (slot cons-car-slot))
`(let ((reg
(sc-case ,tn
((any-reg descriptor-reg) ,tn)
((control-stack)
(move temp ,tn)
temp))))
`(let ((reg
(sc-case ,tn
((any-reg descriptor-reg) ,tn)
((control-stack)
(move temp ,tn)
temp))))
- (storew reg ,list ,slot sb!vm:list-pointer-lowtag))))
+ (storew reg ,list ,slot list-pointer-lowtag))))
(let ((cons-cells (if star (1- num) num)))
(pseudo-atomic
(allocation res (* (pad-data-block cons-size) cons-cells) node)
(let ((cons-cells (if star (1- num) num)))
(pseudo-atomic
(allocation res (* (pad-data-block cons-size) cons-cells) node)
@@
-98,11
+98,11
@@
;; -- WHN 19990916
;;
;; FIXME: should have a check for overflow of static space
;; -- WHN 19990916
;;
;; FIXME: should have a check for overflow of static space
- (load-symbol-value temp sb!vm:*static-space-free-pointer*)
+ (load-symbol-value temp *static-space-free-pointer*)
(inst lea result (make-ea :byte :base temp :disp other-pointer-lowtag))
(inst add temp boxed)
(inst add temp unboxed)
(inst lea result (make-ea :byte :base temp :disp other-pointer-lowtag))
(inst add temp boxed)
(inst add temp unboxed)
- (store-symbol-value temp sb!vm:*static-space-free-pointer*)
+ (store-symbol-value temp *static-space-free-pointer*)
(inst shl boxed (- n-widetag-bits word-shift))
(inst or boxed code-header-widetag)
(storew boxed result 0 other-pointer-lowtag)
(inst shl boxed (- n-widetag-bits word-shift))
(inst or boxed code-header-widetag)
(storew boxed result 0 other-pointer-lowtag)
@@
-213,7
+213,7
@@
(:node-var node)
(:generator 50
(inst lea bytes
(:node-var node)
(:generator 50
(inst lea bytes
- (make-ea :dword :base extra :disp (* (1+ words) word-bytes)))
+ (make-ea :dword :base extra :disp (* (1+ words) n-word-bytes)))
(inst mov header bytes)
(inst shl header (- n-widetag-bits 2)) ; w+1 to length field
(inst lea header ; (w-1 << 8) | type
(inst mov header bytes)
(inst shl header (- n-widetag-bits 2)) ; w+1 to length field
(inst lea header ; (w-1 << 8) | type
@@
-250,6
+250,11
@@
(inst mov (make-fixup (extern-alien-name "fast_random_state") :foreign)
temp)
;; We want a positive fixnum for the hash value, so discard the LS bits.
(inst mov (make-fixup (extern-alien-name "fast_random_state") :foreign)
temp)
;; We want a positive fixnum for the hash value, so discard the LS bits.
+ ;;
+ ;; FIXME: OK, who wants to tell me (CSR) why these two
+ ;; instructions aren't replaced by (INST AND TEMP #x8FFFFFFC)?
+ ;; Are the following two instructions actually faster? Does the
+ ;; difference in behaviour really matter?
(inst shr temp 1)
(inst and temp #xfffffffc)
(storew temp result symbol-hash-slot other-pointer-lowtag)
(inst shr temp 1)
(inst and temp #xfffffffc)
(storew temp result symbol-hash-slot other-pointer-lowtag)