Index: src/harmony-array.js |
diff --git a/src/harmony-array.js b/src/harmony-array.js |
index 88b878f0a76ef594f64f7905d61459c05749724b..b27960ad94052fe38090be9b432ba856188dd9f5 100644 |
--- a/src/harmony-array.js |
+++ b/src/harmony-array.js |
@@ -28,14 +28,17 @@ function ArrayFind(predicate /* thisArg */) { // length == 1 |
if (IS_NULL_OR_UNDEFINED(thisArg)) { |
thisArg = %GetDefaultReceiver(predicate) || thisArg; |
- } else if (!IS_SPEC_OBJECT(thisArg) && %IsSloppyModeFunction(predicate)) { |
- thisArg = ToObject(thisArg); |
} |
for (var i = 0; i < length; i++) { |
if (i in array) { |
var element = array[i]; |
- if (%_CallFunction(thisArg, element, i, array, predicate)) { |
+ var new_thisArg = thisArg; |
wingo
2014/09/15 09:12:21
Call it "receiver", or something that doesn't have
Diego Pino
2014/09/16 10:45:46
Acknowledged.
|
+ if (!IS_NULL_OR_UNDEFINED(thisArg) && |
+ !IS_SPEC_OBJECT(thisArg) && %IsSloppyModeFunction(predicate)) { |
+ new_thisArg = ToObject(thisArg); |
+ } |
+ if (%_CallFunction(new_thisArg, element, i, array, predicate)) { |
return element; |
} |
} |
@@ -63,14 +66,17 @@ function ArrayFindIndex(predicate /* thisArg */) { // length == 1 |
if (IS_NULL_OR_UNDEFINED(thisArg)) { |
thisArg = %GetDefaultReceiver(predicate) || thisArg; |
- } else if (!IS_SPEC_OBJECT(thisArg) && %IsSloppyModeFunction(predicate)) { |
- thisArg = ToObject(thisArg); |
} |
for (var i = 0; i < length; i++) { |
if (i in array) { |
+ var new_thisArg = thisArg; |
+ if (!IS_NULL_OR_UNDEFINED(thisArg) && |
+ !IS_SPEC_OBJECT(thisArg) && %IsSloppyModeFunction(predicate)) { |
+ new_thisArg = ToObject(thisArg); |
+ } |
var element = array[i]; |
- if (%_CallFunction(thisArg, element, i, array, predicate)) { |
+ if (%_CallFunction(new_thisArg, element, i, array, predicate)) { |
return i; |
} |
} |