- 19 Feb, 2019 1 commit
-
-
Benedikt Meurer authored
When setting up the initial map for a (class or function) constructor, we always over-allocate a bunch of in-object properties, in case not all property assignments happen as `this.prop = val` assignments in the constructor. However this over-allocation was a bit too aggressive and added a slack of 8 to each class constructor (plus a minimum of two, when there was no `this.prop = val` assignment). So in total this would yield an object with initially 40 in-object property slots in case of a simple class hierarchy like this: ```js class A {}; class B extends A {}; class C extends B {}; class D extends C {}; new D; ``` While the slack tracking takes care of eventually shrinking the objects to appropriate sizes, this aggressive over-allocation is still going to hurt performance quite a bit in the beginning, and will also lead to more traffic on the minor GC for now good reason. Instead of the above, we now allocate a minimum of 2 in-object properties per class (in a hierarchy) and then add a slack of 8 in the end. Meaning for the example above we end up with 16 initial in-object property slots, which seems sensible. Bug: v8:8853 Change-Id: I4a11e35a8612ceef1d776ca2f0543a26c8c2a2bf Reviewed-on: https://chromium-review.googlesource.com/c/1477276Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#59670}
-
- 30 Jan, 2019 1 commit
-
-
Benedikt Meurer authored
For instances created via constructors and `new` we try to pre-size the instances such that ideally all the data properties can be allocated as in-object properties (and we don't need to allocate the out-of-object PropertyArray backing store). This is accomplished with the helper of the Parser, which counts the property assignments to `this` in the constructor, and we use that as the starting point for pre-sizing logic (a mechanism called *slack tracking* is used to dynamically shrink the objects based on the real memory usage, and eventually compute the final starting size for instances of the individual constructors). This works well even with class hierarchies, since for a derived class constructor we just include the current constructor plus all the base constructors. I.e. with ```js class A { constructor() { this.x00 = null; this.x01 = null; this.x02 = null; this.x03 = null; this.x04 = null; this.x05 = null; this.x06 = null; this.x07 = null; this.x08 = null; this.x09 = null; this.x10 = null; this.x11 = null; this.x12 = null; this.x13 = null; this.x14 = null; this.x15 = null; this.x16 = null; this.x17 = null; this.x18 = null; this.x19 = null; } } class B extends A { constructor() { super(); } } ``` we will eventually learn that instances of `B` need 20 in-object properties. However this breaks with transpiled code (i.e. as generated via TypeScript or Babel), even when the constructors are properly chained. ```js function A() { this.x00 = null; this.x01 = null; this.x02 = null; this.x03 = null; this.x04 = null; this.x05 = null; this.x06 = null; this.x07 = null; this.x08 = null; this.x09 = null; this.x10 = null; this.x11 = null; this.x12 = null; this.x13 = null; this.x14 = null; this.x15 = null; this.x16 = null; this.x17 = null; this.x18 = null; this.x19 = null; } function B() { A.call(this); } Object.setPrototypeOf(B, A); ``` Here we will always have 10 in-object properties for instances of `B` (due to the generic over-allocation logic), and the other 10 properties have to be allocated in the out-of-object PropertyArray. This is unfortunate and actually not necessary. Instead we could just do the same [[Prototype]] walk on the constructor for regular function constructors that we perform for derived (native) class constructors. This CL changes that, such that we give the same treatment to transpiled class that we have for native classes. R=verwaest@chromium.org Bug: v8:8764, v8:8765 Doc: https://bit.ly/v8-instance-presizing-with-transpiled-classes Change-Id: Iac54391e41c9a39101751a678b3a647269fb009d Reviewed-on: https://chromium-review.googlesource.com/c/1442643 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#59214}
-
- 28 Jan, 2019 1 commit
-
-
Camillo Bruni authored
- Dehandlify ScopeInfo::ContextSlotIndex - Dehandlify ScriptContextTable::Lookup - Introduce function-kind.h with range-based helper methods - Spread usage of Scope::is_script_scope and friends Change-Id: I8ed1d82cc5bb9ea3fce856e16e9eafe194fb57ba Reviewed-on: https://chromium-review.googlesource.com/c/1430100Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Maya Lekova <mslekova@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#59120}
-
- 26 Dec, 2018 1 commit
-
-
Jakob Kummerow authored
Tbr: ahaas@chromium.org,leszeks@chromium.org,verwaest@chromium.org Bug: v8:3770 Change-Id: Ia6530fbb70dac05e9972283781c3550d8b50e1eb Reviewed-on: https://chromium-review.googlesource.com/c/1390116 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Alexei Filippov <alph@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#58470}
-
- 17 Dec, 2018 1 commit
-
-
Jakob Kummerow authored
Along with HeapNumberBase and MutableHeapNumber, of course. Bug: v8:5402 Change-Id: I14a7f8052de3839cad36bb7e4ebb6da38b2ac096 Reviewed-on: https://chromium-review.googlesource.com/c/1379884 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#58293}
-
- 08 Dec, 2018 1 commit
-
-
Jakob Kummerow authored
Bug: v8:3770 Change-Id: I1d74ffe9e5478b4b8bc0acbf088d20919d458d50 Reviewed-on: https://chromium-review.googlesource.com/c/1363822 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#58112}
-
- 26 Nov, 2018 1 commit
-
-
Igor Sheludko authored
This CL makes it easier to organize the Context classes hierarchy and simplifies Context class definition. Bug: v8:8238 Change-Id: I65b8255daf255649c597dc195edf436d9471e3ea Reviewed-on: https://chromium-review.googlesource.com/c/1350109 Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#57848}
-
- 01 Oct, 2018 1 commit
-
-
Mathias Bynens authored
It was shipped in Chrome 67. Bug: v8:6791, v8:8238 Cq-Include-Trybots: luci.chromium.try:linux_chromium_headless_rel;luci.chromium.try:linux_chromium_rel_ng;luci.v8.try:v8_linux_noi18n_rel_ng;master.tryserver.blink:linux_trusty_blink_rel Change-Id: I94d8f0aa18570452403a35dea270b18f155c970a Reviewed-on: https://chromium-review.googlesource.com/1253604Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Mathias Bynens <mathias@chromium.org> Cr-Commit-Position: refs/heads/master@{#56310}
-
- 31 Jul, 2018 1 commit
-
-
Georg Neis authored
Use sizeof of the C type instead. Also fix a few #undef's that got reported after my changes. R=jarin@chromium.org Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: I30a43b3d93e6df04fb9fb33050b52988edd7fdb1 Reviewed-on: https://chromium-review.googlesource.com/1155108Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#54817}
-
- 23 Jul, 2018 1 commit
-
-
Stephan Herhut authored
api.h had an implicit dependency on objects-inl.h. Bug: v8:7490 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;luci.v8.try:v8_linux_noi18n_rel_ng Change-Id: I56ef7abefed7205bdbff2aa5f451f1a843bef9f9 Reviewed-on: https://chromium-review.googlesource.com/1145191Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Ben Titzer <titzer@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Stephan Herhut <herhut@chromium.org> Cr-Commit-Position: refs/heads/master@{#54616}
-
- 17 Jul, 2018 1 commit
-
-
Dan Elphick authored
Ran GetIsolate/GetHeap removal script over all the header files included into objects.cc. Affected classes include: ScriptContextTable RuntimeCallTimerScope GlobalDictionaryShape Map LookupIterator PrototypeIterator FixedArrayBuilder Manually fixed up Map to mark its write operations as safe for GetIsolate since they modify the object as so can't be done in RO_SPACE. Bug: v8:7786 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;luci.v8.try:v8_linux_noi18n_rel_ng Change-Id: I2fd0960f085d1bcb4cf54b3418899ac0217917ca Reviewed-on: https://chromium-review.googlesource.com/1138076 Commit-Queue: Dan Elphick <delphick@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#54488}
-
- 26 Jun, 2018 1 commit
-
-
Georg Neis authored
This is a reland of f0bcbc90. A few casts were still wrong. Original change's description: > Reland "Introduce MutableHeapNumber class." > > This is a reland of 40ac6b18, which > was incorrect due to a bad merge. > > Original change's description: > > Introduce MutableHeapNumber class. > > > > V8 knows heap numbers and mutable heap numbers. They have > > difference instance types, but in C++ code we've used the > > same class for both (HeapNumber). Confusingly, however, > > IsHeapNumber would return false for mutable heap numbers, > > while HeapNumber::cast would succeed. > > > > This CL adds a separate class MutableHeapNumber and > > eliminates the confusing behavior. > > [...] > TBR=bmeurer@chromium.org > TBR=ulan@chromium.org > > Change-Id: I3af1014c949821dfac0754a3e48c65ce1bad1ad1 > Reviewed-on: https://chromium-review.googlesource.com/1114539 > Reviewed-by: Georg Neis <neis@chromium.org> > Commit-Queue: Georg Neis <neis@chromium.org> > Cr-Commit-Position: refs/heads/master@{#54022} Change-Id: I19a33da4b6abcd445b528a84d4f56ba1964d337b Reviewed-on: https://chromium-review.googlesource.com/1114100 Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#54027}
-
- 23 Jun, 2018 1 commit
-
-
Leszek Swirski authored
Access Isolate* and Heap* wherever already available. Roughly: GetIsolate(): -20 GetHeap(): -22 Handle<>(HeapObject): -315 handle(HeapObject): -21 Bug: v8:7786 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;luci.v8.try:v8_linux_noi18n_rel_ng Change-Id: I2da36ed1909d849812a1cb6bf94cb735eedca45b Reviewed-on: https://chromium-review.googlesource.com/1111707 Commit-Queue: Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#53987}
-
- 19 Feb, 2018 1 commit
-
-
Jakob Kummerow authored
This is a reland of dda0419e. Originally reviewed-on: https://chromium-review.googlesource.com/914513 and landed as refs/heads/master@{#51342}. Bug: v8:6791 Change-Id: I3b3a069da7a0e64c38a81b3110dc5ece4887cb19 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Reviewed-on: https://chromium-review.googlesource.com/924665Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#51352}
-
- 17 Feb, 2018 2 commits
-
-
Michael Achenbach authored
This reverts commit dda0419e. Reason for revert: msvc unhappy: https://build.chromium.org/p/client.v8/builders/V8%20Win64%20-%20msvc/builds/1434 Original change's description: > [bigint] Add BigInt64Array, BigUint64Array > > Bug: v8:6791 > Tbr: hpayer@chromium.org > Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng > Change-Id: I637e9084d2fe4869ad0be2fb996149ab9940f346 > Reviewed-on: https://chromium-review.googlesource.com/914513 > Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> > Reviewed-by: Georg Neis <neis@chromium.org> > Cr-Commit-Position: refs/heads/master@{#51342} TBR=jkummerow@chromium.org,neis@chromium.org,hpayer@chromium.org Change-Id: I49237fa323f0d3ea70e744d92d5cbdd4d5c4b39f No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:6791 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Reviewed-on: https://chromium-review.googlesource.com/924663Reviewed-by:
Michael Achenbach <machenbach@chromium.org> Commit-Queue: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#51344}
-
Jakob Kummerow authored
Bug: v8:6791 Tbr: hpayer@chromium.org Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Change-Id: I637e9084d2fe4869ad0be2fb996149ab9940f346 Reviewed-on: https://chromium-review.googlesource.com/914513 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#51342}
-
- 12 Feb, 2018 1 commit
-
-
Camillo Bruni authored
Bug: chromium:808192 Change-Id: I80136d291d5c21c311903bffc96d86d109f5cdc9 Reviewed-on: https://chromium-review.googlesource.com/902103 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#51255}
-
- 21 Nov, 2017 1 commit
-
-
Igor Sheludko authored
The unused properties fields number is calculatable via used in-object properties count and we can drop it now. Bug: chromium:774644 Change-Id: I7388af7772a8e793593fabc46527886cf2e36095 Reviewed-on: https://chromium-review.googlesource.com/781465Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#49542}
-
- 18 Oct, 2017 1 commit
-
-
Ulan Degenbaev authored
The test does not take into account that Turbofan can force completion of in-object slack tracking. Bug: Change-Id: Ic7404e8395858acaf707e65ca4b17e6b7f776594 Reviewed-on: https://chromium-review.googlesource.com/723464Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#48687}
-
- 21 Sep, 2017 1 commit
-
-
Mostyn Bramley-Moore authored
By adding a per test source file namespace, we can avoid a lot of symbol collisions in jumbo builds. While we're at it, let's remove some "using" statements that also cause trouble. Bug: chromium:746958 Change-Id: I6f8a723e1ba5905888638e0687b23193f3f012ca Reviewed-on: https://chromium-review.googlesource.com/676803Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Mostyn Bramley-Moore <mostynb@opera.com> Cr-Commit-Position: refs/heads/master@{#48102}
-
- 01 Sep, 2017 1 commit
-
-
Michael Starzinger authored
R=jkummerow@chromium.org Change-Id: I8937933e9ec5b4bd150f5a044700716db458f365 Reviewed-on: https://chromium-review.googlesource.com/645691Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#47758}
-
- 21 Aug, 2017 1 commit
-
-
Sathya Gunasekaran authored
This is a reland of decf5750 This patch fixes the hash code migration in the backing store transition case from Smi to PropertyArray in the IC system and Turbofan. Also, adds tests. Bug: v8:6413, v8:6404 Original change's description: > [runtime] Store hash code in length field > > Store the hash code in 21 bits of the length field. > > Change the GetIdentityHash API to be unhandlified, since there's no > property lookup anymore. > > Update js/ and test/ to match new API and expections. > > Bug: > Change-Id: I8dc75de4021f59e79b45f3f38ec997c3b3687b24 > Reviewed-on: https://chromium-review.googlesource.com/589688 > Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org> > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> > Cr-Commit-Position: refs/heads/master@{#47259} Change-Id: I69289113c4b7978c46f6f9373cc972086ecb6822 Bug: Reviewed-on: https://chromium-review.googlesource.com/614903 Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#47459}
-
- 02 Aug, 2017 1 commit
-
-
Julien Brianceau authored
Bug: chromium:750830 Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_chromium_rel_ng;master.tryserver.v8:v8_linux_noi18n_rel_ng Change-Id: Icab7b5a1c469d5e77d04df8bfca8319784e92af4 Reviewed-on: https://chromium-review.googlesource.com/595655 Commit-Queue: Julien Brianceau <jbriance@cisco.com> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Daniel Ehrenberg <littledan@chromium.org> Cr-Commit-Position: refs/heads/master@{#47072}
-
- 13 Jul, 2017 3 commits
-
-
Michael Starzinger authored
This is a reland of ec6da23b Original change's description: > [flags] Remove some dead Crankshaft flags. > > R=bmeurer@chromium.org > BUG=v8:6408 > > Change-Id: I34abbcdc2fc47df44938bac0e59f9982c935c657 > Reviewed-on: https://chromium-review.googlesource.com/569963 > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> > Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> > Cr-Commit-Position: refs/heads/master@{#46631} Bug: v8:6408 Change-Id: I8a856e25d56e27bccb79588b2e5ee4369d7c5fe5 Reviewed-on: https://chromium-review.googlesource.com/570050Reviewed-by:
Michael Achenbach <machenbach@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#46637}
-
Michael Starzinger authored
This reverts commit ec6da23b. Reason for revert: Requires infrastructure changes first. Will reland after changes have happened. Original change's description: > [flags] Remove some dead Crankshaft flags. > > R=bmeurer@chromium.org > BUG=v8:6408 > > Change-Id: I34abbcdc2fc47df44938bac0e59f9982c935c657 > Reviewed-on: https://chromium-review.googlesource.com/569963 > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> > Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> > Cr-Commit-Position: refs/heads/master@{#46631} TBR=mstarzinger@chromium.org,bmeurer@chromium.org Change-Id: Iee077911ae7d877c6a9d2edb548e3c04345b47ce No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:6408 Reviewed-on: https://chromium-review.googlesource.com/570049Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#46632}
-
Michael Starzinger authored
R=bmeurer@chromium.org BUG=v8:6408 Change-Id: I34abbcdc2fc47df44938bac0e59f9982c935c657 Reviewed-on: https://chromium-review.googlesource.com/569963Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#46631}
-
- 29 May, 2017 1 commit
-
-
Camillo Bruni authored
Bug: v8:6211 Change-Id: If6d2ef7889ae6a0c3aa430d3f69c53f19cc1f1c6 Reviewed-on: https://chromium-review.googlesource.com/509571Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Reviewed-by:
Marja Hölttä <marja@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#45563}
-
- 27 Feb, 2017 1 commit
-
-
Toon Verwaest authored
When an instance of a constructor goes dictionary mode, this changes the initial map of that constructor to also be in dictionary mode. This avoids spurious hidden class creation, that also results in IC misses. BUG= Change-Id: I0e70f822ac345d0224f2092ec473621a603d4cc5 Reviewed-on: https://chromium-review.googlesource.com/446361Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Commit-Queue: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#43452}
-
- 23 Jan, 2017 1 commit
-
-
franzih authored
We do not want to reserve space in the backing store for index keys. Count index keys during creation of the BoilerplateDescription, and substract them for the backing store size. Correctly count index keys after encountering a property with a computed name during object literal creation. R=verwaest@chromium.org BUG=v8:5625 Review-Url: https://codereview.chromium.org/2651523002 Cr-Commit-Position: refs/heads/master@{#42598}
-
- 22 Jan, 2017 1 commit
-
-
franzih authored
Property backing store size for object literals is the number of constant and named properties (possibly over-allocating for the same names). We do not reserve space in the backing store for __proto__. We do not reserve space in the backing store for index keys. Currently, we account for index keys in the runtime when iterating over the boilerplate properties. Since the boilerplate properties only include the properties up to the first computed property name, the property backing store size includes space for index keys if seen after the first computed property. R=verwaest@chromium.org BUG=v8:5625 Review-Url: https://codereview.chromium.org/2650593002 Cr-Commit-Position: refs/heads/master@{#42584}
-
- 09 Jan, 2017 1 commit
-
-
marja authored
Downside: this adds all kinds of weird includes in the .cc files. (See design doc linked in the bug.) BUG=v8:5402 Review-Url: https://codereview.chromium.org/2622503002 Cr-Commit-Position: refs/heads/master@{#42140}
-
- 06 Dec, 2016 2 commits
-
-
https://codereview.chromium.org/2536463002/gsathya authored
This reverts commit 4c7cccf9. BUG=v8:5343 Review-Url: https://codereview.chromium.org/2554943002 Cr-Commit-Position: refs/heads/master@{#41534}
-
https://codereview.chromium.org/2536463002/machenbach authored
Reason for revert: Breaks layout tests: https://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Linux%2064/builds/11861 See: https://github.com/v8/v8/wiki/Blink-layout-tests Original issue's description: > Object > -- New JSObject for promises: JSPromise > > Builtins > -- PromiseThen TFJ > -- PromiseCreateAndSet TFJ for internal use > -- PerformPromiseThen TFJ for internal use > -- PromiseInit for initial promise setup > -- SpeciesConstructor for use in PromiseThen > -- ThrowIfNotJSReceiver for use in SpeciesConstructor > -- AppendPromiseCallback to update FixedArray with new callback > -- InternalPerformPromiseThen > > Promises.js > -- Cleanup unused symbols > -- Remove PerformPromiseThen > -- Remove PromiseThen > -- Remove PromiseSet > -- Remove PromiseAttachCallbacks > > Runtime > -- PromiseSet to set promise inobject values > -- Refactor functions to use FixedArrays for callbacks instead of > JSArray > -- Runtime_PromiseStatus to return promise status > -- Runtime_PromiseResult to return promise result > -- Runtime_PromiseDeferred to return deferred attached to promise > -- Runtime_PromiseRejectReactions to return reject reactions attached > to promise > > This CL results in a 13.07% improvement in the promises benchmark > (over 5 runs). > > BUG=v8:5343 > > Committed: https://crrev.com/30b564c76f490f8f6b311a74b25b26cf0a96be2d > Cr-Commit-Position: refs/heads/master@{#41503} TBR=bmeurer@chromium.org,jgruber@chromium.org,caitp@igalia.com,gsathya@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:5343 Review-Url: https://codereview.chromium.org/2554013002 Cr-Commit-Position: refs/heads/master@{#41512}
-
- 05 Dec, 2016 1 commit
-
-
gsathya authored
-- New JSObject for promises: JSPromise Builtins -- PromiseThen TFJ -- PromiseCreateAndSet TFJ for internal use -- PerformPromiseThen TFJ for internal use -- PromiseInit for initial promise setup -- SpeciesConstructor for use in PromiseThen -- ThrowIfNotJSReceiver for use in SpeciesConstructor -- AppendPromiseCallback to update FixedArray with new callback -- InternalPerformPromiseThen Promises.js -- Cleanup unused symbols -- Remove PerformPromiseThen -- Remove PromiseThen -- Remove PromiseSet -- Remove PromiseAttachCallbacks Runtime -- PromiseSet to set promise inobject values -- Refactor functions to use FixedArrays for callbacks instead of JSArray -- Runtime_PromiseStatus to return promise status -- Runtime_PromiseResult to return promise result -- Runtime_PromiseDeferred to return deferred attached to promise -- Runtime_PromiseRejectReactions to return reject reactions attached to promise This CL results in a 13.07% improvement in the promises benchmark (over 5 runs). BUG=v8:5343 Review-Url: https://codereview.chromium.org/2536463002 Cr-Commit-Position: refs/heads/master@{#41503}
-
- 23 Jun, 2016 1 commit
-
-
franzih authored
Now we can turn it into a turbofan stub. Create new instance types JS_ARGUMENTS_TYPE and JS_ERROR_TYPE. Review-Url: https://codereview.chromium.org/2080243003 Cr-Commit-Position: refs/heads/master@{#37219}
-
- 26 May, 2016 1 commit
-
-
gsathya authored
For the common use case of having a single resolve or reject callback, the callbacks are stored directly. Only when an additional callback is registered, we create an array to store these callbacks. There are 3 possible states for the resolve, reject symbols when we add a new callback -- 1) UNDEFINED -- This is the zero state where there is no callback registered. When we see this state, we directly attach the callbacks to the symbol. 2) !IS_ARRAY -- There is a single callback directly attached to the symbols. We need to create a new array to store additional callbacks. 3) IS_ARRAY -- There are multiple callbacks already registered, therefore we can just push the new callback to the existing array. Also, this change creates a new symbol for storing the deferred objects. Previously the deferred objects were stored in the callback arrays, but since we no longer create arrays for the initial case, we need this new symbol. The cctest has been updated to account for this new symbol. This patch results in a 19% improvement(over 5 runs) in the bluebird benchmark. BUG=v8:5046 Review-Url: https://codereview.chromium.org/2007803002 Cr-Commit-Position: refs/heads/master@{#36536}
-
- 15 Mar, 2016 1 commit
-
-
ishell authored
[turbofan] Fix double object allocation when inlining a construct call of a derived class or an Api function. Review URL: https://codereview.chromium.org/1798373002 Cr-Commit-Position: refs/heads/master@{#34780}
-
- 29 Jan, 2016 1 commit
-
-
jkummerow authored
String wrappers (new String("foo")) are special objects: their string characters are accessed like elements, and they also have an elements backing store. This used to require a bunch of explicit checks like: if (obj->IsJSValue() && JSValue::cast(obj)->value()->IsString()) { /* Handle string characters */ } // Handle regular elements (for string wrappers and other objects) obj->GetElementsAccessor()->Whatever(...); This CL introduces new ElementsKinds for string wrapper objects (one for fast elements, one for dictionary elements), which allow folding the special-casing into new StringWrapperElementsAccessors. No observable change in behavior is intended. Review URL: https://codereview.chromium.org/1612323003 Cr-Commit-Position: refs/heads/master@{#33616}
-
- 09 Dec, 2015 2 commits
-
-
jochen authored
Embedders still can use those APIs by default test-api.cc still has an exception to use the old APIs... BUG=v8:4143 R=vogelheim@chromium.org LOG=n Review URL: https://codereview.chromium.org/1505803004 Cr-Commit-Position: refs/heads/master@{#32701}
-
ishell authored
Review URL: https://codereview.chromium.org/1506683004 Cr-Commit-Position: refs/heads/master@{#32698}
-