From 0c1702b199e4eeaab07706528249d74a0bd31ea8 Mon Sep 17 00:00:00 2001 From: "ager@chromium.org" Date: Mon, 6 Jun 2011 13:28:44 +0000 Subject: [PATCH] Don't use SmartSlice just because the receiver is an array. Only do so if the estimated number of elements is low compared to the end position for the slice. This is similar to other heuristics used for array operations that use the %GetElementKeys runtime function. R=erik.corry@gmail.com Review URL: http://codereview.chromium.org/7111032 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@8184 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/array.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/array.js b/src/array.js index df080a7699..6cf417874d 100644 --- a/src/array.js +++ b/src/array.js @@ -631,7 +631,9 @@ function ArraySlice(start, end) { if (end_i < start_i) return result; - if (IS_ARRAY(this)) { + if (IS_ARRAY(this) && + (end_i > 1000) && + (%EstimateNumberOfElements(this) < end_i)) { SmartSlice(this, start_i, end_i - start_i, len, result); } else { SimpleSlice(this, start_i, end_i - start_i, len, result);