diff options
Diffstat (limited to 'chromium/v8/src/array.js')
-rw-r--r-- | chromium/v8/src/array.js | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/chromium/v8/src/array.js b/chromium/v8/src/array.js index b2b038dae3a..bf04bb7e7b5 100644 --- a/chromium/v8/src/array.js +++ b/chromium/v8/src/array.js @@ -1198,7 +1198,9 @@ function InnerArrayFilter(f, receiver, array, length) { } } } - return accumulator; + var result = new GlobalArray(); + %MoveArrayContents(accumulator, result); + return result; } function ArrayFilter(f, receiver) { @@ -1208,10 +1210,7 @@ function ArrayFilter(f, receiver) { // loop will not affect the looping and side effects are visible. var array = TO_OBJECT(this); var length = TO_LENGTH_OR_UINT32(array.length); - var accumulator = InnerArrayFilter(f, receiver, array, length); - var result = new GlobalArray(); - %MoveArrayContents(accumulator, result); - return result; + return InnerArrayFilter(f, receiver, array, length); } function InnerArrayForEach(f, receiver, array, length) { @@ -1311,7 +1310,9 @@ function InnerArrayMap(f, receiver, array, length) { accumulator[i] = %_Call(f, receiver, element, i, array); } } - return accumulator; + var result = new GlobalArray(); + %MoveArrayContents(accumulator, result); + return result; } @@ -1322,10 +1323,7 @@ function ArrayMap(f, receiver) { // loop will not affect the looping and side effects are visible. var array = TO_OBJECT(this); var length = TO_LENGTH_OR_UINT32(array.length); - var accumulator = InnerArrayMap(f, receiver, array, length); - var result = new GlobalArray(); - %MoveArrayContents(accumulator, result); - return result; + return InnerArrayMap(f, receiver, array, length); } |