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.

Reply via email to