* enhancement: GENCGC reclaims space more aggressively when objects being
allocated are a large fraction of the total available heap space.
(lp#936304)
+ * enhancement: backtraces show the correct number of arguments for frames
+ called with too many arguments.
* optimization: fewer uses of full calls to signed modular functions.
(lp#903821)
* bug fix: fixed disassembly of some SSE instructions on x86-64.
(defun clean-xep (name args)
(values (second name)
(if (consp args)
- (let ((count (first args))
- (real-args (rest args)))
+ (let* ((count (first args))
+ (real-args (rest args)))
(if (fixnump count)
- (subseq real-args 0
- (min count (length real-args)))
+ ;; So, this is a cheap trick -- but makes backtraces for
+ ;; too-many-arguments-errors much, much easier to to
+ ;; understand. FIXME: For :EXTERNAL frames at least we
+ ;; should be able to get the actual arguments, really.
+ (loop repeat count
+ for arg = (if real-args
+ (pop real-args)
+ (make-unprintable-object "unknown"))
+ collect arg)
real-args))
args)))
(defun oops ()
(error "oops"))
+(with-test (:name :xep-too-many-arguments)
+ (assert (verify-backtrace (lambda () (oops 1 2 3 4 5 6))
+ '((oops ? ? ? ? ? ?)))))
+
(defmacro defbt (n ll &body body)
`(progn
;; normal debug info