Comment 5 for bug 1382383

Revision history for this message
Douglas Katzman (dougk) wrote :

That looks right. But it appears I was making stuff up when I claimed what ARRAY-STORAGE-VECTOR is conceptually.

%ARRAY-DATA-VECTOR and ARRAY-STORAGE-VECTOR each chase exactly one pointer for inputs that are not already a vector, but it is illegal to call ARRAY-STORAGE-VECTOR where the backing array is not in fact a vector. So that's why it seems like the intent is to return the final vector in a chain of displacements.

The concern I would have is that since %ARRAY-DATA-VECTOR is the one used almost everywhere internally, weakening it as was done for correctness requires examining all of its uses.
Consider WITH-ARRAY stuff in 'array-tran'. Now that ARRAY-DATA-VECTOR isn't *known* to return a vector except when the loop over array headers terminates, do we now need to advise the compiler of that with (TRULY-THE (SIMPLE-blah)) in various places to assert (without checking) that the ultimate vector is really a vector?
I'm not sure that code inside the WITH-ARRAY will know that otherwise.