- 19 Apr, 2021 15 commits
-
-
Milad Fa authored
Port 2871e05c Original Commit Message: 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} R=leszeks@chromium.org, joransiu@ca.ibm.com, junyan@redhat.com, midawson@redhat.com BUG= LOG=N Change-Id: Id854bb901df72787ed225fc8790c3f626121ab3a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2830897Reviewed-by: Junliang Yan <junyan@redhat.com> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Commit-Queue: Milad Fa <mfarazma@redhat.com> Cr-Commit-Position: refs/heads/master@{#74034}
-
Georg Neis authored
Bug: chromium:1198705 Change-Id: I6b3ad82754e1ca72701ce57f16c4f085f8c87f77 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2835705 Auto-Submit: Georg Neis <neis@chromium.org> Commit-Queue: Nico Hartmann <nicohartmann@chromium.org> Reviewed-by: Nico Hartmann <nicohartmann@chromium.org> Cr-Commit-Position: refs/heads/master@{#74033}
-
Patrick Thier authored
- Add %PretenureAllocationSite to manually force pretenuring for an allocation site during the next GC. - Replace cctest test-compiler/DecideToPretenureDuringCompilation, which was not triggering the tested behaviour anymore with mjsunit test - Add tests for deoptimizations due to pretenuring decision changes during OSR. Bug: chromium:1193094 Change-Id: I5d6c35e2914b705bf96f27051a4a286413b6fe26 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2825593 Commit-Queue: Patrick Thier <pthier@chromium.org> Reviewed-by: Maya Lekova <mslekova@chromium.org> Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#74032}
-
Clemens Backes authored
We plan to trim the size of safepoint entries, to avoid emitting completely empty entries, and also saving some bytes by removing trailing zeros. This CL prepares that by removing the assumption that the safepoint entry contains one bit per stack slot. Instead, we just use all bits that are there in the safepoint entry when iterating compiled frames. R=jkummerow@chromium.org Bug: v8:11630 Change-Id: Ib335a34da92a08e28fe84fb74f50c8535c2f4c41 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831484Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#74031}
-
Jakob Kummerow authored
This test attempted to call mprotect to switch memory permissions, which returns an error on MacOS on arm64. The workaround is simple: don't call mprotect, rely on MacOS-specific permission switching. See also https://chromium-review.googlesource.com/c/v8/v8/+/2679688 for a related fix in non-test code. Drive-by: fix host arch detection in gm.py when building on M1 Macs. Bug: v8:11657 Change-Id: I9b59ee8f2279e28f7561ac071df27508211741f3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831877Reviewed-by: Clemens Backes <clemensb@chromium.org> Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#74030}
-
Dominik Inführ authored
This is a reland of dcd91455 This CL fixes two more tests that were uncovered by the non-concurrent marking bot. Original change's description: > [heap] Do not scan main thread handles when starting marking > > We do not need to scan main thread handles when starting incremental > marking. This reduces the time to start incremental marking. > > Bug: v8:11645 > Change-Id: Ib99a13e7875f50fbfe5346ac0e186d8960ea1337 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2826124 > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> > Cr-Commit-Position: refs/heads/master@{#73994} Bug: v8:11645 Change-Id: Id5b9dd0dcec08b6888a885b4f02783f674af90fc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831879Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#74029}
-
Hannes Payer authored
Bug: chromium:1198188 Change-Id: Iaf2cdd85124295d842ff6bb139ab0d85371c08ae Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2833920Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Hannes Payer <hpayer@chromium.org> Cr-Commit-Position: refs/heads/master@{#74028}
-
Patrick Thier authored
Rename - InterpreterEnterBytecodeDispatch to InterpreterEnterAtBytecode - InterpreterEnterBytecodeAdvance to InterpreterEnterAtNextBytecode. The reason for renaming is consistency with baseline trampolines that have similar functionality, but the old names didn't fit for baseline very well. Change-Id: I35897972fdd71f3bb0db74820db2b9034144a3c8 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2830794Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Auto-Submit: Patrick Thier <pthier@chromium.org> Cr-Commit-Position: refs/heads/master@{#74027}
-
Clemens Backes authored
This changes the interaction between {NativeModule} and {WasmCodeAllocator}. The {WasmCodeAllocator} is a field of {NativeModule}, and only called directly by the {NativeModule}. So far, there were two mutexes involved, the {allocation_mutex_} in {NativeModule}, and {mutex_} in {WasmCodeAllocator}. This caused problems with lock order inversion. This CL thus merges the two mutex, by always locking the mutex in {NativeModule} when calling a non-atomic method in {WasmCodeAllocator}. This serializes slightly more code, but none of this should be performance-critical. This removes the awkward {OptionalLock} class and adds the "Locked" suffix to a few methods to document that those can only be called while holding the allocation mutex. R=jkummerow@chromium.org CC=dlehmann@google.com Bug: v8:11663 Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_rel_ng Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_isolates_rel_ng Cq-Include-Trybots: luci.v8.try:v8_linux_arm64_gc_stress_dbg_ng Cq-Include-Trybots: luci.v8.try:v8_linux_gc_stress_dbg_ng Change-Id: I8895d61fef23a57b218e068532375bac941a5a77 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831477 Commit-Queue: Clemens Backes <clemensb@chromium.org> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#74026}
-
Daan de Graaf authored
Makes ExternalRefEncoder work even if no isolate is available, by separating V8 builtin external references from isolate dependent ones, and making the first set available without providing an isolate. This is used when disassembling external references in wasm functions. Bug: v8:11373 Change-Id: I9a177618185a6e5612182bcb02be7cc1978e8f34 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2799511Reviewed-by: Clemens Backes <clemensb@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Zhi An Ng <zhin@chromium.org> Commit-Queue: Daan de Graaf <daagra@google.com> Cr-Commit-Position: refs/heads/master@{#74025}
-
Manos Koukoutos authored
Change-Id: I4f5eed3cc783b340ffbe1c0b3dbd50096514639a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831471 Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Reviewed-by: Thibaud Michaud <thibaudm@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#74024}
-
Jakob Gruber authored
Should be unskipped once the linked issue is fixed. Tbr: mvstanton@chromium.org Bug: v8:11649 Change-Id: I9916c6f044a9c66d9a55d7783a619b2830a776ad Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2833916Reviewed-by: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#74023}
-
Jakob Gruber authored
The mechanisms don't interact well. NodeObserver assumes synchronous compilation that finishes within the ObserverNodeScope. One could ensure all relevant lifetimes (of the NodeObserver itself, and all captured pointers) exceed that of all spawned jobs, but simply disabling the additional concurrent job in these cases is a pragmatic fix for now. Bug: v8:11658 Change-Id: I41b2f96f0166b661cf0cca94ef809ca99475e420 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2833915 Auto-Submit: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#74022}
-
v8-ci-autoroll-builder authored
Rolling v8/build: https://chromium.googlesource.com/chromium/src/build/+log/cb917e0..665fcc3 TBR=v8-waterfall-sheriff@grotations.appspotmail.com Change-Id: I79e98c0c7f783f9aad16688e2453935a5e568d17 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2834345Reviewed-by: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com> Commit-Queue: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com> Cr-Commit-Position: refs/heads/master@{#74021}
-
Liu Yu authored
Port 06a2c2e0 Change-Id: I0901804ce7d403c284f944251e09afe6dd7ad77b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831162 Auto-Submit: Liu yu <liuyu@loongson.cn> Reviewed-by: Zhao Jiazhong <zhaojiazhong-hf@loongson.cn> Commit-Queue: Zhao Jiazhong <zhaojiazhong-hf@loongson.cn> Cr-Commit-Position: refs/heads/master@{#74020}
-
- 18 Apr, 2021 1 commit
-
-
v8-ci-autoroll-builder authored
Rolling v8/build: https://chromium.googlesource.com/chromium/src/build/+log/41fbf5d..cb917e0 TBR=v8-waterfall-sheriff@grotations.appspotmail.com Change-Id: I12fc43b4766ea41e42362368056215b985ddc870 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2833713Reviewed-by: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com> Commit-Queue: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com> Cr-Commit-Position: refs/heads/master@{#74019}
-
- 17 Apr, 2021 2 commits
-
-
v8-ci-autoroll-builder authored
Rolling v8/build: https://chromium.googlesource.com/chromium/src/build/+log/e00ea2a..41fbf5d Rolling v8/third_party/aemu-linux-x64: 9sUPtFCh9UkUuiYa9MoTXIK9ycaDI3CAdFHoa7zIT9cC..RHTOD0RSgoWm-M1jtnmPhZKKrWS0SGcMPzXuBTCbIUYC Rolling v8/third_party/catapult: https://chromium.googlesource.com/catapult/+log/02b5d39..d628425 Rolling v8/third_party/depot_tools: https://chromium.googlesource.com/chromium/tools/depot_tools/+log/9ceff71..efd29f6 Rolling v8/tools/clang: https://chromium.googlesource.com/chromium/src/tools/clang/+log/eefe475..d7dd881 Rolling v8/tools/luci-go: git_revision:4b61ac9cadfb8d19a09262c6e6f5342d9324acd0..git_revision:0f913477afc80d5c4b6609834d3bef6b44910e67 Rolling v8/tools/luci-go: git_revision:4b61ac9cadfb8d19a09262c6e6f5342d9324acd0..git_revision:0f913477afc80d5c4b6609834d3bef6b44910e67 Rolling v8/tools/luci-go: git_revision:4b61ac9cadfb8d19a09262c6e6f5342d9324acd0..git_revision:0f913477afc80d5c4b6609834d3bef6b44910e67 TBR=v8-waterfall-sheriff@grotations.appspotmail.com Change-Id: I08ff3660ba06092fdc5d4030dd37a0e8f2046226 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2832753Reviewed-by: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com> Commit-Queue: v8-ci-autoroll-builder <v8-ci-autoroll-builder@chops-service-accounts.iam.gserviceaccount.com> Cr-Commit-Position: refs/heads/master@{#74018}
-
Ng Zhi An authored
This reverts commit d16eefe0. It is not correct to check for node equality during the graph construction phase, because we can have optimizations that will combine same nodes. So it can happen that in wasm-compiler, the inputs to shuffle are not the same, so we canonicalize using that knowledge that it will not be the same, and allow indices > 15. But later we can have optimizations that combine the 2 inputs (e.g. splat of the same constants), and the instruction selector will see that the input nodes are the same. Bug: v8:11542,chromium:1199662 Change-Id: I21c175f4707708038710147f64d687d1b14c6ecc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2829986 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by: Bill Budge <bbudge@chromium.org> Cr-Commit-Position: refs/heads/master@{#74017}
-
- 16 Apr, 2021 22 commits
-
-
Shu-yu Guo authored
This reverts commit 6124a534. Reason for revert: On suspicion of blocking V8 roll: https://ci.chromium.org/ui/p/chromium/builders/try/win10_chromium_x64_rel_ng/839568/overview Original change's description: > [fastcall] Add support for leaf interface type checks > > This CL adds an IsTemplateForApiObject method to FunctionTemplate > allowing the embedder to check whether a given API object was > instantiated by this template without including parent templates > in the search. It also replaces the v8::ApiObject in the fast API > with a raw v8::Value pointer to allow use of standard C++ casts. > > Bug: chromium:1052746 > Change-Id: I0812ec8b4daaa5f5005aabf10b63e1e84e0b8f03 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2595310 > Commit-Queue: Maya Lekova <mslekova@chromium.org> > Reviewed-by: Georg Neis <neis@chromium.org> > Reviewed-by: Camillo Bruni <cbruni@chromium.org> > Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org> > Cr-Commit-Position: refs/heads/master@{#73999} Bug: chromium:1052746 Change-Id: Ic99ec616310f0f75800c3dad393b5d2d685b76ab No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2829988 Auto-Submit: Shu-yu Guo <syg@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@{#74016}
-
Hannes Payer authored
Bug: chromium:1198188 Change-Id: I7f4a9e67a435fcb4b564599c5dd27c386bef143b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831480 Commit-Queue: Hannes Payer <hpayer@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#74015}
-
Toon Verwaest authored
Bug: chromium:1178720 Change-Id: I0431f6d44217019b2370c07d2d11dd086abbcc9f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831874 Commit-Queue: Toon Verwaest <verwaest@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Auto-Submit: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#74014}
-
Toon Verwaest authored
When the enumerability flag is flipped we need to invalidate the prototype info. Bug: chromium:1163499 Change-Id: Iceeaa5fc47eebfe7d333c9eb594bf0763e6cef92 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831871 Commit-Queue: Toon Verwaest <verwaest@chromium.org> Auto-Submit: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#74013}
-
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}
-
Yahan Lu authored
Port 06a2c2e0 Change-Id: I23cbeabc14562168b5060f435beb77778dcfccdc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831171 Commit-Queue: Brice Dobry <brice.dobry@futurewei.com> Reviewed-by: Brice Dobry <brice.dobry@futurewei.com> Cr-Commit-Position: refs/heads/master@{#74011}
-
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}
-
Benedikt Meurer authored
This change slipped into https://crrev.com/c/2820970 and wasn't intended. We actually need to rule out __proto__ here explicitly, otherwise it starts showing up in previews for embedder objects (i.e. for HTMLAllCollection, etc.). Bug: chromium:1197019 Change-Id: Iadde73747c157c2b5b013b11a6b8a30cc4394a7e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831481 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Auto-Submit: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Philip Pfaffe <pfaffe@chromium.org> Cr-Commit-Position: refs/heads/master@{#74009}
-
Georg Neis authored
Bug: chromium:1199345 Change-Id: I33bf71b33f43919fec4684054b5bf0a0787930ca Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831478Reviewed-by: Nico Hartmann <nicohartmann@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#74008}
-
Santiago Aboy Solanes authored
This is a reland of abe4858b Reason: It was speculatively reverted but it doesn't seem to have been the culprit. TBR=neis@chromium.org Original change's description: > [compiler] Do MapRef::CanBeDeprecated and ::CanTransition concurrently > > CanBeDeprecated looks at the DescriptorArray, and CanTransition at the > instance_type. Both are safe to read concurrently and we just had to > enable them with the macro. > > Bug: v8:7790 > Change-Id: Iafe6470f2d64a9ed38383cb9e4d00dd6f23d05d7 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2826539 > Reviewed-by: Georg Neis <neis@chromium.org> > Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> > Cr-Commit-Position: refs/heads/master@{#73995} Bug: v8:7790 Change-Id: I51d29d53b208fe9b6b27adc46561a4e1009e8d6f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831488Reviewed-by: Santiago Aboy Solanes <solanes@chromium.org> Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Cr-Commit-Position: refs/heads/master@{#74007}
-
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}
-
Clemens Backes authored
This makes it much easier to read the code, since that code otherwise looks unreachable. R=thibaudm@chromium.org Change-Id: I8720f8e23a6932d83b7ef6a1f26632095ecfeb43 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2826120Reviewed-by: Thibaud Michaud <thibaudm@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#74005}
-
Manos Koukoutos authored
Changes: - Remove redundant argument from PopControl(), FallThruTo(); - Rename FallThruTo() -> FallThrough(); - Do not Kill() the environment at control end in graph-builder-interface, as this is not needed. - Move some things around and remove dead code. Change-Id: Ia2e2fb5c3a60c32838d42e5916691b38642b30bc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2830792 Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#74004}
-
Thibaud Michaud authored
The "num_exceptions" field of the control block must be updated before entering the stack check, because it is used in "GetCurrentDebugSideTable" to compute the correct indices for the debug side table. R=clemensb@chromium.org Bug: chromium:1199526 Change-Id: I54f1e4244bf84d0a78b47a764fedc83b54758d01 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831483 Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#74003}
-
Almothana Athamneh authored
No-Try: true Bug: chromium:1196595 Change-Id: Id6fcb704cad66c5a41232821df30721e49ede2b6 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2817613Reviewed-by: Michael Achenbach <machenbach@chromium.org> Reviewed-by: Liviu Rau <liviurau@chromium.org> Commit-Queue: Michael Achenbach <machenbach@chromium.org> Cr-Commit-Position: refs/heads/master@{#74002}
-
Leszek Swirski authored
This reverts commit abe4858b. Reason for revert: Speculative revert for TSAN issues (https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux64%20TSAN%20-%20no-concurrent-marking/3342/overview) Original change's description: > [compiler] Do MapRef::CanBeDeprecated and ::CanTransition concurrently > > CanBeDeprecated looks at the DescriptorArray, and CanTransition at the > instance_type. Both are safe to read concurrently and we just had to > enable them with the macro. > > Bug: v8:7790 > Change-Id: Iafe6470f2d64a9ed38383cb9e4d00dd6f23d05d7 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2826539 > Reviewed-by: Georg Neis <neis@chromium.org> > Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> > Cr-Commit-Position: refs/heads/master@{#73995} Bug: v8:7790 Change-Id: I3a068c7d3b04d6b94af74e172960d5756e84103e No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831486 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@{#74001}
-
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}
-
Maya Lekova authored
This CL adds an IsTemplateForApiObject method to FunctionTemplate allowing the embedder to check whether a given API object was instantiated by this template without including parent templates in the search. It also replaces the v8::ApiObject in the fast API with a raw v8::Value pointer to allow use of standard C++ casts. Bug: chromium:1052746 Change-Id: I0812ec8b4daaa5f5005aabf10b63e1e84e0b8f03 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2595310 Commit-Queue: Maya Lekova <mslekova@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Reviewed-by: Camillo Bruni <cbruni@chromium.org> Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org> Cr-Commit-Position: refs/heads/master@{#73999}
-
Wenyu Zhao authored
This fixes the binary size regression introduced by https://chromium-review.googlesource.com/c/v8/v8/+/2247561 Bug: v8:11643 Change-Id: Ic615b1820620dc7bfadce3075ce04b4d6d1f4b64 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831160 Commit-Queue: Wenyu Zhao <wenyu.zhao@anu.edu.au> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#73998}
-
Maya Lekova authored
This reverts commit dcd91455. Reason for revert: Breaks TSAN no-concurrent-marking - https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux64%20TSAN%20-%20no-concurrent-marking/3341/overview Original change's description: > [heap] Do not scan main thread handles when starting marking > > We do not need to scan main thread handles when starting incremental > marking. This reduces the time to start incremental marking. > > Bug: v8:11645 > Change-Id: Ib99a13e7875f50fbfe5346ac0e186d8960ea1337 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2826124 > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> > Cr-Commit-Position: refs/heads/master@{#73994} Bug: v8:11645 Change-Id: I5e2325ef326b79b1807b52384cc5473d126ca6cb No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831482 Auto-Submit: 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/master@{#73997}
-
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}
-
Santiago Aboy Solanes authored
CanBeDeprecated looks at the DescriptorArray, and CanTransition at the instance_type. Both are safe to read concurrently and we just had to enable them with the macro. Bug: v8:7790 Change-Id: Iafe6470f2d64a9ed38383cb9e4d00dd6f23d05d7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2826539Reviewed-by: Georg Neis <neis@chromium.org> Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Cr-Commit-Position: refs/heads/master@{#73995}
-