Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(370)

Side by Side Diff: src/array.js

Issue 12342003: Use InternalArray in Object.getOwnPropertyNames() implementation (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Reworked concat usage Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | src/v8natives.js » ('j') | src/v8natives.js » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 1531 matching lines...) Expand 10 before | Expand all | Expand 10 after
1542 "every", getFunction("every", ArrayEvery, 1), 1542 "every", getFunction("every", ArrayEvery, 1),
1543 "map", getFunction("map", ArrayMap, 1), 1543 "map", getFunction("map", ArrayMap, 1),
1544 "indexOf", getFunction("indexOf", ArrayIndexOf, 1), 1544 "indexOf", getFunction("indexOf", ArrayIndexOf, 1),
1545 "lastIndexOf", getFunction("lastIndexOf", ArrayLastIndexOf, 1), 1545 "lastIndexOf", getFunction("lastIndexOf", ArrayLastIndexOf, 1),
1546 "reduce", getFunction("reduce", ArrayReduce, 1), 1546 "reduce", getFunction("reduce", ArrayReduce, 1),
1547 "reduceRight", getFunction("reduceRight", ArrayReduceRight, 1) 1547 "reduceRight", getFunction("reduceRight", ArrayReduceRight, 1)
1548 )); 1548 ));
1549 1549
1550 %FinishArrayPrototypeSetup($Array.prototype); 1550 %FinishArrayPrototypeSetup($Array.prototype);
1551 1551
1552 // Make InternalArray.prototype.concat return an InternalArray
1553 // instead of an Array.
1554 var getInternalArrayConcat = function(concatFn) {
Michael Starzinger 2013/03/12 12:09:06 Drop this wrapper generator for a wrapper function
adamk 2013/03/12 18:25:19 Done.
1555 return function() {
1556 var result = %Apply(concatFn, this, arguments, 0, %_ArgumentsLength());
1557 var internalResult = new InternalArray();
1558 %MoveArrayContents(result, internalResult);
1559 return internalResult;
1560 };
1561 };
1562
1552 // The internal Array prototype doesn't need to be fancy, since it's never 1563 // The internal Array prototype doesn't need to be fancy, since it's never
1553 // exposed to user code. 1564 // exposed to user code.
1554 // Adding only the functions that are actually used. 1565 // Adding only the functions that are actually used.
1555 SetUpLockedPrototype(InternalArray, $Array(), $Array( 1566 SetUpLockedPrototype(InternalArray, $Array(), $Array(
1567 "concat", getInternalArrayConcat(getFunction("concat", ArrayConcat)),
Michael Starzinger 2013/03/12 12:09:06 Just install the plain unwrapped ArrayConcat funct
adamk 2013/03/12 18:25:19 Done.
1556 "indexOf", getFunction("indexOf", ArrayIndexOf), 1568 "indexOf", getFunction("indexOf", ArrayIndexOf),
1557 "join", getFunction("join", ArrayJoin), 1569 "join", getFunction("join", ArrayJoin),
1558 "pop", getFunction("pop", ArrayPop), 1570 "pop", getFunction("pop", ArrayPop),
1559 "push", getFunction("push", ArrayPush), 1571 "push", getFunction("push", ArrayPush),
1560 "splice", getFunction("splice", ArraySplice) 1572 "splice", getFunction("splice", ArraySplice)
1561 )); 1573 ));
1562 1574
1563 SetUpLockedPrototype(InternalPackedArray, $Array(), $Array( 1575 SetUpLockedPrototype(InternalPackedArray, $Array(), $Array(
1564 "join", getFunction("join", ArrayJoin), 1576 "join", getFunction("join", ArrayJoin),
1565 "pop", getFunction("pop", ArrayPop), 1577 "pop", getFunction("pop", ArrayPop),
1566 "push", getFunction("push", ArrayPush) 1578 "push", getFunction("push", ArrayPush)
1567 )); 1579 ));
1568 } 1580 }
1569 1581
1570 SetUpArray(); 1582 SetUpArray();
OLDNEW
« no previous file with comments | « no previous file | src/v8natives.js » ('j') | src/v8natives.js » ('J')

Powered by Google App Engine
This is Rietveld 408576698