84 if (lo < Integer.MAX_VALUE) {
85 final int end = (int)Math.min(hi + 1, Integer.MAX_VALUE);
86 for (int i = (int)lo; i < end; i++) {
87 Array.set(value, i, undefValue);
88 }
89 }
90
91 return value;
92 }
93
94 @Override
95 public ArrayData ensure(final long safeIndex) {
96 if (safeIndex >= SparseArrayData.MAX_DENSE_LENGTH && safeIndex >= length()) {
97 return new SparseArrayData(this, safeIndex + 1);
98 }
99
100 return super.ensure(safeIndex);
101 }
102
103 @Override
104 public void shiftLeft(final int by) {
105 super.shiftLeft(by);
106 lo = Math.max(0, lo - by);
107 hi = Math.max(-1, hi - by);
108 }
109
110 @Override
111 public ArrayData shiftRight(final int by) {
112 super.shiftRight(by);
113 final long len = length();
114 lo = Math.min(len, lo + by);
115 hi = Math.min(len - 1, hi + by);
116
117 return isEmpty() ? getUnderlying() : this;
118 }
119
120 @Override
121 public ArrayData shrink(final long newLength) {
122 super.shrink(newLength);
123 lo = Math.min(newLength, lo);
124 hi = Math.min(newLength - 1, hi);
125
126 return isEmpty() ? getUnderlying() : this;
127 }
|
84 if (lo < Integer.MAX_VALUE) {
85 final int end = (int)Math.min(hi + 1, Integer.MAX_VALUE);
86 for (int i = (int)lo; i < end; i++) {
87 Array.set(value, i, undefValue);
88 }
89 }
90
91 return value;
92 }
93
94 @Override
95 public ArrayData ensure(final long safeIndex) {
96 if (safeIndex >= SparseArrayData.MAX_DENSE_LENGTH && safeIndex >= length()) {
97 return new SparseArrayData(this, safeIndex + 1);
98 }
99
100 return super.ensure(safeIndex);
101 }
102
103 @Override
104 public ArrayData shiftLeft(final int by) {
105 super.shiftLeft(by);
106 lo = Math.max(0, lo - by);
107 hi = Math.max(-1, hi - by);
108
109 return isEmpty() ? getUnderlying() : this;
110 }
111
112 @Override
113 public ArrayData shiftRight(final int by) {
114 super.shiftRight(by);
115 final long len = length();
116 lo = Math.min(len, lo + by);
117 hi = Math.min(len - 1, hi + by);
118
119 return isEmpty() ? getUnderlying() : this;
120 }
121
122 @Override
123 public ArrayData shrink(final long newLength) {
124 super.shrink(newLength);
125 lo = Math.min(newLength, lo);
126 hi = Math.min(newLength - 1, hi);
127
128 return isEmpty() ? getUnderlying() : this;
129 }
|