- 16 Feb, 2021 38 commits
-
-
Nicolas Dubus authored
samples being discarded - Passed in as CpuProfilingOptions parameter, client is responsible for determining if function is still safe to execute. Includes unit tests - Client (blink) side CR: https://chromium-review.googlesource.com/c/chromium/src/+/2649617, - Client (blink) side CR requires this to be pushed prior to it being pushed Change-Id: I3ef4640186115d4e14c1b73f902c889c776e310f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2652206 Commit-Queue: Nicolas Dubus <nicodubus@fb.com> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Peter Marshall <petermarshall@chromium.org> Cr-Commit-Position: refs/heads/master@{#72794}
-
Ng Zhi An authored
Bug: v8:11416 Change-Id: I094e91b1e5b382e5eced24d198e1f6bbc1b4ae0f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2686311 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by: Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#72793}
-
Junliang Yan authored
Change-Id: I9241573c3644918028e2b302da2988cca0973cb8 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2698089Reviewed-by: Milad Fa <mfarazma@redhat.com> Commit-Queue: Junliang Yan <junyan@redhat.com> Cr-Commit-Position: refs/heads/master@{#72792}
-
Junliang Yan authored
Port adf035fb Original Commit Message: This CL avoids redundant loads of the instance from the frame by caching it in a register if possible. This register will be the first one to be cleared once we run out of registers (hence it's called a "volatile register"). On local tests, this seems to reduce most redundant loads within a function, and it also reduces the load for the stack check in the function prologue. After the stack check, we need to discard the cached instance though, since the potential runtime call for the stack check might clobber it. This will be addressed in a follow-up CL by re-loading the cached instance after the stack check. This is expected to remove another good chunk of instance loads, because the instance would initially be available in a register when starting the function code. R=clemensb@chromium.org, midawson@redhat.com, mfarazma@redhat.com BUG= LOG=N Change-Id: I3756ce98d4dfefb44c946a4948f1a6dbe0ce44dd Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2698291Reviewed-by: Milad Fa <mfarazma@redhat.com> Commit-Queue: Junliang Yan <junyan@redhat.com> Cr-Commit-Position: refs/heads/master@{#72791}
-
Thibaud Michaud authored
R=clemensb@chromium.org Bug: v8:8091 Change-Id: I2933342da65ef75cfe36f81f8828411fd78d45e8 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2696659 Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#72790}
-
Ng Zhi An authored
Bug: v8:11415 Change-Id: I8ad0aab2c1ac89ec66779b44542833c3a4eb96fb Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2693323Reviewed-by: Bill Budge <bbudge@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#72789}
-
Milad Fa authored
As of https://crrev.com/c/2629465, Simd tests cannot pass on architectures without Simd support. Tests will need to be re-enabled once Simd support is fully implemented on PPC. Change-Id: I963639f1afa0c0ca7be3ca4b2fc06e874235b903 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2693056Reviewed-by: Zhi An Ng <zhin@chromium.org> Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Milad Fa <mfarazma@redhat.com> Cr-Commit-Position: refs/heads/master@{#72788}
-
Ng Zhi An authored
Bug: v8:11416 Change-Id: I9fe70ae588147a3e04c719f14d86fb80ed9b6caa Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2686310 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by: Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#72787}
-
Milad Fa authored
Change-Id: I66c3dc4a92f814b7ee1771136a5ab794bae9cd98 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2697649Reviewed-by: Junliang Yan <junyan@redhat.com> Commit-Queue: Milad Fa <mfarazma@redhat.com> Cr-Commit-Position: refs/heads/master@{#72786}
-
Thibaud Michaud authored
Implicitly rethrow the exception when we reach the end of a try..unwind..end. Also make it a validation error to rethrow an exception caught by an unwind block. R=clemensb@chromium.org Bug: v8:8091 Change-Id: Ia149d2e81b1fbfa9209047b35ff0c9fedc1b8895 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2696662 Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#72785}
-
Clemens Backes authored
The WasmThrow and WasmRethrow runtime functions have the same signature, but we should still use the correct description in case the signature changes (which is planned for a follow-up CL). R=thibaudm@chromium.org Bug: v8:11453 Change-Id: Iaec9c353d30fa7673ceb8994e3029c4adfc01311 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2697348Reviewed-by: Thibaud Michaud <thibaudm@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#72784}
-
Milad Fa authored
Change-Id: Iebd2bcbe8587fe079b8f058f9546294d020e23d2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2697389Reviewed-by: Junliang Yan <junyan@redhat.com> Reviewed-by: Milad Fa <mfarazma@redhat.com> Commit-Queue: Milad Fa <mfarazma@redhat.com> Cr-Commit-Position: refs/heads/master@{#72783}
-
Benedikt Meurer authored
The Debug::SetBreakPointForScript() method essentially figures out the SharedFunctionInfo and then duplicates the logic from SetBreakpoint(). Bug: chromium:1162229 Change-Id: Iae98ab5d182739d44e0277b799509723d950f381 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2697351 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Yang Guo <yangguo@chromium.org> Auto-Submit: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#72782}
-
Bill Budge authored
- Adds DCHECKs to make sure no stack slots are allocated after aligning a frame. - Changes Arm64 CodeGenerator::FinishFrame to align the frame after allocating callee-saved registers, and relaxes the constraints on the number of callee-saved registers. Bug: v8:9198 Change-Id: Iacb0518b57fa3ea2ff801eda69719f4c32733850 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2694104Reviewed-by: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#72781}
-
Milad Fa authored
Port 89ea44bf Original Commit Message: - Also changes in arm and ia32 for consistency - Removes fall-through since MaybeOptimizeCode never returns R=victorgomes@chromium.org, joransiu@ca.ibm.com, junyan@redhat.com, midawson@redhat.com BUG= LOG=N Change-Id: I5a91f709f10065692ae654bdd79e6088e1fe88c7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2697388Reviewed-by: Junliang Yan <junyan@redhat.com> Reviewed-by: Victor Gomes <victorgomes@chromium.org> Commit-Queue: Milad Fa <mfarazma@redhat.com> Cr-Commit-Position: refs/heads/master@{#72780}
-
Clemens Backes authored
This CL avoids redundant loads of the instance from the frame by caching it in a register if possible. This register will be the first one to be cleared once we run out of registers (hence it's called a "volatile register"). On local tests, this seems to reduce most redundant loads within a function, and it also reduces the load for the stack check in the function prologue. After the stack check, we need to discard the cached instance though, since the potential runtime call for the stack check might clobber it. This will be addressed in a follow-up CL by re-loading the cached instance after the stack check. This is expected to remove another good chunk of instance loads, because the instance would initially be available in a register when starting the function code. R=thibaudm@chromium.org Bug: v8:11336 Change-Id: Ie65ab81263fb9d972f4b7a6daaef86cf704874ef Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2695401 Commit-Queue: Clemens Backes <clemensb@chromium.org> Reviewed-by: Thibaud Michaud <thibaudm@chromium.org> Cr-Commit-Position: refs/heads/master@{#72779}
-
pthier authored
Bug: v8:11420 Change-Id: I82365b1db0e09fbc04e9ae3b41d9d60c1a9cacd3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2697203 Commit-Queue: Patrick Thier <pthier@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Auto-Submit: Patrick Thier <pthier@chromium.org> Cr-Commit-Position: refs/heads/master@{#72778}
-
Leszek Swirski authored
This reverts commit cf93071c. Reason for revert: Speculative revert because of Mac4 GC stress failure: https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Mac64%20GC%20Stress/16697/overview Original change's description: > [interpreter] Short Star bytecode > > Design doc: > https://docs.google.com/document/d/1g_NExMT78II_KnIYNa9MvyPYIj23qAiFUEsyemY5KRk/edit > > This change adds 16 new interpreter opcodes, kStar0 through kStar15, so > that we can use a single byte to represent the common operation of > storing to a low-numbered register. This generally reduces the quantity > of bytecode generated on web sites by 8-9%. > > In order to not degrade speed, a couple of other changes are required: > > The existing lookahead logic to check for Star after certain other > bytecode handlers is updated to check for these new short Star codes > instead. Furthermore, that lookahead logic is updated to contain its own > copy of the dispatch jump rather than merging control flow with the > lookahead-failed case, to improve branch prediction. > > A bunch of constants use bytecode size in bytes as a proxy for the size > or complexity of a function, and are adjusted downward proportionally to > the decrease in generated bytecode size. > > Other small drive-by fix: update generate-bytecode-expectations to emit > \n instead of \r\n on Windows. > > Change-Id: I6307c2b0f5794a3a1088bb0fb94f6e1615441ed5 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2641180 > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> > Commit-Queue: Seth Brenith <seth.brenith@microsoft.com> > Cr-Commit-Position: refs/heads/master@{#72773} TBR=rmcilroy@chromium.org,mythria@chromium.org,seth.brenith@microsoft.com Change-Id: I0162b9400861b90bacef27cca9aebc8ab9d74c10 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2697350Reviewed-by: Leszek Swirski <leszeks@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#72777}
-
Andreas Haas authored
Bug: v8:11384 Change-Id: I08bf27af977e94e6d441a83a62cae49eeaf856e8 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2697198Reviewed-by: Georg Neis <neis@chromium.org> Commit-Queue: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#72776}
-
Georg Neis authored
My previous CL was missing a negation in two places. Bug: chromium:1178731 Change-Id: I5bc4d78226e43a62ddd374c3d7dd36a9ed0c1a2f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2697192 Auto-Submit: Georg Neis <neis@chromium.org> Commit-Queue: Michael Stanton <mvstanton@chromium.org> Reviewed-by: Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#72775}
-
Clemens Backes authored
Custom platform implementations which do not run all foreground tasks before shutting down an isolate could trigger a DCHECK (see linked issue). This was introduced in https://crrev.com/c/2578980, but the bug does not trigger in the default platform implementation, hence went unnoticed. Since it's only a spurious DCHECK error without security implications, I decided against a test with a custom platform implementation to reproduce the bug. R=ahaas@chromium.org Bug: v8:11456 Change-Id: Ie01562af7bdffe23cad7172180f2bc19ea61dfda Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2697189Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#72774}
-
Seth Brenith authored
Design doc: https://docs.google.com/document/d/1g_NExMT78II_KnIYNa9MvyPYIj23qAiFUEsyemY5KRk/edit This change adds 16 new interpreter opcodes, kStar0 through kStar15, so that we can use a single byte to represent the common operation of storing to a low-numbered register. This generally reduces the quantity of bytecode generated on web sites by 8-9%. In order to not degrade speed, a couple of other changes are required: The existing lookahead logic to check for Star after certain other bytecode handlers is updated to check for these new short Star codes instead. Furthermore, that lookahead logic is updated to contain its own copy of the dispatch jump rather than merging control flow with the lookahead-failed case, to improve branch prediction. A bunch of constants use bytecode size in bytes as a proxy for the size or complexity of a function, and are adjusted downward proportionally to the decrease in generated bytecode size. Other small drive-by fix: update generate-bytecode-expectations to emit \n instead of \r\n on Windows. Change-Id: I6307c2b0f5794a3a1088bb0fb94f6e1615441ed5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2641180Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Seth Brenith <seth.brenith@microsoft.com> Cr-Commit-Position: refs/heads/master@{#72773}
-
Victor Gomes authored
Change-Id: I9f41fc97c2ca9a1c62b1de4ee8c9878d5d69b560 Bug: v8:11429 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2697195Reviewed-by: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Commit-Queue: Victor Gomes <victorgomes@chromium.org> Cr-Commit-Position: refs/heads/master@{#72772}
-
Toon Verwaest authored
Baseline scratch registers don't include the regular kScratchRegister (for now at least) because the rest of the system doesn't use the ScratchRegisterScope (yet). Bug: v8:11429 Change-Id: I7a2f27a814e262e5b14bd30b2ae53d53e173bcc3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2697194Reviewed-by: Leszek Swirski <leszeks@chromium.org> Commit-Queue: Toon Verwaest <verwaest@chromium.org> Auto-Submit: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#72771}
-
Michael Lippautz authored
Lazy sweeping may have found a memory block not positioned at the head of the corresponding bucket. Such a block is not found during a subsequent free list allocation, as such allocations do not linearly walk the free list. Bug: chromium:1056170 Change-Id: I288b6ad768987705d86fc78d0aa6fe46e99417b9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2692822 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#72770}
-
Sathya Gunasekaran authored
The current API returns a Handle<NativeContext> which can be optionally null and all the users of this API never actually checked for this null value. Previously, this wasn't a problem as all the possible JSObjects that were user visible would return a valid NativeContext but now there are wasm objects that don't have a valid constructor so don't have a NativeContext. Bug: v8:11451, chromium:1166077 Change-Id: I4fd5edf8f1a750e6f0abb931fd41358e5ae4dfcf Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2692695 Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#72769}
-
Thibaud Michaud authored
When there are multiple nested catch blocks, the rethrow immediate disambiguates which catch block to take the exception from. We add a FixedArray to keep track of exceptions that are currently in scope, and compute the mappings between rethrow/catch instructions and the index to fetch/store the exception from/to in the FixedArray during pre-processing. R=clemensb@chromium.org Bug: v8:8091 Change-Id: If55242c551f42262c790b5bf3f1543a003280623 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2695388 Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#72768}
-
Leszek Swirski authored
Change the interpreter tracing functions to be generic unoptimized code tracing functions. The type of the code is now inferred from the frame, rather than passed in. Also expands the set of gn flags to explicitly enable unoptimized tracing, with a helper gn flags for enabling it for Ignition and for baseline (both just set unoptimized tracing to be enabled for now, we could split this up in the future though), and V8 flags separate tracing Ignition and tracing baseline. Bug: v8:11420, v8:11429 Change-Id: I040c2628fe5744dcb38ef8623df3e34f9c86a5b8 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2692817 Commit-Queue: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Auto-Submit: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#72767}
-
Andreas Haas authored
The origin trial for WebAssembly Threads is over for quite some time, WebAssembly Threads are enabled by default. The API can therefore be removed now. Bug: v8:11384 Change-Id: I3dd65ff63c1ed31d39a76e5aea08b950ef420f54 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2690598Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#72766}
-
Manos Koukoutos authored
Changes: - In graph-builder-interface.cc, move loop exit utilities in the private section. - In the same functions, remove SsaEnv argument. Always use ssa_env_ instead. - Introduce TerminateThrow, which introduces loop exits before inserting a throw node. - Introduce loop exits in the exception handling opcodes. - Introduce control_depth_of_current_catch() helper. - Drive-by: Add an optional missing 'break' in DoReturnCall. - Add some tests, improve test flags in loop-unrolling.js test file. Bug: v8:11298 Change-Id: I613352023e3e1c72a83cd389d98574758655abee Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2692820Reviewed-by: Clemens Backes <clemensb@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/master@{#72765}
-
Victor Gomes authored
- Also changes in arm and ia32 for consistency - Removes fall-through since MaybeOptimizeCode never returns Change-Id: I115cff07c7d58ac3f7d0e0feeccbd6b1b172bd53 Bug: v8:11429 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2695392 Commit-Queue: Victor Gomes <victorgomes@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#72764}
-
Omer Katz authored
On-heap hash maps in blink are limited to Member types and non-traceable types. The only exception to that is TraceWrapperV8Reference. Thus ephemerons can have non-gced traceable values. This values should not be pushed to the marking worklist since we expect everything in the worklist to be marked and not in construction (but these values don't have an object header). Instead, when getting a non-gced value we should immediately trace it. This is only relevant to ephemerons. Any other case would go through Trace(const T&) that dispatches to the TraceTrait. Blink has 1 use case of HeahHashMap from WeakMember<ScriptWrappable> to TraceWrapperV8Reference. Bug: chromium:1056170 Change-Id: Ia8f341d6bb1fc8fd3655b2be66b7814896549d1e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2696648Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#72763}
-
Leszek Swirski authored
Pass an explicit Isolate* argument to Compiler::Compile*, rather than grabbing the Isolate from the function Change-Id: I37a38103c67305077225ea3951d36007cf07beea Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2696655Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#72762}
-
Clemens Backes authored
We will need more Smi loading for exception handling, hence refactor the existing code to reduce duplication and increase readability. R=ahaas@chromium.org Bug: v8:11453 Change-Id: If12ddf607e3aeb7ce0448d977d0d450127caf1d5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2692818Reviewed-by: Andreas Haas <ahaas@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#72761}
-
Yang Guo authored
Change-Id: If794ddadcf7a5e1b75bc0087bc83c2d0e566503c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2692191Reviewed-by: Hannes Payer <hpayer@chromium.org> Commit-Queue: Hannes Payer <hpayer@chromium.org> Commit-Queue: Yang Guo <yangguo@chromium.org> Auto-Submit: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#72760}
-
Georg Neis authored
They are a source of inconsistency and thus confusion. Bug: v8:11371 Change-Id: Ia62f6800ad85576bed1cfe10e7ad044bdbf569af Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2692247 Auto-Submit: Georg Neis <neis@chromium.org> Reviewed-by: Michael Stanton <mvstanton@chromium.org> Commit-Queue: Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#72759}
-
Benedikt Meurer authored
For stack traces, especially all stack traces exposed via the Inspector (i.e. for the purpose of async stack traces), JSFunction::GetDebugName() is still a bottleneck, even after the removal of "displayName" support. As outlined in https://bit.ly/devtools-function-displayName-removal a follow-up optimization here would be to improve the performance of the "name" lookup. Previously, it'd always use the LookupIterator combined with JSReceiver::GetDataProperty(), which in the common case would find the "name" property and the return undefined, since it doesn't invoke getters on AccessorInfos, and eventually fall through to the actual logic in SharedFunctionInfo::DebugName(). Now we had a similar situation with Function.prototype.bind(), which also needs to lookup "name" on regular function objects quite often, and what we implemented there is to just look into the DescriptorArray of the incoming function object and see if the entry for the "name" descriptor is still untouched (key is "name" and value is an AccessorInfo), and if so completely bypass the slow-path lookup via the LookupIterator. With this CL (and the optimization in https://crrev.com/c/2695386), the cost of symbolization is now significantly lower than the cost of the actual stack trace capturing, for the async stack traces in the example from https://crbug.com/1077657 as indicated by the perf profile below: ``` - 26.03% v8_inspector::AsyncStackTrace::capture + 17.34% v8::StackTrace::CurrentStackTrace - 7.27% v8_inspector::(anonymous namespace)::toFramesVector - 7.18% v8_inspector::V8Debugger::symbolize - 6.27% v8_inspector::StackFrame::StackFrame + 2.52% v8_inspector::toProtocolString + 1.88% v8::internal::StackFrameInfo::GetLineNumber 0.78% operator new[] 0.55% operator new[] ``` Bug: chromium:1077657, v8:8742, chromium:1069425, chromium:1177685 Change-Id: I38f23816295f4381f5109cc78e4856dc0b67b097 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2695593 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Auto-Submit: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#72758}
-
v8-ci-autoroll-builder authored
Rolling v8/build: https://chromium.googlesource.com/chromium/src/build/+log/aca4b0d..bc28354 Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/e4328db..35976bf TBR=v8-waterfall-sheriff@grotations.appspotmail.com Change-Id: I98bc979135d43d7a77ef2bb8872c3b2ef044666b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2696019Reviewed-by: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com> Commit-Queue: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com> Cr-Commit-Position: refs/heads/master@{#72757}
-
- 15 Feb, 2021 2 commits
-
-
Toon Verwaest authored
Those are blocked on Torque supporting LazyNode. Bug: v8:11429 Change-Id: Ie8797027dd9a4480bb254c984e8e2288ab35423b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2692819Reviewed-by: Leszek Swirski <leszeks@chromium.org> Commit-Queue: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#72756}
-
Toon Verwaest authored
- Directly use the right target register for the "fast" case as temporary register - Don't load the function to load the feedback since that's unnecessary by now - Deduplicate the cell loading code Bug: v8:11429 Change-Id: Ia2298315c2db6f228be0821687ff92859169dd97 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2695588 Commit-Queue: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#72755}
-