- 16 Apr, 2021 5 commits
-
-
Leszek Swirski authored
Operands in Arm can be encoded as (8-bit value, 2*N bit left rotate). This encoding is checked for with the FitsShifter function. Previously, this encoding was exhaustively searched for by checking all 16 possible rotations. However, we can simply classify the different possible rotations as shifting away trailing zeros (without rotation), or rotating an 8-bit value split over the beginning and end of the 32-bit value (which, after one rotation, becomes the first case). Hence, we can replace the exhaustive search with a couple of trailing zeros calculations within these classes. Change-Id: Id896539c376f695b54bdf31133b2a103b0cf9736 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831479 Commit-Queue: Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Patrick Thier <pthier@chromium.org> Cr-Commit-Position: refs/heads/master@{#74012}
-
Leszek Swirski authored
This is a reland of ae0752df Reland fixes: * Remove UNREACHABLE() from constexpr switch, since we don't have a CONSTEXPR_UNREACHABLE() (it's ok, the switch is exhaustive for the enum anyway). * Fix IsRegisterArray trait to use public inheritance and size_t for std::array size. Original change's description: > [codegen] Add static interface descriptors > > Add a new CRTP StaticCallInterfaceDescriptor class, which provides > static constexpr getters for a descriptor's registers, parameter counts, > and so on. Each CallInterfaceDescriptor subclass is changed to extend > StaticCallInterfaceDescriptor, with StaticCallInterfaceDescriptor itself > extending CallInterfaceDescriptor to still provide a dynamic lookup > where needed. > > StaticCallInterfaceDescriptor provides a couple of customisation points, > where it reads its CRTP derived descriptor's static fields and > functions, with default fallbacks where appropriate. With these > customisation points, the definition of CallInterfaceDescriptor > subclasses is simplified to: > > a) Providing parameter names (as before) > b) Providing parameter types (as before) > c) Optionally setting flags (like kNoContext or kAllowVarArgs) as > static booleans on the class. > d) Optionally providing a `registers()` method that returns a > std::array<Register, N> of registers that may be used for > parameters (if not provided, this defaults to the implementation > specific default register set). > > Parameter registers (and register count) are automagically set based on > the number of parameters and number of given registers, with extra magic > to ignore no_reg registers (to reduce ia32 special casing). The > CallInterfaceDescriptorData is initialized based on these static > functions, rather than manual per-descriptor initializers. > > This allows us to skip loading descriptors dynamically for CallBuiltin > in Sparkplug, and instead lets us use a bit of template magic to > statically set up arguments for the calls. Any other users of statically > known descriptors will also benefit, thanks to C++ picking the static > methods over the dynamic methods on the base class when available. > > Because we can remove various virtual functions and trigger heavier > inlining of constantly known values, binary size slightly decreases with > this change. > > Note that torque-generated descriptors are changed to use the same magic, > rather than having Torque-specific magic, for consistency. > > Bug: v8:11420 > Change-Id: Icc5e238b6313a08734feb564204a13226b450c22 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2814518 > Auto-Submit: Leszek Swirski <leszeks@chromium.org> > Reviewed-by: Nico Hartmann <nicohartmann@chromium.org> > Reviewed-by: Clemens Backes <clemensb@chromium.org> > Reviewed-by: Igor Sheludko <ishell@chromium.org> > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Commit-Queue: Clemens Backes <clemensb@chromium.org> > Cr-Commit-Position: refs/heads/master@{#73996} TBR=nicohartmann@chromium.org,clemensb@chromium.org,ishell@chromium.org,clemensb@chromium.org Bug: v8:11420 Change-Id: Icd1f6cdb3c178e74460044b1e9623139929ceba8 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831872Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#74010}
-
Yahan Lu authored
Optimize FPUCanonicalizeNaN Float Round reutrn qNan when input is Nan FMaxMin return qNan with Nan inputs Change-Id: I7568be3d27d030e49f292a956b3084b54bdf8577 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2814725 Commit-Queue: Brice Dobry <brice.dobry@futurewei.com> Reviewed-by:
Brice Dobry <brice.dobry@futurewei.com> Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#74006}
-
Leszek Swirski authored
This reverts commit ae0752df. Reason for revert: Predictably, constexpr issues on non-clang compilers. Original change's description: > [codegen] Add static interface descriptors > > Add a new CRTP StaticCallInterfaceDescriptor class, which provides > static constexpr getters for a descriptor's registers, parameter counts, > and so on. Each CallInterfaceDescriptor subclass is changed to extend > StaticCallInterfaceDescriptor, with StaticCallInterfaceDescriptor itself > extending CallInterfaceDescriptor to still provide a dynamic lookup > where needed. > > StaticCallInterfaceDescriptor provides a couple of customisation points, > where it reads its CRTP derived descriptor's static fields and > functions, with default fallbacks where appropriate. With these > customisation points, the definition of CallInterfaceDescriptor > subclasses is simplified to: > > a) Providing parameter names (as before) > b) Providing parameter types (as before) > c) Optionally setting flags (like kNoContext or kAllowVarArgs) as > static booleans on the class. > d) Optionally providing a `registers()` method that returns a > std::array<Register, N> of registers that may be used for > parameters (if not provided, this defaults to the implementation > specific default register set). > > Parameter registers (and register count) are automagically set based on > the number of parameters and number of given registers, with extra magic > to ignore no_reg registers (to reduce ia32 special casing). The > CallInterfaceDescriptorData is initialized based on these static > functions, rather than manual per-descriptor initializers. > > This allows us to skip loading descriptors dynamically for CallBuiltin > in Sparkplug, and instead lets us use a bit of template magic to > statically set up arguments for the calls. Any other users of statically > known descriptors will also benefit, thanks to C++ picking the static > methods over the dynamic methods on the base class when available. > > Because we can remove various virtual functions and trigger heavier > inlining of constantly known values, binary size slightly decreases with > this change. > > Note that torque-generated descriptors are changed to use the same magic, > rather than having Torque-specific magic, for consistency. > > Bug: v8:11420 > Change-Id: Icc5e238b6313a08734feb564204a13226b450c22 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2814518 > Auto-Submit: Leszek Swirski <leszeks@chromium.org> > Reviewed-by: Nico Hartmann <nicohartmann@chromium.org> > Reviewed-by: Clemens Backes <clemensb@chromium.org> > Reviewed-by: Igor Sheludko <ishell@chromium.org> > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Commit-Queue: Clemens Backes <clemensb@chromium.org> > Cr-Commit-Position: refs/heads/master@{#73996} Bug: v8:11420 Change-Id: Ie5469c9253fc140590ac30b72db6eb1d93f86806 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831485 Auto-Submit: Leszek Swirski <leszeks@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Cr-Commit-Position: refs/heads/master@{#74000}
-
Leszek Swirski authored
Add a new CRTP StaticCallInterfaceDescriptor class, which provides static constexpr getters for a descriptor's registers, parameter counts, and so on. Each CallInterfaceDescriptor subclass is changed to extend StaticCallInterfaceDescriptor, with StaticCallInterfaceDescriptor itself extending CallInterfaceDescriptor to still provide a dynamic lookup where needed. StaticCallInterfaceDescriptor provides a couple of customisation points, where it reads its CRTP derived descriptor's static fields and functions, with default fallbacks where appropriate. With these customisation points, the definition of CallInterfaceDescriptor subclasses is simplified to: a) Providing parameter names (as before) b) Providing parameter types (as before) c) Optionally setting flags (like kNoContext or kAllowVarArgs) as static booleans on the class. d) Optionally providing a `registers()` method that returns a std::array<Register, N> of registers that may be used for parameters (if not provided, this defaults to the implementation specific default register set). Parameter registers (and register count) are automagically set based on the number of parameters and number of given registers, with extra magic to ignore no_reg registers (to reduce ia32 special casing). The CallInterfaceDescriptorData is initialized based on these static functions, rather than manual per-descriptor initializers. This allows us to skip loading descriptors dynamically for CallBuiltin in Sparkplug, and instead lets us use a bit of template magic to statically set up arguments for the calls. Any other users of statically known descriptors will also benefit, thanks to C++ picking the static methods over the dynamic methods on the base class when available. Because we can remove various virtual functions and trigger heavier inlining of constantly known values, binary size slightly decreases with this change. Note that torque-generated descriptors are changed to use the same magic, rather than having Torque-specific magic, for consistency. Bug: v8:11420 Change-Id: Icc5e238b6313a08734feb564204a13226b450c22 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2814518 Auto-Submit: Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#73996}
-
- 15 Apr, 2021 6 commits
-
-
Ng Zhi An authored
Bug: v8:11589 Change-Id: I6f43e6382b3441adf59dbaea58d766013cf3793b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2826712Reviewed-by:
Bill Budge <bbudge@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#73983}
-
Thibaud Michaud authored
We currently allow OSR (On-Stack Replacement) of arbitrarily deep return addresses. This is in direct violation of Intel CET's shadow stack, which we plan to enable eventually. This change works around this by postponing OSR until after we return to the old code. The main changes are: - Reserve a slot in Liftoff frames to store the OSR target, - Skip the return address modification, and instead store the new code pointer in the dedicated slot, - Upon returning to the old code, check the slot and do an indirect jump to the new code if needed. CET also prevents indirect jumps to arbitrary locations, so the last point is also a CET violation. Valid indirect jump targets must be marked with the ENDBRANCH instruction, which I will do in a follow-up CL. Bug: v8:11654 Change-Id: I6925005211aa95d60803b9409e3c07c7c226b25c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2826127 Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#73977}
-
Manos Koukoutos authored
Changes: - Implement function subtyping in wasm-subtyping.cc. - Add Signature::Build(), which takes initializer lists for the return and parameter types. - Only throw kTrapFuncSigMismatch in call_indirect, change that trap's message. - Add a missing "return 0" in function-body-decoder-impl.h - Fix a faulty check in wasm-objects.cc. - Improve some comments. - Write tests. Improve readability of subtyping-unittest. Bug: v8:7748 Change-Id: I1caba09d5bd01cfd4d6125f300cd9c16af7aba99 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2822633Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/master@{#73972}
-
Jakob Gruber authored
- FLAG_turbo_inline_js_wasm_calls data race - Map::instance_descriptors non-atomic concurrent loads - Skip one more cctest incompatible with stress_concurrent_inlining Bug: v8:7790,v8:11648,v8:11651 Change-Id: Ie4833373a1da34497f4cfe129254071d8a5772dd Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2827891Reviewed-by:
Santiago Aboy Solanes <solanes@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#73970}
-
Jakob Gruber authored
Some logic still remains, notably in compiler/. Bug: v8:8888 Change-Id: I7e7f10a487e1bc8b90bbbfedbc46bf09bae0717e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2825589 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#73969}
-
Jakob Gruber authored
.. to increase coverage of concurrent inlining, at least in this stress mode. The common pattern in mjsunit tests is to call `%OptimizeFunctionOnNextCall(f)` for interesting function `f`. This explicitly triggers non-concurrent compilation, significantly decreasing relevant coverage of concurrent inlining. This CL recovers coverage by spawning an additional concurrent compile job when 1. --stress-concurrent-inlining is enabled, and 2. the requested compile mode is non-concurrent. The result of these additional jobs is discarded. Drive-by: Fix two simple uncovered issues. Bug: v8:7790,v8:11513,v8:11648 Change-Id: If1e8ca5ba737e3cecdec9e15e4a86b28fe9fb2de Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2824440 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#73967}
-
- 14 Apr, 2021 4 commits
-
-
Ng Zhi An authored
Bug: v8:11589 Change-Id: I30dbdbc6266d703ce697352780da1d543afbb457 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2826711 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#73965}
-
Tianping Yang authored
Change-Id: If33624193cb771ec0f1d7fc3364d50c850af7dcb Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2822276Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#73950}
-
Victor Gomes authored
Similarly to Windows, on macOS we should touch the memory in a page when allocating stack space that crosses page boundaries. Change-Id: I8968805c4abe255123a41d0f63f89d4af509b6c8 Bug: v8:11615 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2825588 Commit-Queue: Victor Gomes <victorgomes@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#73948}
-
Ng Zhi An authored
We add one more member function template to AvxHelper to allow one new way of calling: - Andps(x, y, z) -> vandps(x, y, z), andps(x, z) && x == y Clean up a bunch of places where we need to pass an int literal as a byte. Unfortunately we cannot define Movq using AVX_OP. Because of the way movq is defined in the assembler, using function templates, there are versions of movq with 1 argument defined. That is not a valid instruction (but is valid for `dec`). We end up selecting vmovq(XMMRegister, Register) and movq(XMMRegister), which is not valid. Bug: v8:11589 Change-Id: I45e3bc213d93ece7f65da8eb1e3fa185aec4c573 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2815560 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Reviewed-by:
Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#73944}
-
- 13 Apr, 2021 3 commits
-
-
Ng Zhi An authored
We optimized swizzle with constant mask, but failed to actually swizzle using the masks... Bug: v8:10992 Change-Id: If655fdad1e17e92b62e8a2eaabbf1f8d82e4d5e4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2822951Reviewed-by:
Deepti Gandluri <gdeepti@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#73943}
-
Ng Zhi An authored
This is similar in spirit to https://crrev.com/c/2808621, which is to ensure that no matter what combination of --[no-]enable-{extension} flag is passed, we end up with a set of supported extensions that make sense. The 2 rules are: - If a newer extension is supported (SSE4_2), older extensions are supported (SSE4_1, SSSE3, SSE3), - If an older extension is not supported (SSE4_1), new extensions are not supported (SSE4_2, AVX) Tests have been added to both ia32 and x64 to check that we follow these above 2 rules. We change the ProbeImpl to have a reconciliation step to ensure that we stick to the 2 rules. E.g. if --enable-avx --no-enable-sse4-2, we will first set AVX to supported, then in the second step, fix-up AVX to unsupported. In this sense, the --no version of the flags take priority. This more accurately follows the intention of the flags. Bug: chromium:1195579 Change-Id: I0390f24de9d203fe6bbd4cc02a23771a1f052618 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2818570 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Michael Achenbach <machenbach@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#73942}
-
Yahan Lu authored
Clean todo comment in constant-riscv64.h about PCRelativeJumpRange. Change-Id: I9067134e96e4801fbd1f976d0e5d033085d5f133 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2817975Reviewed-by:
Brice Dobry <brice.dobry@futurewei.com> Commit-Queue: Yahan Lu <yahan@iscas.ac.cn> Cr-Commit-Position: refs/heads/master@{#73925}
-
- 12 Apr, 2021 8 commits
-
-
Shu-yu Guo authored
The pointer compression cage is the virtual memory reservation that all compressed pointers fall within. This CL splits pointer compression into two modes: a per-Isolate cage and a shared cage among multiple Isolates. When multiple Isolates are sharing a cage, they can decompress each others' pointers and share the same virtual memory range. Bug: v8:11460 Change-Id: I7b89b7413b8e7ca6b8b6faafd083dc387542a8b4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2783674Reviewed-by:
Dan Elphick <delphick@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Shu-yu Guo <syg@chromium.org> Cr-Commit-Position: refs/heads/master@{#73916}
-
Wenyu Zhao authored
This CL adds features to pack/unpack map words. Currently V8 cannot store extra metadata in object headers -- because V8 objects do not have a proper header, but only a map pointer at the start of the object. To store per-object metadata like marking data, a side table is required as the per-object metadata storage. This CL enables V8 to use higher unused bits in a 64-bit map word as per-object metadata storage. Map pointer stores come with an extra step to encode the metadata into the pointer (we call it "map packing"). Map pointer loads will also remove the metadata bits as well (we call it "map packing"). Since the map word is no longer a valid pointer after packing, we also change the tag of the packed map word to make it looks like a Smi. This helps various GC and barrier code to correctly skip them instead of blindly dereferencing this invalid pointer. A ninja flag `v8_enable_map_packing` is provided to turn this map-packing feature on and off. It is disabled by default. * Only works on x64 platform, with `v8_enable_pointer_compression` set to `false` Bug: v8:11624 Change-Id: Ia2bdf79553945e5fc0b0874c87803d2cc733e073 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2247561Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#73915}
-
QiuJi authored
Refs: https://bugs.chromium.org/p/v8/issues/detail?id=11628 Change-Id: Ia651b14acd6fc3293abddbe5e49277d8dadb19ba Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2814563Reviewed-by:
Brice Dobry <brice.dobry@futurewei.com> Commit-Queue: Brice Dobry <brice.dobry@futurewei.com> Cr-Commit-Position: refs/heads/master@{#73912}
-
Camillo Bruni authored
Make runtime-call-stats a compile-time flag. Disabling RCS saves roughly 1MB binary size on 64bit systems and yields minor performance improvements. Bug: v8:11299 Change-Id: Ia1db75e330a665db5251b685c164b96857e38d2d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2799766Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Achenbach <machenbach@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#73910}
-
Jakob Gruber authored
Several spots in arm codegen require 24-bit integers; since getting this wrong is usually a security problem, let's change these DCHECKs into CHECKs. Bug: chromium:1197363 Change-Id: I277dc8fe4771adae89375adbe19a33d2c9f6783c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2820972 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Auto-Submit: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#73902}
-
Marja Hölttä authored
The de-duplication happens when 1) we have a JSFunction for an outer function and a JSFunction for its inner function in the snapshot and 2) we call the outer function again after deserializing Expectation: the created JSFunction for the inner function uses the SFI which was created when deserializing. Bug: v8:11525 Change-Id: I80933514873e857452585317248fa34913d8d8e7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2794438Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Reviewed-by:
Shu-yu Guo <syg@chromium.org> Commit-Queue: Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#73900}
-
Liqiang Tao authored
Change-Id: Ia88e43711d54e1aa651757f6a2bac7005b4274aa Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2814129Reviewed-by:
Brice Dobry <brice.dobry@futurewei.com> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#73897}
-
Yahan Lu authored
Port pc-relative builtin-to-builtin calls. Port: ccc068d5 Change-Id: I1d11dd1e77ca578f7714864e4e090493fa8bca0a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2814722 Commit-Queue: Yahan Lu <yahan@iscas.ac.cn> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Brice Dobry <brice.dobry@futurewei.com> Cr-Commit-Position: refs/heads/master@{#73894}
-
- 09 Apr, 2021 3 commits
-
-
Zhi An Ng authored
This reverts commit b49638c5. Reason for revert: Buggy for avx2 and --no-enabled-sse4-2 (but avx is available on bots), see review comments for details. Original change's description: > [x64][ia32] Set lower SSE flags when newer extensions are enabled > > If SSE4.2 is enabled, all the previous extensions should also be > enabled. In particular, you cannot have --enable-sse4_1 and > --no-enable-sse3. > > Bug: chromium:1195579 > Change-Id: Id3e10db24cee2aee14449a77c9e7cff82e97edff > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2808621 > Reviewed-by: Andreas Haas <ahaas@chromium.org> > Reviewed-by: Clemens Backes <clemensb@chromium.org> > Commit-Queue: Zhi An Ng <zhin@chromium.org> > Cr-Commit-Position: refs/heads/master@{#73840} Tbr: ahaas@chromium.org,clemensb@chromium.org Bug: chromium:1195579 Change-Id: Iabce159a82e8b71cbec8336091323f35e9aff16e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2818562Reviewed-by:
Zhi An Ng <zhin@chromium.org> Reviewed-by:
Michael Achenbach <machenbach@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Cr-Commit-Position: refs/heads/master@{#73885}
-
Shu-yu Guo authored
For consistency with the PtrComprCageBase struct and the upcoming PtrComprCage. Bug: v8:11460 Change-Id: I2e393331c36481ee911edeaf9fb3ff971cfdba83 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2787701 Commit-Queue: Shu-yu Guo <syg@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#73874}
-
Yahan Lu authored
Port: 3e689a7d Bug: v8:11421 Change-Id: I733a68d8ce6d4cbc11a63e82ccb6bd951f5e5870 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2763963Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Brice Dobry <brice.dobry@futurewei.com> Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Commit-Queue: Yahan Lu <yahan@iscas.ac.cn> Cr-Commit-Position: refs/heads/master@{#73873}
-
- 08 Apr, 2021 4 commits
-
-
Milad Fa authored
Port 05265d88 Original Commit Message: This removes all wasm-related flags in no-wasm builds. We could have made them read-only, but fully removing them actually forces us to consider the no-wasm case at every use site, which often hints at further cleanups. R=clemensb@chromium.org, joransiu@ca.ibm.com, junyan@redhat.com, midawson@redhat.com BUG= LOG=N Change-Id: Ib68968683023f602f2226f0fa8d7c26bcc04b170 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2814899Reviewed-by:
Joran Siu <joransiu@ca.ibm.com> Reviewed-by:
Junliang Yan <junyan@redhat.com> Commit-Queue: Milad Fa <mfarazma@redhat.com> Cr-Commit-Position: refs/heads/master@{#73864}
-
Michael Achenbach authored
This reverts commit d5457f5f. Reason for revert: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux%20-%20gc%20stress/32999 Original change's description: > [api] JSFunction PromiseHook for v8::Context > > This will enable Node.js to get much better performance from async_hooks > as currently PromiseHook delegates to C++ for the hook function and then > Node.js delegates it right back to JavaScript, introducing several > unnecessary barrier hops in code that gets called very, very frequently > in modern, promise-heavy applications. > > This API mirrors the form of the original C++ function based PromiseHook > API, however it is intentionally separate to allow it to use JSFunctions > triggered within generated code to, as much as possible, avoid entering > runtime functions entirely. > > Because PromiseHook has internal use also, beyond just the Node.js use, > I have opted to leave the existing API intact and keep this separate to > avoid conflicting with any possible behaviour expectations of other API > users. > > The design ideas for this new API stemmed from discussion with some V8 > team members at a previous Node.js Diagnostics Summit hosted by Google > in Munich, and the relevant documentation of the discussion can be found > here: https://docs.google.com/document/d/1g8OrG5lMIUhRn1zbkutgY83MiTSMx-0NHDs8Bf-nXxM/edit#heading=h.w1bavzz80l1e > > A summary of the reasons for why this new design is important can be > found here: https://docs.google.com/document/d/1vtgoT4_kjgOr-Bl605HR2T6_SC-C8uWzYaOPDK5pmRo/edit?usp=sharing > > Bug: v8:11025 > Change-Id: I0b403b00c37d3020b5af07b654b860659d3a7697 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2759188 > Reviewed-by: Marja Hölttä <marja@chromium.org> > Reviewed-by: Camillo Bruni <cbruni@chromium.org> > Reviewed-by: Anton Bikineev <bikineev@chromium.org> > Reviewed-by: Igor Sheludko <ishell@chromium.org> > Commit-Queue: Camillo Bruni <cbruni@chromium.org> > Cr-Commit-Position: refs/heads/master@{#73858} Bug: v8:11025 Change-Id: Ie7345c4505f39c973f9f0dbca745b591cff63f3f No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2814740 Auto-Submit: Michael Achenbach <machenbach@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Cr-Commit-Position: refs/heads/master@{#73862}
-
Stephen Belanger authored
This will enable Node.js to get much better performance from async_hooks as currently PromiseHook delegates to C++ for the hook function and then Node.js delegates it right back to JavaScript, introducing several unnecessary barrier hops in code that gets called very, very frequently in modern, promise-heavy applications. This API mirrors the form of the original C++ function based PromiseHook API, however it is intentionally separate to allow it to use JSFunctions triggered within generated code to, as much as possible, avoid entering runtime functions entirely. Because PromiseHook has internal use also, beyond just the Node.js use, I have opted to leave the existing API intact and keep this separate to avoid conflicting with any possible behaviour expectations of other API users. The design ideas for this new API stemmed from discussion with some V8 team members at a previous Node.js Diagnostics Summit hosted by Google in Munich, and the relevant documentation of the discussion can be found here: https://docs.google.com/document/d/1g8OrG5lMIUhRn1zbkutgY83MiTSMx-0NHDs8Bf-nXxM/edit#heading=h.w1bavzz80l1e A summary of the reasons for why this new design is important can be found here: https://docs.google.com/document/d/1vtgoT4_kjgOr-Bl605HR2T6_SC-C8uWzYaOPDK5pmRo/edit?usp=sharing Bug: v8:11025 Change-Id: I0b403b00c37d3020b5af07b654b860659d3a7697 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2759188Reviewed-by:
Marja Hölttä <marja@chromium.org> Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#73858}
-
Igor Sheludko authored
This CL fixes a segfault when Wasm tried to generate a builtin call from background compilation job when the Isolate was already teared down by the main thread. Drive-by: Use CallBuiltin in RegExpMacroAssemblerARM64. Bug: v8:11527, chromium:1195552 Change-Id: I8048ffcb212bda4d19d07b5ec6b487d6fb16b30d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2811739 Auto-Submit: Igor Sheludko <ishell@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#73850}
-
- 07 Apr, 2021 5 commits
-
-
Camillo Bruni authored
Change-Id: Ibe7d571ee057eb9229d74922f94b9791be953b08 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2786845 Commit-Queue: Camillo Bruni <cbruni@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#73844}
-
Ng Zhi An authored
If SSE4.2 is enabled, all the previous extensions should also be enabled. In particular, you cannot have --enable-sse4_1 and --no-enable-sse3. Bug: chromium:1195579 Change-Id: Id3e10db24cee2aee14449a77c9e7cff82e97edff Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2808621Reviewed-by:
Andreas Haas <ahaas@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#73840}
-
Milad Fa authored
From PPC ABI: >The condition code register fields CR0, CR1, CR5, CR6, and CR7 are volatile. The condition code register fields CR2, CR3, and CR4 are nonvolatile. We can safely clear Cr field 6 without the need to save its content first. Clearing the entire CR register will cause crashes if it's not restored properly. Change-Id: I854f5631294f56f542b1a6f4e23dd7dbcf000d7d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2810802Reviewed-by:
Junliang Yan <junyan@redhat.com> Commit-Queue: Milad Fa <mfarazma@redhat.com> Cr-Commit-Position: refs/heads/master@{#73837}
-
Dan Elphick authored
ARM is often defined as a macro so this changes it to kArm and fixes other cases in the same file. Bug: v8:11384 Change-Id: Iab0149be03b3b0139e3335b91a25cb4bbb2f56e3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2808939 Auto-Submit: Dan Elphick <delphick@chromium.org> Reviewed-by:
Clemens Backes <clemensb@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#73826}
-
Ng Zhi An authored
Bug: v8:11589 Change-Id: I875135f4a39f56f14a1f08e149a70b1d884bf68a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2808005Reviewed-by:
Bill Budge <bbudge@chromium.org> Commit-Queue: Zhi An Ng <zhin@chromium.org> Cr-Commit-Position: refs/heads/master@{#73816}
-
- 06 Apr, 2021 2 commits
-
-
Patrick Thier authored
This is a reland of b9c521d0. Fixes crashes by calling kInstallBaselineCode from BaselineEntry if needed, i.e. when there is no feedback vector (required a bit of register rejiggling). This can happen with cross-realm calls. The OSR arming is stored as part of the BytecodeArray and therefore shared across realms. Original change's description: > [sparkplug] OSR Ignition -> Sparkplug > > Add support for OSR to baseline code. > We compile baseline and perform OSR immediately when the bytecode budget > interrupt hits. > > Drive-by: Clean-up deoptimizer special handling of JumpLoop by using > the newly introduced GetBaselinePCForNextExecutedBytecode instead of > GetBaselineEndPCForBytecodeOffset. > > Bug: v8:11420 > Change-Id: Ifbea264d4a83a127dd2a11e28626bf2a5e8aca59 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2784687 > Commit-Queue: Patrick Thier <pthier@chromium.org> > Reviewed-by: Leszek Swirski <leszeks@chromium.org> > Cr-Commit-Position: refs/heads/master@{#73677} Bug: v8:11420 Change-Id: I67325450514ed5a1170b730b1dd59fa6acc6e1d8 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2800112Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Patrick Thier <pthier@chromium.org> Cr-Commit-Position: refs/heads/master@{#73803}
-
Ng Zhi An authored
These functions have the same signature for both SSE and AVX versions. We move them all into SharedTurboAssembler. Need to fixup a couple of callsites, since now we use a template helper to call the right function, whereas previously it was overloaded and there was implicit conversions from int to uint8_t. Bug: v8:11589 Change-Id: I8b4146ba1fb838f6b0d6f78f6b95495b8988fc4c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2800569 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by:
Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#73794}
-