Skip to content
Snippets Groups Projects
Commit 667686f8 authored by ram's avatar ram
Browse files

Added code to emit the IR2-ENVIRONMENT-ELSEWHERE-START label.

parent a2d3e5d0
No related branches found
No related tags found
No related merge requests found
...@@ -30,21 +30,26 @@ ...@@ -30,21 +30,26 @@
;;; Generate-Code -- Interface ;;; Generate-Code -- Interface
;;; ;;;
(defun generate-code (component) (defun generate-code (component)
(do-ir2-blocks (block component) (let ((prev-env nil))
(let ((1block (ir2-block-block block))) (do-ir2-blocks (block component)
(when (eq (block-info 1block) block) (let* ((1block (ir2-block-block block))
(emit-label (block-label 1block)))) (lambda (block-lambda 1block)))
(when (and (eq (block-info 1block) block) lambda)
(emit-label (block-label 1block))
(let ((env (lambda-environment lambda)))
(unless (eq env prev-env)
(let ((lab (gen-label)))
(setf (ir2-environment-elsewhere-start (environment-info env))
lab)
(emit-label-elsewhere lab))
(setq prev-env env)))))
(do ((vop (ir2-block-start-vop block) (vop-next vop))) (do ((vop (ir2-block-start-vop block) (vop-next vop)))
((null vop)) ((null vop))
(let ((gen (vop-info-generator-function (vop-info vop)))) (let ((gen (vop-info-generator-function (vop-info vop))))
(if gen (if gen
(funcall gen vop) (funcall gen vop)
(format t "Missing generator for ~S.~%" (format t "Missing generator for ~S.~%"
(template-name (vop-info vop))))))) (template-name (vop-info vop))))))))
(finish-assembly)) (finish-assembly))
;;;; Post-assembly:
;;;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment