56 return Array.newInstance(componentType, 0); |
56 return Array.newInstance(componentType, 0); |
57 } |
57 } |
58 |
58 |
59 @Override |
59 @Override |
60 public ArrayData convert(final Class<?> type) { |
60 public ArrayData convert(final Class<?> type) { |
61 final long length = length(); |
61 final long len = length; |
62 final ArrayData arrayData; |
62 final ArrayData arrayData; |
63 if (type == Long.class) { |
63 if (type == Long.class) { |
64 arrayData = new LongArrayData(new long[ArrayData.nextSize((int)length)], (int)length); |
64 arrayData = new LongArrayData(new long[ArrayData.nextSize((int)len)], (int)len); |
65 } else if (type == Double.class) { |
65 } else if (type == Double.class) { |
66 arrayData = new NumberArrayData(new double[ArrayData.nextSize((int)length)], (int)length); |
66 arrayData = new NumberArrayData(new double[ArrayData.nextSize((int)len)], (int)len); |
67 } else if (type == Integer.class) { |
67 } else if (type == Integer.class) { |
68 arrayData = new IntArrayData(new int[ArrayData.nextSize((int)length)], (int)length); |
68 arrayData = new IntArrayData(new int[ArrayData.nextSize((int)len)], (int)len); |
69 } else { |
69 } else { |
70 assert !type.isPrimitive(); |
70 assert !type.isPrimitive(); |
71 arrayData = new ObjectArrayData(new Object[ArrayData.nextSize((int)length)], (int)length); |
71 arrayData = new ObjectArrayData(new Object[ArrayData.nextSize((int)len)], (int)len); |
72 } |
72 } |
73 return length == 0 ? arrayData : new DeletedRangeArrayFilter(arrayData, 0, length - 1); |
73 return length == 0 ? arrayData : new DeletedRangeArrayFilter(arrayData, 0, len - 1); |
74 } |
74 } |
75 |
75 |
76 @Override |
76 @Override |
77 public void shiftLeft(final int by) { |
77 public void shiftLeft(final int by) { |
78 //empty |
78 //empty |
88 if (safeIndex >= SparseArrayData.MAX_DENSE_LENGTH) { |
88 if (safeIndex >= SparseArrayData.MAX_DENSE_LENGTH) { |
89 return new SparseArrayData(this, safeIndex + 1); |
89 return new SparseArrayData(this, safeIndex + 1); |
90 } |
90 } |
91 |
91 |
92 // Don't trample the shared EMPTY_ARRAY. |
92 // Don't trample the shared EMPTY_ARRAY. |
93 if (length() == 0) { |
93 if (length == 0) { |
94 return new NoTypeArrayData(Math.max(safeIndex + 1, length())); |
94 return new NoTypeArrayData(Math.max(safeIndex + 1, length)); |
95 } |
95 } |
96 |
96 |
97 setLength(Math.max(safeIndex + 1, length())); |
97 setLength(Math.max(safeIndex + 1, length)); |
98 return this; |
98 return this; |
99 } |
99 } |
100 |
100 |
101 @Override |
101 @Override |
102 public ArrayData shrink(final long newLength) { |
102 public ArrayData shrink(final long newLength) { |