3560 Node* initial_slow_cmp = _gvn.transform( new CmpUNode( length, intcon( fast_size_limit ) ) ); |
3560 Node* initial_slow_cmp = _gvn.transform( new CmpUNode( length, intcon( fast_size_limit ) ) ); |
3561 Node* initial_slow_test = _gvn.transform( new BoolNode( initial_slow_cmp, BoolTest::gt ) ); |
3561 Node* initial_slow_test = _gvn.transform( new BoolNode( initial_slow_cmp, BoolTest::gt ) ); |
3562 |
3562 |
3563 // --- Size Computation --- |
3563 // --- Size Computation --- |
3564 // array_size = round_to_heap(array_header + (length << elem_shift)); |
3564 // array_size = round_to_heap(array_header + (length << elem_shift)); |
3565 // where round_to_heap(x) == round_to(x, MinObjAlignmentInBytes) |
3565 // where round_to_heap(x) == align_to(x, MinObjAlignmentInBytes) |
3566 // and round_to(x, y) == ((x + y-1) & ~(y-1)) |
3566 // and align_to(x, y) == ((x + y-1) & ~(y-1)) |
3567 // The rounding mask is strength-reduced, if possible. |
3567 // The rounding mask is strength-reduced, if possible. |
3568 int round_mask = MinObjAlignmentInBytes - 1; |
3568 int round_mask = MinObjAlignmentInBytes - 1; |
3569 Node* header_size = NULL; |
3569 Node* header_size = NULL; |
3570 int header_size_min = arrayOopDesc::base_offset_in_bytes(T_BYTE); |
3570 int header_size_min = arrayOopDesc::base_offset_in_bytes(T_BYTE); |
3571 // (T_BYTE has the weakest alignment and size restrictions...) |
3571 // (T_BYTE has the weakest alignment and size restrictions...) |