Index: src/array.js |
diff --git a/src/array.js b/src/array.js |
index 784f51f0e4419b4b6beec682c5eeda60b85bf345..6299ee2adab64450edc04f738c531025c099cc25 100644 |
--- a/src/array.js |
+++ b/src/array.js |
@@ -369,8 +369,7 @@ function ArrayToString() { |
function ArrayToLocaleString() { |
var array = ToObject(this); |
- var arrayLen = array.length; |
- var len = TO_UINT32(arrayLen); |
+ var len = ToLength(array.length); |
if (len === 0) return ""; |
return Join(array, len, ',', ConvertToLocaleString); |
} |
@@ -380,7 +379,7 @@ function ArrayJoin(separator) { |
CHECK_OBJECT_COERCIBLE(this, "Array.prototype.join"); |
var array = TO_OBJECT_INLINE(this); |
- var length = TO_UINT32(array.length); |
+ var length = ToLength(array.length); |
if (IS_UNDEFINED(separator)) { |
separator = ','; |
} else if (!IS_STRING(separator)) { |
@@ -424,7 +423,7 @@ function ArrayPop() { |
CHECK_OBJECT_COERCIBLE(this, "Array.prototype.pop"); |
var array = TO_OBJECT_INLINE(this); |
- var n = TO_UINT32(array.length); |
+ var n = ToLength(array.length); |
if (n == 0) { |
array.length = n; |
return; |
@@ -469,7 +468,7 @@ function ArrayPush() { |
return ObservedArrayPush.apply(this, arguments); |
var array = TO_OBJECT_INLINE(this); |
- var n = TO_UINT32(array.length); |
+ var n = ToLength(array.length); |
var m = %_ArgumentsLength(); |
for (var i = 0; i < m; i++) { |
@@ -548,7 +547,7 @@ function ArrayReverse() { |
CHECK_OBJECT_COERCIBLE(this, "Array.prototype.reverse"); |
var array = TO_OBJECT_INLINE(this); |
- var len = TO_UINT32(array.length); |
+ var len = ToLength(array.length); |
if (UseSparseVariant(array, len, IS_ARRAY(array), len)) { |
%NormalizeElements(array); |
@@ -599,7 +598,7 @@ function ArrayShift() { |
CHECK_OBJECT_COERCIBLE(this, "Array.prototype.shift"); |
var array = TO_OBJECT_INLINE(this); |
- var len = TO_UINT32(array.length); |
+ var len = ToLength(array.length); |
if (len === 0) { |
array.length = 0; |
@@ -654,7 +653,7 @@ function ArrayUnshift(arg1) { // length == 1 |
return ObservedArrayUnshift.apply(this, arguments); |
var array = TO_OBJECT_INLINE(this); |
- var len = TO_UINT32(array.length); |
+ var len = ToLength(array.length); |
var num_arguments = %_ArgumentsLength(); |
if (len > 0 && UseSparseVariant(array, len, IS_ARRAY(array), len) && |
@@ -678,7 +677,7 @@ function ArraySlice(start, end) { |
CHECK_OBJECT_COERCIBLE(this, "Array.prototype.slice"); |
var array = TO_OBJECT_INLINE(this); |
- var len = TO_UINT32(array.length); |
+ var len = ToLength(array.length); |
var start_i = TO_INTEGER(start); |
var end_i = len; |
@@ -796,7 +795,7 @@ function ArraySplice(start, delete_count) { |
var num_arguments = %_ArgumentsLength(); |
var array = TO_OBJECT_INLINE(this); |
- var len = TO_UINT32(array.length); |
+ var len = ToLength(array.length); |
var start_i = ComputeSpliceStartIndex(TO_INTEGER(start), len); |
var del_count = ComputeSpliceDeleteCount(delete_count, num_arguments, len, |
start_i); |
@@ -1140,7 +1139,7 @@ function ArrayFilter(f, receiver) { |
// Pull out the length so that modifications to the length in the |
// loop will not affect the looping and side effects are visible. |
var array = ToObject(this); |
- var length = ToUint32(array.length); |
+ var length = ToLength(array.length); |
if (!IS_SPEC_FUNCTION(f)) { |
throw MakeTypeError('called_non_callable', [ f ]); |
@@ -1179,7 +1178,7 @@ function ArrayForEach(f, receiver) { |
// Pull out the length so that modifications to the length in the |
// loop will not affect the looping and side effects are visible. |
var array = ToObject(this); |
- var length = TO_UINT32(array.length); |
+ var length = ToLength(array.length); |
if (!IS_SPEC_FUNCTION(f)) { |
throw MakeTypeError('called_non_callable', [ f ]); |
@@ -1213,7 +1212,7 @@ function ArraySome(f, receiver) { |
// Pull out the length so that modifications to the length in the |
// loop will not affect the looping and side effects are visible. |
var array = ToObject(this); |
- var length = TO_UINT32(array.length); |
+ var length = ToLength(array.length); |
if (!IS_SPEC_FUNCTION(f)) { |
throw MakeTypeError('called_non_callable', [ f ]); |
@@ -1246,7 +1245,7 @@ function ArrayEvery(f, receiver) { |
// Pull out the length so that modifications to the length in the |
// loop will not affect the looping and side effects are visible. |
var array = ToObject(this); |
- var length = TO_UINT32(array.length); |
+ var length = ToLength(array.length); |
if (!IS_SPEC_FUNCTION(f)) { |
throw MakeTypeError('called_non_callable', [ f ]); |
@@ -1278,7 +1277,7 @@ function ArrayMap(f, receiver) { |
// Pull out the length so that modifications to the length in the |
// loop will not affect the looping and side effects are visible. |
var array = ToObject(this); |
- var length = TO_UINT32(array.length); |
+ var length = ToLength(array.length); |
if (!IS_SPEC_FUNCTION(f)) { |
throw MakeTypeError('called_non_callable', [ f ]); |
@@ -1311,7 +1310,7 @@ function ArrayMap(f, receiver) { |
function ArrayIndexOf(element, index) { |
CHECK_OBJECT_COERCIBLE(this, "Array.prototype.indexOf"); |
- var length = TO_UINT32(this.length); |
+ var length = ToLength(this.length); |
if (length == 0) return -1; |
if (IS_UNDEFINED(index)) { |
index = 0; |
@@ -1368,7 +1367,7 @@ function ArrayIndexOf(element, index) { |
function ArrayLastIndexOf(element, index) { |
CHECK_OBJECT_COERCIBLE(this, "Array.prototype.lastIndexOf"); |
- var length = TO_UINT32(this.length); |
+ var length = ToLength(this.length); |
if (length == 0) return -1; |
if (%_ArgumentsLength() < 2) { |
index = length - 1; |
@@ -1424,7 +1423,7 @@ function ArrayReduce(callback, current) { |
// Pull out the length so that modifications to the length in the |
// loop will not affect the looping and side effects are visible. |
var array = ToObject(this); |
- var length = ToUint32(array.length); |
+ var length = ToLength(array.length); |
if (!IS_SPEC_FUNCTION(callback)) { |
throw MakeTypeError('called_non_callable', [callback]); |
@@ -1461,7 +1460,7 @@ function ArrayReduceRight(callback, current) { |
// Pull out the length so that side effects are visible before the |
// callback function is checked. |
var array = ToObject(this); |
- var length = ToUint32(array.length); |
+ var length = ToLength(array.length); |
if (!IS_SPEC_FUNCTION(callback)) { |
throw MakeTypeError('called_non_callable', [callback]); |