Changeset 12876
- Timestamp:
- 08/08/10 10:06:35 (13 years ago)
- Location:
- branches/generic-class-file/abcl/src/org/armedbear/lisp
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/generic-class-file/abcl/src/org/armedbear/lisp/compiler-pass2.lisp
r12875 r12876 914 914 (check-number-of-args form n t)) 915 915 916 917 (defun finalize-code ()918 (setf *code* (nreverse (coerce *code* 'vector))))919 916 920 917 … … 1187 1184 (setf *code* (append *static-code* *code*)) 1188 1185 (emit 'return) 1189 (finalize-code) 1190 (setf *code* (resolve-instructions (expand-virtual-instructions *code*))) 1186 (setf *code* 1187 (finalize-code *code* (nconc (mapcar #'handler-from *handlers*) 1188 (mapcar #'handler-to *handlers*) 1189 (mapcar #'handler-code *handlers*)) nil)) 1190 1191 1191 (setf (method-max-stack constructor) 1192 1192 (analyze-stack *code* (mapcar #'handler-code *handlers*))) … … 7486 7486 7487 7487 ;;; Move here 7488 (finalize-code) 7489 (optimize-code) 7490 7491 (setf *code* (resolve-instructions (expand-virtual-instructions *code*))) 7488 (setf *code* (finalize-code *code* 7489 (nconc (mapcar #'handler-from *handlers*) 7490 (mapcar #'handler-to *handlers*) 7491 (mapcar #'handler-code *handlers*)) t)) 7492 7492 7493 (setf (method-max-stack execute-method) 7493 7494 (analyze-stack *code* (mapcar #'handler-code *handlers*))) -
branches/generic-class-file/abcl/src/org/armedbear/lisp/jvm-instructions.lisp
r12875 r12876 820 820 821 821 822 (declaim (ftype (function (t) hash-table) hash-labels))822 (declaim (ftype (function (t) label-target-instructions) hash-labels)) 823 823 (defun label-target-instructions (code) 824 824 (let ((ht (make-hash-table :test 'eq)) … … 909 909 (defvar *enable-optimization* t) 910 910 911 (defknown optimize-code ( ) t)912 (defun optimize-code ( )911 (defknown optimize-code (t t) t) 912 (defun optimize-code (code handler-labels) 913 913 (unless *enable-optimization* 914 914 (format t "optimizations are disabled~%")) … … 916 916 (when *compiler-debug* 917 917 (format t "----- before optimization -----~%") 918 (print-code *code*))918 (print-code code)) 919 919 (loop 920 (let ((changed-p nil)) 921 (multiple-value-setq 922 (*code* changed-p) 923 (delete-unused-labels *code* 924 (nconc 925 (mapcar #'handler-from *handlers*) 926 (mapcar #'handler-to *handlers*) 927 (mapcar #'handler-code *handlers*)))) 928 (if changed-p 929 (setf *code* (optimize-instruction-sequences *code*)) 930 (multiple-value-setq 931 (*code* changed-p) 932 (optimize-instruction-sequences *code*))) 933 (if changed-p 934 (setf *code* (optimize-jumps *code*)) 935 (multiple-value-setq 936 (*code* changed-p) 937 (optimize-jumps *code*))) 938 (if changed-p 939 (setf *code* (delete-unreachable-code *code*)) 940 (multiple-value-setq 941 (*code* changed-p) 942 (delete-unreachable-code *code*))) 943 (unless changed-p 944 (return)))) 945 (unless (vectorp *code*) 946 (setf *code* (coerce *code* 'vector))) 920 (let ((changed-p nil)) 921 (multiple-value-setq 922 (code changed-p) 923 (delete-unused-labels code handler-labels)) 924 (if changed-p 925 (setf code (optimize-instruction-sequences code)) 926 (multiple-value-setq 927 (code changed-p) 928 (optimize-instruction-sequences code))) 929 (if changed-p 930 (setf code (optimize-jumps code)) 931 (multiple-value-setq 932 (code changed-p) 933 (optimize-jumps code))) 934 (if changed-p 935 (setf code (delete-unreachable-code code)) 936 (multiple-value-setq 937 (code changed-p) 938 (delete-unreachable-code code))) 939 (unless changed-p 940 (return)))) 941 (unless (vectorp code) 942 (setf code (coerce code 'vector))) 947 943 (when *compiler-debug* 948 944 (sys::%format t "----- after optimization -----~%") 949 (print-code *code*)))950 t)945 (print-code code))) 946 code) 951 947 952 948 … … 998 994 (values bytes labels)))) 999 995 1000 996 (defun finalize-code (code handler-labels optimize) 997 (setf code (coerce (nreverse code) 'vector)) 998 (when optimize 999 (setf code (optimize-code code handler-labels))) 1000 (resolve-instructions (expand-virtual-instructions code))) 1001 1001 1002 1002 (provide '#:opcodes)
Note: See TracChangeset
for help on using the changeset viewer.