Revision: 6946 Author: [email protected] Date: Fri Feb 25 03:30:22 2011 Log: Fix bug 73940.
I think this actually turns the code in question into dead code, because the current definition of UseSparseVariant only allows arrays in DictionaryMode, and these never return encoded ranges from %GetArrayKeys. This is a subtle link between the definition of %GetArrayKeys and UseSparseVariant, so I would prefer to keep the code rather than having an invisible depeendency.
BUG=73940 Review URL: http://codereview.chromium.org/6596004 http://code.google.com/p/v8/source/detail?r=6946 Modified: /branches/bleeding_edge/src/array.js ======================================= --- /branches/bleeding_edge/src/array.js Thu Feb 24 06:00:52 2011 +++ /branches/bleeding_edge/src/array.js Fri Feb 25 03:30:22 2011 @@ -1017,13 +1017,13 @@ } var min = index; var max = length; - if (UseSparseVariant(this, length, true)) { + if (UseSparseVariant(this, length, IS_ARRAY(this))) { var intervals = %GetArrayKeys(this, length); if (intervals.length == 2 && intervals[0] < 0) { // A single interval. var intervalMin = -(intervals[0] + 1); var intervalMax = intervalMin + intervals[1]; - min = MAX(min, intervalMin); + if (min < intervalMin) min = intervalMin; max = intervalMax; // Capped by length already. // Fall through to loop below. } else { @@ -1073,13 +1073,13 @@ } var min = 0; var max = index; - if (UseSparseVariant(this, length, true)) { + if (UseSparseVariant(this, length, IS_ARRAY(this))) { var intervals = %GetArrayKeys(this, index + 1); if (intervals.length == 2 && intervals[0] < 0) { // A single interval. var intervalMin = -(intervals[0] + 1); var intervalMax = intervalMin + intervals[1]; - min = MAX(min, intervalMin); + if (min < intervalMin) min = intervalMin; max = intervalMax; // Capped by index already. // Fall through to loop below. } else { -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
