- 12 Feb, 2021 8 commits
-
-
Mike Stanton authored
Bug: chromium:1177368, chromium:1177369, v8:7790 Change-Id: Ice0b1b3fbc0b15d2b0b80255b7bb4a8c61f855e3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2692246Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#72702}
-
Leszek Swirski authored
Add a .status file variable for the "v8_control_flow_integrity" gn arg, and disable baseline tests for now in that configuration. No-Tree-Checks: true No-Try: true Bug: v8:11439 Change-Id: I7274a168893cfd6619ce98fdd14a692217fd56c9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2692206 Commit-Queue: Leszek Swirski <leszeks@chromium.org> Auto-Submit: Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#72698}
-
Georg Neis authored
This reverts commit 87df0b7e (thus relands 42cd9eb7), with fixes for the discovered issues. Original change's description: > Revert "[compiler] Directly read PropertyCells" > > This reverts commit 42cd9eb7. > > Reason for revert: Clusterfuzz issues, e.g. > https://bugs.chromium.org/p/chromium/issues/detail?id=1176318 > > Original change's description: > > [compiler] Directly read PropertyCells > > > > Main changes: > > > > - Introduce a new broker data kind kBackgroundSerialized for objects > > that can be serialized in the background (when direct reads are on). > > (I'm planning to remove kPossiblyBackgroundSerialized in a followup, > > in favor of a dynamic choice of kSerialized or kBackgroundSerialized). > > - Make PropertyCell use that new kind. > > - Introduce a bottleneck in runtime code for changes to PropertyCells > > and make sure that a certain protocol is followed that allows > > concurrent reads from the background thread. > > - Improve interface of PropertyCell in various ways. > > > > Bug: v8:7790 > > Change-Id: If3d7926c3b894808811348b4b2bed153f5c06897 > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2661462 > > Reviewed-by: Toon Verwaest <verwaest@chromium.org> > > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > > Reviewed-by: Nico Hartmann <nicohartmann@chromium.org> > > Commit-Queue: Georg Neis <neis@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#72586} > > TBR=ulan@chromium.org,neis@chromium.org,verwaest@chromium.org,nicohartmann@chromium.org > > Change-Id: Id04145760c49fa379bc5a3fc16eba664025a9180 > Bug: v8:7790 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2685125 > Reviewed-by: Georg Neis <neis@chromium.org> > Commit-Queue: Georg Neis <neis@chromium.org> > Cr-Commit-Position: refs/heads/master@{#72619} Bug: v8:7790, chromium:1176509, chromium:1176318, chromium:1176504 Change-Id: Icaf285912bb948432a4a2d599cd174f6a5aa296e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2685166Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#72697}
-
Leszek Swirski authored
Currently we sometimes refer to baseline code or the baseline compiler by its codename (Sparkplug). The codename is fun, but we should be consistent and call things by one name or the other. Following the pattern of Ignition stuff being called "interpreter", we call Sparkplug "baseline", and leave the codename only in flags and variants. Bug: v8:11420 Change-Id: I432e5629518be7c7ad38b6acff024c91d4cfd6d3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2692186 Commit-Queue: Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#72696}
-
Benedikt Meurer authored
Following up on https://crrev.com/c/2689185, this CL significantly simplifies the whole implementation of the stack trace capturing. Before this CL, capturing any stack trace (for the purpose of the API or Error.stack) would roughly work like this: 1. The CaptureStackTrace() function uses the StackFrameIterator to walk the system stack. For each native frame it uses the FrameSummary abstraction to get all (including potentially inlined) frames. For each of those it appends a record consisting of six elements to a FrameArray (this holds pointers to the actual closures and receivers). 2. Afterwards the FrameArray is shrinked to the required size, and a new FixedArray is allocated, and initialized with new StackTraceFrame objects where each holds a reference to the FrameArray, the index of the frame, and an initially uninitialized StackFrameInfo reference. This new FixedArray is then returned from CaptureStackTrace() and either stored on a message object or provided to the API as v8::StackTrace. The new approach removes a lot of the machinery in between and directly creates a FixedArray of StackFrameInfo objects in CaptureStackTrace(). These StackFrameInfo objects are directly exposed as v8::StackFrame on the public API, and they hold the six fields that were previously stored flat in the FrameArray. This not only avoids a lot of copying around of data and creation of temporary objects and handles, but most importantly unifies and simplifies the stack frame function inside StackFrameInfo, so you no longer need to wonder which function / object might be responsible for a certain API. There's still a lot of room for improvement. In particular we currently don't cache the source position for a given StackFrameInfo (or globally), but rather recompute it every time. This is still very fast, significantly faster than the previous approach. There are some notable (potentially user visible) changes: - The CallSite#GetPosition() method now consistently returns the Wasm module relative bytecode offset for all Wasm frames (previously it'd return the function relative bytecode offset for non-asm.js Wasm frames). - The column and line numbers returned from StackFrameInfo methods are consistently 1-based now, instead of sometimes being 0-based (Wasm) and sometimes being 1-based (JS and asm.js Wasm). The only potentially noticable difference is that for CallSite#GetLineNumber() no longer returns 0 for Wasm frames, but that was wrong and useless anyways. - CallSite#GetThis() would sometimes return the_hole, another bug flushed out by this CL. The CL also contains some other not noteworthy drive-by-cleanups. Fixed: chromium:1057211 Bug: chromium:1077657, chromium:1069425, v8:8742 Bug: chromium:1127391, chromium:1098530, chromium:981541 Change-Id: Iff12f6838a4d99080db8dd96bccc14440affc5a5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2689183 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Simon Zünd <szuend@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#72694}
-
Nico Hartmann authored
Temporarily disable these tests failing on msan builds after latest roll: - test262/intl402/DateTimeFormat/timezone-invalid - intl/regress-364374 - mjsunit/regress/regress-crbug-627935 No-Try: true No-Tree-Checks: true Bug: v8:11438 Change-Id: I4a7755f9f65b2e9a12463c9e12fbbe39d3f5efb2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2692188Reviewed-by:
Clemens Backes <clemensb@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Auto-Submit: Nico Hartmann <nicohartmann@chromium.org> Cr-Commit-Position: refs/heads/master@{#72691}
-
Leszek Swirski authored
Sparkplug is a new baseline, non-optimising second-tier compiler, designed to fit in the compiler trade-off space between Ignition and TurboProp/TurboFan. Design doc: https://docs.google.com/document/d/13c-xXmFOMcpUQNqo66XWQt3u46TsBjXrHrh4c045l-A/edit?usp=sharing Bug: v8:11420 Change-Id: Ideb7270db3d6548eedd8337a3f596eb6f8fea6b1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2667514 Commit-Queue: Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Achenbach <machenbach@chromium.org> Reviewed-by:
Hannes Payer <hpayer@chromium.org> Cr-Commit-Position: refs/heads/master@{#72686}
-
Deepti Gandluri authored
- Add a no-simd-sse flag to skip SIMD tests on bots with no hardware support. Change-Id: I4efdbb5ee39c2e10ea8776a1f1e536ac96823efe Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2629465 Commit-Queue: Deepti Gandluri <gdeepti@chromium.org> Reviewed-by:
Zhi An Ng <zhin@chromium.org> Reviewed-by:
Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#72682}
-
- 11 Feb, 2021 4 commits
-
-
Mythri A authored
Currently %OptimizeFunctionOnNextCall returns if there is the function is already optimized. This cl changes this function to allow tiering up till we reach top tier. That allows us to tier up from Turboprop to Turbofan using intrinsics. This cl also introduces a runtime-test function to check if turboprop-as-toptier or turboprop-as-midtier is enabled. Bug: chromium:1172797, v8:9684 Change-Id: Idbd99b816d4b93e4e619be5d4ccdfe89fc561a9e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2682638 Commit-Queue: Mythri Alle <mythria@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#72668}
-
Marja Hölttä authored
Notes: https://docs.google.com/document/d/1fEumNPCcOn4X0N5jGlAT7GQ5CEKKnw0YxLPXMoaSK5Q/edit?usp=sharing Bug: v8:11374 Change-Id: I96720c0d69fe28e7229c4c22ed3d291587b73f59 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2667511 Commit-Queue: Marja Hölttä <marja@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Reviewed-by:
Shu-yu Guo <syg@chromium.org> Cr-Commit-Position: refs/heads/master@{#72659}
-
Marja Hölttä authored
Bug: v8:11340, chromium:177058 Change-Id: I34f400bc4d66275eb2fed082f1d44eccf21839d7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2689187Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#72655}
-
Jakob Gruber authored
V8 implements a fast-path for RegExp.prototype.split which diverges from the spec: instead of creating a new sticky regexp instance `splitter` and running it in a loop, we reuse the existing non-sticky regexp without looping through each character. This works fine in most cases, but we run into issues when matching at the very end of the string. According to the spec, matches at the end of the string are impossible in @@split, but in our fast-path implementation they can happen. The obvious fix would be to remove our fast-path but this comes with high performance costs. The fix implemented in this CL adds a special flag to `exec` s.t. matches at the end of the string can be treated as failures. This is only relevant for @@split. Bug: chromium:1075514 Change-Id: Ifb790ed116793998d7aeb37e307f3f3f764023d3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2681950 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Auto-Submit: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Shu-yu Guo <syg@chromium.org> Cr-Commit-Position: refs/heads/master@{#72644}
-
- 10 Feb, 2021 4 commits
-
-
Daniel Clark authored
With top-level await, when Evaluate is performed on an already-evaluated synthetic module, Module::InnerEvaluate returns undefined. This breaks top-level await's assumption that the returned value is always a promise. In order to make SyntheticModule's behavior consistent with SourceTextModule, the top_level_capability field is moved up to Module and SyntheticModule::Evaluate places the promise returned from the host's evaluation steps in that field. Now SourceTextModule and SyntheticModule can share the same code to handle the case where the module is either kErrored or kEvaluated, so the code for this is moved up to Module. Thus, SyntheticModule is now guaranteed to return the promise from the evaluation steps even on subsequent Evaluate() calls. Unfortunately Node hasn't yet updated their EvaluationStepsCallback to return a Promise, so we can't yet assume that the returned value is a Promise without breaking Node. So, this change also adds a clause to check for this condition and create a new resolved Promise if one was not provided by the callback steps. This could eventually be removed once Node's callback steps are updated for top-level await. Change-Id: I2d6ae918abfeba9e3a757838502d4df92946edaa Bug: v8:11398 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2673794Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Commit-Queue: Dan Clark <daniec@microsoft.com> Cr-Commit-Position: refs/heads/master@{#72629}
-
Michael Achenbach authored
Dropping the gpu:none dimension broadens the choice of Mac bots from so far only 8-core VMs to also include 4-core and 12-core Mac Minis. This CL adjusts the shard configs to account for adding 4-core Mac Minis to the choice. We also skip a test that's slow only on 4-core bots. No-Try: true Bug: chromium:1174040,v8:11418 Change-Id: Ic0be0db197341b7b8f88eb30aa284c38b0e69609 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2685164 Auto-Submit: Michael Achenbach <machenbach@chromium.org> Commit-Queue: Nico Hartmann <nicohartmann@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Cr-Commit-Position: refs/heads/master@{#72623}
-
Georg Neis authored
This reverts commit 42cd9eb7. Reason for revert: Clusterfuzz issues, e.g. https://bugs.chromium.org/p/chromium/issues/detail?id=1176318 Original change's description: > [compiler] Directly read PropertyCells > > Main changes: > > - Introduce a new broker data kind kBackgroundSerialized for objects > that can be serialized in the background (when direct reads are on). > (I'm planning to remove kPossiblyBackgroundSerialized in a followup, > in favor of a dynamic choice of kSerialized or kBackgroundSerialized). > - Make PropertyCell use that new kind. > - Introduce a bottleneck in runtime code for changes to PropertyCells > and make sure that a certain protocol is followed that allows > concurrent reads from the background thread. > - Improve interface of PropertyCell in various ways. > > Bug: v8:7790 > Change-Id: If3d7926c3b894808811348b4b2bed153f5c06897 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2661462 > Reviewed-by: Toon Verwaest <verwaest@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Reviewed-by: Nico Hartmann <nicohartmann@chromium.org> > Commit-Queue: Georg Neis <neis@chromium.org> > Cr-Commit-Position: refs/heads/master@{#72586} TBR=ulan@chromium.org,neis@chromium.org,verwaest@chromium.org,nicohartmann@chromium.org Change-Id: Id04145760c49fa379bc5a3fc16eba664025a9180 Bug: v8:7790 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2685125Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#72619}
-
Shu-yu Guo authored
This reverts commit 8b6fd147. This adds --no-stress-flush-bytecode to the failing assertOptimized test as the flag changed the GC pattern and was deoptimizing code. Original change's description: > Revert "[regexp] Ship RegExp match indices" > > This reverts commit 72464122. > > Reason for revert: > https://ci.chromium.org/p/v8/builders/ci/V8%20Linux%20-%20gc%20stress/32046 > > Original change's description: > > [regexp] Ship RegExp match indices > > > > I2S: > > https://groups.google.com/a/chromium.org/g/blink-dev/c/RR_dw_ZXtT0/m/xtgu5jjyAQAJ > > > > Bug: v8:9548 > > Change-Id: I8ccf2f4c38f9b9204ae47162303f21d2d44498e8 > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2682508 > > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > > Auto-Submit: Shu-yu Guo <syg@chromium.org> > > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#72571} > > TBR=jgruber@chromium.org,syg@chromium.org > > Change-Id: I1173389082928aa5c9895ca4fb360c7ab8ec073b > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: v8:9548 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2681943 > Reviewed-by: Michael Achenbach <machenbach@chromium.org> > Commit-Queue: Michael Achenbach <machenbach@chromium.org> > Cr-Commit-Position: refs/heads/master@{#72576} TBR=machenbach@chromium.org,jgruber@chromium.org,syg@chromium.org # Not skipping CQ checks because this is a reland. Bug: v8:9548 Change-Id: Ie18b16f347061602f35e3dea371c03d2ae136127 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2686098 Commit-Queue: Shu-yu Guo <syg@chromium.org> Reviewed-by:
Shu-yu Guo <syg@chromium.org> Cr-Commit-Position: refs/heads/master@{#72613}
-
- 09 Feb, 2021 5 commits
-
-
Brice Dobry authored
This very large changeset adds support for RISC-V. Bug: v8:10991 Change-Id: Ic997c94cc12bba6881bc208e66526f423dd0679c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2571344 Commit-Queue: Brice Dobry <brice.dobry@futurewei.com> Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Hannes Payer <hpayer@chromium.org> Reviewed-by:
Michael Achenbach <machenbach@chromium.org> Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#72598}
-
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}
-
Mythri A authored
Turboprop doesn't use optimizations based on field constness to reduce the number of deoptimizations. While this is safe for loads, for stores if a different value is stored to a const field we should update the constness of the field. This is needed so we can safely deopt any other code that is relying on the constness of the field. Currently, turboprop doesn't do this. So for now treat stores to constant fields similar to TurboFan. In future, we may consider adding code to update the field constness if necessary to reduce the number of deoptimizations. Bug: chromium:1172797, v8:9684 Change-Id: I1d660457cb5d647e1283a495040a7e452fe1ac7e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2673401 Commit-Queue: Mythri Alle <mythria@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Sathya Gunasekaran <gsathya@chromium.org> Cr-Commit-Position: refs/heads/master@{#72590}
-
Georg Neis authored
Main changes: - Introduce a new broker data kind kBackgroundSerialized for objects that can be serialized in the background (when direct reads are on). (I'm planning to remove kPossiblyBackgroundSerialized in a followup, in favor of a dynamic choice of kSerialized or kBackgroundSerialized). - Make PropertyCell use that new kind. - Introduce a bottleneck in runtime code for changes to PropertyCells and make sure that a certain protocol is followed that allows concurrent reads from the background thread. - Improve interface of PropertyCell in various ways. Bug: v8:7790 Change-Id: If3d7926c3b894808811348b4b2bed153f5c06897 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2661462Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#72586}
-
Ulan Degenbaev authored
This fixes a false positive TSAN report where an object transitions to a new map in StoreIC. The scenario: 1) Object a transitions from map1 to a newly created map2 in runtime. The map is installed with a release-store. 2) Object b transitions from map1 to map2 in StoreIC in generated code that is not visible to TSAN. 3) Concurrent marker visits object b and loads it map with an acquire load. Since TSAN does not see the store in step (2) it thinks that the map loaded in (3) is freshly allocated and is not guarded by a release store. Bug: v8:11353 Change-Id: Ifcace9edff987761a4098d3fdfb98c6190f1ee1e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2682641Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#72578}
-
- 05 Feb, 2021 2 commits
-
-
Benedikt Meurer authored
In JSStackFrame::GetMethodName() we try to infer a useful method name to show for the closure to which the stack frame belongs. This is done by first considering the functions name, and checking if the receiver has a property with that name and if that property's value is the closure. In case the function doesn't have a name or the property's value is not the closure itself, we fall back to a reverse lookup of the closure within the object (and its prototypes). This CL speeds up this logic by attacking two problems: 1. The reverse lookup was performed by first using the KeyAccumulator to extract the names of all enumerable properties, and afterwards using the LookupIterator on each name, and testing the resulting property value against the closure. This is fairly slow and creates a lot of temporary objects and handles. We now look into the descriptor arrays or dictionary backing stores of the objects directly instead, which is easily 2-10x faster. 2. For the common case of `o.foo = function() { ... }` the parser already places an "inferred name" of `o.foo` onto the SharedFunctionInfo, which we can use as a hint to infer the name of the function instead of immediately falling back to the expensive reverse lookup. This repairs the regression reported in http://crbug.com/1069425 and recovers most of the slowdown reported in http://crbug.com/1077657 (there's still some overhead left from the async stack trace tracking). Fixed: chromium:1069425 Bug: chromium:1077657 Change-Id: I88d23ccad123906df70c5217e815493106e03ccf Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2676635 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Simon Zünd <szuend@chromium.org> Cr-Commit-Position: refs/heads/master@{#72545}
-
Paolo Severini authored
This is a reland of 6ada6a90 - Fixed a GC issue https://bugs.chromium.org/p/v8/issues/detail?id=11335: GC expected all arguments on the stack from code with CodeKind::TURBOFAN to be tagged objects. This is not the case now with inlined Wasm calls, and this information can be passed in SafepointEntry for each call site. - Disabled JS-to-Wasm inlining for calls inside try/catch. For more details, see updated doc: https://docs.google.com/document/d/1mXxYnYN77tK-R1JOVo6tFG3jNpMzfueQN1Zp5h3r9aM/edit# Bug: v8:11092 Original change's description: > Reland "Faster JS-to-Wasm calls" > > This is a reland of 860fcb1b > > - Disabled the tests for this feature in V8-lite mode (the original > change broke V8-lite tests). > - Also modified test console-profile-wasm.js that was brittle with this > change because it assumed that there was always a JS-to-Wasm wrapper > but this is not the case when the TurboFan compilation completes before > the Liftoff-compiled code starts to run. > > More changes in Patchset 8: > > - Moved inlining of the "JSToWasm Wrapper" away from simplified-lowering, > into a new phase, wasm-inlining that reuses the JSInliner reducer. > The doc > https://docs.google.com/document/d/1mXxYnYN77tK-R1JOVo6tFG3jNpMzfueQN1Zp5h3r9aM/edit# > describes the new logic. > > - Fixed a couple of small issues in wasm_compiler.cc to make sure that > the graph "JSToWasm Wrapper" subgraph has a valid Control chain; > this should solve the problem we had inlining the calls in functions > that can throw exception. Original change's description: > Faster JS-to-Wasm calls > > This replaces https://chromium-review.googlesource.com/c/v8/v8/+/2376165/. > > Currently JS-to-Wasm calls go through a wrapper/trampoline, built on > the basis of the signature of a Wasm function to call, and whose task > is to: > - set "thread_in_wasm_flag" to true > - convert the arguments from tagged types into Wasm native types > - calculate the address of the Wasm function to call and call it > - convert back the result from Wasm native types into tagged types > - reset "thread_in_wasm_flag" to false. > > This CL tries to improve the performance of JS-to-Wasm calls by > inlining the code of the JS-to-Wasm wrappers in the call site. > > It introduces a new IR operand, JSWasmCall, which replaces JSCall for > this kind of calls. A 'JSWasmCall' node is associated to > WasmCallParameters, which contain information about the signature of > the Wasm function to call. > > WasmWrapperGraphBuilder::BuildJSToWasmWrapper is modified to avoid > generating code to convert the types for the arguments > of the Wasm function, when the conversion is not necessary. > The actual inlining of the graph generated for this wrapper happens in > the simplified-lowering phase. > > A new builtin, JSToWasmLazyDeoptContinuation, is introduced to manage > lazy deoptimizations that can happen if the Wasm function callee calls > back some JS code that invalidates the compiled JS caller function. > Bug: v8:11092 Cq-Include-Trybots: luci.v8.try:v8_linux_arm_lite_rel_ng Change-Id: Ie052634598754feab4ff36d10fd04e008b5227a5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2649777 Commit-Queue: Paolo Severini <paolosev@microsoft.com> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#72541}
-
- 04 Feb, 2021 2 commits
-
-
Thibaud Michaud authored
In the latest spec, catch_all is encoded as 0x05. This is the same opcode as "else", but they do not conflict because "else" is not valid in the context of a try block. The 0x0a opcode now corresponds to the "unwind" instruction, which currently has the same semantics as "catch_all". R=clemensb@chromium.org Bug: v8:11392 Change-Id: Ie9cd06c9a2001a02d8bea5be7a3c016e3a58ee3d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2674007 Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#72531}
-
Frank Emrich authored
For dictionary mode objects, whether or not a property is constant was not tracked before. This CL makes the required non-Turbofan changes, guarded behind the new flag V8_DICT_PROPERTY_CONST_TRACKING. In addition, prototypes are not converted to fast mode objects if this flags is enabled. Bug: v8:11247 Change-Id: Ia5942733239a97560b6efc015f0e25a35fea3d7a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2566757 Commit-Queue: Frank Emrich <emrich@google.com> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Reviewed-by:
Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#72524}
-
- 03 Feb, 2021 1 commit
-
-
Shu-yu Guo authored
There is a bug in the top-level await spec draft such that async strongly connected components are not always evaluated before their depending modules. See https://github.com/tc39/proposal-top-level-await/pull/161 for full discussion and spec fix. Bug: v8:11376 Change-Id: I88bf06afb2e9a5d8d0b757de8276f1d1242a875e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2667772Reviewed-by:
Adam Klein <adamk@chromium.org> Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Commit-Queue: Shu-yu Guo <syg@chromium.org> Cr-Commit-Position: refs/heads/master@{#72508}
-
- 02 Feb, 2021 5 commits
-
-
Marja Hölttä authored
Now with more fixes. Bug: chromium:1162473, v8:11383 Change-Id: I54751cef03f6b2b1dc70324486441c9b0b011cc1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2667512 Auto-Submit: Marja Hölttä <marja@chromium.org> Commit-Queue: Marja Hölttä <marja@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#72487}
-
Jakob Kummerow authored
When constant-folding the test based on static types in the function body decoder, we have to ensure Liftoff's value stack is properly updated. Fixed: chromium:1172912 Change-Id: I618992608882b850a8a4bce0b267ce456e4c2a40 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2664447Reviewed-by:
Manos Koukoutos <manoskouk@chromium.org> Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Auto-Submit: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#72482}
-
Clemens Backes authored
This reverts commit a850668c. Reason for revert: new test flaking on many bots, e.g. https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Win32/31068/overview Original change's description: > [d8] Fix a crash when getting the worker's onmessage handler > > Bug: chromium:1162473 > Change-Id: Ided2f52882aaf02e1dc9a8d0ba883fedf029464d > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2663004 > Reviewed-by: Camillo Bruni <cbruni@chromium.org> > Commit-Queue: Marja Hölttä <marja@chromium.org> > Cr-Commit-Position: refs/heads/master@{#72473} TBR=marja@chromium.org,cbruni@chromium.org Change-Id: I5ec056185967974a94fd61baec8a75e855e1a272 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:1162473, v8:11383 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2666693Reviewed-by:
Clemens Backes <clemensb@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#72481}
-
Mythri A authored
Optional chain checks check if the object is null or undefined and if it is we don't perform the load but just load accumulator with undefined. For calls the value of the accumulator needs to be stored in the callee register. We were doing this only when the object isn't null or undefined. This cl fixes it by storing it to callee always. Bug: chromium:1171954 Change-Id: I391af18e783486fed70be561027bd8aba97b93cc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2665466 Commit-Queue: Mythri Alle <mythria@chromium.org> Reviewed-by:
Shu-yu Guo <syg@chromium.org> Cr-Commit-Position: refs/heads/master@{#72475}
-
Marja Hölttä authored
Bug: chromium:1162473 Change-Id: Ided2f52882aaf02e1dc9a8d0ba883fedf029464d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2663004Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Commit-Queue: Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#72473}
-
- 01 Feb, 2021 1 commit
-
-
Ng Zhi An authored
This is a reland of commit 9c09c227. The fix for gc stress failure is merged: https://crrev.com/c/2656857. Original change's description: > Bug: v8:11331 > Change-Id: Ie394ec841a1a1c4030c4f589eac2cee8a6a2a1f9 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2639033 > Reviewed-by: Georg Neis <neis@chromium.org> > Reviewed-by: Deepti Gandluri <gdeepti@chromium.org> > Commit-Queue: Zhi An Ng <zhin@chromium.org> > Cr-Commit-Position: refs/heads/master@{#72304} Bug: v8:11331 Change-Id: I82f57b3fe5f0c456472aa7ce404703f34b73d17e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2659511Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#72465}
-
- 29 Jan, 2021 4 commits
-
-
Adam Klein authored
Bug: v8:11353 Change-Id: Iba5b6a2740a5fca55c5f4cee53367fb6413ba3d5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2659635Reviewed-by:
Zhi An Ng <zhin@chromium.org> Commit-Queue: Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/master@{#72441}
-
Andreas Haas authored
... LiftoffStackSlots::Construct R=thibaudm@chromium.org Bug: chromium:1171788 Change-Id: Ifb8e20f4e81fe2c698fe1f51c0b833a6049f7558 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2659255Reviewed-by:
Thibaud Michaud <thibaudm@chromium.org> Commit-Queue: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#72433}
-
Thibaud Michaud authored
The delegate instruction is invalid in the following cases: - When the target is not a try block or the function block, - When the instruction is inside a catch handler of the target. R=clemensb@chromium.org Bug: v8:8091 Change-Id: Ic59e8314982166863ba2078e2b3b39e3ba488a74 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2656318Reviewed-by:
Clemens Backes <clemensb@chromium.org> Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> Cr-Commit-Position: refs/heads/master@{#72428}
-
Marja Hölttä authored
Fix 1: Track Scope::needs_home_object and Scope::uses_super_property accurately. When "eval" is seen, figure out whether it can access "super" and if yes, set the corresponding home object as needed. Fix 2: The object literal scope shouldn't be entered for things inside spreads. Original: https://chromium-review.googlesource.com/c/v8/v8/+/2563275 Previous reland: https://chromium-review.googlesource.com/c/v8/v8/+/2637220 This saves memory (the home object doesn't need to be stored for each method, but only once per class) and hopefully makes the home object a constant in the optimized code. Detailed documentation of the changes: https://docs.google.com/document/d/1ZVXcoQdf9IdMsnRI9iyUjyq9NDoEyx9nA3XqMgwflMs/edit?usp=sharing Bug: v8:9237 Bug: chromium:1167918 Bug: chromium:1167981 Bug: chromium:1167988 Bug: chromium:1168055 Bug: chromium:1171195 Bug: chromium:1171600 Change-Id: I9686e0d90cd0c1128757eca440a88748897ee91e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2655509 Commit-Queue: Marja Hölttä <marja@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#72422}
-
- 28 Jan, 2021 4 commits
-
-
Deepti Gandluri authored
PostMessage of an ArrayBuffer that is not detachable should result in a DataCloneError. Bug: chromium:1170176, chromium:961059 Change-Id: Ib89bbc10d2b58918067fd1a90365cad10a0db9ec Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2653810Reviewed-by:
Adam Klein <adamk@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Commit-Queue: Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/master@{#72415}
-
Marja Hölttä authored
The original commit implementing private accessor propertiers (*) claims it's not a thing, but it is. (*) https://chromium-review.googlesource.com/c/v8/v8/+/1695205/11/src/interpreter/bytecode-generator.cc#3959 Bug: v8:11360, v8:8330 Change-Id: If497f2b6a77dc28e4ade4ef78d901299f4e37593 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2652495Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Joyee Cheung <joyee@igalia.com> Commit-Queue: Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#72411}
-
Jakob Gruber authored
They've started failed, and no work is planned for the foreseeable future. Bug: v8:8888 Change-Id: I89dfa8f972a5bffa2bbb09c7a6ca56a0c4da9a02 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2656316 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Auto-Submit: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#72407}
-
Camillo Bruni authored
ALmost all tools have migrated to .mjs modules. Bug: v8:10667 Change-Id: I95f7c4a31a721be3000c990bdac1c4eb0779b693 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2642460Reviewed-by:
Victor Gomes <victorgomes@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#72404}
-