v8/src/js
peterwmwong c5c50e1860 [builtins] Port WeakMap/WeakSet constructor to CSA
- Remove weak-collection.js
- Adds TFJ builtins for WeakSet and WeakMap constructors
- Unified helpers and constructor behavior into a BaseCollectionsAssembler
- Fast paths for...
  - unmodified constructor function
  - argument is a fast JS array
  - entries are fast JS arrays, for Map/WeakMap
  - no arguments passed

Quick benchmarks shows significant improvements (1.12x - 5.7x!) for ALL collection constructors (weak and non-weak):
https://github.com/peterwmwong/v8-perf/blob/master/weakcollection-constructor/README.md

More could be done for performance.  Currently we always call out to JS to add entries, if we knew the prototype was unmodified, we could call the builtins directly.

Bug: v8:5049, v8:6604
Change-Id: Id7912c1eed5bcf512df7fd6238f04166a8a5937e
Reviewed-on: https://chromium-review.googlesource.com/760385
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49343}
2017-11-14 08:43:38 +00:00
..
array.js [js] Remove CHECK_OBJECT_COERCIBLE for Array methods 2017-10-20 19:29:36 +00:00
intl.js [js] Rename CHECK_OBJECT_COERCIBLE to REQUIRE_OBJECT_COERCIBLE 2017-10-20 21:49:27 +00:00
macros.py [js] Rename CHECK_OBJECT_COERCIBLE to REQUIRE_OBJECT_COERCIBLE 2017-10-20 21:49:27 +00:00
messages.js [runtime] Remove Runtime::kFunctionSetInstanceClassName. 2017-06-30 13:01:49 +00:00
OWNERS Add COMPONENT tags to OWNERS files where appropriate 2017-05-22 10:15:28 +00:00
prologue.js [runtime] Cleanup js/prologue.js. 2017-06-30 07:24:14 +00:00
proxy.js [runtime] Cleanup native methods creation in js/proxy.js. 2017-06-28 17:59:16 +00:00
spread.js Reland "[runtime] Make all built-in functions strict." 2017-06-27 15:26:10 +00:00
typedarray.js [builtins] Clean out macros.py 2017-10-17 09:03:47 +00:00
v8natives.js [js] Rename CHECK_OBJECT_COERCIBLE to REQUIRE_OBJECT_COERCIBLE 2017-10-20 21:49:27 +00:00