We could rewrite the recursive array klass allocation, that would be a good improvement and would probably help performance for large multidimensional array allocation. It has locking for multithreading, so is not a trivial change.
This bug from this report was cause by a stack overflow because during the recursive array class allocation, we call compute_modifier_flags at each level of the recursive allocation, which recurses for each level to get to the bottom element type. The bottom_klass() is available at each level making this recursion unnecessary and increases the risk of stack overflow error, as well as having poor performance. Fixing this allows this test to run.
As far as I can tell, nothing in the compressed oops code fixed this other than possibly changing the amount of stack used somewhere.