Changeset 8444
- Timestamp:
- Feb 8, 2008, 2:22:24 AM (17 years ago)
- Location:
- branches/working-0711/ccl
- Files:
-
- 5 edited
-
compiler/X86/x862.lisp (modified) (3 diffs)
-
compiler/nx.lisp (modified) (1 diff)
-
compiler/nx0.lisp (modified) (4 diffs)
-
level-1/l1-reader.lisp (modified) (2 diffs)
-
lib/nfcomp.lisp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/working-0711/ccl/compiler/X86/x862.lisp
r8439 r8444 610 610 (list 'function-debugging-info lambda-form)) 611 611 (when (and *compiler-record-source* *definition-source-note*) 612 (list 'function-source-note 612 (list 'function-source-note 613 613 (source-note-for-%lfun-info *definition-source-note* :form nil :children nil))) 614 614 (when *x862-recorded-symbols* … … 617 617 *x862-emitted-source-notes* 618 618 *definition-source-note*) 619 (list 'pc-source-map 619 (list 'pc-source-map 620 620 (x862-generate-pc-source-map *definition-source-note* *x862-emitted-source-notes*))))) 621 621 (setf bits (logior (ash 1 $lfbits-info-bit) bits))) … … 681 681 (vector (aref source-mapping 3)))) 682 682 683 (defun small-positive-integer-p (number &optional (biggest-small-value (ash 1 15)))684 (< 0 number biggest-small-value))685 686 (defun generate-pc-source-mapping (pc-start pc-end text-start text-end)687 (cond688 ((every #'small-positive-integer-p (list pc-start pc-end text-start text-end))689 (let ((mapping 0))690 (setf (ldb (byte 15 0) mapping) pc-start691 (ldb (byte 15 15) mapping) pc-end692 (ldb (byte 15 30) mapping) text-start693 (ldb (byte 15 45) mapping) text-end)694 mapping))695 ((every #'plusp (list pc-start pc-end text-start text-end))696 (vector pc-start pc-end text-start text-end))697 (t nil)))698 699 683 (defun x862-generate-pc-source-map (definition-source-note emitted-source-notes) 700 684 (when *compiler-record-source* 701 685 (let ((def-start (source-note-start definition-source-note)) 702 (vec (make-array (length emitted-source-notes) :fill-pointer 0)))686 (vec (make-array (length emitted-source-notes)))) 703 687 (loop 704 688 for start in emitted-source-notes 705 for mapping = (generate-pc-source-mapping (x862-vinsn-note-label-address 706 start 707 t) 708 (x862-vinsn-note-label-address 709 (vinsn-note-peer start) 710 nil) 711 (- (source-note-start (aref (vinsn-note-info start) 0)) 712 def-start) 713 (- (source-note-end (aref (vinsn-note-info start) 0)) 714 def-start)) 715 when mapping 716 do (vector-push-extend mapping vec)) 717 (let ((simple-vec (make-array (length vec)))) 718 (map-into simple-vec #'identity vec) 719 simple-vec)))) 689 for pc-start = (x862-vinsn-note-label-address start t) 690 for pc-end = (x862-vinsn-note-label-address (vinsn-note-peer start) nil) 691 for text-start = (- (source-note-start (aref (vinsn-note-info start) 0)) def-start) 692 for text-end = (- (source-note-end (aref (vinsn-note-info start) 0)) def-start) 693 for index upfrom 0 694 for mapping = (cond 695 ((and (<= 0 pc-start #x8000) 696 (<= 0 pc-end #x8000) 697 (<= 0 text-start #x8000) 698 (<= 0 text-end #x8000)) 699 (let ((mapping 0)) 700 (setf (ldb (byte 15 0) mapping) pc-start 701 (ldb (byte 15 15) mapping) pc-end 702 (ldb (byte 15 30) mapping) text-start 703 (ldb (byte 15 45) mapping) text-end) 704 mapping)) 705 ((and (plusp pc-start) (plusp pc-end) (plusp text-start) (plusp text-end)) 706 (vector pc-start pc-end text-start text-end)) 707 (t nil)) 708 do (setf (aref vec index) mapping)) 709 vec))) 720 710 721 711 (defun x862-vinsn-note-label-address (note &optional start-p sym) -
branches/working-0711/ccl/compiler/nx.lisp
r8421 r8444 154 154 definition 155 155 (let ((*load-time-eval-token* load-time-eval-token) 156 (env (new-lexical-environment env))) 156 (env (new-lexical-environment env)) 157 (*definition-source-note* (and *form-source-note-map* (gethash definition *form-source-note-map*)))) 157 158 (setf (lexenv.variables env) 'barrier) 158 159 (let* ((*target-backend* (or (if target (find-backend target)) *host-backend*)) -
branches/working-0711/ccl/compiler/nx0.lisp
r8439 r8444 1601 1601 do (setf (aref vec index) (char-code char)) 1602 1602 else 1603 do (return-from %fast-compact string)) 1603 do (warn "Can't %fast-compact ~C in ~S." char string) 1604 and do (setf (aref vec index) (char-code #\?))) 1604 1605 vec)) 1605 1606 … … 1624 1625 children) 1625 1626 1626 (defun make-source-note (&key stream start end text form children)1627 (defun make-source-note (&key stream start end %text form children) 1627 1628 (when (record-source-location-on-stream-p stream) 1628 1629 (%make-source-note :file-name (or *compile-file-original-truename* … … 1630 1631 :start (+ start (or *compile-file-original-buffer-offset* 0)) 1631 1632 :end (+ end (or *compile-file-original-buffer-offset* 0)) 1632 :%text text1633 :%text %text 1633 1634 :form form 1634 1635 :children children))) 1635 1636 (defmethod source-note-text ((source-note source-note))1637 (%fast-uncompact (source-note-%text source-note)))1638 1639 (defmethod (setf source-note-text) (text (source-note source-note))1640 (setf (source-note-%text source-note) (%fast-compact text)))1641 1636 1642 1637 ;;; we don't actually store source-note structs in the fasl since that runs into problems dumping … … 1675 1670 map)) 1676 1671 1677 (defun compute-children-text (source-note stream) 1678 (unless (source-note-%text source-note) 1679 (setf (source-note-%text source-note) 1680 (substream stream (source-note-start source-note) (source-note-end source-note)))) 1681 (dolist (nested (source-note-children source-note)) 1682 (when nested 1683 (unless (source-note-%text nested) 1684 (setf (source-note-%text nested) 1685 (make-array (- (source-note-end nested) (source-note-start nested)) 1686 :displaced-to (source-note-%text source-note) 1687 :displaced-index-offset (- (source-note-start nested) 1688 (source-note-start source-note))))) 1689 (compute-children-text nested nil))) 1672 (defun compute-children-text (source-note stream source-note-map) 1673 (when source-note 1674 (unless (source-note-%text source-note) 1675 (setf (source-note-%text source-note) 1676 (substream stream (source-note-start source-note) (source-note-end source-note)))) 1677 (dolist (nested (source-note-children source-note)) 1678 (when nested 1679 (unless (source-note-%text nested) 1680 (setf (source-note-%text nested) 1681 (make-array (- (source-note-end nested) (source-note-start nested)) 1682 :displaced-to (source-note-%text source-note) 1683 :displaced-index-offset (- (source-note-start nested) 1684 (source-note-start source-note))))) 1685 (setf (gethash (source-note-form nested) source-note-map) nested) 1686 (compute-children-text nested nil source-note-map)))) 1690 1687 source-note) 1691 1688 -
branches/working-0711/ccl/level-1/l1-reader.lisp
r8440 r8444 2507 2507 (record-source-location-on-stream-p stream)) 2508 2508 ;; mb 2008-02-07: sometime the nested-source-notes end with t, don't know 2509 ;; why. don't really care here. 2509 ;; why. don't really care here. 2510 2510 (make-source-note :stream stream 2511 2511 :start (1- start) … … 2516 2516 (when (atom (cdr last)) 2517 2517 ;; dotted list. 2518 (setf (cdr last) (list (cdr last))))) 2518 (setf (cdr last) (list (cdr last)))) 2519 nested-source-notes) 2519 2520 '())))))))))) 2520 2521 -
branches/working-0711/ccl/lib/nfcomp.lisp
r8439 r8444 407 407 (loop 408 408 (let* ((*fcomp-stream-position* (file-position *fcomp-stream*)) 409 (*definition-source-note* *definition-source-note*)410 409 form) 411 410 (unless (eq read-package *package*) … … 425 424 (return)) 426 425 (setf form -form 427 *definition-source-note* (compute-children-text source-note *fcomp-stream*) 428 *form-source-note-map* (make-source-note-form-map *definition-source-note* 429 *form-source-note-map*)))))) 426 *form-source-note-map* (make-source-note-form-map 427 (compute-children-text source-note *fcomp-stream* (make-hash-table :test 'eq)))))))) 430 428 (fcomp-form form env processing-mode) 431 429 (setq *fcomp-previous-position* *fcomp-stream-position*)))) … … 530 528 ((%defparameter) (fcomp-load-%defparameter form env)) 531 529 ((%defvar %defvar-init) (fcomp-load-defvar form env)) 532 ((%defun) 533 (let ((*definition-source-note* (gethash form *form-source-note-map*))) 534 (fcomp-load-%defun form env))) 530 ((%defun) (fcomp-load-%defun form env)) 535 531 ((set-package %define-package) 536 532 (fcomp-random-toplevel-form form env)
Note:
See TracChangeset
for help on using the changeset viewer.
