X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fx86%2Fmacros.lisp;h=028d6b71f7c4d0271c2a11d23721526e5c17e233;hb=80f222325e1f677e5cf8de01c6990906fa47f65d;hp=137a0e8c2f791d1909da4057b200b5a60e9107f0;hpb=fb8533122551bbb7aea669f40bc91c1211809b58;p=sbcl.git diff --git a/src/compiler/x86/macros.lisp b/src/compiler/x86/macros.lisp index 137a0e8..028d6b7 100644 --- a/src/compiler/x86/macros.lisp +++ b/src/compiler/x86/macros.lisp @@ -143,7 +143,7 @@ ;;; which time all calls to alloc() would have needed a syscall to ;;; mask signals for the duration. Now we have pseudoatomic there's ;;; no need for that overhead. Still, inline alloc would be a neat -;;; addition someday +;;; addition someday (except see below). (defun allocation-dynamic-extent (alloc-tn size) (inst sub esp-tn size) @@ -228,7 +228,13 @@ (defun allocation (alloc-tn size &optional inline dynamic-extent) (cond (dynamic-extent (allocation-dynamic-extent alloc-tn size)) - ((or (null inline) (policy inline (>= speed space))) + ;; FIXME: for reasons unknown, inline allocation is a speed win on + ;; non-P4s, and a speed loss on P4s (and probably other such + ;; high-spec high-cache machines). :INLINE-ALLOCATION-IS-GOOD is + ;; a bit of a KLUDGE, really. -- CSR, 2004-08-05 (following + ;; observations made by ASF and Juho Snellman) + ((and (member :inline-allocation-is-good *backend-subfeatures*) + (or (null inline) (policy inline (>= speed space)))) (allocation-inline alloc-tn size)) (t (allocation-notinline alloc-tn size))) (values))