- 29 Oct, 2021 1 commit
-
-
Samuel Groß authored
A CagedPointer is guaranteed to point into the Virtual Memory Cage and will for example be used for ArrayBuffer backing stores when the heap sandbox is enabled. In the current implementation, CagedPointers are stored as offsets from the cage base, shifted to the left. Because the cage base address is usually available in a register, accessing a CagedPointer is very efficient, requiring only an additional shift and add operation. Bug: chromium:1218005 Change-Id: Ifc8c088e3862400672051a8c52840514dee2911f Cq-Include-Trybots: luci.v8.try:v8_linux64_heap_sandbox_dbg_ng,v8_linux_arm64_sim_heap_sandbox_dbg_ng Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3123417Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Samuel Groß <saelo@chromium.org> Cr-Commit-Position: refs/heads/main@{#77614}
-
- 28 Oct, 2021 2 commits
-
-
Ng Zhi An authored
4 instructions, int32x4.trunc_f32x4_{s,u}, int32x4.trunc_f64x2_{s,u}_zero. Drive-by cleanup to wasm-interpreter to use saturated_cast. The machine ops are named <int>Trunc<float>, dropping the "sat" since these don't do any saturation anymore. Bug: v8:12284 Change-Id: I2d4d6a61b819b287fee69e3eea03dd3151cfa10d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3223166Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/main@{#77598}
-
Tobias Tebbi authored
This is a reland of 45227ffd Differences: - Handle one more flags conflict in variants.py. - Disallow %VerifyType without --concurrent-recompilation. Original change's description: > [turbofan] extend type asserts to cover all JS types > > Extend type assertions to all types covering JavaScript values. > This is achieved by allocating type representations on the heap using > newly defined HeapObject subclasses. To allocate these in the compiler, > we disable concurrent compilation for the --assert-types flag for now. > > Fix two type errors that came up with the existing tests: > 1. JSCreateKeyValueArray has type Array (i.e., a JSArray) instead of > OtherObject. > 2. OperationTyper::NumberToString(Type) can type the result as the > HeapConstant Factory::zero_string(). However, NumberToString does > not always produce this string. To avoid regressions, the CL keeps > the HeapConstant type and changes the runtime and builtin code to > always produce the canonical "0" string. > > A few tests were failing because they check for truncations to work > and prevent deoptimization. However, AssertType nodes destroy all > truncations (which is by design), so these tests are incompatible > and now disabled for the assert_types variant. > > Drive-by fix: a few minor Torque issues that came up. > > Change-Id: If03b7851f7e6803a2f69edead4fa91231998f764 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3234717 > Reviewed-by: Nico Hartmann <nicohartmann@chromium.org> > Reviewed-by: Omer Katz <omerkatz@chromium.org> > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > Cr-Commit-Position: refs/heads/main@{#77565} Change-Id: I5b3c6745c6ad349ff8c2b199d9afdf0a9b5a7392 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3247035 Auto-Submit: Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Nico Hartmann <nicohartmann@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Cr-Commit-Position: refs/heads/main@{#77596}
-
- 27 Oct, 2021 3 commits
-
-
Hao Xu authored
Drive-by fix: Fix some typos in comments. Bug: v8:12319 Change-Id: Ieb4f9ab26bd4e07125ff17df9c048681733cf758 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3222263Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Hao A Xu <hao.a.xu@intel.com> Cr-Commit-Position: refs/heads/main@{#77570}
-
Maya Lekova authored
This reverts commit 45227ffd. Reason for revert: Breaks on gc_stress mode, see https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux%20-%20gc%20stress/35988/overview Original change's description: > [turbofan] extend type asserts to cover all JS types > > Extend type assertions to all types covering JavaScript values. > This is achieved by allocating type representations on the heap using > newly defined HeapObject subclasses. To allocate these in the compiler, > we disable concurrent compilation for the --assert-types flag for now. > > Fix two type errors that came up with the existing tests: > 1. JSCreateKeyValueArray has type Array (i.e., a JSArray) instead of > OtherObject. > 2. OperationTyper::NumberToString(Type) can type the result as the > HeapConstant Factory::zero_string(). However, NumberToString does > not always produce this string. To avoid regressions, the CL keeps > the HeapConstant type and changes the runtime and builtin code to > always produce the canonical "0" string. > > A few tests were failing because they check for truncations to work > and prevent deoptimization. However, AssertType nodes destroy all > truncations (which is by design), so these tests are incompatible > and now disabled for the assert_types variant. > > Drive-by fix: a few minor Torque issues that came up. > > Change-Id: If03b7851f7e6803a2f69edead4fa91231998f764 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3234717 > Reviewed-by: Nico Hartmann <nicohartmann@chromium.org> > Reviewed-by: Omer Katz <omerkatz@chromium.org> > Commit-Queue: Tobias Tebbi <tebbi@chromium.org> > Cr-Commit-Position: refs/heads/main@{#77565} Change-Id: Ia779a11fc811846194c7a8d1e40b372b265e7ea4 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3247034 Auto-Submit: Maya Lekova <mslekova@chromium.org> Owners-Override: Maya Lekova <mslekova@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/main@{#77566}
-
Tobias Tebbi authored
Extend type assertions to all types covering JavaScript values. This is achieved by allocating type representations on the heap using newly defined HeapObject subclasses. To allocate these in the compiler, we disable concurrent compilation for the --assert-types flag for now. Fix two type errors that came up with the existing tests: 1. JSCreateKeyValueArray has type Array (i.e., a JSArray) instead of OtherObject. 2. OperationTyper::NumberToString(Type) can type the result as the HeapConstant Factory::zero_string(). However, NumberToString does not always produce this string. To avoid regressions, the CL keeps the HeapConstant type and changes the runtime and builtin code to always produce the canonical "0" string. A few tests were failing because they check for truncations to work and prevent deoptimization. However, AssertType nodes destroy all truncations (which is by design), so these tests are incompatible and now disabled for the assert_types variant. Drive-by fix: a few minor Torque issues that came up. Change-Id: If03b7851f7e6803a2f69edead4fa91231998f764 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3234717Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/main@{#77565}
-
- 26 Oct, 2021 2 commits
-
-
Clemens Backes authored
R=hpayer@chromium.org CC=neis@chromium.org Change-Id: Ic9fef5f964b548bc3dc7bd0f7abfe8e1a6c777e1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3231338 Commit-Queue: Clemens Backes <clemensb@chromium.org> Reviewed-by:
Hannes Payer <hpayer@chromium.org> Cr-Commit-Position: refs/heads/main@{#77544}
-
Clemens Backes authored
The dominator tree is usually computed as part of scheduling (in {Scheduler::ComputeSchedule}). For tests it was missing, leading to DCHECK errors in the mid-tier register allocator, which uses the dominator tree. R=mslekova@chromium.org Bug: v8:12330 Change-Id: I02bc8dee3aecb6a1613fa1d07d3aae85cd28de17 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3245114Reviewed-by:
Maya Lekova <mslekova@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/main@{#77543}
-
- 25 Oct, 2021 3 commits
-
-
Maya Lekova authored
This CL fixes an issue in EffectControlLinearizer, where the primitive type of the argument of a fast C call was used to compute its MachineType even when the argument was actually a TypedArray, which should always be treated as a Tagged type. This resulted in Float32/64 typed arrays being passed in FP registers, leading to a crash in the register allocator. Drive-by fix: Fixed output from --trace-turbo-alloc so that all of its sub-parts are printed with PrintF, avoiding interleaved log lines. Bug: chromium:1260954 Change-Id: I249c8629daae3af437fb52f53f45211f3a214222 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3231341Reviewed-by:
Clemens Backes <clemensb@chromium.org> Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Commit-Queue: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/main@{#77521}
-
Nico Hartmann authored
Bug: chromium:1254189 Change-Id: I77854c767cf5c5748999fdd40a4a42e25dff3f79 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3236989Reviewed-by:
Maya Lekova <mslekova@chromium.org> Reviewed-by:
Victor Gomes <victorgomes@chromium.org> Commit-Queue: Victor Gomes <victorgomes@chromium.org> Commit-Queue: Nico Hartmann <nicohartmann@chromium.org> Cr-Commit-Position: refs/heads/main@{#77516}
-
Manos Koukoutos authored
We introduce simple escape analysis for wasm-gc objects, where struct allocations that are only assigned to are eliminated. Handling phi uses of allocated objects is left for future work. Bug: v8:11510 Change-Id: Ibd0b220466546e150b26b02890572a5174c6872d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3229744Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/main@{#77515}
-
- 21 Oct, 2021 4 commits
-
-
Michael Lippautz authored
Bug: chromium:1260621 Change-Id: Iddfd5ee70ce9479209ff81f41197805e738298e0 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3236990Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#77501}
-
Clemens Backes authored
If an output operand has "same as input" policy, we cannot assume that it's input 0. Instead we should look at the {input_index}. The bug manifests on Wasm select instructions, where the input index is actually 2 and not 0. In order to test this better, we introduce the a new --turbo-force-mid-tier-regalloc flag, which always uses the mid-tier register allocator. Otherwise the bug would only manifest on huge functions. R=mslekova@chromium.org CC=thibaudm@chromium.org Bug: v8:12330 Change-Id: I6a005a48bbd2aba354dc99fed587bffce24c8839 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3234722Reviewed-by:
Maya Lekova <mslekova@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/main@{#77495}
-
Patrick Thier authored
Calling class constructors without new is a spec violation and should raise an exception. In [1] calling class constructors with spread (without new) was handled by reducing the node to a call to runtime to raise the exception. However, arguments of the call have to be evaluated first ([2]). This CL changes the reduction of JSCallWithSpread/JSCallWithArrayLike to a no-op in JSCallReducer if the target is a class constructor, delaying raising of the exception to the call builtin. [1] https://crrev.com/c/3229369 [2] https://tc39.es/ecma262/#sec-evaluatecall Bug: chromium:1262007 Change-Id: I2ef504d4ce6e51d582b5951beb6debb983cefba6 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3236348 Commit-Queue: Patrick Thier <pthier@chromium.org> Reviewed-by:
Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/main@{#77492}
-
Ng Zhi An authored
Relaxed f32x4 and f64x2 min and max. These instructions only guarantee results when the inputs are non nans, and when the inputs are not 0s of opposite signs. Reuse existing float binop testing harnesses and add special checks for such constants when relaxed operations are being tested. Drive-by rename of x64 instruction codes to be Minps/Maxps/Minpd/Maxpd since they map down exactly to a single instruction. Bug: v8:12284 Change-Id: I1449dbfa87935a96d7d260db22667ab7b9e86601 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3218196Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/main@{#77484}
-
- 20 Oct, 2021 1 commit
-
-
Patrick Thier authored
Handling of class constructors was moved from CallFunction to Call in [1]. When reducing calls with spread we forward varargs directly to CallFunction, if we are spreading to inlined arguments or arguments of the outermost function. In that case we didn't check for class constructors and therefore didn't raise an exception. This CL adds checks for class constructors to all JSCall* nodes in JSCallReducer that missed them before. [1] https://crrev.com/c/3186434 Bug: chromium:1260623 Change-Id: Id39cdfd09ff5aae804ae30d96909518e408c9613 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3229369 Commit-Queue: Patrick Thier <pthier@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/main@{#77472}
-
- 19 Oct, 2021 3 commits
-
-
Clemens Backes authored
Huge functions can take a really long time (several minutes) in register allocation. This is caused by a big number of virtual registers combined with a big number of blocks. We can avoid such long-running register allocation by falling back to the mid-tier register allocation if we detect a huge number of virtual registers. Note that this is mostly relevant for bigger WebAssembly modules, but we implement it as a general TurboFan flag. The flag is off by default for now, since there seem to be bugs lurking in the mid-tier register allocator. Once those are fixed, we can stage it behind --future and then ship it. R=mslekova@chromium.org CC=thibaudm@chromium.org Bug: v8:12320 Change-Id: Iff14de456c2b3a91ee2b2b12221295dd56b69463 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3231336Reviewed-by:
Maya Lekova <mslekova@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/main@{#77461}
-
Nico Hartmann authored
This CL adds support for BigInt.asIntN, the necessary operations and extensions of the compiler's type system to allow lowering of BigInts to word64 representations that are interpreted as signed 64 bit BigInts. Bug: v8:9407 Change-Id: Id4f1f45437c1caf94e01c7b4e063c2ae2386c88a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3198070 Commit-Queue: Nico Hartmann <nicohartmann@chromium.org> Reviewed-by:
Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/main@{#77458}
-
Samuel Groß authored
Bug: v8:10391 Change-Id: Ia123d8034c4ade76c9843df5d947fdc4ee3d8e35 Cq-Include-Trybots: luci.v8.try:v8_linux64_heap_sandbox_dbg_ng,v8_linux_arm64_sim_heap_sandbox_dbg_ng Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3226337Reviewed-by:
Igor Sheludko <ishell@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Samuel Groß <saelo@chromium.org> Cr-Commit-Position: refs/heads/main@{#77454}
-
- 18 Oct, 2021 2 commits
-
-
Lei Zhang authored
Avoid generating switch statements with only a default case. Instead, when there are no instructions that can trap, simply have HasMemoryAccessMode() return false. This avoids a MSVC warning when doing a 32-bit build. To do this, remove empty TARGET_ARCH_OPCODE_WITH_MEMORY_ACCESS_MODE_LIST definitions from instruction-codes-$arch.h files. Change-Id: Ifed76eb9cbca169f30c188c1999e1e9be0b2c6aa Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3224807Reviewed-by:
Clemens Backes <clemensb@chromium.org> Reviewed-by:
Maya Lekova <mslekova@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org> Cr-Commit-Position: refs/heads/main@{#77441}
-
Manos Koukoutos authored
This CL improves wasm inlining heuristics in Turbofan, for an average 8,5% performance improvement in selected benchmarks. Changes: - In WasmInliner::Reduce(), only collect inlining candidates into a priority queue, according to WasmInliner::LexicographicOrdering. Move actual inlining to Finalize(). - Remove the InlineFirstFew heuristic. Add two limits to inlining: Maximum relative size increase (reversely proportional to the function size), and absolute size increase. - Pass information about call frequency from liftoff-collected feedback to the WasmInliner though the wasm module. - Run wasm inlining along other optimizations in the pipeline. - Split inlining and speculative inlining tests. Bug: v8:7748, v8:12166 Change-Id: Iccee22093db765981889a24451fb458dfce1f1a6 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3222764Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/main@{#77428}
-
- 15 Oct, 2021 2 commits
-
-
Manos Koukoutos authored
Bug: v8:7748 Change-Id: Id09544a9f55843d2474b6114da9d42e1ec994cff Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3226322 Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/main@{#77417}
-
Lu Yahan authored
Port 255aaed9 Port 6bd44dfe Change-Id: I9d57cf7782c267bda4532d0408e69b671e6001f1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3220271Reviewed-by:
ji qiu <qiuji@iscas.ac.cn> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: ji qiu <qiuji@iscas.ac.cn> Commit-Queue: Yahan Lu <yahan@iscas.ac.cn> Auto-Submit: Yahan Lu <yahan@iscas.ac.cn> Cr-Commit-Position: refs/heads/main@{#77407}
-
- 14 Oct, 2021 2 commits
-
-
Ng Zhi An authored
4 instructions, i8x16, i16x8, i32x4, i64x2 relaxed lane select. These instructions only guarantee results when the entire lane is set or unset, so vpblendvb will give correct results for all of them. Bug: v8:12284 Change-Id: I76959a23f2d97de8ecc3bef43d138184484e3c4d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3207006Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/main@{#77401}
-
Jakob Kummerow authored
--trace-wasm-compilation-times: print one line per compiled function with basic performance information. Useful for narrowing down functions of interest before investigating them in more depth. --wasm-tier-up-filter=N: only tier up function #N. Useful for focusing features like --turbo-stats-wasm on a particular function. Change-Id: Iaddb29bf815f4de8381a08e29187e96cc9945779 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3086341Reviewed-by:
Manos Koukoutos <manoskouk@chromium.org> Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/main@{#77399}
-
- 13 Oct, 2021 1 commit
-
-
Joyee Cheung authored
Introduces several new runtime mechanics for defining private fields, including: - Bytecode StaKeyedPropertyAsDefine - Builtins StoreOwnIC{Trampoline|Baseline|_NoFeedback} - Builtins KeyedDefineOwnIC{Trampoline|Baseline|_Megamorphic} - TurboFan IR opcode JSDefineProperty These new operations can reduce a runtime call per class field into a more traditional Store equivalent. In the microbenchmarks, this results in a substantial win over the status quo (~8x benchmark score for single fields with the changes, ~20x with multiple fields). The TurboFan JSDefineProperty op is lowered in JSNativeContextSpecialization, however this required some hacks. Because private fields are defined as DONT_ENUM when added to the object, we can't find a suitable transition using the typical data property (NONE) flags. I've added a mechanism to specify the required PropertyAttributes for the transition we want to look up. Details: New bytecodes: - StaKeyedPropertyAsDefine, which is essentially StaKeyedProperty but with a different IC builtin (KeyedDefineOwnIC). This is a bytecode rather than a flag for the existing StaKeyedProperty in order to avoid impacting typical keyed stores in any way due to additional branching and testing. New builtins: - StoreOwnIC{TTrampoline|Baseline|_NoFeedback} is now used for StaNamedOwnProperty. Unlike the regular StoreIC, this variant will no longer look up the property name in the prototype. In adddition, this CL changes an assumption that StoreNamedOwnProperty can't result in a map transition, as we can't rely on the property already being present in the Map due to an object literal boilerplate. In the context of class features, this replaces the runtime function %CreateDataProperty(). - KeyedDefineOwnIC{Trampoline|Baseline|_Megamorphic} is used by the new StaKeyedPropertyAsDefine bytecode. This is similar to an ordinary KeyedStoreIC, but will not check the prototype for setters, and for private fields, will take the slow path if the field already exists. In the context of class features, this replaces the runtime function %AddPrivateField(). TurboFan IR: - JSDefineProperty is introduced to represent a situation where we need to use "Define" semantics, in particular, it codifies that we do not consult the prototype chain, and the semantics relating to private fields are implied as well. R=leszeks@chromium.org, syg@chromium.org, rmcilroy@chromium.org Bug: v8:9888 Change-Id: Idcc947585c0e612f9e8533aa4e2e0f8f0df8875d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2795831Reviewed-by:
Igor Sheludko <ishell@chromium.org> Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Shu-yu Guo <syg@chromium.org> Commit-Queue: Joyee Cheung <joyee@igalia.com> Cr-Commit-Position: refs/heads/main@{#77377}
-
- 12 Oct, 2021 7 commits
-
-
Ng Zhi An authored
Bug: v8:12244,v8:12245 Change-Id: I066f182f924d634a489b626e899c502f837fe395 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3213139Reviewed-by:
Maya Lekova <mslekova@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/main@{#77363}
-
Igor Sheludko authored
... as a result of merging RelocInfo::target_object() with RelocInfo::target_object_no_host(PtrComprCageBase), where the cage base is used for accessing compressed embedded pointers. There are two reasons for this change: 1) the parameterless version used to compute the cage base value from the host Code object, however, when external code space is enabled such a base value will not work for non-Code objects, since they require different cage base for decompressing, 2) when external code space is enabled, there must be no need to embed compressed Code objects at all because CodeDataContainers must be used instead. In addition this CL introduces DCHECKs to enforce (2). Bug: v8:11880 Change-Id: I5b504f91dea87c2bcaa1165d2dbfaada70cba7be Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3211998Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/main@{#77361}
-
Toon Verwaest authored
This guarantees that if it's context-allocated, it'll be the first slot in the context. That in turn allows us to drop a special index on scope-info pointing at the receiver entry; once we update arguments object handling to take the receiver possibly being there into account. Change-Id: Idfd06cf172e6905b02c8d17a962382e2a9ea0874 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3211999 Commit-Queue: Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Reviewed-by:
Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/main@{#77360}
-
Jakob Kummerow authored
Walking the dominator tree can be slow when that tree is very deep, and since it's typically done at least once for every BasicBlock, overall cost is approximately quadratic. With some (sparse) caching, we can get significant speedups for very little extra memory consumption. In the specific function I looked at, tree depth was around 11,500, and this patch speeds up the Scheduling phase from 42 seconds to 0.2 seconds, while increasing its memory consumption from 113.1 to 113.4 megabytes. Change-Id: Iaa32d249a30f62269858d090fbd8924d16d3a9f4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3218157 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/main@{#77356}
-
Patrick Thier authored
This reverts commit d87e5f42. Reason for revert: Causes issues by eliminating stores that can be observed by GC. Flagging stores as "initializing" needs better handling than what was done in this CL. Original change's description: > [turbofan] Handle Allocations in StoreStoreElimination > > Previously, StoreStoreElimination handled allocations as > "can observe anything". This is pretty conservative and prohibits > elimination of repeated double stores to the same field. > With this CL allocations are changed to "observes initializing stores". > This way it is guaranteed that initializing stores to a freshly created > object are not eliminated before allocations (that can trigger GC), but > allows elimination of non-initializing, unobservable stores in the > presence of allocations. > > Bug: v8:12200 > Change-Id: I5ef1ca8892a84a3b332e081e2fa6285d0eba9d46 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3211585 > Commit-Queue: Patrick Thier <pthier@chromium.org> > Reviewed-by: Maya Lekova <mslekova@chromium.org> > Cr-Commit-Position: refs/heads/main@{#77299} Bug: v8:12200 Change-Id: I0f18cbc3e848011f1a998b073b05b3bdbc4e1223 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3218158 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Auto-Submit: Patrick Thier <pthier@chromium.org> Reviewed-by:
Maya Lekova <mslekova@chromium.org> Commit-Queue: Patrick Thier <pthier@chromium.org> Cr-Commit-Position: refs/heads/main@{#77342}
-
Thibaud Michaud authored
Connecting moves can be inserted in the gap of the last instruction of a block by the register allocator. The implicit assumption is that the last instruction does not have any operand, so that the connecting move does not invalidate any use of the destination operand. Deoptimization breaks this assumption as it both terminates its block and has operands. Omit the connecting move in this case to avoid invalidating the deopt operands. R=nicohartmann@chromium.org Bug: v8:12218 Change-Id: Icce8e455949b19338ec7255dbb9b37963e857a6f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3211572Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> Cr-Commit-Position: refs/heads/main@{#77341}
-
Liu Yu authored
Port commit 6bd44dfe Port commit 89933af6 Port commit 255aaed9 Port commit 7511020b Port commit aa259e30 Bug: v8:11112 Change-Id: Ia005a5da2d48505926a19a5d238b606826db1135 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3215372 Auto-Submit: Liu yu <liuyu@loongson.cn> Reviewed-by:
Patrick Thier <pthier@chromium.org> Commit-Queue: Patrick Thier <pthier@chromium.org> Cr-Commit-Position: refs/heads/main@{#77338}
-
- 11 Oct, 2021 4 commits
-
-
Ng Zhi An authored
Bug: v8:12284 Change-Id: I3519dfa3302c5851585c7430a9930ccd81507090 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3206502 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Cr-Commit-Position: refs/heads/main@{#77327}
-
Ng Zhi An authored
Bug: v8:12244,v8:12245 Change-Id: Ic609c486fddcdb9b8171f013eb400dd74926d871 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3213142Reviewed-by:
Maya Lekova <mslekova@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/main@{#77325}
-
Ng Zhi An authored
Bug: v8:12244,v8:12245 Change-Id: Ic63e06543e53d63ba4b58a864b46163abcddf82f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3213350Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/main@{#77321}
-
Nico Weber authored
`a && b` only evaluates b if a is true. `a & b` always evaluates both a and b. If a and b are of type bool, `&&` is usually what you want, so clang now warns on `&` where both arguments are of type bool. This warning fires twice in v8. 1. In branch-elimination.cc, we have the rare case where we _want_ to evaluate both branches so that both reduced_ and node_conditions_ are always updated. To make this more obvious, reorder the code a bit. (The warning can also be suppressed by casting one of the two expressions to int, but the reordering seems clearer.) 2. The other case is an actual (inconsequential) typo, so use || here. Bug: chromium:1255745 Change-Id: I62ba45451ee2642265574d28c646d85f5a18670b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3212891 Auto-Submit: Nico Weber <thakis@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/main@{#77314}
-
- 08 Oct, 2021 3 commits
-
-
Frank Tang authored
This is a reland of 0adc1410 1. Fork out test/mjsunit/temporal/function-exist.js test to test/mjsunit/temporal/function-exist-no-i18n.js and mark function-exist FAIL in no_i18n build. Original change's description: > [Temporal] Part 1 - Skeleton > > 1. Expose all the functions to empty buildins. > 2. Wire up basic structure of classes and internal slots. > > Design Doc: https://docs.google.com/document/d/1Huu2OUlmveBh4wjgx0D7ouC9O9vSdiZWaRK3OwkQZU0/ > > This is just a CL to establish a skeleton for Temporal. > The Temporal is very big. The prototype CL is in > https://chromium-review.googlesource.com/c/v8/v8/+/2967755 > but too big to be reviewed so I break up the basic structure here first. > > Cq-Include-Trybots: luci.v8.try:v8_linux64_bazel > Bug: v8:11544 > Change-Id: I10d09e3c2530e5b1a6ba60014a2294e138879ff3 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3092561 > Reviewed-by: Nico Hartmann <nicohartmann@chromium.org> > Reviewed-by: Shu-yu Guo <syg@chromium.org> > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Commit-Queue: Frank Tang <ftang@chromium.org> > Cr-Commit-Position: refs/heads/main@{#76819} Bug: v8:11544 Change-Id: I60eaface94ba9b3408cb235cd1ae425151a36732 Cq-Include-Trybots: luci.v8.try:v8_linux64_bazel Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3160324Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/main@{#77303}
-
Patrick Thier authored
Previously, StoreStoreElimination handled allocations as "can observe anything". This is pretty conservative and prohibits elimination of repeated double stores to the same field. With this CL allocations are changed to "observes initializing stores". This way it is guaranteed that initializing stores to a freshly created object are not eliminated before allocations (that can trigger GC), but allows elimination of non-initializing, unobservable stores in the presence of allocations. Bug: v8:12200 Change-Id: I5ef1ca8892a84a3b332e081e2fa6285d0eba9d46 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3211585 Commit-Queue: Patrick Thier <pthier@chromium.org> Reviewed-by:
Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/main@{#77299}
-
Lu Yahan authored
Change-Id: Iba439f2de9da359baeebd23482880013939b3066 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3212059 Auto-Submit: Yahan Lu <yahan@iscas.ac.cn> Reviewed-by:
ji qiu <qiuji@iscas.ac.cn> Commit-Queue: Yahan Lu <yahan@iscas.ac.cn> Commit-Queue: ji qiu <qiuji@iscas.ac.cn> Cr-Commit-Position: refs/heads/main@{#77294}
-