[cmucl-cvs] [git] CMU Common Lisp branch master updated. snapshot-2012-06-3-gf61034a
Raymond Toy
rtoy at common-lisp.net
Tue Jul 3 02:19:49 UTC 2012
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 at 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 at 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 at 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 at 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 at 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
--
CMU Common Lisp
More information about the cmucl-cvs
mailing list