Ignore:
Timestamp:
08/19/09 14:51:56 (12 years ago)
Author:
Mark Evenson
Message:

Split StackFrame? abstraction into Java and Lisp stack frames.

From the original patch/idea from Tobias Rittweiler this introduces
more information of primary interest to ABCL implemnters such as when
a form like (make-thread #'(lambda ())) is evaluated

All users of EXT:BACKTRACE-AS-LIST should now use SYS:BACKTRACE, the
results of which is a list of the new builtin classes JAVA_STACK_FRAME
or LISP_STACK_FRAME. The methods SYS:FRAME-TO-STRING and
SYS:FRAME-TO-LIST are defined to break these new objects into
inspectable parts. As a convenience, there is a SYS:BACKTRACE-AS-LIST
which calls SYS:FRAME-TO-LIST to each element of the computed
backtrace.

Refactorings have occurred on the Java side: the misnamed
LispThread?.backtrace() is now LispThread?.printBacktrace().
LispThread?.backtraceAsList() is now LispThread?.backtrace() as it is
a shorter name, and more to the point.

Java stack frames only appear after a call through Lisp.error(), which
has only the top level as a restart as an option.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abcl/src/org/armedbear/lisp/signal.lisp

    r11391 r12105  
    5050           (*break-on-signals* nil))
    5151      (when (typep condition old-bos)
    52         (let ((*saved-backtrace* (backtrace-as-list)))
     52        (let ((*saved-backtrace* (sys:backtrace)))
    5353          (break "~A~%BREAK called because of *BREAK-ON-SIGNALS* (now rebound to NIL)."
    5454                 condition))))
Note: See TracChangeset for help on using the changeset viewer.