Index: src/array.js |
diff --git a/src/array.js b/src/array.js |
index 5f89ebb7a6b6c4cfea2b66df051e918e95a74c0d..4a7aea5e1d9fd358cd679ae0f534e8d6bed1f257 100644 |
--- a/src/array.js |
+++ b/src/array.js |
@@ -399,14 +399,13 @@ function ObservedArrayPop(n) { |
n--; |
var value = this[n]; |
- EnqueueSpliceRecord(this, n, [value], 0); |
- |
try { |
BeginPerformSplice(this); |
delete this[n]; |
this.length = n; |
} finally { |
EndPerformSplice(this); |
+ EnqueueSpliceRecord(this, n, [value], 0); |
} |
return value; |
@@ -441,8 +440,6 @@ function ObservedArrayPush() { |
var n = TO_UINT32(this.length); |
var m = %_ArgumentsLength(); |
- EnqueueSpliceRecord(this, n, [], m); |
- |
try { |
BeginPerformSplice(this); |
for (var i = 0; i < m; i++) { |
@@ -451,6 +448,7 @@ function ObservedArrayPush() { |
this.length = n + m; |
} finally { |
EndPerformSplice(this); |
+ EnqueueSpliceRecord(this, n, [], m); |
} |
return this.length; |
@@ -581,14 +579,13 @@ function ArrayReverse() { |
function ObservedArrayShift(len) { |
var first = this[0]; |
- EnqueueSpliceRecord(this, 0, [first], 0); |
- |
try { |
BeginPerformSplice(this); |
SimpleMove(this, 0, 1, len, 0); |
this.length = len - 1; |
} finally { |
EndPerformSplice(this); |
+ EnqueueSpliceRecord(this, 0, [first], 0); |
} |
return first; |
@@ -627,8 +624,6 @@ function ObservedArrayUnshift() { |
var len = TO_UINT32(this.length); |
var num_arguments = %_ArgumentsLength(); |
- EnqueueSpliceRecord(this, 0, [], num_arguments); |
- |
try { |
BeginPerformSplice(this); |
SimpleMove(this, 0, 0, len, num_arguments); |
@@ -638,6 +633,7 @@ function ObservedArrayUnshift() { |
this.length = len + num_arguments; |
} finally { |
EndPerformSplice(this); |
+ EnqueueSpliceRecord(this, 0, [], num_arguments); |
} |
return len + num_arguments; |