* enhancement: the test runner now takes a --report-skipped-tests argument
to report the individual tests skipped as well as the number of skipped
tests.
+ * enhancement: undefined functions now appear in backtraces as ("undefined
+ function") instead of ("bogus stack frame") on x86oids.
* optimization: the compiler is smarter about representation selection for
floating point constants used in full calls.
* optimization: the compiler no longer refuses to coerce large fixnums to
(component-from-component-ptr component-ptr))))
(/noshow0 "got CODE")
(when (null code)
- (return (values code 0 context)))
+ ;; KLUDGE: Detect undefined functions by a range-check
+ ;; against the trampoline address and the following
+ ;; function in the runtime.
+ (if (< (foreign-symbol-address "undefined_tramp")
+ (sap-int (sb!vm:context-pc context))
+ (foreign-symbol-address #!+x86 "closure_tramp"
+ #!+x86-64 "alloc_tramp"))
+ (return (values :undefined-function 0 context))
+ (return (values code 0 context))))
(let* ((code-header-len (* (get-header-data code)
sb!vm:n-word-bytes))
(pc-offset
ret
SIZE(GNAME(undefined_tramp))
+/* KLUDGE: FIND-ESCAPED-FRAME (SYS:SRC;CODE;DEBUG-INT.LISP) needs
+ * to know the name of the function immediately following the
+ * undefined-function trampoline. */
.text
.align align_16byte,0x90
ret
SIZE(GNAME(undefined_tramp))
+/* KLUDGE: FIND-ESCAPED-FRAME (SYS:SRC;CODE;DEBUG-INT.LISP) needs
+ * to know the name of the function immediately following the
+ * undefined-function trampoline. */
+
/*
* the closure trampoline
*/
(defvar *undefined-function-frame*
;; bug 353
- '(#+(or x86 x86-64) "bogus stack frame"
- #-(or x86 x86-64) "undefined function"))
+ '("undefined function"))
;;; Test for "undefined function" (undefined_tramp) working properly.
;;; Try it with and without tail call elimination, since they can have