Changeset 12662


Ignore:
Timestamp:
Aug 24, 2009, 4:18:49 PM (10 years ago)
Author:
gz
Message:

Make the backtrace handle non-lfun frames better

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/cocoa-ide/cocoa-backtrace.lisp

    r12652 r12662  
    9292    (make-instance 'frame-descriptor
    9393      :data (cons fp context)
    94       :label (with-output-to-string (stream)
    95                (format stream "(~S" (or (ccl:function-name lfun) lfun))
    96                (if (eq args (ccl::%unbound-marker))
    97                  (format stream " #<Unknown Arguments>")
    98                  (loop for arg in args
    99                    do (if (eq arg (ccl::%unbound-marker))
    100                         (format stream " #<Unavailable>")
    101                         (format stream " ~:['~;~]~s" (ccl::self-evaluating-p arg) arg))))
    102                (format stream ")"))
    103       :values (map 'vector
    104                    (lambda (var.val)
    105                      (destructuring-bind (var . val) var.val
    106                        (let ((label (format nil "~:[~s~;~a~]: ~s"
    107                                             (stringp var) var val)))
    108                          (cons label var.val))))
    109                    (cons `("Function" . ,lfun) vars)))))
     94      :label (if lfun
     95               (with-output-to-string (stream)
     96                 (format stream "(~S" (or (ccl:function-name lfun) lfun))
     97                 (if (eq args (ccl::%unbound-marker))
     98                   (format stream " #<Unknown Arguments>")
     99                   (loop for arg in args
     100                     do (if (eq arg (ccl::%unbound-marker))
     101                          (format stream " #<Unavailable>")
     102                          (format stream " ~:['~;~]~s" (ccl::self-evaluating-p arg) arg))))
     103                 (format stream ")"))
     104               ":kernel")
     105      :values (if lfun
     106                (map 'vector
     107                     (lambda (var.val)
     108                       (destructuring-bind (var . val) var.val
     109                         (let ((label (format nil "~:[~s~;~a~]: ~s"
     110                                              (stringp var) var val)))
     111                           (cons label var.val))))
     112                     (cons `("Function" . ,lfun)
     113                           (and (not (eq vars (ccl::%unbound-marker))) vars)))
     114                ))))
    110115
    111116(defmethod stack-descriptor-frame ((sd stack-descriptor) index)
     
    308313(objc:defmethod (#/outlineView:isItemExpandable: :<BOOL>)
    309314    ((self backtrace-window-controller) view item)
    310     (declare (ignore view))
    311     (or (%null-ptr-p item)
    312         (our-frame-label-p self item)))
     315  (declare (ignore view))
     316  (or (%null-ptr-p item)
     317      (and (our-frame-label-p self item)
     318           (> (frame-descriptor-value-count (frame-label-descriptor item)) 0))))
    313319
    314320(objc:defmethod (#/outlineView:numberOfChildrenOfItem: :<NSI>nteger)
Note: See TracChangeset for help on using the changeset viewer.