X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fx86%2Ftype-vops.lisp;h=fda5f1308ab87335a873aed686ab109d71fa7731;hb=771b864c8f32af7734bc0550aeaf1539fc4df194;hp=7335973ffa5f8afff5000b98b42090ee6c9e3b1e;hpb=cd875f8c1fb306067521330fbf84411713b7c20d;p=sbcl.git diff --git a/src/compiler/x86/type-vops.lisp b/src/compiler/x86/type-vops.lisp index 7335973..fda5f13 100644 --- a/src/compiler/x86/type-vops.lisp +++ b/src/compiler/x86/type-vops.lisp @@ -62,6 +62,14 @@ (unless al-loaded (move eax-tn value) (inst and al-tn lowtag-mask)) + ;; FIXME: another 'optimization' which doesn't appear to work: + ;; prefetching the hypothetically pointed-to version should help, + ;; but this is in fact non-ideal in plenty of ways: we emit way too + ;; many of these prefetch instructions; pointed-to objects are very + ;; often in the cache anyway; etc. etc. Still, as proof-of-concept, + ;; not too bad. -- CSR, 2004-07-27 + (when (member :prefetch *backend-subfeatures*) + (inst prefetchnta (make-ea :byte :base value :disp (- lowtag)))) (inst cmp al-tn lowtag) (inst jmp (if not-p :ne :e) target))