X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fcodegen.lisp;h=7a176808c428f5ee6901911528c7b17a61a20b12;hb=69d60b456b07a0256f08df0d02484f361ce5737c;hp=56952a215df7a508f9727ace3c4542c6f276e039;hpb=4823297c200e5b1fcab240f06ce82c308b8ee7d7;p=sbcl.git diff --git a/src/compiler/codegen.lisp b/src/compiler/codegen.lisp index 56952a2..7a17680 100644 --- a/src/compiler/codegen.lisp +++ b/src/compiler/codegen.lisp @@ -16,46 +16,42 @@ ;;;; utilities used during code generation +;;; the number of bytes used by the code object header (defun component-header-length (&optional (component *component-being-compiled*)) - #!+sb-doc - "Returns the number of bytes used by the code object header." (let* ((2comp (component-info component)) (constants (ir2-component-constants 2comp)) (num-consts (length constants))) (ash (logandc2 (1+ num-consts) 1) sb!vm:word-shift))) +;;; the size of the NAME'd SB in the currently compiled component. +;;; This is useful mainly for finding the size for allocating stack +;;; frames. (defun sb-allocated-size (name) - #!+sb-doc - "The size of the Name'd SB in the currently compiled component. Useful - mainly for finding the size for allocating stack frames." (finite-sb-current-size (sb-or-lose name))) +;;; the TN that is used to hold the number stack frame-pointer in +;;; VOP's function, or NIL if no number stack frame was allocated (defun current-nfp-tn (vop) - #!+sb-doc - "Return the TN that is used to hold the number stack frame-pointer in VOP's - function. Returns NIL if no number stack frame was allocated." (unless (zerop (sb-allocated-size 'non-descriptor-stack)) (let ((block (ir2-block-block (vop-block vop)))) - (when (ir2-environment-number-stack-p - (environment-info - (block-environment block))) + (when (ir2-physenv-number-stack-p + (physenv-info + (block-physenv block))) (ir2-component-nfp (component-info (block-component block))))))) +;;; the TN that is used to hold the number stack frame-pointer in the +;;; function designated by 2ENV, or NIL if no number stack frame was +;;; allocated (defun callee-nfp-tn (2env) - #!+sb-doc - "Return the TN that is used to hold the number stack frame-pointer in the - function designated by 2env. Returns NIL if no number stack frame was - allocated." (unless (zerop (sb-allocated-size 'non-descriptor-stack)) - (when (ir2-environment-number-stack-p 2env) + (when (ir2-physenv-number-stack-p 2env) (ir2-component-nfp (component-info *component-being-compiled*))))) +;;; the TN used for passing the return PC in a local call to the function +;;; designated by 2ENV (defun callee-return-pc-tn (2env) - #!+sb-doc - "Return the TN used for passing the return PC in a local call to the function - designated by 2env." - (ir2-environment-return-pc-pass 2env)) + (ir2-physenv-return-pc-pass 2env)) ;;;; specials used during code generation @@ -127,7 +123,7 @@ (*trace-table-info* nil) (*prev-segment* nil) (*prev-vop* nil) - (*fixups* nil)) + (*fixup-notes* nil)) (let ((label (sb!assem:gen-label))) (setf *elsewhere-label* label) (sb!assem:assemble (*elsewhere*) @@ -138,10 +134,10 @@ (block-start 1block)) (sb!assem:assemble (*code-segment*) (sb!assem:emit-label (block-label 1block))) - (let ((env (block-environment 1block))) + (let ((env (block-physenv 1block))) (unless (eq env prev-env) (let ((lab (gen-label))) - (setf (ir2-environment-elsewhere-start (environment-info env)) + (setf (ir2-physenv-elsewhere-start (physenv-info env)) lab) (emit-label-elsewhere lab)) (setq prev-env env))))) @@ -157,7 +153,7 @@ (setf *elsewhere* nil) (values (sb!assem:finalize-segment *code-segment*) (nreverse *trace-table-info*) - *fixups*))) + *fixup-notes*))) (defun emit-label-elsewhere (label) (sb!assem:assemble (*elsewhere*)