Array bounds checks

Boehm, Hans hans_boehm@hp.com
Thu Oct 26 12:33:00 GMT 2000


> Currently we can't implement that because our array header is attached
> directly to the data. We'd have to add an indirection to make
> contiguous multidimensional arrays work.
>I don't think I understand the problem. You would allocate the same objects
as now, except all in one contiguous chunk. I.e. you'd get something like
Main array header (includes a "contiguous" tag)
Main array (containing pointers to subarrays)
0th subarray header
0th subarray
1st subarray header
...
It should still be possible to locate the [i,j] element with a
multiplication and a couple of additions. There are some slightly
unfortunate GC implications, but you could easily make this optional. Even
if you make the decision at run-time, the main cost is dead code.
I suspect that in the long run it would actually be nice to discourage the
hand-coded linearization, since that makes it very hard to remove the
remaining subscript checks. At the moment I'm not surprised that it helps
appreciably.
Am I missing something?
Hans


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /