grounding in the PCL implementation of CLOS.
* bug fix: TRUENAME on "/" no longer returns a relative pathname.
(reported by tomppa on #lisp)
+ * bug fix: clear the direction flag on Lisp -> C transitions, as
+ required by the x86-64 ABI. Fixes mysterious GC crashes on SuSE.
+ (reported by Andrej Grozin and Hendrik Maryns)
* optimization: major improvements to GC efficiency on GENCGC platforms
* optimization: faster implementation of EQUAL
* optimization: emit more efficient opcodes for some common
(:vop-var vop)
(:save-p t)
(:generator 0
+ ;; ABI: Direction flag must be clear on function entry. -- JES, 2006-01-20
+ (inst cld)
;; ABI: AL contains amount of arguments passed in XMM registers
;; for vararg calls.
(move-immediate rax
.global GNAME(call_into_c)
.type GNAME(call_into_c),@function
GNAME(call_into_c):
+ /* ABI requires that the direction flag be clear on function
+ * entry and exit. */
+ cld
+
push %rbp # Save old frame pointer.
mov %rsp,%rbp # Establish new frame.
pop %r12
pop %rbx
+ /* ABI requires that the direction flag be clear on function
+ * entry and exit. */
+ cld
+
/* FIXME Restore the NPX state. */
/* return value is already in rax where lisp expects it */
ret
.size GNAME(fast_bzero), .-GNAME(fast_bzero)
-\f
.end
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.9.8.46"
+"0.9.8.47"