projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
0.8.4.11:
[sbcl.git]
/
src
/
compiler
/
x86
/
call.lisp
diff --git
a/src/compiler/x86/call.lisp
b/src/compiler/x86/call.lisp
index
772f6f7
..
fa1c56d
100644
(file)
--- a/
src/compiler/x86/call.lisp
+++ b/
src/compiler/x86/call.lisp
@@
-15,7
+15,7
@@
;;; Return a wired TN describing the N'th full call argument passing
;;; location.
;;; Return a wired TN describing the N'th full call argument passing
;;; location.
-(!def-vm-support-routine standard-argument-location (n)
+(!def-vm-support-routine standard-arg-location (n)
(declare (type unsigned-byte n))
(if (< n register-arg-count)
(make-wired-tn *backend-t-primitive-type* descriptor-reg-sc-number
(declare (type unsigned-byte n))
(if (< n register-arg-count)
(make-wired-tn *backend-t-primitive-type* descriptor-reg-sc-number
@@
-31,8
+31,8
@@
(make-wired-tn (primitive-type-or-lose 'system-area-pointer)
sap-stack-sc-number return-pc-save-offset))
(make-wired-tn (primitive-type-or-lose 'system-area-pointer)
sap-stack-sc-number return-pc-save-offset))
-;;; Similar to Make-Return-PC-Passing-Location, but makes a location
-;;; to pass Old-FP in.
+;;; This is similar to MAKE-RETURN-PC-PASSING-LOCATION, but makes a
+;;; location to pass OLD-FP in.
;;;
;;; This is wired in both the standard and the local-call conventions,
;;; because we want to be able to assume it's always there. Besides,
;;;
;;; This is wired in both the standard and the local-call conventions,
;;; because we want to be able to assume it's always there. Besides,
@@
-43,28
+43,27
@@
(make-wired-tn *fixnum-primitive-type* control-stack-sc-number
ocfp-save-offset))
(make-wired-tn *fixnum-primitive-type* control-stack-sc-number
ocfp-save-offset))
-;;; Make the TNs used to hold Old-FP and Return-PC within the current
+;;; Make the TNs used to hold OLD-FP and RETURN-PC within the current
;;; function. We treat these specially so that the debugger can find
;;; them at a known location.
;;;
;;; Without using a save-tn - which does not make much sense if it is
;;; function. We treat these specially so that the debugger can find
;;; them at a known location.
;;;
;;; Without using a save-tn - which does not make much sense if it is
-;;; wire to the stack?
-(!def-vm-support-routine make-old-fp-save-location (env)
+;;; wired to the stack?
+(!def-vm-support-routine make-old-fp-save-location (physenv)
(physenv-debug-live-tn (make-wired-tn *fixnum-primitive-type*
control-stack-sc-number
ocfp-save-offset)
(physenv-debug-live-tn (make-wired-tn *fixnum-primitive-type*
control-stack-sc-number
ocfp-save-offset)
- env))
-
-(!def-vm-support-routine make-return-pc-save-location (env)
+ physenv))
+(!def-vm-support-routine make-return-pc-save-location (physenv)
(physenv-debug-live-tn
(make-wired-tn (primitive-type-or-lose 'system-area-pointer)
sap-stack-sc-number return-pc-save-offset)
(physenv-debug-live-tn
(make-wired-tn (primitive-type-or-lose 'system-area-pointer)
sap-stack-sc-number return-pc-save-offset)
- env))
+ physenv))
;;; Make a TN for the standard argument count passing location. We only
;;; need to make the standard location, since a count is never passed when we
;;; are using non-standard conventions.
;;; Make a TN for the standard argument count passing location. We only
;;; need to make the standard location, since a count is never passed when we
;;; are using non-standard conventions.
-(!def-vm-support-routine make-argument-count-location ()
+(!def-vm-support-routine make-arg-count-location ()
(make-wired-tn *fixnum-primitive-type* any-reg-sc-number ecx-offset))
;;; Make a TN to hold the number-stack frame pointer. This is allocated
(make-wired-tn *fixnum-primitive-type* any-reg-sc-number ecx-offset))
;;; Make a TN to hold the number-stack frame pointer. This is allocated
@@
-172,12
+171,12
@@
(inst sub esp-tn (* (max nargs 3) n-word-bytes))))
\f
;;; Emit code needed at the return-point from an unknown-values call
(inst sub esp-tn (* (max nargs 3) n-word-bytes))))
\f
;;; Emit code needed at the return-point from an unknown-values call
-;;; for a fixed number of values. Values is the head of the TN-Ref
+;;; for a fixed number of values. Values is the head of the TN-REF
;;; list for the locations that the values are to be received into.
;;; Nvals is the number of values that are to be received (should
;;; equal the length of Values).
;;;
;;; list for the locations that the values are to be received into.
;;; Nvals is the number of values that are to be received (should
;;; equal the length of Values).
;;;
-;;; Move-Temp is a Descriptor-Reg TN used as a temporary.
+;;; MOVE-TEMP is a DESCRIPTOR-REG TN used as a temporary.
;;;
;;; This code exploits the fact that in the unknown-values convention,
;;; a single value return returns at the return PC + 2, whereas a
;;;
;;; This code exploits the fact that in the unknown-values convention,
;;; a single value return returns at the return PC + 2, whereas a
@@
-386,8
+385,11
@@
(done (gen-label)))
(inst jmp-short variable-values)
(done (gen-label)))
(inst jmp-short variable-values)
- (inst mov start esp-tn)
- (inst push (first *register-arg-tns*))
+ (cond ((location= start (first *register-arg-tns*))
+ (inst push (first *register-arg-tns*))
+ (inst lea start (make-ea :dword :base esp-tn :disp 4)))
+ (t (inst mov start esp-tn)
+ (inst push (first *register-arg-tns*))))
(inst mov count (fixnumize 1))
(inst jmp done)
(inst mov count (fixnumize 1))
(inst jmp done)
@@
-643,8
+645,9
@@
(inst pop ebp-tn))
(t
(inst pop ebp-tn))
(t
- (cerror "Continue any-way"
- "VOP return-local doesn't work if old-fp (in slot %s) is not in slot 0"
+ (cerror "Continue anyway"
+ "VOP return-local doesn't work if old-fp (in slot ~
+ ~S) is not in slot 0"
(tn-offset old-fp)))))
((any-reg descriptor-reg)
(tn-offset old-fp)))))
((any-reg descriptor-reg)
@@
-707,7
+710,7
@@
;;; the last fixed argument. If Variable is false, then the passing
;;; locations are passed as a more arg. Variable is true if there are
;;; a variable number of arguments passed on the stack. Variable
;;; the last fixed argument. If Variable is false, then the passing
;;; locations are passed as a more arg. Variable is true if there are
;;; a variable number of arguments passed on the stack. Variable
-;;; cannot be specified with :Tail return. TR variable argument call
+;;; cannot be specified with :TAIL return. TR variable argument call
;;; is implemented separately.
;;;
;;; In tail call with fixed arguments, the passing locations are
;;; is implemented separately.
;;;
;;; In tail call with fixed arguments, the passing locations are
@@
-1338,9
+1341,9
@@
(inst sub count (fixnumize fixed)))))
;;; Signal wrong argument count error if NARGS isn't equal to COUNT.
(inst sub count (fixnumize fixed)))))
;;; Signal wrong argument count error if NARGS isn't equal to COUNT.
-(define-vop (verify-argument-count)
+(define-vop (verify-arg-count)
(:policy :fast-safe)
(:policy :fast-safe)
- (:translate sb!c::%verify-argument-count)
+ (:translate sb!c::%verify-arg-count)
(:args (nargs :scs (any-reg)))
(:arg-types positive-fixnum (:constant t))
(:info count)
(:args (nargs :scs (any-reg)))
(:arg-types positive-fixnum (:constant t))
(:info count)
@@
-1348,7
+1351,7
@@
(:save-p :compute-only)
(:generator 3
(let ((err-lab
(:save-p :compute-only)
(:generator 3
(let ((err-lab
- (generate-error-code vop invalid-argument-count-error nargs)))
+ (generate-error-code vop invalid-arg-count-error nargs)))
(if (zerop count)
(inst test nargs nargs) ; smaller instruction
(inst cmp nargs (fixnumize count)))
(if (zerop count)
(inst test nargs nargs) ; smaller instruction
(inst cmp nargs (fixnumize count)))
@@
-1367,14
+1370,14
@@
(:save-p :compute-only)
(:generator 1000
(error-call vop ,error ,@args)))))
(:save-p :compute-only)
(:generator 1000
(error-call vop ,error ,@args)))))
- (def argument-count-error invalid-argument-count-error
- sb!c::%argument-count-error nargs)
+ (def arg-count-error invalid-arg-count-error
+ sb!c::%arg-count-error nargs)
(def type-check-error object-not-type-error sb!c::%type-check-error
object type)
(def layout-invalid-error layout-invalid-error sb!c::%layout-invalid-error
object layout)
(def type-check-error object-not-type-error sb!c::%type-check-error
object type)
(def layout-invalid-error layout-invalid-error sb!c::%layout-invalid-error
object layout)
- (def odd-key-arguments-error odd-key-arguments-error
- sb!c::%odd-key-arguments-error)
- (def unknown-key-argument-error unknown-key-argument-error
- sb!c::%unknown-key-argument-error key)
+ (def odd-key-args-error odd-key-args-error
+ sb!c::%odd-key-args-error)
+ (def unknown-key-arg-error unknown-key-arg-error
+ sb!c::%unknown-key-arg-error key)
(def nil-fun-returned-error nil-fun-returned-error nil fun))
(def nil-fun-returned-error nil-fun-returned-error nil fun))