Index: src/array.js |
diff --git a/src/array.js b/src/array.js |
index ef7aae4774f92764c788be57f4de4d3f62171e9f..00cd694de92dd856f1f9b614842b317e41686bcd 100644 |
--- a/src/array.js |
+++ b/src/array.js |
@@ -724,8 +724,7 @@ function ObservedArraySplice(start, delete_count) { |
var start_i = ComputeSpliceStartIndex(TO_INTEGER(start), len); |
var del_count = ComputeSpliceDeleteCount(delete_count, num_arguments, len, |
start_i); |
- var deleted_elements = []; |
- deleted_elements.length = del_count; |
+ var deleted_elements = new InternalArray(del_count); |
var num_elements_to_add = num_arguments > 2 ? num_arguments - 2 : 0; |
try { |
@@ -747,10 +746,9 @@ function ObservedArraySplice(start, delete_count) { |
} finally { |
EndPerformSplice(this); |
if (deleted_elements.length || num_elements_to_add) { |
- EnqueueSpliceRecord(this, |
- start_i, |
- deleted_elements.slice(), |
- num_elements_to_add); |
+ var deleted_array = []; |
+ %MoveArrayContents(deleted_elements, deleted_array); |
+ EnqueueSpliceRecord(this, start_i, deleted_array, num_elements_to_add); |
} |
} |