From: Christophe R. <cs...@ca...> - 2009-11-19 11:08:27
|
Nikodemus Siivola <nik...@ra...> writes: > Though constraint propagation is already an unholy timesink, some of > these look potentially interesting: eg. propagating BOUNDP would make > for nicer special variable access code, and ARRAY-HEADER-P is also > almost certainly worth looking at. EQUAL seems like a good candidate > too... > COMMON-LISP:ARRAY-HAS-FILL-POINTER-P > COMMON-LISP:ARRAY-IN-BOUNDS-P > SB!KERNEL:%ARRAY-DISPLACED-P Based on extensive user and developer feedback (read: a conversation with Juho and Paul on IRC), it seems that there is demand for a little bit of type system and compiler hackery, to teach the system about particular kinds of non-simple arrays. The comment that motivates this is "adjustable arrays are total crap in sbcl in general; vector-push-extend is particularly crap". I think I can do the type system modifications; a preliminary, which is to teach the type system that (and <array-type> (not simple-array)) means that the array is definitely complex, seems to be working, and incidentally fixes #309129. The full modifications will have to wait until after sbcl-1.0.33; this is just a heads-up to say that it might soon become possible to exploit specific bits of array properties rather more than at present. Cheers, Christophe |