Ignore:
Timestamp:
Jul 26, 2009, 1:24:19 PM (10 years ago)
Author:
gz
Message:

Some changes in support of Slime:

Implement CCL:COMPUTE-APPLICABLE-METHODS-USING-CLASSES

Add a :stream-args argument to CCL:ACCEPT-CONNECTION, for one-time initargs for the stream being created. E.g. (accept-connection listener :stream-args `(:external-format ,external-format-for-this-connection-only))

Add CCL:TEMP-PATHNAME

Bind new var CCL:*TOP-ERROR-FRAME* to the error frame in break loops, to make it available to debugger/break hooks.

Add CCL:*SELECT-INTERACTIVE-PROCESS-HOOK* and call it to select the process to use for handling SIGINT.

Add CCL:*MERGE-COMPILER-WARNINGS* to control whether warnings with the same format string and args but different source locations should be merged.

Export CCL:COMPILER-WARNING, CCL:STYLE-WARNING, CCL:COMPILER-WARNING-FUNCTION-NAME and CCL:COMPILER-WARNING-SOURCE-NOTE.

Create a CCL:COMPILER-WARNING-SOURCE-NOTE even if not otherwise saving source locations, just using the fasl file and toplevel stream position, but taking into account compile-file-original-truename and compiler-file-original-buffer-offset. Get rid of stream-position and file-name slots in compiler warnings.

Export CCL:REPORT-COMPILER-WARNING, and make it accept a :SHORT keyword arg to skip the textual representation of the warning location.

Export CCL:NAME-OF, and make it return the fully qualified name for methods, return object for eql-specializer

Make CCL:FIND-DEFINITION-SOURCES handle xref-entries.

Export CCL:SETF-FUNCTION-SPEC-NAME, make it explicitly ignore the long-form setf method case.

Export the basic inspector API from the inspector package.

Export EQL-SPECIALIZER and SLOT-DEFINITION-DOCUMENTATION from OPENMCL-MOP

Refactor things a bit in backtrace code, define and export an API for examining backtraces:

CCL:MAP-CALL-FRAMES
CCL:FRAME-FUNCTION
CCL:FRAME-SUPPLIED-ARGUMENTS
CCL:FRAME-NAMED-VARIABLES

other misc new exports:

CCL:DEFINITION-TYPE
CCL;CALLER-FUNCTIONS
CCL:SLOT-DEFINITION-DOCUMENTATION
CCL:*SAVE-ARGLIST-INFO*
CCL:NATIVE-TRANSLATED-NAMESTRING
CCL:NATIVE-TO-PATHNAME
CCL:HASH-TABLE-WEAK-P
CCL;PROCESS-SERIAL-NUMBER
CCL:PROCESS-EXHAUSTED-P
CCL:APPLY-IN-FRAME

Other misc tweaks:

Make cbreak-loop use the break message when given a uselessly empty condition.

Use setf-function-name-p more consistently

Make find-applicable-methods handle eql specializers better.

Try to more consistently recognize lists of the form (:method ...) as method names.

Add xref-entry-full-name (which wasn't needed in the end)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/level-1/l1-events.lisp

    r12222 r12463  
    108108                           (progv vars old-vals
    109109                             (mapcar (lambda (v f) (set v (funcall f))) vars inits)
    110                              (let ((condition (make-condition 'interrupt-signal-condition)))
     110                             (let ((condition (make-condition 'interrupt-signal-condition))
     111                                   (*top-error-frame* (%current-exception-frame)))
    111112                               (ignoring-without-interrupts
    112113                                 (when *invoke-debugger-hook-on-interrupt*
     
    115116                                     (when hook
    116117                                       (funcall hook condition hook))))
    117                                  (%break-in-frame
    118                                   #+ppc-target *fake-stack-frames*
    119                                   #+x86-target (or (let* ((xcf (%current-xcf)))
    120                                                      (if xcf
    121                                                        (%%frame-backlink xcf)))
    122                                                    (%get-frame-ptr))
    123                                   condition)
     118                                 (%break-in-frame *top-error-frame* condition)
    124119                                 (clear-input *terminal-io*))))))))
    125120
     
    143138  (thread-handle-interrupts))
    144139
    145 (defun select-interactive-abort-process (&aux proc)
    146   (or (and (setq proc *interactive-abort-process*)
    147            (process-active-p proc)
    148            proc)
    149       (let* ((sr (input-stream-shared-resource *terminal-input*)))
    150         (when sr
    151           (or (and (setq proc (shared-resource-current-owner sr))
    152                    (process-active-p proc)
    153                    proc)
    154               (and (setq proc (shared-resource-primary-owner sr))
    155                    (process-active-p proc)
    156                    proc))))))
     140
     141(defvar *select-interactive-process-hook* nil)
     142
     143(defun select-interactive-abort-process ()
     144  (flet ((maybe-proc (proc) (and proc (process-active-p proc) proc)))
     145    (or (maybe-proc (and *select-interactive-process-hook*
     146                         (funcall *select-interactive-process-hook*)))
     147        (maybe-proc *interactive-abort-process*)
     148        (let* ((sr (input-stream-shared-resource *terminal-input*)))
     149          (when sr
     150            (or (maybe-proc (shared-resource-current-owner sr))
     151                (maybe-proc (shared-resource-primary-owner sr))))))))
    157152
    158153(defun handle-gc-hooks ()
Note: See TracChangeset for help on using the changeset viewer.