X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=OPTIMIZATIONS;h=631501c154e62064e67e2a87c019127fa03df64d;hb=bef0d9c1274819ee3fb886401209662bace136ce;hp=623e4336002262ae54f8be5fab45549e44f90007;hpb=43b1750ede8767928788b158399d3c5d2910855a;p=sbcl.git diff --git a/OPTIMIZATIONS b/OPTIMIZATIONS index 623e433..631501c 100644 --- a/OPTIMIZATIONS +++ b/OPTIMIZATIONS @@ -220,13 +220,16 @@ SBCL cannot derive upper bound for I and uses generic arithmetic here: should know the connection between an NLE and its CLEANUP.) -------------------------------------------------------------------------------- #27 -(We always zeroize stack-allocated arrays of boxed elements. The -previous note here suggested that we could avoid that step on -platforms with conservative GC; it's not clear to me (NJF) that -doing so is a wise idea.) - -x86 and x86-64 do not zeroize stack-allocated arrays of unboxed -elements; other platforms could copy what they do. +Initialization of stack-allocated arrays is inefficient: we always +fill the vector with zeroes, even when it is not needed (as for +platforms with conservative GC or for arrays of unboxed objectes) and +is performed later explicitely. + +(This is harder than it might look at first glance, as MAKE-ARRAY is smart +enough to eliminate something like ':initial-element 0'. Such an optimization +is valid if the vector is being allocated in the heap, but not if it is being +allocated on the stack. You could remove this optimization, but that makes +the heap-allocated case somewhat slower...) -------------------------------------------------------------------------------- #28 a. Accessing raw slots in structure instances is more inefficient than