- 15 Feb, 2019 2 commits
-
-
Benedikt Meurer authored
This refactors the ThreadLocalTop into separate header and implementation files, and moves it from the Isolate to the IsolateData (with some tweaks to make the layout of the class predictable). This has the advantage that all external references referring to addresses in the ThreadLocalTop (like js_entry_sp, c_function, c_entry_fp, etc.) need only a single memory access to reach them. For example the CallApiCallback can now use ``` mov %rbp,0x8e40(%r13) mov %rsi,0x8de0(%r13) mov %rbx,0x8e50(%r13) ``` to setup the information about context, frame pointer, and C++ function pointer in the ThreadLocalTop instead of the previously generated code ``` mov 0x2e28(%r13),%r10 mov %rbp,(%r10) mov 0x2e38(%r13),%r10 mov %rsi,(%r10) mov 0x2e30(%r13),%r10 mov %rbx,(%r10) ``` which always had to load the scratch register %r10 with the actual address first. This has interesting performance impact. On the test case mentioned in v8:8820 (with the `d8` patch applied), the performance goes from ``` console.timeEnd: fnMono, 2290.012000 console.timeEnd: fnCall, 2604.954000 ``` to ``` console.timeEnd: fnMono, 2062.743000 console.timeEnd: fnCall, 2477.556000 ``` which is a pretty solid **10%** improvement for the monomorphic API accessor case, and a **5%** improvement for calling into the API accessor instead. But there might as well be other places besides API callback calls that will benefit from this change, which I haven't tested explicitly. Although this change is supposed to be as minimal as possible without any functional effects, some changes were necessary/logical. Eventually we should reconsider changing the layout and the types for the fields in the ThreadLocalTop to be more consistent with the other IsolateData entities. But this can be done in separate follow-up CLs, as this will be quite a bit of churn on the code base, depending on how we do that exactly, and is orthogonal to this optimization. Bug: v8:8820, v8:8848, chromium:913553 Change-Id: I4732c8e60231f0312eb7767358c48bae0338220d Cq-Include-Trybots: luci.chromium.try:linux-blink-rel Reviewed-on: https://chromium-review.googlesource.com/c/1474230Reviewed-by: Yang Guo <yangguo@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#59624}
-
Jakob Kummerow authored
This takes heap-inl.h out of the "Giant Include Cluster". Naturally, that means adding a bunch of explicit includes in a bunch of places that relied on transitively including them before. As of this patch, no header file outside src/heap/ includes heap-inl.h. Bug: v8:8562,v8:8499 Change-Id: I65fa763f90e66afc30d105b9277792721f05a6d4 Reviewed-on: https://chromium-review.googlesource.com/c/1459659 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#59617}
-
- 01 Feb, 2019 1 commit
-
-
Marja Hölttä authored
Discovered when working on other stuff. BUG=v8:7490,v8:8562 Change-Id: I9707c95c33e52b1565cca238494e3349a472f604 Reviewed-on: https://chromium-review.googlesource.com/c/1449532Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#59276}
-
- 08 Jan, 2019 1 commit
-
-
Jakob Kummerow authored
Bug: v8:3770 Change-Id: I9214212454034cf1238cab43dc34d8d9f8ed2d37 Reviewed-on: https://chromium-review.googlesource.com/c/1398222Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#58627}
-
- 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}
-
- 20 Dec, 2018 1 commit
-
-
Jakob Kummerow authored
Merging the temporary HeapObjectPtr back into HeapObject. Bug: v8:3770 Change-Id: I5bcd23ca2f5ba862cf5b52955dca143e531c637b Reviewed-on: https://chromium-review.googlesource.com/c/1386492 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Michael Stanton <mvstanton@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#58410}
-
- 19 Dec, 2018 1 commit
-
-
tzik authored
This CL moves variables that control MicrotaskQueue to MtQ itself. Namely, * is_running_microtasks_ and microtask_completed_callbacks_ from v8::internal::Isolate * microtasks_depth_, microtasks_suppressions_ and debug_microtask_depth_ from v8::internal::HandleScopeImplementer. As the current implementation has these variables one per-Isolate rather than per-MicrotaskQueue, this is needed to have multiple MicrotaskQueues for an Isolate. Bug: v8:8124 Change-Id: Id63075cbfb59cf5b7f45a4184affb206400150da Reviewed-on: https://chromium-review.googlesource.com/c/1358029 Commit-Queue: Taiju Tsuiki <tzik@chromium.org> Reviewed-by: Adam Klein <adamk@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#58348}
-
- 18 Dec, 2018 2 commits
-
-
Jakob Kummerow authored
Bug: v8:3770 Change-Id: I24169b4564d1bdf544354b964aa22c066bc0da2b Reviewed-on: https://chromium-review.googlesource.com/c/1380912 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#58320}
-
Jakob Kummerow authored
Bug: v8:3770 Change-Id: Ib387ecfe17a5ebaea9e6b97eff171b803da5b0d3 Reviewed-on: https://chromium-review.googlesource.com/c/1380692 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Maya Lekova <mslekova@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Alexei Filippov <alph@chromium.org> Cr-Commit-Position: refs/heads/master@{#58317}
-
- 17 Dec, 2018 1 commit
-
-
Jakob Kummerow authored
Bug: v8:5402 Change-Id: Ibaf91722165df830fd14b3b4a659802bce809bf1 Reviewed-on: https://chromium-review.googlesource.com/c/1379873Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Marja Hölttä <marja@chromium.org> Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#58275}
-
- 11 Dec, 2018 1 commit
-
-
Ben L. Titzer authored
This is purely a renaming change. The ES spec uses the term 'detach' for the process of removing the backing store of a typed array, while V8 uses the historical term 'neuter'. Update our internal implementation, including method names and flag names, to match the spec. Note that some error messages still use the term 'neuter' since error messages are asserted by some embedder tests, like layout tests. R=bmeurer@chromium.org, yangguo@chromium.org, mstarzinger@chromium.org, mlippautz@chromium.org BUG=chromium:913887 Change-Id: I62f1c3ac9ae67ba01d612a5221afa3d92deae272 Reviewed-on: https://chromium-review.googlesource.com/c/1370036 Commit-Queue: Ben Titzer <titzer@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#58149}
-
- 23 Nov, 2018 2 commits
-
-
Marja Hölttä authored
+ fixing other files which were depending on context-inl.h pulling in the missing includes. BUG=v8:7490,v8:8238 Change-Id: I90d37599bdfb69ac8fd7e62b8fb78d9d77c77234 Reviewed-on: https://chromium-review.googlesource.com/c/1349277Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#57775}
-
Jakob Kummerow authored
Bug: v8:3770 Change-Id: I07f48b1ee8814a006e6787ad8261fa8388b4298d Reviewed-on: https://chromium-review.googlesource.com/c/1345327 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#57771}
-
- 19 Nov, 2018 1 commit
-
-
Jaroslav Sevcik authored
This is a reland of 3ca32e98 Original change's description: > [regexp] Introduce species constructor protector for regexps. > > Bug: v8:8445 > Change-Id: Iea69c65d0054b24b3f8c7234c4c556ebee2dd45f > Reviewed-on: https://chromium-review.googlesource.com/c/1335696 > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> > Cr-Commit-Position: refs/heads/master@{#57564} Bug: v8:8445 Change-Id: Ib79d716ff857eed95eed800b33ccb53f33d5167f Reviewed-on: https://chromium-review.googlesource.com/c/1340286Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#57598}
-
- 16 Nov, 2018 2 commits
-
-
Jaroslav Sevcik authored
This reverts commit 3ca32e98. Reason for revert: Breaks waterfall (V8 fuzzer) Original change's description: > [regexp] Introduce species constructor protector for regexps. > > Bug: v8:8445 > Change-Id: Iea69c65d0054b24b3f8c7234c4c556ebee2dd45f > Reviewed-on: https://chromium-review.googlesource.com/c/1335696 > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> > Cr-Commit-Position: refs/heads/master@{#57564} TBR=ulan@chromium.org,jarin@chromium.org,jgruber@chromium.org Change-Id: I8f926abdd129d9868f2c9c5dbb29096c08bd1ff7 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:8445 Reviewed-on: https://chromium-review.googlesource.com/c/1340239Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#57571}
-
Jaroslav Sevcik authored
Bug: v8:8445 Change-Id: Iea69c65d0054b24b3f8c7234c4c556ebee2dd45f Reviewed-on: https://chromium-review.googlesource.com/c/1335696Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#57564}
-
- 07 Nov, 2018 1 commit
-
-
Igor Sheludko authored
in order to make the test compatible with the pointer compression friendly heap layout. Bug: v8:8182 Change-Id: I34a0c597b70687f7ae7dad19df60c94520fa349f Reviewed-on: https://chromium-review.googlesource.com/c/1317818 Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by: Hannes Payer <hpayer@chromium.org> Cr-Commit-Position: refs/heads/master@{#57310}
-
- 05 Nov, 2018 1 commit
-
-
Jakob Kummerow authored
and split Smi out of objects.h into smi.h. Bug: v8:3770, v8:5402 Change-Id: I5ff7461495d29c785a76c79aca2616816a29ab1e Reviewed-on: https://chromium-review.googlesource.com/c/1313035Reviewed-by: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Hannes Payer <hpayer@chromium.org> Reviewed-by: Adam Klein <adamk@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#57252}
-
- 26 Oct, 2018 1 commit
-
-
Igor Sheludko authored
and also move embedder fields from Isolate to IsolateData. The external memory counter fields are temporarily moved to IsolateData in order to avoid unexpected Node JS bot failures which happen if the fields are left in the Heap class. Bug: v8:8182 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: I9d58f235c0ce40e110f595addd03b80b3617aa77 Reviewed-on: https://chromium-review.googlesource.com/c/1278793 Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#57037}
-
- 12 Oct, 2018 1 commit
-
-
Jakob Kummerow authored
This makes it possible for handles.h to #include objects.h, which upcoming changes will need. Bug: v8:3770 Change-Id: I4f500736028668749bb73fb24f9732df757e97d0 Reviewed-on: https://chromium-review.googlesource.com/c/1278487Reviewed-by: Michael Stanton <mvstanton@chromium.org> Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#56615}
-
- 11 Oct, 2018 1 commit
-
-
Igor Sheludko authored
... containing RootsTable, ExternalReferenceTable, builtins array and potentially some other data that can be accessed via the RootRegister. This is a preliminary step before adding support for pointer-compression friendly heap layout. Bug: v8:8182 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: I2899f657aaff1351a5304afa0b1a4c5ae4cfc31d Reviewed-on: https://chromium-review.googlesource.com/c/1245426Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Ben Titzer <titzer@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#56551}
-
- 10 Oct, 2018 1 commit
-
-
Hai Dang authored
The MapIterator protector protects the original iteration behaviors of Map.prototype.keys(), Map.prototype.values(), and Set.prototype.entries(). It does not protect the original iteration behavior of Map.prototype[Symbol.iterator](). The protector is invalidated when: * The 'next' property is set on an object where the property holder is the %MapIteratorPrototype% (e.g. because the object is that very prototype). * The 'Symbol.iterator' property is set on an object where the property holder is the %IteratorPrototype%. Note that this also invalidates the SetIterator protector (see below). The SetIterator protector protects the original iteration behavior of Set.prototype.keys(), Set.prototype.values(), Set.prototype.entries(), and Set.prototype[Symbol.iterator](). The protector is invalidated when: * The 'next' property is set on an object where the property holder is the %SetIteratorPrototype% (e.g. because the object is that very prototype). * The 'Symbol.iterator' property is set on an object where the property holder is the %SetPrototype% OR %IteratorPrototype%. This means that setting Symbol.iterator on a MapIterator object can also invalidate the SetIterator protector, and vice versa, setting Symbol.iterator on a SetIterator object can also invalidate the MapIterator. This is an over- approximation for the sake of simplicity. Bug: v8:7980 Change-Id: I54ad6e4c7f19ccc27d7001f6c4b6c8d6ea4ee871 Reviewed-on: https://chromium-review.googlesource.com/c/1273102Reviewed-by: Georg Neis <neis@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Hai Dang <dhai@google.com> Cr-Commit-Position: refs/heads/master@{#56530}
-
- 03 Oct, 2018 1 commit
-
-
Igor Sheludko authored
In particular, recognize builtins' values accesses and direct accesses to external reference values. For example: REX.W leaq rax,[r13+0x47a0] REX.W leaq rbx,[r13+0x80b0] turns into REX.W leaq rax,[r13+0x47a0] (builtin (RecordWrite)) REX.W leaq rbx,[r13+0x80b0] (external value (Isolate::context_address)) Bug: v8:8238 Change-Id: I3b049a1e82de7450bf04135c0c8d76b4dca4ee10 Reviewed-on: https://chromium-review.googlesource.com/c/1256830Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Igor Sheludko <ishell@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#56355}
-
- 01 Oct, 2018 1 commit
-
-
Hai Dang authored
The protector is useful for follow-up optimizations on string iterator. Tests are also added. Change-Id: I416037c742628c4d4d3b878d0df727a9ae7162f7 Reviewed-on: https://chromium-review.googlesource.com/1251122Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Commit-Queue: Hai Dang <dhai@google.com> Cr-Commit-Position: refs/heads/master@{#56315}
-
- 30 Aug, 2018 1 commit
-
-
Michael Starzinger authored
This removes the thread-local field in question. This side-channel for the "caught exception" is not needed, we can just explicitly pass the exception value to all support functions. Also, there is an inherent problem with having this side-channel, as it will not be properly reset when an exception handler ends up not rethrowing the exception. R=ahaas@chromium.org BUG=v8:8097 Change-Id: I2fdaff89f0eb318ce5a33bf56513165185547c1b Reviewed-on: https://chromium-review.googlesource.com/1194063Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#55517}
-
- 24 Aug, 2018 1 commit
-
-
Georg Neis authored
Also define classes NativeContext and InternalizedString. Those object kinds were already part of our Object hierarchy but didn't have their own class, which was inconvenient. R=jarin@chromium.org, mslekova@chromium.org Bug: v8:7790 Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng Change-Id: Ic443a2b2e34afc89bc924e845d995e3f287a2535 Reviewed-on: https://chromium-review.googlesource.com/1185592Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#55402}
-
- 20 Jul, 2018 1 commit
-
-
Leszek Swirski authored
Adds an Isolate::FromWritableHeapObject method, with a bool return value and Isolate* out parameter, and replace most accesses to Isolate via MemoryChunk (which handle objectsin ROSpace rather than just failing) to use that instead. Bug: v8:7754 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: Idb472a3d6037deed92e6fa8c8a7a1a14293e2462 Reviewed-on: https://chromium-review.googlesource.com/1144933 Commit-Queue: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#54579}
-
- 06 Jul, 2018 1 commit
-
-
Dan Elphick authored
This is a clean-up to completely remove the Heap accessors for roots accessible via ReadOnlyRoots. Where previously ReadOnlyRoots called the Heap accessor, now it accesses the roots array directly using the root index (since ReadOnlyRoots is a friend of Heap). Also clean up several cases where private Heap accessors were still being used by Heap and its friends. Bug: v8:7786 Change-Id: Iaca2e17b22822b30d395dec6250a4d5ae496c983 Reviewed-on: https://chromium-review.googlesource.com/1127172 Commit-Queue: Dan Elphick <delphick@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Hannes Payer <hpayer@chromium.org> Cr-Commit-Position: refs/heads/master@{#54297}
-
- 04 Jul, 2018 1 commit
-
-
Dan Elphick authored
In future the RO_SPACE root accessors in Heap will become private, so instead convert them all to use ReadOnlyRoots. Bug: v8:7786 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: I2f2c031c03d56d360ef940fc925e0583e6ae31dc Reviewed-on: https://chromium-review.googlesource.com/1125720Reviewed-by: Leszek Swirski <leszeks@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#54202}
-
- 23 Apr, 2018 3 commits
-
-
Sigurd Schneider authored
This is a reland of 5728b3fb Original change's description: > [builtins] Separate species protectors for Array, TypedArray, Promise > > Previously, there was one species protector for Array, TypedArray and > Promise. This CL splits the protector in three separate ones. This means > that invalidating one of them does not have negative performance > implications for the other ones. > > Bug: chromium:835347, v8:7340 > Change-Id: Id84aa0071f17096192965264eb60ddadd1e8e73f > Reviewed-on: https://chromium-review.googlesource.com/1023408 > Commit-Queue: Sigurd Schneider <sigurds@chromium.org> > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> > Cr-Commit-Position: refs/heads/master@{#52733} Bug: chromium:835347, v8:7340 Change-Id: I0c0188a0723e206ddb362834bcf872b23cd7666d Reviewed-on: https://chromium-review.googlesource.com/1023811 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#52742}
-
Sigurd Schneider authored
This reverts commit 5728b3fb. Reason for revert: Breaks noi18n build Original change's description: > [builtins] Separate species protectors for Array, TypedArray, Promise > > Previously, there was one species protector for Array, TypedArray and > Promise. This CL splits the protector in three separate ones. This means > that invalidating one of them does not have negative performance > implications for the other ones. > > Bug: chromium:835347, v8:7340 > Change-Id: Id84aa0071f17096192965264eb60ddadd1e8e73f > Reviewed-on: https://chromium-review.googlesource.com/1023408 > Commit-Queue: Sigurd Schneider <sigurds@chromium.org> > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> > Cr-Commit-Position: refs/heads/master@{#52733} TBR=sigurds@chromium.org,bmeurer@chromium.org Change-Id: Ied8b436e7991c759eb3b98702c142aa127a7e63c No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:835347, v8:7340 Reviewed-on: https://chromium-review.googlesource.com/1024151Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#52736}
-
Sigurd Schneider authored
Previously, there was one species protector for Array, TypedArray and Promise. This CL splits the protector in three separate ones. This means that invalidating one of them does not have negative performance implications for the other ones. Bug: chromium:835347, v8:7340 Change-Id: Id84aa0071f17096192965264eb60ddadd1e8e73f Reviewed-on: https://chromium-review.googlesource.com/1023408 Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#52733}
-
- 19 Mar, 2018 1 commit
-
-
Alexey Kozyatinskiy authored
This is a reland of 14824520 Original change's description: > [inspector] added Runtime.terminateExecution > > Runtime.terminateExecution terminates current or next JavaScript > call. Termination flag is automatically reset as soon as v8 call > or microtasks are completed. > > R=pfeldman@chromium.org > > Bug: chromium:820640 > Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel > Change-Id: Ie21c123be3a61fe25cf6e04c38a8b6c664622ed7 > Reviewed-on: https://chromium-review.googlesource.com/957386 > Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> > Reviewed-by: Dmitry Gozman <dgozman@chromium.org> > Cr-Commit-Position: refs/heads/master@{#51912} Bug: chromium:820640 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng;master.tryserver.blink:linux_trusty_blink_rel Change-Id: I6dd30f65c06c2b7eefd1e7beb9a3cf50ea5bf8cd Reviewed-on: https://chromium-review.googlesource.com/967323 Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> Reviewed-by: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> Cr-Commit-Position: refs/heads/master@{#52004}
-
- 17 Mar, 2018 2 commits
-
-
Michael Achenbach authored
This reverts commit 14824520. Reason for revert: Breaks chromium tsan in roll: https://chromium-review.googlesource.com/c/chromium/src/+/967682 Original change's description: > Reland "[inspector] added Runtime.terminateExecution" > > This is a reland of 98dec8f2 > > Original change's description: > > [inspector] added Runtime.terminateExecution > > > > Runtime.terminateExecution terminates current or next JavaScript > > call. Termination flag is automatically reset as soon as v8 call > > or microtasks are completed. > > > > R=pfeldman@chromium.org > > > > Bug: chromium:820640 > > Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel > > Change-Id: Ie21c123be3a61fe25cf6e04c38a8b6c664622ed7 > > Reviewed-on: https://chromium-review.googlesource.com/957386 > > Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> > > Reviewed-by: Dmitry Gozman <dgozman@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#51912} > > Bug: chromium:820640 > Change-Id: I8f270c2fdbe732f0c40bfb149d26a6e73d988253 > Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel > Reviewed-on: https://chromium-review.googlesource.com/966681 > Reviewed-by: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> > Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> > Cr-Commit-Position: refs/heads/master@{#52002} TBR=dgozman@chromium.org,pfeldman@chromium.org,kozyatinskiy@chromium.org Change-Id: I2f3d24b238f479082bfed349363240887b5ba751 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:820640 Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel Reviewed-on: https://chromium-review.googlesource.com/967781Reviewed-by: Michael Achenbach <machenbach@chromium.org> Commit-Queue: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#52003}
-
Alexey Kozyatinskiy authored
This is a reland of 98dec8f2 Original change's description: > [inspector] added Runtime.terminateExecution > > Runtime.terminateExecution terminates current or next JavaScript > call. Termination flag is automatically reset as soon as v8 call > or microtasks are completed. > > R=pfeldman@chromium.org > > Bug: chromium:820640 > Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel > Change-Id: Ie21c123be3a61fe25cf6e04c38a8b6c664622ed7 > Reviewed-on: https://chromium-review.googlesource.com/957386 > Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> > Reviewed-by: Dmitry Gozman <dgozman@chromium.org> > Cr-Commit-Position: refs/heads/master@{#51912} Bug: chromium:820640 Change-Id: I8f270c2fdbe732f0c40bfb149d26a6e73d988253 Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel Reviewed-on: https://chromium-review.googlesource.com/966681Reviewed-by: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> Cr-Commit-Position: refs/heads/master@{#52002}
-
- 05 Mar, 2018 1 commit
-
-
Benedikt Meurer authored
This changes the JSArrayIterator to always have only a single instance type, instead of the zoo of instance types that we had before, and which became less useful with the specification update to when "next" is loaded from the iterator now. This greatly simplifies the baseline implementation of the array iterator, which now only looks at the iterated object during %ArrayIteratorPrototype%.next invocations. In TurboFan we introduce a new JSCreateArrayIterator operator, that holds the IterationKind and get's the iterated object as input. When optimizing %ArrayIteratorPrototype%.next in the JSCallReducer, we check whether the receiver is a JSCreateArrayIterator, and if so, we try to infer maps for the iterated object from there. If we find any, we speculatively assume that these won't have changed during iteration (as we did before with the previous approach), and generate fast code for both JSArray and JSTypedArray iteration. Drive-by-fix: Drop the fast_array_iteration protector, it's not necessary anymore since we have the deoptimization guard bit in the JSCallReducer now. This addresses the performance cliff noticed in webpack 4. The minimal repro on the tracking bug goes from console.timeEnd: mono, 124.773000 console.timeEnd: poly, 670.353000 to console.timeEnd: mono, 118.709000 console.timeEnd: poly, 141.393000 so that's a 4.7x improvement. Also make presubmit happy by adding the missing #undef's. Bug: v8:7510, v7:7514 Change-Id: I79a46bfa2cd0f0710e09365ef72519b1bbb667b5 Reviewed-on: https://chromium-review.googlesource.com/946098Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#51725}
-
- 23 Jan, 2018 1 commit
-
-
Benedikt Meurer authored
Use this in the PromiseThen operation to skip the (expensive) lookup in the SpeciesConstructor operation. This yields in a nice 3-5% improvement on the bluebird and wikipedia benchmarks, and paves the way for inlining certain Promise operations into TurboFan optimized code later. On the micro-benchmark mentioned in the bug (from the findings doc), we reduce the overall execution time by 25%, which makes sense given that Promise.prototype.then spends a significant portion of it's time just figuring out the appropriate constructor. Bug: v8:7253, v8:7349 Change-Id: Ia1577b59d1b7e4b8dbda83e2186583edab76695a Reviewed-on: https://chromium-review.googlesource.com/880681Reviewed-by: Yang Guo <yangguo@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#50794}
-
- 13 Oct, 2017 1 commit
-
-
Mathias Bynens authored
New code should use nullptr instead of NULL. This patch updates existing use of NULL to nullptr where applicable, making the code base more consistent. BUG=v8:6928,v8:6921 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng;master.tryserver.v8:v8_linux_noi18n_rel_ng Change-Id: I4687f5b96fcfd88b41fa970a2b937b4f6538777c Reviewed-on: https://chromium-review.googlesource.com/718338 Commit-Queue: Mathias Bynens <mathias@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#48557}
-
- 06 Oct, 2017 1 commit
-
-
Benedikt Meurer authored
Make calls like new Array(n) new A(n) (where A is a subclass of Array) inlinable into TurboFan. We do this by speculatively checking that n is an unsigned integer that is not greater than JSArray::kInitialMaxFastElementArray, and then lowering the backing store allocation to a builtin call. The speculative optimization is either protected by the AllocationSite for the Array constructor invocation (if we have one), or by a newly introduced global protector cell that is used for Array constructor invocations that don't have an AllocationSite, i.e. the ones from Array#map, Array#filter, or from subclasses of Array. Next step will be to implement the backing store allocations inline in TurboFan, but that requires Loop support in the GraphAssembler, so it's done as a separate CL. This should further boost the performance. This boosts the ARES6 ML benchmark by up to 8% on the steady state, and also improves monomorphic Array#map calls by around 20-25% on the initial setup. Bug: v8:6399 Tbr: ulan@chromium.org Change-Id: I7c8bdecf7c814ce52db6ee3051c3206a4f7d4bb6 Reviewed-on: https://chromium-review.googlesource.com/704639 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Reviewed-by: Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#48348}
-
- 25 Sep, 2017 1 commit
-
-
Karl Schimpf authored
This is a second attempt at landing CL 644866 which was reverted by CL 667019. Extends the current implementation of WASM exceptions to be able to throw exceptions with values (not just tags). A JS typed (uint_16) array is used to hold the thrown values. This allows all WASM types to be stored (i32, i64, f32, and f64) as well as be inspected in JS. The previous CL was reverted because the WASM compiler made calls to run time functions with tagged objects, which must not be done. To fix this, all run time calls use the thread-level isolate to hold the exception being processed. Bug: v8:6577 Change-Id: I4b1ef7e2847b71a2fab8e9934a0531057db9de63 Reviewed-on: https://chromium-review.googlesource.com/677056 Commit-Queue: Karl Schimpf <kschimpf@chromium.org> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Eric Holk <eholk@chromium.org> Cr-Commit-Position: refs/heads/master@{#48148}
-