- 20 Apr, 2022 1 commit
-
-
legendecas authored
As ecma262 normative change https://github.com/tc39/ecma262/pull/2683, exception thrown on PromiseResolve the broken promises need to be caught and use it to reject the promise returned by `AsyncGenerator.prototype.return`. AsyncGeneratorReturn didn't handle the exception thrown by Await. This CL add an exception handler around it and pass through the caught exception to the returned promise and resume the generator by AsyncGeneratorAwaitResume if the generator is not closed, otherwise reject the promise by AsyncGeneratorReject and drain the queue. Bug: v8:12770 Change-Id: Ic3cac4ce36a6d8ecfeb5d7d762a37a2e0524831c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3581158Reviewed-by:
Shu-yu Guo <syg@chromium.org> Commit-Queue: Chengzhong Wu <legendecas@gmail.com> Cr-Commit-Position: refs/heads/main@{#80066}
-
- 07 Feb, 2022 1 commit
-
-
Benedikt Meurer authored
Properly push back the current request promise for async generators when resuming after an `await` to ensure that the catch prediction works as expected for async generators. Fixed: chromium:1220203 Change-Id: I8c3592ceb567aadcba8f460794cd5d60a965a360 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3442680 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Auto-Submit: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Philip Pfaffe <pfaffe@chromium.org> Commit-Queue: Philip Pfaffe <pfaffe@chromium.org> Cr-Commit-Position: refs/heads/main@{#78984}
-
- 12 Nov, 2021 1 commit
-
-
Ng Zhi An authored
Bug: v8:12244,v8:12245 Change-Id: I02e08e79a7b3a07531bfac753beff13a866247e8 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3269170Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/main@{#77878}
-
- 30 Sep, 2021 1 commit
-
-
Marja Hölttä authored
It's confusing that we have CSA_CHECK and CSA_ASSERT and it's not clear from the names that the former works in release mode and the latter only in debug mode. Renaming CSA_ASSERT to CSA_DCHECK makes it clear what it does. So now we have CSA_CHECK and CSA_DCHECK and they're not confusing. This also renames assert() in Torque to dcheck(). Bug: v8:12244 Change-Id: I6f25d431ebc6eec7ebe326b6b8ad3a0ac5e9a108 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3190104Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Reviewed-by:
Shu-yu Guo <syg@chromium.org> Commit-Queue: Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/main@{#77160}
-
- 07 Jun, 2021 1 commit
-
-
Camillo Bruni authored
- Add new Builtin enum - Move Builtins::Name:kXXX to Builtin::kXXX - Update existing code Follow CLs will unify the mix of using int builtin-ids and Builtins::Name to only use the new Builtin enum and changing it to an enum class. Change-Id: Ib39aa45a25696acdf147f46392901b1e051deaa4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2905592 Commit-Queue: Camillo Bruni <cbruni@chromium.org> Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Reviewed-by:
Mythri Alle <mythria@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#74995}
-
- 20 Apr, 2021 1 commit
-
-
Stephen Belanger authored
This is a reland of d5457f5f after a speculative revert. Additionally it fixes an issue with throwing promise hooks. Original change's description: > [api] JSFunction PromiseHook for v8::Context > > This will enable Node.js to get much better performance from async_hooks > as currently PromiseHook delegates to C++ for the hook function and then > Node.js delegates it right back to JavaScript, introducing several > unnecessary barrier hops in code that gets called very, very frequently > in modern, promise-heavy applications. > > This API mirrors the form of the original C++ function based PromiseHook > API, however it is intentionally separate to allow it to use JSFunctions > triggered within generated code to, as much as possible, avoid entering > runtime functions entirely. > > Because PromiseHook has internal use also, beyond just the Node.js use, > I have opted to leave the existing API intact and keep this separate to > avoid conflicting with any possible behaviour expectations of other API > users. > > The design ideas for this new API stemmed from discussion with some V8 > team members at a previous Node.js Diagnostics Summit hosted by Google > in Munich, and the relevant documentation of the discussion can be found > here: https://docs.google.com/document/d/1g8OrG5lMIUhRn1zbkutgY83MiTSMx-0NHDs8Bf-nXxM/edit#heading=h.w1bavzz80l1e > > A summary of the reasons for why this new design is important can be > found here: https://docs.google.com/document/d/1vtgoT4_kjgOr-Bl605HR2T6_SC-C8uWzYaOPDK5pmRo/edit?usp=sharing > > Bug: v8:11025 > Change-Id: I0b403b00c37d3020b5af07b654b860659d3a7697 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2759188 > Reviewed-by: Marja Hölttä <marja@chromium.org> > Reviewed-by: Camillo Bruni <cbruni@chromium.org> > Reviewed-by: Anton Bikineev <bikineev@chromium.org> > Reviewed-by: Igor Sheludko <ishell@chromium.org> > Commit-Queue: Camillo Bruni <cbruni@chromium.org> > Cr-Commit-Position: refs/heads/master@{#73858} Bug: v8:11025 Bug: chromium:1197475 Change-Id: I73a71e97d9c3dff89a2b092c3fe4adff81ede8ef Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2823917Reviewed-by:
Marja Hölttä <marja@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#74071}
-
- 08 Apr, 2021 2 commits
-
-
Michael Achenbach authored
This reverts commit d5457f5f. Reason for revert: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux%20-%20gc%20stress/32999 Original change's description: > [api] JSFunction PromiseHook for v8::Context > > This will enable Node.js to get much better performance from async_hooks > as currently PromiseHook delegates to C++ for the hook function and then > Node.js delegates it right back to JavaScript, introducing several > unnecessary barrier hops in code that gets called very, very frequently > in modern, promise-heavy applications. > > This API mirrors the form of the original C++ function based PromiseHook > API, however it is intentionally separate to allow it to use JSFunctions > triggered within generated code to, as much as possible, avoid entering > runtime functions entirely. > > Because PromiseHook has internal use also, beyond just the Node.js use, > I have opted to leave the existing API intact and keep this separate to > avoid conflicting with any possible behaviour expectations of other API > users. > > The design ideas for this new API stemmed from discussion with some V8 > team members at a previous Node.js Diagnostics Summit hosted by Google > in Munich, and the relevant documentation of the discussion can be found > here: https://docs.google.com/document/d/1g8OrG5lMIUhRn1zbkutgY83MiTSMx-0NHDs8Bf-nXxM/edit#heading=h.w1bavzz80l1e > > A summary of the reasons for why this new design is important can be > found here: https://docs.google.com/document/d/1vtgoT4_kjgOr-Bl605HR2T6_SC-C8uWzYaOPDK5pmRo/edit?usp=sharing > > Bug: v8:11025 > Change-Id: I0b403b00c37d3020b5af07b654b860659d3a7697 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2759188 > Reviewed-by: Marja Hölttä <marja@chromium.org> > Reviewed-by: Camillo Bruni <cbruni@chromium.org> > Reviewed-by: Anton Bikineev <bikineev@chromium.org> > Reviewed-by: Igor Sheludko <ishell@chromium.org> > Commit-Queue: Camillo Bruni <cbruni@chromium.org> > Cr-Commit-Position: refs/heads/master@{#73858} Bug: v8:11025 Change-Id: Ie7345c4505f39c973f9f0dbca745b591cff63f3f No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2814740 Auto-Submit: Michael Achenbach <machenbach@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Cr-Commit-Position: refs/heads/master@{#73862}
-
Stephen Belanger authored
This will enable Node.js to get much better performance from async_hooks as currently PromiseHook delegates to C++ for the hook function and then Node.js delegates it right back to JavaScript, introducing several unnecessary barrier hops in code that gets called very, very frequently in modern, promise-heavy applications. This API mirrors the form of the original C++ function based PromiseHook API, however it is intentionally separate to allow it to use JSFunctions triggered within generated code to, as much as possible, avoid entering runtime functions entirely. Because PromiseHook has internal use also, beyond just the Node.js use, I have opted to leave the existing API intact and keep this separate to avoid conflicting with any possible behaviour expectations of other API users. The design ideas for this new API stemmed from discussion with some V8 team members at a previous Node.js Diagnostics Summit hosted by Google in Munich, and the relevant documentation of the discussion can be found here: https://docs.google.com/document/d/1g8OrG5lMIUhRn1zbkutgY83MiTSMx-0NHDs8Bf-nXxM/edit#heading=h.w1bavzz80l1e A summary of the reasons for why this new design is important can be found here: https://docs.google.com/document/d/1vtgoT4_kjgOr-Bl605HR2T6_SC-C8uWzYaOPDK5pmRo/edit?usp=sharing Bug: v8:11025 Change-Id: I0b403b00c37d3020b5af07b654b860659d3a7697 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2759188Reviewed-by:
Marja Hölttä <marja@chromium.org> Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#73858}
-
- 03 Mar, 2021 1 commit
-
-
Santiago Aboy Solanes authored
Also add the qualifier `compiler::` to places where it should have been used in the first place. Bug: v9:6949 Change-Id: Ib5ca6829cd9d72b1e3047afc92363910c902bbbf Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2731529Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Reviewed-by:
Mythri Alle <mythria@chromium.org> Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Cr-Commit-Position: refs/heads/master@{#73155}
-
- 09 Feb, 2021 1 commit
-
-
Shu-yu Guo authored
The is_awaiting bit on async generators distinguishes waiting on an await. When the async generator resumes from an await, the is_awaiting bit is cleared. It is possible through overriding Promise#constructor that `await` throws *after* setting is_awaiting. There is an implicit try-catch around the body of the async generator such that, usually, caught exceptions would clear the is_awaiting bit. However, the exception thrown from a monkeypatched Promise#constructor can be caught by script, and thus never clear the is_awaiting bit. This CL sets the is_awaiting bit *after* `await` completes, with the exception of the return resumption. It is not possible to have the exception thrown by the await in the return resumption be caught by script. Bug: chromium:1171667 Change-Id: I0b615617a5c949f03350ab0f06c42920d43b5488 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2659508Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Shu-yu Guo <syg@chromium.org> Cr-Commit-Position: refs/heads/master@{#72593}
-
- 01 Oct, 2020 1 commit
-
-
Dan Elphick authored
CodeAssembler::Parameter now takes a Type template parameter and performs a checked cast to it. There is also UncheckedParameter which returns a TNode but doesn't check the cast. The original Parameter method is still there as UntypedParameter. Parameter<T>(x) in many cases replaces CAST(Parameter(x)), where the cast is performed inside Parameter. Since Parameter is not a macro, this means it cannot see the original expression or its file name and line number. So the error messages are vaguely useful, Parameter<T>() takes a SourceLocation parameter which with a default value of SourceLocation::Current(), which at least gives us the file name and line number for the error message. Bug: v8:6949, v8:10933 Change-Id: I27157bec7dc7462210c1eb9c430c0180217d25c1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2435106Reviewed-by:
Bill Budge <bbudge@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Santiago Aboy Solanes <solanes@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#70264}
-
- 06 May, 2020 1 commit
-
-
Marja Hölttä authored
There's no need for them to be in NativeContext. This CL moves the minimal subset of SFIs related to async functions and async generators. Bug: v8:10482 Change-Id: Ic90e342ae77b406c12dedf6b8f7e3fadb661b205 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2179843 Commit-Queue: Marja Hölttä <marja@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#67590}
-
- 17 Feb, 2020 1 commit
-
-
Santiago Aboy Solanes authored
Bug: v8:6949, v8:10155 Change-Id: I0113efe2d4d3a462533c306a87ebee851b1cb85c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2056853Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Cr-Commit-Position: refs/heads/master@{#66286}
-
- 29 Jan, 2020 1 commit
-
-
Joshua Litt authored
Bug: v8:9838 Change-Id: Idc6bda122354a54dd24e39b0356f35b0f54ef089 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2012596 Commit-Queue: Joshua Litt <joshualitt@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#66031}
-
- 07 Jan, 2020 1 commit
-
-
Dan Elphick authored
Converts StoreObjectField, StoreMapNoWriteBarrier and StoreObjectFieldRoot to use TNode parameters and convert all of their uses. Bug: v8:10021 Change-Id: Ic0511e43677f6aaaeac20df58a69be74156d390f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1980581Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Mythri Alle <mythria@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#65605}
-
- 09 Oct, 2019 1 commit
-
-
Dan Elphick authored
Remove TaggedIsAsyncGenerator since all but one use is to generate asserts that are handled automatically by TNodes. The remaining use is then just inlined. Also removes unused IsFastJSIterResult function. Bug: v8:6949 Change-Id: Id5631586b7e4d4f43d352493a3e2638cf449665f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1849516 Commit-Queue: Dan Elphick <delphick@chromium.org> Reviewed-by:
Santiago Aboy Solanes <solanes@chromium.org> Cr-Commit-Position: refs/heads/master@{#64186}
-
- 01 Oct, 2019 1 commit
-
-
Leszek Swirski authored
Change-Id: I822f3961b2ec5ef8fb7ca4765cb7c9fd38514223 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1832171 Auto-Submit: Leszek Swirski <leszeks@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#64060}
-
- 17 Sep, 2019 1 commit
-
-
Santiago Aboy Solanes authored
The promise file is too big so I am splitting it in several CLs. This is the first one. TNodified: * AllocateAndInitJSPromise (three versions) * PerformPromiseThen * AllocateJSPromise Bug: v8:6949 Change-Id: I57ae8de3f929c00a9127ea4be51ffe7703b44959 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1807370 Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Reviewed-by:
Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#63849}
-
- 16 Sep, 2019 1 commit
-
-
Maya Lekova authored
Bug: v8:9396 Change-Id: Icfaa04f02f1d3114cd42ad42e97572ac3cf8f985 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1801841Reviewed-by:
Santiago Aboy Solanes <solanes@chromium.org> Reviewed-by:
Sathya Gunasekaran <gsathya@chromium.org> Commit-Queue: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#63784}
-
- 04 Sep, 2019 1 commit
-
-
Georg Neis authored
Change-Id: I29a4d20656727e6ec1e1fd052a840bd5aefe3cd4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1781052 Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#63544}
-
- 27 Aug, 2019 1 commit
-
-
Leszek Swirski authored
Using the tool again, the previous iteration accidentally ignored Node/TNode behind a typedef. Automatic replacement of types with manual cleanup/addition of CASTs where necessary. Bug: v8:9396 Change-Id: I33b6d229669cb80586d5d8e82c04542df671f0b9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1768367 Commit-Queue: Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#63409}
-
- 23 Aug, 2019 1 commit
-
-
Leszek Swirski authored
Replace uses of WordEqual on two tagged representation nodes with a new TaggedEqual helper, which on pointer compressed configs only compares the bottom 32-bits of the word. We no longer allow using WordEqual on anything not known to be a WordT (i.e. Node* or TNode<Object>). In the future, this may allow us to ignore the top bits of an uncompressed Smi, and have simpler decompression, though this patch is not sufficient for such a change. As a necessary drive-by, TNodify a bunch of stuff. Bug: v8:8948 Change-Id: Ie11b70709e5d3073f12551b37b420a172a71bc99 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1763531 Commit-Queue: Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Reviewed-by:
Santiago Aboy Solanes <solanes@chromium.org> Cr-Commit-Position: refs/heads/master@{#63372}
-
- 27 May, 2019 1 commit
-
-
Clemens Hammacher authored
This replaces all typedefs that define types and not functions by the equivalent "using" declaration. This was done mostly automatically using this command: ag -l '\btypedef\b' src test | xargs -L1 \ perl -i -p0e 's/typedef ([^*;{}]+) (\w+);/using \2 = \1;/sg' Patchset 2 then adds some manual changes for typedefs for pointer types, where the regular expression did not match. R=mstarzinger@chromium.org TBR=yangguo@chromium.org, jarin@chromium.org Bug: v8:9183 Change-Id: I6f6ee28d1793b7ac34a58f980b94babc21874b78 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1631409 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#61849}
-
- 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}
-
- 21 May, 2019 1 commit
-
-
Yang Guo authored
Bug: v8:9247 TBR=bmeurer@chromium.org,neis@chromium.org NOPRESUBMIT=true Change-Id: Ia1e49d1aac09c4ff9e05d58fab9d08dd71198878 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1621931Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#61682}
-
- 23 Nov, 2018 1 commit
-
-
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}
-
- 24 Oct, 2018 1 commit
-
-
Caitlin Potter authored
The assertion was intended to verify that the function is only called at appropriate times (at a point when it was called both by by other builtins, and by desugarings added in the parser and during bytecode generation) --- However, it didn't account for the case where the wrapper Promise is resolved with another JSPromise with a non-callable "then" method. (Step 12 of https://tc39.github.io/ecma262/#sec-promise-resolve-functions): "If IsCallable(thenAction) is false, then Return FulfillPromise(promise, resolution)." It would be observable to verify this behaviour by loading the "then" value and asserting that it's non-callable, so instead the CSA_ASSERT is just removed and replaced with a comment explaining the appropriate use of the function. BUG=chromium:897436, v8:5855 R=bmeurer@chromium.org Change-Id: Ib4b11abfe3339409b57ccfda9c3f75a34e0db532 Reviewed-on: https://chromium-review.googlesource.com/c/1296909 Commit-Queue: Caitlin Potter <caitp@igalia.com> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#56916}
-
- 11 Oct, 2018 1 commit
-
-
Benedikt Meurer authored
This JSAsyncFunctionObject represents the implicit generator object inside of async functions, and also holds the outer promise for the async functions. This in turn allows us to get rid of the .promise in the Parser / BytecodeGenerator completely, and will make it possible to build zero-cost async stack traces independent of the concrete synchronous part of the stack frame (which currently breaks in Node.js). In the bytecode all the async function operations now take this new JSAsyncFunctionObject instead of passing both the .generator_object and the .promise, which further simplifies and shrinks the bytecode. It also reduces the size of async function frames, potentially making the suspend/resume cheaper. This also changes `await` to use intrinsics instead of calling to special JSFunctions on the native context, and thus reduces the size of the native contexts. Drive-by-fix: Introduce a dedicated JSCreateAsyncFunctionObject operator to TurboFan. Bug: v8:7253, v8:7522 Change-Id: I2305302285156aa1f71328ecac70377abdd92c80 Ref: nodejs/node#11865 Design-Document: http://bit.ly/v8-zero-cost-async-stack-traces Reviewed-on: https://chromium-review.googlesource.com/c/1273049 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Sathya Gunasekaran <gsathya@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Reviewed-by:
Maya Lekova <mslekova@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#56554}
-
- 29 Sep, 2018 1 commit
-
-
Benedikt Meurer authored
Change the way that the (internal) await closures store the link to the generator object by introducing a dedicated AwaitContext, which stores the generator object into the extension slot (instead of misusing a regular FunctionContext here). Also unify the allocation+initialization of these contexts in the await-related builtins (both for async functions and generators). The rationale behind this is that for (zero-cost) async stack traces, we will need to dig into these contexts and we can do better checking with a dedicated instance type there. As an additional benefit, we save one word per await context, since we just use (the otherwise unused) extension slot to remember the generator object. As yet another benefit we will never accidentally use any of these contexts in the regular scope chain lookups, meaning we can also catch bugs there. And last but not least the objects printing machinery understands these contexts now and can even print the generator object for AwaitContexts for short printing, which is really valuable for debugging. Tbr: ulan@chromium.org Bug: v8:7253, v8:7522, v8:8015 Change-Id: I86955f5701e694e8a10b91ebe5f52705aa90968d Reviewed-on: https://chromium-review.googlesource.com/1249491Reviewed-by:
Sathya Gunasekaran <gsathya@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#56301}
-
- 20 Sep, 2018 1 commit
-
-
Igor Sheludko authored
and introduce RootsTable - a V8 heap roots storage. So, the renaming part looks like this: Heap::RootListIndex -> RootIndex Heap::kBlahBlahRootIndex -> RootIndex::kBlahBlah Bug: v8:8015, v8:8182 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: I38e1f3e3f6813ef35e37b0bed35e9ae14a62134f Reviewed-on: https://chromium-review.googlesource.com/1234613Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Hannes Payer <hpayer@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#56067}
-
- 20 Jul, 2018 1 commit
-
-
Marja Hölttä authored
BUG=v8:7754,v8:5402 Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng Change-Id: I5306005e7d0fcfe188c9e0270a003c6e1098c9e9 Reviewed-on: https://chromium-review.googlesource.com/1144824Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#54578}
-
- 10 Jul, 2018 1 commit
-
-
Benedikt Meurer authored
This extends the Promise#then protector to also guard the intrinsic %ObjectPrototype%, making it usable for fast-path logic in the AsyncGeneratorResolve operation, where we can skip the "then" lookup on the iteratorResult in that case. We also add a corresponding fast- path to the ResolvePromise builtin itself, which avoids the second "then" lookup on the async iterator side. This reduces execution time of the fibonacci-async-es2017-native test from 298.16ms to 280.55ms, which corresponds to an improvement of ~6% in this case. This is a rebased reland of https://chromium-review.googlesource.com/967203 which landed earlier, but had to be reverted as part of the mega-revert that was necessary to fix the async_hooks breakage in Node 10. Bug: v8:7253 Change-Id: Id9dd1ddc4a8285d64e92cd2030f3168a12e4b509 Reviewed-on: https://chromium-review.googlesource.com/1130523 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#54352}
-
- 18 Jun, 2018 1 commit
-
-
Igor Sheludko authored
Now TFJ builtins can use their own descriptors so there's no need to keep the hacky BuiltinDescriptor around. Bug: v8:7754 Change-Id: Ia7f23a21fb979370fd2149fef13186b83a3d5d30 Reviewed-on: https://chromium-review.googlesource.com/1104428 Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by:
Daniel Clifford <danno@chromium.org> Cr-Commit-Position: refs/heads/master@{#53806}
-
- 17 May, 2018 1 commit
-
-
Igor Sheludko authored
Bug: v8:7754 Change-Id: Id22020984e10bd2ddb22119c50b490419c897174 Reviewed-on: https://chromium-review.googlesource.com/1062272Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#53232}
-
- 14 May, 2018 1 commit
-
-
Maya Lekova authored
Revert "[async-await] Eliminate throwaway promise in async functions." This reverts commit a840f1f8. Revert "[async-generators] Also avoid throwaway promise here." This reverts commit feb545ce. Revert "[async-await] Turn await closures into intrinsics." This reverts commit d97bb317. Revert "[async-generators] Add fast-path for primitives in AsyncGeneratorYield." This reverts commit e57b500e. Revert "[async-generators] Add fast-path to skip "then" lookup in AsyncGeneratorResolve." This reverts commit c15802e1. Revert "[promises] Correctly run before/after hooks for await." This reverts commit ca763923. Bug: v8:7253, v8:7745 Change-Id: I25ad0d2df3cfbc84dbb431aa25b268bce8a39e89 Reviewed-on: https://chromium-review.googlesource.com/1049975 Commit-Queue: Maya Lekova <mslekova@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#53139}
-
- 27 Mar, 2018 1 commit
-
-
Igor Sheludko authored
Bug: v8:6949, v8:7310 Change-Id: I8647d385355f357e8825648d6da2757efdcbc6c2 Reviewed-on: https://chromium-review.googlesource.com/980496Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#52249}
-
- 19 Mar, 2018 2 commits
-
-
Benedikt Meurer authored
This extends the Promise#then protector to also guard the intrinsic %ObjectPrototype%, making it usable for fast-path logic in the AsyncGeneratorResolve operation, where we can skip the "then" lookup on the iteratorResult in that case. We also add a corresponding fast- path to the ResolvePromise builtin itself, which avoids the second "then" lookup on the async iterator side. This reduces execution time of the fibonacci-async-es2017-native test from 186.9ms to 171.2ms, which corresponds to an improvement of 8.4% in this case. Bug: v8:7253 Change-Id: Ia09effc81a016703780d5c308f541e3d797ccabe Reviewed-on: https://chromium-review.googlesource.com/967203Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#52024}
-
Benedikt Meurer authored
For async generators that yield primitives, there's not really a point in creating temporary promises first, just to immediately fulfill them with the primitive values passed to `yield`. Instead we can skip those steps and just directly schedule a PromiseFulfillReactionJobTask to do the job. This improves the execution time of fibonacci-async-es2017-native from around 189ms to roughly 183ms, which corresponds to almost a ~3% boost here. Bug: v8:7253 Change-Id: I91413d2cc5ffdc6c851f72f91ff5c207e048c19d Reviewed-on: https://chromium-review.googlesource.com/966607 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#52016}
-
- 20 Feb, 2018 1 commit
-
-
Benedikt Meurer authored
There's no need to have the AsyncFunctionAwait/AsyncGeneratorAwait operations as separate closures that are called via JavaScript calling convention, but instead we can just have them as intrinsics (with the goal to eventually turn them into IC stubs). Drive-by-fix: Tail call to the ResumeGenerator builtin when resuming an async function. The earlier restrictions no only apply with the new machinery. Bug: v8:7253 Change-Id: I0c4d04dae15b4211158fc07151adafda69d4faec Reviewed-on: https://chromium-review.googlesource.com/924703Reviewed-by:
Yang Guo <yangguo@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#51382}
-
- 19 Feb, 2018 1 commit
-
-
Benedikt Meurer authored
This extends the previously introduced logic for implementing await without having to allocate the throwaway promise and the additional closures and context, to also cover await and yield inside of async generators. Bug: v8:7253 Change-Id: I011583a7714bbd148c54e5f204e2076630008db0 Reviewed-on: https://chromium-review.googlesource.com/924003 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#51361}
-