- 05 Aug, 2021 1 commit
-
-
Jakob Gruber authored
Bug: v8:7790 Change-Id: Ia5903364a774bd49db1a646b3066b9972deac725 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3074465 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Auto-Submit: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#76119}
-
- 04 Aug, 2021 1 commit
-
-
Jakob Gruber authored
Convert more raw Handle<Map> uses to MapRef. Bug: v8:7790 Change-Id: Id638b70607aa5a73404ee37dfda5e038018be525 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3067337 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Santiago Aboy Solanes <solanes@chromium.org> Cr-Commit-Position: refs/heads/master@{#76089}
-
- 03 Aug, 2021 1 commit
-
-
Jakob Gruber authored
Based on a CL by mvstanton@. Bug: v8:7790,v8:12030,v8:12031,v8:12041 Change-Id: I58b75bd96c724a99133bec7d3bd6cf4e0c9be6d4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3059683Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#76055}
-
- 29 Jul, 2021 1 commit
-
-
Jakob Gruber authored
is_deprecated and is_stable are mutable and can be changed concurrently. We protect against changes through dependencies. CHECKs on such fields are invalid. Bug: v8:7790,chromium:1234206 Change-Id: I9bb7fab0342e0e2c33377c162b1912a8f93e760b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3059682 Auto-Submit: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#75973}
-
- 26 Jul, 2021 1 commit
-
-
Jakob Gruber authored
FindFrameStateBefore can return a FrameState or Dead. Bug: chromium:1232668 Change-Id: I2a21a1cd4dce9053250c1940177834ce6d2cb55b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3053582 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Auto-Submit: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#75907}
-
- 22 Jul, 2021 1 commit
-
-
Jakob Gruber authored
A mix of readability refactors, additional DCHECKs, and addressed/updated TODOs. Bug: v8:7790 Change-Id: I87ff996abd40b0ed081586e2c0da1a4c0942fed4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3041665 Auto-Submit: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#75858}
-
- 20 Jul, 2021 3 commits
-
-
Jakob Gruber authored
All these methods are called in compiler/concurrent contexts and should therefore use refs where possible. This mostly just pushes code around, but does avoid a few completely unnecessary ref-handle-ref round-trips. Bug: v8:7790 Change-Id: I18e6f45ddcd16373b5349bdb7d2dccd205f5c9ef Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3038522Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#75814}
-
Jakob Gruber authored
.. instead of handles and update all uses. Likewise with ElementAccessInfo. Essentially, this creates the needed refs up-front and removes useless MakeRef calls from PAI users. Bug: v8:7790, v8:11671 Change-Id: I175e77dcca27760101606587de615e3497e68c68 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3030701 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#75805}
-
Jakob Gruber authored
.. and explicitly mark behavior through tags/naming conventions: // This method is never called when concurrent inlining is enabled. void SerializeFoo(NotConcurrentInliningTag); // This method is thread-safe and may be called at any time. void CacheBar(); It turns out that all our remaining SerializeFoo methods are already either of the former or latter category and thus do not block removal of the serialization phase for concurrent inlining. Bug: v8:7790 Change-Id: If8f3bc2e407bc2824f83bfcd1f520f3b14dc58ec Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3026709 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#75804}
-
- 19 Jul, 2021 1 commit
-
-
Jakob Gruber authored
This wraps up the transition away from kSerialized ref kinds. Since JSFunctionRef is a complex type, we don't attempt full consistency on the background thread. Instead, we serialize functions on the background in a partially-racy manner, in which consistency between different JSFunction fields is *not* guaranteed. Consistency is later verified through a new compilation dependency kind during finalization. Bug: v8:7790, v8:12004 Change-Id: Ic2b78af9c9fe183c8769d323132bb304b151dc75 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2968404 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#75789}
-
- 08 Jul, 2021 1 commit
-
-
Georg Neis authored
This is a reland of 036e5783. Key JSBoundFunctionRef methods have been changed to return an optional type, replacing the bogus always-true serialized() method. Original change's description: > [compiler] Make JSDataViewRef and JSBoundFunctionRef bg-serialized > > ... but keep/make subclass-specific methods do direct reads. > > Bug: v8:7790 > Change-Id: Ia4b9d207ce75cf28f6f0f33027ab05e27db49ce9 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2959621 > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Georg Neis <neis@chromium.org> > Commit-Queue: Jakob Gruber <jgruber@chromium.org> > Cr-Commit-Position: refs/heads/master@{#75457} Bug: v8:11960, v8:7790 Change-Id: I1f29283b2fb6e5fe3644e2f4e33341fce2641775 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3013313 Auto-Submit: Georg Neis <neis@chromium.org> Reviewed-by:
Santiago Aboy Solanes <solanes@chromium.org> Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Cr-Commit-Position: refs/heads/master@{#75628}
-
- 01 Jul, 2021 1 commit
-
-
Peter Kasting authored
There are still a few cases remaining that seem more controversial; I'll upload those separately. Bug: chromium:1066980 Change-Id: Iabbaf23f9bbe97781857c0c589f2b3db685dfdc2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2994804 Commit-Queue: Peter Kasting <pkasting@chromium.org> Auto-Submit: Peter Kasting <pkasting@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#75494}
-
- 30 Jun, 2021 2 commits
-
-
Ross McIlroy authored
Adds support for a seperate dynamic map checks trampoline that takes the feedback vector as an argument rather than reading it from the stack frame, to enable it to work for inlined functions. Plumbs the logic through the compiler to select between these trampolines based on the framestate. BUG=v8:9684,chromium:1224367 Change-Id: Ibc7facdc78930aedec4a102693a926f64f6de7e2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2992724 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Mythri Alle <mythria@chromium.org> Cr-Commit-Position: refs/heads/master@{#75461}
-
Jakob Gruber authored
Call it NativeContextRef::GlobalIsDetached and implement it on top of Refs such that it can benefit from direct reads. Drive-by: inline a JSNativeContextSpecialization::ReduceGlobalAccess overload into its only callsite. Bug: v8:7790 Change-Id: I1c6891e0fc65a476b0c4587f3fde2c6461b302a4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2959614Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#75454}
-
- 18 Jun, 2021 1 commit
-
-
Santiago Aboy Solanes authored
Replace GetOwnDictionaryPropertyFromHeap with TryGetOwnDictionaryPropertyFromHeap which will return {} if we are trying to read out of bounds of the heap or the object. This is done so that we can concurrently use the method. We introduce a new compilation dependency (DependOnPropertyValueSame) which checks that the background thread indeed read the correct value. Bug: v8:7790 Change-Id: Ia5e308faf1f65add638cd271995f4f33416fbd15 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2930480 Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#75248}
-
- 16 Jun, 2021 1 commit
-
-
Mike Stanton authored
In heap-refs.cc, GetOwnFastDataPropertyFromHeap() bottlenecks reading a fast property. To make it safe to use from the background thread we need to verify the object didn't shrink, and risk an out of heap bounds read. Bug: v8:7790 Change-Id: Idebbe0ffea089bf2a70aa7d611618430169082fd Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2928185Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#75186}
-
- 10 Jun, 2021 1 commit
-
-
Jakob Gruber authored
.. when concurrent inlining is on. SerializeBackPointer SerializeForElementLoad SerializeRootMap For SerializeRootMap: Due to changed root map access timing, it is now possible to see an abandoned prototype map - added logic for that in RemoveImpossibleMaps. Bug: v8:7790 Change-Id: Icdb3fff12536bfdc84923e7cd40bad9978a2a401 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2948658 Auto-Submit: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#75065}
-
- 07 Jun, 2021 2 commits
-
-
Camillo Bruni authored
- Add new Builtin enum - Move Builtins::Name:kXXX to Builtin::kXXX - Update existing code Follow CLs will unify the mix of using int builtin-ids and Builtins::Name to only use the new Builtin enum and changing it to an enum class. Change-Id: Ib39aa45a25696acdf147f46392901b1e051deaa4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2905592 Commit-Queue: Camillo Bruni <cbruni@chromium.org> Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Reviewed-by:
Mythri Alle <mythria@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#74995}
-
Jakob Gruber authored
.. and replace them by elements read directly from the heap object. With this change, consistency between `map` and `elements` is no longer guaranteed. Users were updated, when necessary, to deal with this, e.g. by being more careful not to read out of bounds, by inserting new `actual_elements == elements_constant` runtime checks, or through a new compilation dependency that verifies unchanged elements at finalization time. Drive-by: inline GetElementsKind into callsites. Bug: v8:7790 Change-Id: Ifba78182e185ff0d4e954e3be52f0eb24328c853 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2909655Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#74977}
-
- 25 May, 2021 1 commit
-
-
Georg Neis authored
This reland is a manual revert of the previous revert (commit 815bab9f). Manual due to merge conflicts. No other changes. Original change's description: > [compiler] Remove one ObjectRef constructor > > Remove the handle-taking ObjectRef constructor in favor of > (Try)MakeRef as bottleneck. > > Bug: v8:7790 > Change-Id: I3cc3a1dcef4bac53a91c573d1a532332b88c6eb4 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2883664 > Commit-Queue: Georg Neis <neis@chromium.org> > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Cr-Commit-Position: refs/heads/master@{#74593} Bug: v8:7790 Tbr: jgruber@chromium.org Change-Id: Iafc68f68df06ca9f404427d272b663c218d6550a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2917039Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#74757}
-
- 18 May, 2021 1 commit
-
-
Sathya Gunasekaran authored
This reverts commit 59bb4325. Reason for revert: 4683d6fe broke TSAN, reverting all its dependencies first (including this) https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux64%20TSAN/36744/overview Original change's description: > [compiler] Remove one ObjectRef constructor > > Remove the handle-taking ObjectRef constructor in favor of > (Try)MakeRef as bottleneck. > > Bug: v8:7790 > Change-Id: I3cc3a1dcef4bac53a91c573d1a532332b88c6eb4 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2883664 > Commit-Queue: Georg Neis <neis@chromium.org> > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Cr-Commit-Position: refs/heads/master@{#74593} Bug: v8:7790 Change-Id: Ifdecf93a3a8c09a3da7118a269fc66c2ae0f1a09 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2901988Reviewed-by:
Sathya Gunasekaran <gsathya@chromium.org> Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org> Cr-Commit-Position: refs/heads/master@{#74618}
-
- 17 May, 2021 1 commit
-
-
Georg Neis authored
Remove the handle-taking ObjectRef constructor in favor of (Try)MakeRef as bottleneck. Bug: v8:7790 Change-Id: I3cc3a1dcef4bac53a91c573d1a532332b88c6eb4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2883664 Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#74593}
-
- 06 May, 2021 2 commits
-
-
Fanchen Kong authored
When a function is invoked by prototype.apply, it may undergo following transformation in the JSCallReducer: receiver.apply(this, args) -> this.receiver(...args) Since the new target (also the receiver of apply()) is not collected to the feedback slot, further speculative optimization on the new target is not available if the new target is not a heapconstant. With this CL, the receiver will be collected to the feedback instead of the target if the target is a prototype.apply. It may improve the performance of the following usecase by ~80%. function reduceArray(func, arr, r) { for (var i = 0, len = arr.length; i < len; i++) { r = func.apply(null, r, arr[i]); } return r; } var a = 0; for (var i = 0; i < 10000000; i++) { a += reduceArray(Math.imul, [5,6,2,3,7,6,8,3,7,9,2,5,], 1); } console.log(a); This CL also improves the runTime score of JetStream2/richards-wasm by ~45% in default, ~60% with --turbo-inline-js-wasm-calls. Change-Id: I542eb8d3fcb592f4e0993af93ba1af70e89c3982 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2639813 Commit-Queue: Fanchen Kong <fanchen.kong@intel.com> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#74413}
-
Georg Neis authored
This is a simplification and cleanup. Bug: v8:7790 Change-Id: I93a3ed2c9ddce4e300f25032be2085aef915ed8d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2874655 Auto-Submit: Georg Neis <neis@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#74396}
-
- 05 May, 2021 3 commits
-
-
Georg Neis authored
... in favour of an optional return type for MapRef::prototype(). This also eliminates one kind of use of ShouldHaveBeenSerialized(), which I want to get rid of entirely. Bug: v8:7790 Change-Id: I031f067d644570e5c8aaeaf94c5ff69ff0515a99 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2874456 Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#74385}
-
Jakob Gruber authored
This is part of a CL series that establishes MakeRef/TryMakeRef as the bottleneck for Ref construction. We do this by converting direct constructor uses to (Try)MakeRef calls, and then marking the ctor as protected. Bug: v8:7790 Change-Id: I26faa6bc1934662c81ae127dee64bddffa428de9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2874165Reviewed-by:
Santiago Aboy Solanes <solanes@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#74371}
-
Jakob Gruber authored
This is part of a CL series that establishes MakeRef/TryMakeRef as the bottleneck for Ref construction. We do this by converting direct constructor uses to (Try)MakeRef calls, and then marking the ctor as protected. Bug: v8:7790 Change-Id: I36c07f69378f3a630462c216ef5da284cfd3972f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2871449 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#74367}
-
- 22 Apr, 2021 1 commit
-
-
Jakob Gruber authored
Until this CL, the JSHeapBroker::GetPropertyAccessInfo (GPAI) process was as follows: 1. GPAI is called on the main thread (MT) during the serialization phase to create and cache PAIs. 2. GPAI is called again from the background thread (BT); only cached PAIs from step 1 are usable. As part of concurrent inlining, the goal is to move GPAI fully to the background thread. This CL takes a major step in that direction by making GPAI itself callable from the BT without resorting solely to PAIs that were previously cached on the MT. There are two main reasons why GPAI previously had to run on the MT: a) Concurrent access to Maps and other heap objects. b) Serialization and creation of ObjectRefs for objects discovered during GPAI. This CL addresses only reason a) and leaves b) for future work. This is done by keeping the two-pass approach, s.t. the initial call of GPAI on the MT discovers and serializes objects. We then clear all cached PAIs. The second call of GPAI on the BT thus runs full logic in a concurrent setting. Once all relevant objects (= maps and prototypes) no longer require MT-serialization, reason b) is also addressed and the first pass can be removed. The new logic is implemented behind the runtime flag --turbo-concurrent-get-property-access-info (default true), intended to be removed in the future. Bug: v8:7790 Change-Id: Idbdbfe091d7316529246a686bb6d71c2a0f06f8b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2817793 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Auto-Submit: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#74120}
-
- 21 Apr, 2021 1 commit
-
-
Nico Hartmann authored
Some string constant optimizations in JSNativeContextSpecialization assumed an incorrect maximal string length of double values. Bug: chromium:1189077, chromium:1178718 Change-Id: Iae531f0e323679a4490e666a971b66655c25c757 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2843361 Commit-Queue: Nico Hartmann <nicohartmann@chromium.org> Reviewed-by:
Maya Lekova <mslekova@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#74101}
-
- 13 Apr, 2021 1 commit
-
-
Maya Lekova authored
The CanAllocateArray used to be executed during JSCreateLowering, leading to bailouts when large arrays are passed as arguments to an async function or a bound function. This meant that JSCreateAsyncFunctionObject or JSCreateBoundFunction will reach JSGenericLowering, where they are not lowered. This CL moves the checks earlier in the pipeline during JSNativeContextSpecialization and JSCallReducer respectively, so that those operators are not created at all in such cases and we bail out to the runtime instead. Bug: v8:11564 Change-Id: I232ce7d9378730ae0cc8690e52fde840a484e069 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2807609 Commit-Queue: Maya Lekova <mslekova@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#73928}
-
- 12 Apr, 2021 1 commit
-
-
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}
-
- 23 Mar, 2021 4 commits
-
-
Frank Emrich authored
This is a reland of https://chromium-review.googlesource.com/c/v8/v8/+/2720300. As compared to the original version, it adds --no-stress-flush-bytecode to the const-dict-tracking.js test Original description: This CL is part of a series that implements Turbofan support for property accesses satisfying the following conditions: 1. The holder is a dictionary mode object. 2. The holder is a prototype. 3. The access is a load. This feature will only be enabled if the build flag v8_dict_property_const_tracking is set. This particular CL implements support for the case that the property in question is an accesor, meaning that the given PropertyAccessInfo has kind kAccessorDictionaryProtoConstant. Bug: v8:11248 Change-Id: I896e5dc59821f88abdb7a743e21ca3a700af9db2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2782280Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Frank Emrich <emrich@google.com> Cr-Commit-Position: refs/heads/master@{#73617}
-
Nico Hartmann authored
This reverts commit b1883dc3. Reason for revert: https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Mac64%20GC%20Stress/17269/overview Original change's description: > [dict-proto] TF support for constants in dictionary mode protos, pt. 3 > > This CL is part of a series that implements Turbofan support for > property accesses satisfying the following conditions: > 1. The holder is a dictionary mode object. > 2. The holder is a prototype. > 3. The access is a load. > > This feature will only be enabled if the build flag > v8_dict_property_const_tracking is set. > > This particular CL implements support for the case that the property > in question is an accesor, meaning that the given PropertyAccessInfo > has kind kAccessorDictionaryProtoConstant. > > Bug: v8:11248 > Change-Id: Id082107edd45fa91a3f1d96aa9df345a60f46917 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2720300 > Reviewed-by: Georg Neis <neis@chromium.org> > Commit-Queue: Frank Emrich <emrich@google.com> > Cr-Commit-Position: refs/heads/master@{#73607} Bug: v8:11248 Change-Id: Id753354a5ccddd1a05ecf9aec3267f152ef713c5 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2780299Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Nico Hartmann <nicohartmann@chromium.org> Cr-Commit-Position: refs/heads/master@{#73612}
-
Frank Emrich authored
This CL is part of a series that implements Turbofan support for property accesses satisfying the following conditions: 1. The holder is a dictionary mode object. 2. The holder is a prototype. 3. The access is a load. This feature will only be enabled if the build flag v8_dict_property_const_tracking is set. This particular CL implements support for the case that the property in question is an accesor, meaning that the given PropertyAccessInfo has kind kAccessorDictionaryProtoConstant. Bug: v8:11248 Change-Id: Id082107edd45fa91a3f1d96aa9df345a60f46917 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2720300Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Frank Emrich <emrich@google.com> Cr-Commit-Position: refs/heads/master@{#73607}
-
Frank Emrich authored
This CL is part of a series that implements Turbofan support for property accesses satisfying the following conditions: 1. The holder is a dictionary mode object. 2. The holder is a prototype. 3. The access is a load. This feature will only be enabled if the build flag v8_dict_property_const_tracking is set. This particular CL implements support for the case that the property in question is a data property, meaning that the given PropertyAccessInfo has kind kDataDictionaryProtoConstant. Support for accessor properties is added in a separated CL. Bug: v8:11248 Change-Id: I8794127d08c3d3aed6ec2a3eb19c4c82bdf2d1df Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2718229 Commit-Queue: Frank Emrich <emrich@google.com> Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#73603}
-
- 03 Mar, 2021 1 commit
-
-
Frank Emrich authored
This CL is the first in a series that implements Turbofan support for property accesses satisfying the following conditions: 1. The holder is a dictionary mode object. 2. The holder is a prototype. 3. The access is a load. This feature will only be enabled if the build flag v8_dict_property_const_tracking is set. This particular CL does the following: a) In PropertyAccessInfo::Kind, rename kDataConstant and kAccessorConstant to kFastDataConstant and kFastAccessorConstant, respectively, to indicate that these kinds are used for fast mode holders. b) In PropertyAccessInfo::Kind, add kDictionaryProtoDataConstant and kDictionaryProtoAccessorConstant, which will be used for dictionary mode holders (which must also be prototypes, as stated above). c) Add a member dictionary_index_ to PropertyAccessInfo, which is used by the kinds mentioned in b) Bug: v8:11248 Change-Id: Id1c10215aab287066a9765756f112c8035141013 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2718228 Commit-Queue: Frank Emrich <emrich@google.com> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#73169}
-
- 24 Feb, 2021 2 commits
-
-
Jakob Gruber authored
The available constants are now: JSObject { kMaxElementCount = kMaxUInt32, kMaxElementIndex = kMaxElementCount - 1, } JSArray { kMaxArrayLength = JSObject::kMaxElementCount, kMaxArrayIndex = JSObject::kMaxElementIndex, } I also updated the codebase to use the new constants. Change-Id: I3142f9ff9627c9acb1d4493729b490150fdcdf50 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2712755Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Auto-Submit: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#73006}
-
Sathya Gunasekaran authored
Bug: v8:11321 Change-Id: Ica350e9a613d6dddb17569ce5b2df072ceb2c050 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2717156 Auto-Submit: Sathya Gunasekaran <gsathya@chromium.org> Reviewed-by:
Maya Lekova <mslekova@chromium.org> Commit-Queue: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#73002}
-
- 23 Feb, 2021 1 commit
-
-
Jakob Gruber authored
.. which can return Undefined if reading out of bounds, so the return type is ObjectRef and not StringRef (if we had torque-like union types it'd be StringRef|OddballRef). Also change the function name to GetCharAsStringOrUndefined. Bug: v8:7790,chromium:1181246 Change-Id: Icf9e8fd03d11c3936e87a509b9117e547972d283 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2712965Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#72952}
-
- 22 Feb, 2021 1 commit
-
-
Jakob Gruber authored
This method used to be defined on Object and handled Strings and JSObjects; but only the object hierarchy rooted at JSObject has 'elements', and Strings are handled slightly differently. Thus it makes sense to split up into JSObject::GetOwnConstantElement String::GetCharAsString This way, we can also separate future work on making JSObjects and Strings never-serialized. Bug: v8:7790 Change-Id: I8e0f142fbd9cbf8e8abe1e9a189bcd948c2f1fa8 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2704080 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Auto-Submit: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#72911}
-