nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/arrays/DeletedRangeArrayFilter.java
equal
deleted
inserted
replaced
43 |
43 |
44 private static ArrayData maybeSparse(final ArrayData underlying, final long hi) { |
44 private static ArrayData maybeSparse(final ArrayData underlying, final long hi) { |
45 if(hi < SparseArrayData.MAX_DENSE_LENGTH || underlying instanceof SparseArrayData) { |
45 if(hi < SparseArrayData.MAX_DENSE_LENGTH || underlying instanceof SparseArrayData) { |
46 return underlying; |
46 return underlying; |
47 } |
47 } |
48 return new SparseArrayData(underlying, underlying.length()); |
48 return new SparseArrayData(underlying, underlying.length); |
49 } |
49 } |
50 |
50 |
51 private boolean isEmpty() { |
51 private boolean isEmpty() { |
52 return lo > hi; |
52 return lo > hi; |
53 } |
53 } |
91 return value; |
91 return value; |
92 } |
92 } |
93 |
93 |
94 @Override |
94 @Override |
95 public ArrayData ensure(final long safeIndex) { |
95 public ArrayData ensure(final long safeIndex) { |
96 if (safeIndex >= SparseArrayData.MAX_DENSE_LENGTH && safeIndex >= length()) { |
96 if (safeIndex >= SparseArrayData.MAX_DENSE_LENGTH && safeIndex >= length) { |
97 return new SparseArrayData(this, safeIndex + 1); |
97 return new SparseArrayData(this, safeIndex + 1); |
98 } |
98 } |
99 |
99 |
100 return super.ensure(safeIndex); |
100 return super.ensure(safeIndex); |
101 } |
101 } |
108 } |
108 } |
109 |
109 |
110 @Override |
110 @Override |
111 public ArrayData shiftRight(final int by) { |
111 public ArrayData shiftRight(final int by) { |
112 super.shiftRight(by); |
112 super.shiftRight(by); |
113 lo = Math.min(length(), lo + by); |
113 final long len = length; |
114 hi = Math.min(length() - 1, hi + by); |
114 lo = Math.min(len, lo + by); |
|
115 hi = Math.min(len - 1, hi + by); |
115 |
116 |
116 return isEmpty() ? getUnderlying() : this; |
117 return isEmpty() ? getUnderlying() : this; |
117 } |
118 } |
118 |
119 |
119 @Override |
120 @Override |
235 return this; |
236 return this; |
236 } |
237 } |
237 |
238 |
238 @Override |
239 @Override |
239 public Object pop() { |
240 public Object pop() { |
240 final int index = (int)(length() - 1); |
241 final int index = (int)length - 1; |
241 if (super.has(index)) { |
242 if (super.has(index)) { |
242 final boolean isDeleted = isDeleted(index); |
243 final boolean isDeleted = isDeleted(index); |
243 final Object value = super.pop(); |
244 final Object value = super.pop(); |
244 |
245 |
245 lo = Math.min(index + 1, lo); |
246 lo = Math.min(index + 1, lo); |