projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
1.0.36.8: deal with environment argument in TYPEP transforms
[sbcl.git]
/
src
/
compiler
/
x86
/
system.lisp
diff --git
a/src/compiler/x86/system.lisp
b/src/compiler/x86/system.lisp
index
ca691a8
..
9b66ca0
100644
(file)
--- a/
src/compiler/x86/system.lisp
+++ b/
src/compiler/x86/system.lisp
@@
-44,7
+44,7
@@
(inst jmp :ne done)
;; Pick off fixnums.
(inst jmp :ne done)
;; Pick off fixnums.
- (inst and al-tn 3)
+ (inst and al-tn fixnum-tag-mask)
(inst jmp :e done)
;; must be an other immediate
(inst jmp :e done)
;; must be an other immediate
@@
-142,7
+142,7
@@
(:results (res :scs (any-reg descriptor-reg) :from (:argument 0)))
(:generator 2
(move res val)
(: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))))))
(inst or res (sc-case type
(unsigned-reg type)
(immediate (tn-value type))))))
@@
-267,8
+267,7
@@
(:arg-types unsigned-num)
(:policy :fast-safe)
(:generator 2
(:arg-types unsigned-num)
(:policy :fast-safe)
(:generator 2
- (inst fs-segment-prefix)
- (inst mov sap (make-ea :dword :disp 0 :index n :scale 4))))
+ (inst mov sap (make-ea :dword :disp 0 :index n :scale 4) :fs)))
(define-vop (halt)
(:generator 1
(define-vop (halt)
(:generator 1
@@
-330,14
+329,12
@@
(:result-types unsigned-num unsigned-num)
(:generator 5
(inst xor eax eax)
(:result-types unsigned-num unsigned-num)
(:generator 5
(inst xor eax eax)
+ ;; Intel docs seem quite consistent on only using CPUID before RDTSC,
+ ;; not both before and after. Go figure.
(inst cpuid)
(inst rdtsc)
(inst cpuid)
(inst rdtsc)
- (inst push edx)
- (inst push eax)
- (inst xor eax eax)
- (inst cpuid)
- (inst pop lo)
- (inst pop hi)))
+ (move lo eax)
+ (move hi edx)))
(defmacro with-cycle-counter (&body body)
"Returns the primary value of BODY as the primary value, and the
(defmacro with-cycle-counter (&body body)
"Returns the primary value of BODY as the primary value, and the