diff --git a/polyfill.js b/polyfill.js
index c48740c..75cc749 100644
--- a/polyfill.js
+++ b/polyfill.js
@@ -182,20 +182,21 @@
}
function doSplice({ src, target, actualStart, actualDeleteCount, values, newLen }) {
- let k = 0;
- while (k < actualStart) {
- target[k] = src[k];
- k++;
+ let i = 0;
+ while (i < actualStart) {
+ target[i] = src[i];
+ i++;
}
for (const E of values) {
- target[k] = E;
- k++;
+ target[i] = E;
+ i++;
}
- while (k < newLen) {
- let from = k + actualDeleteCount - values.length;
- let fromValue = src[from];
- target[k] = fromValue;
- k++;
+ let r = actualStart + actualDeleteCount;
+ while (i < newLen) {
+ let fromValue = src[r];
+ target[i] = fromValue;
+ i++;
+ r++;
}
}
diff --git a/spec.html b/spec.html
index 05541a6..8a6bbfd 100644
--- a/spec.html
+++ b/spec.html
@@ -88,22 +88,24 @@
Array.prototype.toSpliced ( _start_, _deleteCount_, ..._items_ )
1. Let _newLen_ be _len_ + _insertCount_ - _actualDeleteCount_.
1. If _newLen_ > 253 - 1, throw a *TypeError* exception.
1. Let _A_ be ? ArrayCreate(𝔽(_newLen_)).
- 1. Let _k_ be 0.
+ 1. Let _i_ be 0.
+ 1. Let _r_ be _actualStart_ + _actualDeleteCount_.
1. Repeat, while _k_ < _actualStart_,
- 1. Let _Pk_ be ! ToString(𝔽(_k_)).
- 1. Let _kValue_ be ? Get(_O_, _Pk_).
- 1. Perform ! CreateDataPropertyOrThrow(_A_, _Pk_, _kValue_).
- 1. Set _k_ to _k_ + 1.
+ 1. Let _Pi_ be ! ToString(𝔽(_i_)).
+ 1. Let _iValue_ be ? Get(_O_, _Pi_).
+ 1. Perform ! CreateDataPropertyOrThrow(_A_, _Pi_, _iValue_).
+ 1. Set _i_ to _i_ + 1.
1. For each element _E_ of _items_, do
- 1. Let _Pk_ be ! ToString(𝔽(_k_)).
- 1. Perform ! CreateDataPropertyOrThrow(_A_, _Pk_, _E_).
- 1. Set _k_ to _k_ + 1.
- 1. Repeat, while _k_ < _newLen_,
- 1. Let _Pk_ be ! ToString(𝔽(_k_)).
- 1. Let _from_ be ! ToString(𝔽(_k_ + _actualDeleteCount_ - _insertCount_)).
+ 1. Let _Pi_ be ! ToString(𝔽(_i_)).
+ 1. Perform ! CreateDataPropertyOrThrow(_A_, _Pi_, _E_).
+ 1. Set _i_ to _i_ + 1.
+ 1. Repeat, while _i_ < _newLen_,
+ 1. Let _Pi_ be ! ToString(𝔽(_i_)).
+ 1. Let _from_ be ! ToString(𝔽(_r_)).
1. Let _fromValue_ be ? Get(_O_, _from_).
- 1. Perform ! CreateDataPropertyOrThrow(_A_, _Pk_, _fromValue_).
- 1. Set _k_ to _k_ + 1.
+ 1. Perform ! CreateDataPropertyOrThrow(_A_, _Pi_, _fromValue_).
+ 1. Set _i_ to _i_ + 1.
+ 1. Set _r_ to _r_ + 1.
1. Return _A_.
@@ -284,22 +286,24 @@ %TypedArray%.prototype.toSpliced ( _start_, _deleteCount_, ..._items_ )
1. Let _actualDeleteCount_ be the result of clamping _dc_ between 0 and _len_ - _actualStart_.
1. Let _newLen_ be _len_ + _insert_Count_ - _actualDeleteCount_.
1. Let _A_ be ? TypedArrayCreateSameType(_O_, « 𝔽(_newLen_) »).
- 1. Let _k_ be 0.
- 1. Repeat, while _k_ < _actualStart_,
- 1. Let _Pk_ be ! ToString(𝔽(_k_)).
- 1. Let _kValue_ be ! Get(_src_, _Pk_).
- 1. Perform ! Set(_target_, _Pk_, _kValue_, *true*).
- 1. Set _k_ to _k_ + 1.
+ 1. Let _i_ be 0.
+ 1. Let _r_ be _actualStart_ + _actualDeleteCount_.
+ 1. Repeat, while _i_ < _actualStart_,
+ 1. Let _Pi_ be ! ToString(𝔽(_i_)).
+ 1. Let _iValue_ be ! Get(_src_, _Pi_).
+ 1. Perform ! Set(_target_, _Pi_, _iValue_, *true*).
+ 1. Set _i_ to _i_ + 1.
1. For each element _E_ of _items_, do
- 1. Let _Pk_ be ! ToString(𝔽(_k_)).
- 1. Perform ? Set(_A_, _Pk_, _E_, *true*).
- 1. Set _k_ to _k_ + 1.
- 1. Repeat, while _k_ < _newLen_,
- 1. Let _Pk_ be ! ToString(𝔽(_k_)).
- 1. Let _from_ be ! ToString(𝔽(_k_ + _actualDeleteCount_ - _insertCount_)).
+ 1. Let _Pi_ be ! ToString(𝔽(_i_)).
+ 1. Perform ? Set(_A_, _Pi_, _E_, *true*).
+ 1. Set _i_ to _i_ + 1.
+ 1. Repeat, while _r_ < _newLen_,
+ 1. Let _Pi_ be ! ToString(𝔽(_i_)).
+ 1. Let _from_ be ! ToString(𝔽(_r_)).
1. Let _fromValue_ be ! Get(_O_, _from_).
- 1. Perform ! Set(_A_, _Pk_, _fromValue_, *true*).
- 1. Set _k_ to _k_ + 1.
+ 1. Perform ! Set(_A_, _Pi_, _fromValue_, *true*).
+ 1. Set _i_ to _i_ + 1.
+ 1. Set _r_ to _r_ + 1.
1. Return _A_.