Reviewers: Toon Verwaest,
Description:
Use InternalArray during ObservedArraySplice to avoid page script
interfering
with self-hosted code.
This also has the happy side-effect of speeding up observed array splices by
about 20-30%, as it avoids copying the entire deleted_contents array.
R=verwaest
LOG=Y
BUG=NONE
Please review this at https://codereview.chromium.org/303223004/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files (+4, -6 lines):
M src/array.js
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);
}
}
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.