X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fx86%2Fvm.lisp;h=39924ff8dec9b5442c8defe7a77eee765f8fd24f;hb=5fca28334e00c7e1ad159924ac2db4a3e1c9e354;hp=ae0b11147bbd21bf80f7e57e664bc42dd5b4271d;hpb=99a669b8fc3624c6b5aa68580829f50288169c31;p=sbcl.git diff --git a/src/compiler/x86/vm.lisp b/src/compiler/x86/vm.lisp index ae0b111..39924ff 100644 --- a/src/compiler/x86/vm.lisp +++ b/src/compiler/x86/vm.lisp @@ -118,7 +118,7 @@ ;;; the new way: (define-storage-base float-registers :finite :size 8) -(define-storage-base stack :unbounded :size 8) +(define-storage-base stack :unbounded :size 4 :size-increment 1) (define-storage-base constant :non-packed) (define-storage-base immediate-constant :non-packed) (define-storage-base noise :unbounded :size 2) @@ -382,7 +382,7 @@ ;;; If value can be represented as an immediate constant, then return ;;; the appropriate SC number, otherwise return NIL. -(!def-vm-support-routine immediate-constant-sc (value) +(defun immediate-constant-sc (value) (typecase value ((or (integer #.sb!xc:most-negative-fixnum #.sb!xc:most-positive-fixnum) character) @@ -408,6 +408,9 @@ (eql value (log 2l0 2.718281828459045235360287471352662L0))) (sc-number-or-lose 'fp-constant))))) +(defun boxed-immediate-sc-p (sc) + (eql sc (sc-number-or-lose 'immediate))) + ;; For an immediate TN, return its value encoded for use as a literal. ;; For any other TN, return the TN. Only works for FIXNUMs, ;; STATIC-SYMBOLs, and CHARACTERS (FLOATs and SAPs are handled @@ -460,7 +463,7 @@ ;;; This function is called by debug output routines that want a pretty name ;;; for a TN's location. It returns a thing that can be printed with PRINC. -(!def-vm-support-routine location-print-name (tn) +(defun location-print-name (tn) (declare (type tn tn)) (let* ((sc (tn-sc tn)) (sb (sb-name (sc-sb sc))) @@ -486,7 +489,7 @@ (noise (symbol-name (sc-name sc)))))) ;;; FIXME: Could this, and everything that uses it, be made #!+SB-SHOW? -(!def-vm-support-routine combination-implementation-style (node) +(defun combination-implementation-style (node) (declare (type sb!c::combination node)) (flet ((valid-funtype (args result) (sb!c::valid-fun-use node @@ -496,11 +499,11 @@ (logtest (cond ((valid-funtype '(fixnum fixnum) '*) - (values :direct nil)) + (values :maybe nil)) ((valid-funtype '((signed-byte 32) (signed-byte 32)) '*) - (values :direct nil)) + (values :maybe nil)) ((valid-funtype '((unsigned-byte 32) (unsigned-byte 32)) '*) - (values :direct nil)) + (values :maybe nil)) (t (values :default nil)))) (logbitp (cond