- 30 Jul, 2019 1 commit
-
-
Sathya Gunasekaran authored
Previously, this was run as a microtask and this CL changes it to run as a separate task as mandated by the current WeakRef spec. This CL also introduces a FinalizationGroup type to the V8 API representing the JSFinalizationGroup. This has a `Cleanup` function that runs the cleanup callback associated with it. SetHostCleanupFinalizationGroupCallback is added to set the embedder defined HostCleanupFinalizationGroupCallback. ClearKeptObject is exposed on the v8::Isolate to reset the strongly held set of objects. The general workflow is the following: (a) When the GC notices that a given finalization group has dirty cells, it calls HostCleanupFinalizationGroupCallback with the given finalization group. (b) As part of HostCleanupFinalizationGroupCallback, the embedder enqueues a task that at some point later calls FinalizationGroup::Cleanup. (c) At some point in the future, FinalizationGroup::Cleanup is called, which runs the cleanup callback of the finalization group. This patch also includes d8 changes to use these new APIs. Currently, d8 cycles through the enqueued finalization groups after a synchronous turn (and it's microtask checkpoint) and runs the cleanup callbacks. Change-Id: I06eb4da2c103b2792a9c62bc4b98fd4e5c4892fc Bug: v8:8179 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1655655 Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Hannes Payer <hpayer@chromium.org> Cr-Commit-Position: refs/heads/master@{#62984}
-
- 27 May, 2019 1 commit
-
-
Yang Guo authored
R=sigurds@chromium.org Bug: v8:9247 Change-Id: I25743f048e3e6cd22a18e003e77c8b78f147b630 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1630680Reviewed-by:
Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#61836}
-
- 24 May, 2019 1 commit
-
-
Yang Guo authored
TBR=mvstanton@chromium.org,neis@chromium.org,ahaas@chromium.org Bug: v8:9247 Change-Id: I5433c863a54f3412d73df0d38aba3fdbcfac7ebe Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627973 Commit-Queue: Yang Guo <yangguo@chromium.org> Auto-Submit: Yang Guo <yangguo@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#61830}
-
- 23 May, 2019 2 commits
-
-
Yang Guo authored
TBR=bmeurer@chromium.org,leszeks@chromium.org Bug: v8:9247 Change-Id: I8d14d0192ea8c705f8274e8e61a162531826edb6 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1624220Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Hannes Payer <hpayer@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#61769}
-
Clemens Hammacher authored
This CL was generated by an automatic clang AST rewriter using this matcher expression: callExpr( callee( cxxMethodDecl( hasName("operator->"), ofClass(isSameOrDerivedFrom("v8::internal::Object")) ) ), argumentCountIs(1) ) The "->" at the expression location was then rewritten to ".". R=jkummerow@chromium.org TBR=mstarzinger@chromium.org,verwaest@chromium.org,yangguo@chromium.org Bug: v8:9183, v8:3770 No-Try: true No-Tree-Checks: true Change-Id: I0a7ecabdeafe51d0cf427f5280af0c7cab96869e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1624209Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Yang Guo <yangguo@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#61764}
-
- 22 May, 2019 1 commit
-
-
Yang Guo authored
Bug: v8:9247 Change-Id: I79e0553e8a0d6dac2aa16b94a6c0e05b6ccde4a1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1621934 Commit-Queue: Yang Guo <yangguo@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#61725}
-
- 11 Apr, 2019 1 commit
-
-
tzik authored
MicrotasksScope has accidentally ignored the given MicrotaskQueue instance when it's scoping out. That confused the embedder to start using the non default MicrotaskQueue. Change-Id: Id345605cf6520cd073429b08698de75f7681d93c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1563836Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Taiju Tsuiki <tzik@chromium.org> Cr-Commit-Position: refs/heads/master@{#60765}
-
- 04 Apr, 2019 1 commit
-
-
tzik authored
Context::microtask_context can be null after v8::Context::DetachGlobal is called, and that should cancel microtasks that are associated to the detached context. However, there are several callers left without the null check to the microtask queue, and that causes crashes. This CL adds the null check and cancellation as the crash fix. Bug: chromium:937784 Change-Id: Ie8d107f28f200cee6e75798e3f72c5ed7a2a461c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1545139 Commit-Queue: Taiju Tsuiki <tzik@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#60623}
-
- 28 Mar, 2019 1 commit
-
-
tzik authored
A microtask requires a non-detached Context to trigger, and the Context is usually pulled from the primary handler. On an example below, |on_rejected| is primary, as the attached promise is rejected and |on_rejected| will be called as the reaction. Promise.reject().then(on_fulfilled, on_rejected); If the primary handler is undefined or invalid, we used to use the promise's context as the fallback. E.g. the primary handler is undefined on the examlpe below, and the context of |promise| was used. let promise = Promise.reject(); promise.then(on_fulfilled); However, that causes a non-intuitive behavior around a detached context: let DeadPromise = iframe.contentWindow.Promise; iframe.src = "http://example.com"; // navigate away. // DeadPromise's Context is detached state now. let p = DeadPromise.reject(); // |on_rejected| is called, as the context is pulled from |on_rejected|. p.then(on_fulfilled, on_rejected); // |on_rejected| was NOT called, as a microtask to settle |q| does not // run due to the detached context. let q = p.then(on_fulfilled); q.catch(on_rejected); After this CL, we use non-primary handler as a source of fallback context. On the last example above, the Context is pulled from |on_fullfilled|, so that |q| is settled using that context. Bug: chromium:941271 Change-Id: Iff71acf7c3617f3493d100abcd2c5c36bd1bbfd1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1535916Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Taiju Tsuiki <tzik@chromium.org> Cr-Commit-Position: refs/heads/master@{#60499}
-
- 08 Mar, 2019 1 commit
-
-
Igor Sheludko authored
... but do it once for the whole group of tests instead. Bug: v8:8929 Change-Id: I4c92a4cc29f8cf8a1011a563fe41972844c59972 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1511476Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#60122}
-
- 27 Feb, 2019 1 commit
-
-
tzik authored
This is a reland of 734a6575 Original change's description: > Do not enqueue or run a microtask on detached contexts > > This CL disables EnqueueMicrotask and RunMicrotasks on detached > contexts. That is, if an embedder call DetachGlobal() on a v8::Context, > EnqueueMicrotask on that context will not take effect, and all Microtask > that is enqueued before DetachGlobal will be cancelled. > > On Blink, this implies that a frame will no longer run a microtask after > it's navigated away. OTOH, detached frames in Blink are not affected. > > Bug: v8:8124 > Change-Id: I5b00ceef5ea2afb87cf067a65eb95c29bf91176d > Reviewed-on: https://chromium-review.googlesource.com/c/1416071 > Reviewed-by: Toon Verwaest <verwaest@chromium.org> > Reviewed-by: Yang Guo <yangguo@chromium.org> > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> > Reviewed-by: Adam Klein <adamk@chromium.org> > Commit-Queue: Taiju Tsuiki <tzik@chromium.org> > Cr-Commit-Position: refs/heads/master@{#59445} Tbr: adamk@chromium.org, yangguo@chromium.org, verwaest@chromium.org Bug: v8:8124 Change-Id: I959a18ae214f1385d5f453b3ed94772e60f71e0f Reviewed-on: https://chromium-review.googlesource.com/c/1469544 Commit-Queue: Taiju Tsuiki <tzik@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#59884}
-
- 26 Feb, 2019 1 commit
-
-
tzik authored
V8 used to use the microtask context when it runs EnqueueJob step 2. > Let job settings be some appropriate environment settings object. https://html.spec.whatwg.org/multipage/webappapis.html#enqueuejob(queuename,-job,-arguments) However, it's being updated to use the handler's context. https://github.com/whatwg/html/issues/1426#issuecomment-340071080 Change-Id: I24840a28ef2c903539fe4ace74ae59da290f5109 Reviewed-on: https://chromium-review.googlesource.com/c/1465902Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Commit-Queue: Taiju Tsuiki <tzik@chromium.org> Cr-Commit-Position: refs/heads/master@{#59870}
-
- 08 Feb, 2019 2 commits
-
-
Yang Guo authored
This reverts commit 734a6575. Reason for revert: https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8-Blink%20Linux%2064/29872 Original change's description: > Do not enqueue or run a microtask on detached contexts > > This CL disables EnqueueMicrotask and RunMicrotasks on detached > contexts. That is, if an embedder call DetachGlobal() on a v8::Context, > EnqueueMicrotask on that context will not take effect, and all Microtask > that is enqueued before DetachGlobal will be cancelled. > > On Blink, this implies that a frame will no longer run a microtask after > it's navigated away. OTOH, detached frames in Blink are not affected. > > Bug: v8:8124 > Change-Id: I5b00ceef5ea2afb87cf067a65eb95c29bf91176d > Reviewed-on: https://chromium-review.googlesource.com/c/1416071 > Reviewed-by: Toon Verwaest <verwaest@chromium.org> > Reviewed-by: Yang Guo <yangguo@chromium.org> > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> > Reviewed-by: Adam Klein <adamk@chromium.org> > Commit-Queue: Taiju Tsuiki <tzik@chromium.org> > Cr-Commit-Position: refs/heads/master@{#59445} TBR=yukishiino@chromium.org,adamk@chromium.org,yangguo@chromium.org,bmeurer@chromium.org,verwaest@chromium.org,tzik@chromium.org Change-Id: I9f5b703e7101aa3c251fe03ed4b52e9d71ae605a No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:8124 Reviewed-on: https://chromium-review.googlesource.com/c/1460466Reviewed-by:
Yang Guo <yangguo@chromium.org> Commit-Queue: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#59448}
-
tzik authored
This CL disables EnqueueMicrotask and RunMicrotasks on detached contexts. That is, if an embedder call DetachGlobal() on a v8::Context, EnqueueMicrotask on that context will not take effect, and all Microtask that is enqueued before DetachGlobal will be cancelled. On Blink, this implies that a frame will no longer run a microtask after it's navigated away. OTOH, detached frames in Blink are not affected. Bug: v8:8124 Change-Id: I5b00ceef5ea2afb87cf067a65eb95c29bf91176d Reviewed-on: https://chromium-review.googlesource.com/c/1416071Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Adam Klein <adamk@chromium.org> Commit-Queue: Taiju Tsuiki <tzik@chromium.org> Cr-Commit-Position: refs/heads/master@{#59445}
-
- 29 Jan, 2019 1 commit
-
-
tzik authored
This is a reland of 516d9068 Original change's description: > Expose the number of microtasks from RunMicrotasks > > This CL adds the number of processed microtasks to the tracing marker > of RunMicrotasks, plus let RunMicrotasks return the number. > > Bug: v8:7804, v8:8124 > Change-Id: Ie584e22964121fbda3a822379d760e7518fc54a7 > Reviewed-on: https://chromium-review.googlesource.com/c/1425277 > Commit-Queue: Taiju Tsuiki <tzik@chromium.org> > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> > Cr-Commit-Position: refs/heads/master@{#59017} Bug: v8:7804, v8:8124 Change-Id: I4a57ba3e23973f6b46414c4502244091c42cf532 Reviewed-on: https://chromium-review.googlesource.com/c/1430399Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Taiju Tsuiki <tzik@chromium.org> Cr-Commit-Position: refs/heads/master@{#59148}
-
- 23 Jan, 2019 2 commits
-
-
Michael Achenbach authored
This reverts commit 516d9068. Reason for revert: Breaks layout tests: https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8-Blink%20Linux%2064/29444 See also: https://v8.dev/docs/blink-layout-tests Original change's description: > Expose the number of microtasks from RunMicrotasks > > This CL adds the number of processed microtasks to the tracing marker > of RunMicrotasks, plus let RunMicrotasks return the number. > > Bug: v8:7804, v8:8124 > Change-Id: Ie584e22964121fbda3a822379d760e7518fc54a7 > Reviewed-on: https://chromium-review.googlesource.com/c/1425277 > Commit-Queue: Taiju Tsuiki <tzik@chromium.org> > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> > Cr-Commit-Position: refs/heads/master@{#59017} TBR=bmeurer@chromium.org,tzik@chromium.org Change-Id: I7db675dbbc496cc3c45220aa141252dd371d2780 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:7804, v8:8124 Reviewed-on: https://chromium-review.googlesource.com/c/1429859Reviewed-by:
Michael Achenbach <machenbach@chromium.org> Commit-Queue: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#59018}
-
tzik authored
This CL adds the number of processed microtasks to the tracing marker of RunMicrotasks, plus let RunMicrotasks return the number. Bug: v8:7804, v8:8124 Change-Id: Ie584e22964121fbda3a822379d760e7518fc54a7 Reviewed-on: https://chromium-review.googlesource.com/c/1425277 Commit-Queue: Taiju Tsuiki <tzik@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#59017}
-
- 17 Jan, 2019 1 commit
-
-
tzik authored
MicrotaskQueueTest uses Isolate's default_microtask_queue for testing, however the instance is shared between test cases, and causes flaky failure of MicrotaskQueueTest.BufferGrowth. This CL adds a MicrotaskQueue instance for each test fixture, so that each test cases use separate ones. Also, this CL removes the DCHECK that denies non-default MicrotaskQueue to run, which is unneeded after https://crrev.com/c/1369906. Bug: v8:8124 Change-Id: I4ff236c327bf0be14f582b3ca8c802fd72661b42 Reviewed-on: https://chromium-review.googlesource.com/c/1417315Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Taiju Tsuiki <tzik@chromium.org> Cr-Commit-Position: refs/heads/master@{#58901}
-
- 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
Bug: v8:5402 Change-Id: Ifdbc61eb401160d03b98336292f1725d604e7f51 Reviewed-on: https://chromium-review.googlesource.com/c/1379936 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#58283}
-
- 07 Dec, 2018 1 commit
-
-
Igor Sheludko authored
(mostly for roots, handles and stack locations). Thi CL also changes RootVisitor interface to use FullObjectSlots instead of ObjectSlots. Bug: v8:8518 Change-Id: I217c7ae176387a8c64f4754e62339727bdb36018 Reviewed-on: https://chromium-review.googlesource.com/c/1366035Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#58091}
-
- 27 Nov, 2018 1 commit
-
-
Yang Guo authored
This is an attempt to reland https://crrev.com/1d726111ab7087a5, that was reverted at https://crrev.com/0a820125230bec24. Tbr: bmeurer@chromium.org Bug: chromium:887920, v8:7253 Change-Id: I785417de7d0560b93bda5ade623fa5be3647d7dd Reviewed-on: https://chromium-review.googlesource.com/c/1350530 Commit-Queue: Taiju Tsuiki <tzik@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#57865}
-
- 22 Nov, 2018 1 commit
-
-
Yang Guo authored
This reverts commit 1d726111. Reason for revert: This breaks a layout test, and blocks V8 roll https://ci.chromium.org/p/chromium/builders/luci.chromium.try/win7_chromium_rel_ng/135831 Original change's description: > Implement Faster MicrotaskQueue Step 2 > > This is an implementation of https://bit.ly/v8-faster-microtask-queues > step 2. > > This CL overhauls MicrotaskQueue class, the previous one is on V8 heap, > and the new one is on C++ heap. > > Benchmark: > This CL improves a benchmark score around promise by 5~23%. > https://github.com/v8/promise-performance-tests > https://docs.google.com/spreadsheets/d/1HtwZGzUAGJYg87VmYhV9hLdvfddlCtC6Oz0iOj-WwQA/edit#gid=1952666737 > > Bug: chromium:887920, v8:7253 > Change-Id: I1f26e02c45ae60ae39d1ccc168daa98bca4663d9 > Reviewed-on: https://chromium-review.googlesource.com/c/1290751 > Commit-Queue: Taiju Tsuiki <tzik@chromium.org> > Reviewed-by: Yang Guo <yangguo@chromium.org> > Reviewed-by: Adam Klein <adamk@chromium.org> > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Cr-Commit-Position: refs/heads/master@{#57681} TBR=ulan@chromium.org,adamk@chromium.org,yangguo@chromium.org,ishell@chromium.org,bmeurer@chromium.org,tzik@chromium.org Change-Id: I639882a95fe63c029a2e53d610dc4133d1ac48f2 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:887920, v8:7253 Reviewed-on: https://chromium-review.googlesource.com/c/1347473 Commit-Queue: Yang Guo <yangguo@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#57711}
-
- 21 Nov, 2018 1 commit
-
-
tzik authored
This is an implementation of https://bit.ly/v8-faster-microtask-queues step 2. This CL overhauls MicrotaskQueue class, the previous one is on V8 heap, and the new one is on C++ heap. Benchmark: This CL improves a benchmark score around promise by 5~23%. https://github.com/v8/promise-performance-tests https://docs.google.com/spreadsheets/d/1HtwZGzUAGJYg87VmYhV9hLdvfddlCtC6Oz0iOj-WwQA/edit#gid=1952666737 Bug: chromium:887920, v8:7253 Change-Id: I1f26e02c45ae60ae39d1ccc168daa98bca4663d9 Reviewed-on: https://chromium-review.googlesource.com/c/1290751 Commit-Queue: Taiju Tsuiki <tzik@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Adam Klein <adamk@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#57681}
-