- 15 Apr, 2019 2 commits
-
-
Sathya Gunasekaran authored
This reverts commit f4a747b7. Reason for revert: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux%20-%20arm%20-%20sim%20-%20lite%20-%20debug/3001 Original change's description: > [parser] Skip TDZ Checks in more cases of let and const > > The parser can now skip TDZ checks for cases when a reference is in, > or nested in, a scope that's both a sibling of the declaration and > created by a function expression. > > Bug: v8:7331 > Change-Id: Ia9748b5a8faa3037873efe5081837f5d0aa74115 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1542042 > Commit-Queue: Suraj Sharma <surshar@microsoft.com> > Reviewed-by: Toon Verwaest <verwaest@chromium.org> > Cr-Commit-Position: refs/heads/master@{#60853} TBR=adamk@chromium.org,verwaest@chromium.org,surshar@microsoft.com Change-Id: Iaa34b1f7cafcc0e77cd7cc20372885b1904bd827 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:7331 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1568078Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org> Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org> Cr-Commit-Position: refs/heads/master@{#60854}
-
Suraj Sharma authored
The parser can now skip TDZ checks for cases when a reference is in, or nested in, a scope that's both a sibling of the declaration and created by a function expression. Bug: v8:7331 Change-Id: Ia9748b5a8faa3037873efe5081837f5d0aa74115 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1542042 Commit-Queue: Suraj Sharma <surshar@microsoft.com> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#60853}
-
- 25 Mar, 2019 1 commit
-
-
Benedikt Meurer authored
This adds OBJECT/SNAPSHOT trace events for Script and SharedFunctionInfo objects, logging their creation with appropriate information to make sense of them. Based on that we introduces five flow events to model the optimized compilation via tracing in the "disabled-by-default-v8.compile" category: - "v8.optimizingCompile.start" logs the creation of the PipelineCompilationJob (for TurboFan JavaScript optimization) with the "function" argument referring to the trace event object created for the SharedFunctionInfo. - "v8.optimzingCompile.prepare" logs the preparation of the PipelineCompilationJob on the main thread, also carrying the "function" argument. This connects the flow event to the actual tracing duration event associated with the preparation phases. - "v8.optimizingCompile.execute" logs the (usually concurrent) optimization of the TurboFan graph (again with "function"). - "v8.optimizingCompile.finalize" logs the main thread phase which finalizes the optimized code and eventually installs it (in case of success). - "v8.optimizingCompile.end" signals the end of the PipelineCompilationJob, which carries the "compilationInfo", that contains the interesting bits of the OptimizedCompilationInfo, specifically whether the compile was successfull and which functions were inlined for example. This also adds two instant events "V8.AbortOptimization" and "V8.RetryOptimization" in "disabled-by-default-v8.compile" category that are emitted when TurboFan cannot optimize a certain function. In case of "V8.RetryOptimization", TurboFan might be able to optimize it later, whereas "V8.AbortOptimization" permanently disables the optimization of a given function. The JSON representation of this is ```js { "pid": 256639, "tid": 256639, "ts": 6935411377801, "tts": 159116, "ph": "I", "cat": "disabled-by-default-v8.compile", "name": "V8.AbortOptimization", "dur": 0, "tdur": 0, "args": { "reason": "Function is too big to be optimized", "function": { "id_ref": "0x600000001", "scope": "v8::internal::SharedFunctionInfo" } } }, ``` where the "function" refers to a previously emitted SNAPSHOT for the function in question. In the trace viewer it will show up as instant event under "v8.optimizingCompile.prepare" in case of the relevant example where optimization is disabled due to reaching the bytecode limit (as in the JSON above), i.e. it'll look something like this https://i.paste.pics/aafc2de9df10ea8f5acc1a761d80f07b.png for the example highlighted in the recent blog post https://ponyfoo.com/articles/javascript-performance-pitfalls-v8 that describes the optimization limit. The "v8.optimizingCompile.end" duration event will also carry this information as part of the "compilationInfo" object, but specifically for CI tools, etc. it might be a whole lot easier to just look for the "V8.AbortOptimization" instant event. Bug: v8:8598, v8:9039 Tbr: ulan@chromium.org Doc: bit.ly/v8-tracing-signals Change-Id: Ic87ac336004690c65b6b15ad73bc6fbd4b5f12c4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1511483 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Peter Marshall <petermarshall@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#60448}
-
- 28 Jan, 2019 1 commit
-
-
Camillo Bruni authored
- Dehandlify ScopeInfo::ContextSlotIndex - Dehandlify ScriptContextTable::Lookup - Introduce function-kind.h with range-based helper methods - Spread usage of Scope::is_script_scope and friends Change-Id: I8ed1d82cc5bb9ea3fce856e16e9eafe194fb57ba Reviewed-on: https://chromium-review.googlesource.com/c/1430100Reviewed-by: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Maya Lekova <mslekova@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#59120}
-