This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "CMU Common Lisp".
The branch, master has been updated via f61034ab9eadb5f0e86c1d93930c2cc7e04835c3 (commit) from 8a9d1d8d186004b5bd3354f2f9e0d0cc4b307d86 (commit)
Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below.
- Log ----------------------------------------------------------------- commit f61034ab9eadb5f0e86c1d93930c2cc7e04835c3 Author: Raymond Toy toy.raymond@gmail.com Date: Sat Jun 30 15:08:37 2012 -0700
All VOPs that call allocation should save any live registers.
diff --git a/src/compiler/x86/alloc.lisp b/src/compiler/x86/alloc.lisp index 85d95d1..bff6d0b 100644 --- a/src/compiler/x86/alloc.lisp +++ b/src/compiler/x86/alloc.lisp @@ -53,6 +53,7 @@ (:variant-vars star) (:policy :safe) (:node-var node) + (:save-p t) (:generator 0 (cond ((zerop num) ;; (move result nil-value) @@ -141,6 +142,7 @@ (:temporary (:sc unsigned-reg :from (:argument 0)) boxed) (:temporary (:sc unsigned-reg :from (:argument 1)) unboxed) (:node-var node) + (:save-p t) (:generator 100 (move boxed boxed-arg) (inst add boxed (fixnumize (1+ code-trace-table-offset-slot))) @@ -169,6 +171,7 @@ (:args (name :scs (descriptor-reg) :to :eval)) (:results (result :scs (descriptor-reg) :from :argument)) (:node-var node) + (:save-p t) (:generator 37 (with-fixed-allocation (result fdefn-type fdefn-size node) (storew name result fdefn-name-slot other-pointer-type) @@ -182,6 +185,7 @@ (:args (name :scs (descriptor-reg) :to :eval)) (:results (result :scs (descriptor-reg) :from :argument)) (:node-var node) + (:save-p t) (:generator 37 (with-fixed-allocation (result fdefn-type fdefn-size node) (storew name result fdefn-name-slot other-pointer-type) @@ -196,6 +200,7 @@ (:temporary (:sc any-reg) temp) (:results (result :scs (descriptor-reg))) (:node-var node) + (:save-p t) (:generator 10 (let ((*enable-pseudo-atomic* (unless dynamic-extent *enable-pseudo-atomic*))) @@ -215,6 +220,7 @@ (:args (value :scs (descriptor-reg any-reg) :to :result)) (:results (result :scs (descriptor-reg) :from :eval)) (:node-var node) + (:save-p t) (:generator 10 (with-fixed-allocation (result value-cell-header-type value-cell-size node) @@ -236,6 +242,7 @@ (:ignore name) (:results (result :scs (descriptor-reg))) (:node-var node) + (:save-p t) (:generator 50 (let ((*enable-pseudo-atomic* (unless dynamic-extent *enable-pseudo-atomic*))) @@ -254,6 +261,7 @@ (:temporary (:sc any-reg :from :eval :to (:eval 1)) bytes) (:temporary (:sc any-reg :from :eval :to :result) header) (:node-var node) + (:save-p t) (:generator 50 (inst lea bytes (make-ea :dword :base extra :disp (* (1+ words) word-bytes))) @@ -279,6 +287,7 @@ (:temporary (:sc unsigned-reg :from :eval) state-addr) (:results (result :scs (descriptor-reg) :from :argument)) (:node-var node) + (:save-p t) (:generator 37 (with-fixed-allocation (result symbol-header-type symbol-size node) (storew name result symbol-name-slot other-pointer-type) diff --git a/src/compiler/x86/array.lisp b/src/compiler/x86/array.lisp index ae86e43..79b3ad1 100644 --- a/src/compiler/x86/array.lisp +++ b/src/compiler/x86/array.lisp @@ -35,6 +35,7 @@ (:temporary (:sc any-reg :to :result) header) (:results (result :scs (descriptor-reg) :from :eval)) (:node-var node) + (:save-p t) (:generator 13 (inst lea bytes (make-ea :dword :base rank diff --git a/src/compiler/x86/call.lisp b/src/compiler/x86/call.lisp index 63104de..d0188c9 100644 --- a/src/compiler/x86/call.lisp +++ b/src/compiler/x86/call.lisp @@ -1365,6 +1365,7 @@ (:temporary (:sc unsigned-reg) dst) (:results (result :scs (descriptor-reg))) (:node-var node) + (:save-p t) (:generator 20 (let ((enter (gen-label)) (loop (gen-label)) diff --git a/src/compiler/x86/float-sse2.lisp b/src/compiler/x86/float-sse2.lisp index f54f072..9fe6d5d 100644 --- a/src/compiler/x86/float-sse2.lisp +++ b/src/compiler/x86/float-sse2.lisp @@ -413,6 +413,7 @@ (:results (y :scs (descriptor-reg))) (:node-var node) (:note _N"float to pointer coercion") + (:save-p t) (:generator 13 (with-fixed-allocation (y vm:single-float-type vm:single-float-size node) (inst movss (ea-for-sf-desc y) x)))) @@ -424,6 +425,7 @@ (:results (y :scs (descriptor-reg))) (:node-var node) (:note _N"float to pointer coercion") + (:save-p t) (:generator 13 (with-fixed-allocation (y vm:double-float-type vm:double-float-size node) (inst movsd (ea-for-df-desc y) x)))) @@ -436,6 +438,7 @@ (:results (y :scs (descriptor-reg))) (:node-var node) (:note _N"float to pointer coercion") + (:save-p t) (:generator 13 (with-fixed-allocation (y vm:long-float-type vm:long-float-size node) (with-tn@fp-top(x) @@ -498,6 +501,7 @@ (:results (y :scs (descriptor-reg))) (:node-var node) (:note _N"complex float to pointer coercion") + (:save-p t) (:generator 13 (with-fixed-allocation (y vm:complex-single-float-type vm:complex-single-float-size node) @@ -510,6 +514,7 @@ (:results (y :scs (descriptor-reg))) (:node-var node) (:note _N"complex float to pointer coercion") + (:save-p t) (:generator 13 (with-fixed-allocation (y vm:complex-double-float-type vm:complex-double-float-size node) @@ -524,6 +529,7 @@ (:results (y :scs (descriptor-reg))) (:node-var node) (:note _N"complex float to pointer coercion") + (:save-p t) (:generator 13 (with-fixed-allocation (y vm:complex-long-float-type vm:complex-long-float-size node) @@ -543,6 +549,7 @@ (:results (y :scs (descriptor-reg))) (:node-var node) (:note _N"complex double-double float to pointer coercion") + (:save-p t) (:generator 13 (with-fixed-allocation (y vm::complex-double-double-float-type vm::complex-double-double-float-size node) @@ -1563,6 +1570,7 @@ (:results (y :scs (descriptor-reg))) (:node-var node) (:note _N"double double float to pointer coercion") + (:save-p t) (:generator 13 (with-fixed-allocation (y vm:double-double-float-type vm:double-double-float-size node) diff --git a/src/compiler/x86/float.lisp b/src/compiler/x86/float.lisp index e4d5952..e0e90b0 100644 --- a/src/compiler/x86/float.lisp +++ b/src/compiler/x86/float.lisp @@ -498,6 +498,7 @@ (:results (y :scs (descriptor-reg))) (:node-var node) (:note _N"float to pointer coercion") + (:save-p t) (:generator 13 (with-fixed-allocation (y vm:single-float-type vm:single-float-size node) (with-tn@fp-top(x) @@ -510,6 +511,7 @@ (:results (y :scs (descriptor-reg))) (:node-var node) (:note _N"float to pointer coercion") + (:save-p t) (:generator 13 (with-fixed-allocation (y vm:double-float-type vm:double-float-size node) (with-tn@fp-top(x) @@ -523,6 +525,7 @@ (:results (y :scs (descriptor-reg))) (:node-var node) (:note _N"float to pointer coercion") + (:save-p t) (:generator 13 (with-fixed-allocation (y vm:long-float-type vm:long-float-size node) (with-tn@fp-top(x) @@ -601,6 +604,7 @@ (:results (y :scs (descriptor-reg))) (:node-var node) (:note _N"complex float to pointer coercion") + (:save-p t) (:generator 13 (with-fixed-allocation (y vm:complex-single-float-type vm:complex-single-float-size node) @@ -618,6 +622,7 @@ (:results (y :scs (descriptor-reg))) (:node-var node) (:note _N"complex float to pointer coercion") + (:save-p t) (:generator 13 (with-fixed-allocation (y vm:complex-double-float-type vm:complex-double-float-size node) @@ -636,6 +641,7 @@ (:results (y :scs (descriptor-reg))) (:node-var node) (:note _N"complex float to pointer coercion") + (:save-p t) (:generator 13 (with-fixed-allocation (y vm:complex-long-float-type vm:complex-long-float-size node) @@ -655,6 +661,7 @@ (:results (y :scs (descriptor-reg))) (:node-var node) (:note _N"complex double-double float to pointer coercion") + (:save-p t) (:generator 13 (with-fixed-allocation (y vm::complex-double-double-float-type vm::complex-double-double-float-size node) @@ -5054,6 +5061,7 @@ (:results (y :scs (descriptor-reg))) (:node-var node) (:note _N"double double float to pointer coercion") + (:save-p t) (:generator 13 (with-fixed-allocation (y vm:double-double-float-type vm:double-double-float-size node) diff --git a/src/compiler/x86/move.lisp b/src/compiler/x86/move.lisp index 2ff54ee..7c6f0b9 100644 --- a/src/compiler/x86/move.lisp +++ b/src/compiler/x86/move.lisp @@ -300,6 +300,7 @@ (:results (y :scs (any-reg descriptor-reg) :from :argument)) (:note _N"signed word to integer coercion") (:node-var node) + (:save-p t) (:generator 20 (assert (not (location= x y))) (let ((bignum (gen-label)) @@ -348,6 +349,7 @@ (:results (y :scs (any-reg descriptor-reg))) (:node-var node) (:note _N"unsigned word to integer coercion") + (:save-p t) (:generator 20 (assert (not (location= x y))) (assert (not (location= x alloc))) diff --git a/src/compiler/x86/sap.lisp b/src/compiler/x86/sap.lisp index a01112e..43e1a0e 100644 --- a/src/compiler/x86/sap.lisp +++ b/src/compiler/x86/sap.lisp @@ -44,6 +44,7 @@ (:results (res :scs (descriptor-reg) :from :argument)) (:note "SAP to pointer coercion") (:node-var node) + (:save-p t) (:generator 20 (with-fixed-allocation (res sap-type sap-size node) (storew sap res sap-pointer-slot other-pointer-type))))
-----------------------------------------------------------------------
Summary of changes: src/compiler/x86/alloc.lisp | 9 +++++++++ src/compiler/x86/array.lisp | 1 + src/compiler/x86/call.lisp | 1 + src/compiler/x86/float-sse2.lisp | 8 ++++++++ src/compiler/x86/float.lisp | 8 ++++++++ src/compiler/x86/move.lisp | 2 ++ src/compiler/x86/sap.lisp | 1 + 7 files changed, 30 insertions(+), 0 deletions(-)
hooks/post-receive