- 18 Jan, 2021 1 commit
-
-
Jakob Gruber authored
FrameState parameters must not be iterated directly since parameters can be encoded into StateValues (i.e. parameter i is not necessarily InputAt(i)). Instead, they should be accessed through the StateValuesAccess helper class. One example: 82: StateValues[sparse:^^^^^^](81, 31, 32, 33, 34, 35) 81: StateValues[sparse:^^^^^^^^](110, 24, 25, 26, 27, 28, 29, 30) 31: NumberConstant[8] 32: NumberConstant[9] 33: NumberConstant[10] 34: NumberConstant[11] 35: NumberConstant[13] Here, node 81 holds multiple parameters. These are properly iterated by the StateValuesAccess class. Bug: chromium:1166136 Change-Id: I12725f83994e1c05571bcba153ff45154b16d93f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2625879 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Auto-Submit: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#72126}
-
- 15 Jul, 2020 1 commit
-
-
Igor Sheludko authored
... this will avoid the need to pass AllocationPolicy to every method that can allocate/deallocate and allows to make deallocation method implementation stateful. The latter will also allow implementing accounting of deallocated zone memory. Adding one more field is generally fine because usually these hashmap objects are allocated on the stack or inside other rarely-allocated long-lived objects. The only exception is Scope class. The Scope objects are created very often during parsing and each of them has a VariableMap field. The Scope object size issue will be addressed in a follow-up CL. Bug: v8:10572 Change-Id: I63fbd41246cf2e568c8ba80c213d3e9caffc2c87 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2284992Reviewed-by: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#68877}
-
- 10 Jul, 2020 1 commit
-
-
Igor Sheludko authored
... by migrating old-style code MyObject* obj = new (zone) MyObject(...) to the new style MyObject* obj = zone->New<MyObject>(...) Bug: v8:10689 Change-Id: I55c686bbedfa1fd1955a5927df3f72b366312fd4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2288867 Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#68808}
-
- 05 Mar, 2020 1 commit
-
-
Dan Elphick authored
Optimizes InstructionSelector::AddInputsToFrameStateDescriptor by taking advantage of SparseInputMask data structure to more quickly handle empty inputs and insert all the OptimizedOut entries in one go. The number of empty inputs is now determined using CountTrailingZeros rather than iterating over them one at a time. Gives a 9% improvement to SelectInstructions runtime call stat for Octane in turboprop. Bug: v8:10051 Change-Id: Ib13d6f9644b4c89ba0546a19fe0ed623d69fec99 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2037443 Commit-Queue: Dan Elphick <delphick@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#66591}
-
- 11 Feb, 2020 1 commit
-
-
Dan Elphick authored
This reverts commit 14d1b9e9. Reason for revert: Increases RuntimeStats/Group-JavaScript/duration Original change's description: > [compiler] Make StateValuesAccess methods inlinable > > This moves several simple StateValuesAccess methods as well as > SparseInputMask::InputIterator::IsReal into their header files so they > can be more easily inlined. This gives about a 7% improvement to the > BackgroundSelectInstructions runtime call stat. > > Also marks some methods called by the new methods as V8_PRIVATE_EXPORT > so component build test can build. > > Bug: v8:10051 > Change-Id: I3e34977a4fa660d3f4f55fd4f2c0b2370d5d2bc2 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2023559 > Reviewed-by: Georg Neis <neis@chromium.org> > Commit-Queue: Dan Elphick <delphick@chromium.org> > Cr-Commit-Position: refs/heads/master@{#66078} TBR=neis@chromium.org,delphick@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: v8:10051 Change-Id: I9168b524bc06562906a12a6ec0e948d6f90d4a7d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2050387Reviewed-by: Dan Elphick <delphick@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#66219}
-
- 03 Feb, 2020 1 commit
-
-
Dan Elphick authored
This moves several simple StateValuesAccess methods as well as SparseInputMask::InputIterator::IsReal into their header files so they can be more easily inlined. This gives about a 7% improvement to the BackgroundSelectInstructions runtime call stat. Also marks some methods called by the new methods as V8_PRIVATE_EXPORT so component build test can build. Bug: v8:10051 Change-Id: I3e34977a4fa660d3f4f55fd4f2c0b2370d5d2bc2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2023559Reviewed-by: Georg Neis <neis@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#66078}
-
- 15 Jul, 2019 1 commit
-
-
Georg Neis authored
Bug: v8:9429 Change-Id: I4274206875edd61f36ac51c05d53158b6c1e17fd Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1700072 Auto-Submit: Georg Neis <neis@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#62701}
-
- 08 Jul, 2019 1 commit
-
-
Clemens Hammacher authored
Cpplint usually checks for non-const reference arguments. They are forbidden in the style guide, and v8 does not explicitly make an exception here. This CL re-enables that warning, and fixes all current violations by adding an explicit "NOLINT(runtime/references)" comment. In follow-up CLs, we should aim to remove as many of them as possible. TBR=mlippautz@chromium.org Bug: v8:9429 Change-Id: If7054d0b366138b731972ed5d4e304b5ac8423bb Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1687891Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Igor Sheludko <ishell@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#62551}
-
- 23 May, 2019 1 commit
-
-
Yang Guo authored
NOPRESUBMIT=true TBR=mstarzinger@chromium.org Bug: v8:9247 Change-Id: I4cd6b79a1c2cba944f6f23caed59d4f1a4ee358b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1624217 Commit-Queue: Yang Guo <yangguo@chromium.org> Reviewed-by: Igor Sheludko <ishell@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#61790}
-
- 02 Dec, 2017 1 commit
-
-
Mathias Bynens authored
This patch normalizes the casing of hexadecimal digits in escape sequences of the form `\xNN` and integer literals of the form `0xNNNN`. Previously, the V8 code base used an inconsistent mixture of uppercase and lowercase. Google’s C++ style guide uses uppercase in its examples: https://google.github.io/styleguide/cppguide.html#Non-ASCII_Characters Moreover, uppercase letters more clearly stand out from the lowercase `x` (or `u`) characters at the start, as well as lowercase letters elsewhere in strings. BUG=v8:7109 TBR=marja@chromium.org,titzer@chromium.org,mtrofin@chromium.org,mstarzinger@chromium.org,rossberg@chromium.org,yangguo@chromium.org,mlippautz@chromium.org NOPRESUBMIT=true Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_chromium_rel_ng Change-Id: I790e21c25d96ad5d95c8229724eb45d2aa9e22d6 Reviewed-on: https://chromium-review.googlesource.com/804294 Commit-Queue: Mathias Bynens <mathias@chromium.org> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#49810}
-
- 25 Sep, 2017 1 commit
-
-
Clemens Hammacher authored
Use the (D)CHECK_{EQ,NE,GT,...} macros instead of (D)CHECK with an embedded comparison. This gives better error messages and also does the right comparison for signed/unsigned mismatches. This will allow us to reenable the readability/check cpplint check. R=jarin@chromium.org Bug: v8:6837 Change-Id: I712580c2a4326e06ee3d6d0eb4ff8c7d24f5fdb9 Reviewed-on: https://chromium-review.googlesource.com/671227 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#48135}
-
- 14 Sep, 2017 1 commit
-
-
Sigurdur Asgeirsson authored
Bug: chromium:763010 Change-Id: Iafed5a0e8087f415cd2c11a0b1326c04bd01ef80 Reviewed-on: https://chromium-review.googlesource.com/665351Reviewed-by: Yang Guo <yangguo@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Andreas Haas <ahaas@chromium.org> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Sigurður Ásgeirsson <siggi@chromium.org> Cr-Commit-Position: refs/heads/master@{#48018}
-
- 13 Feb, 2017 1 commit
-
-
Leszek Swirski authored
Previously, accumulators and registers each had a single element cache, distinct from the local register cache. This meant that a) Dead accumulator state nodes were not re-used if the accumulator became live. b) Functions with only one parameter (the this object) or only one local register could not reuse the single-valued state value node of the accumulator. This patch introduces heavier re-use of state-value nodes, decreasing memory use when building the graph and decreasing the number of nodes created overall. Change-Id: Ie3cc6913483aab0819d99be382eb2cb42de8c3d2 Reviewed-on: https://chromium-review.googlesource.com/440926Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#43148}
-
- 05 Jan, 2017 1 commit
-
-
leszeks authored
Add a more efficient encoding for state values that have a large number of optimized-out inputs. Review-Url: https://codereview.chromium.org/2509623002 Cr-Commit-Position: refs/heads/master@{#42088}
-
- 08 Nov, 2016 1 commit
-
-
bmeurer authored
This adds a new TypedObjectState operator, which is a version of ObjectState that carries along MachineTypes for the inputs, so we can tell the deoptimizer how to interpret the inputs, instead of having to force everything to Tagged. Drive-by-fix: Remove the unused id parameter from ObjectState. R=tebbi@chromium.org BUG=v8:5609 Review-Url: https://codereview.chromium.org/2488623002 Cr-Commit-Position: refs/heads/master@{#40832}
-
- 22 Sep, 2016 1 commit
-
-
leszeks authored
This reverts commit b42ecda5. That commit introduced a allocator field to hashmap, which indirectly added a field to Scopes, where the field, effectively storing a Zone, is unnecessary because the Zone can be accessed in other ways. Review-Url: https://codereview.chromium.org/2351393003 Cr-Commit-Position: refs/heads/master@{#39623}
-
- 20 Sep, 2016 1 commit
-
-
leszeks authored
Moves the hashmap's allocator from being a parameter in the various hashmap functions, to being a field in the hashmap itself. This 1. Protects against incorrectly passed allocators, and 2. Cleans up the API so that e.g. callers don't have to store their allocator This is part of a wider set of changes discussed in: https://groups.google.com/forum/#!topic/v8-dev/QLsC0XPYLeM Review-Url: https://codereview.chromium.org/2345233003 Cr-Commit-Position: refs/heads/master@{#39538}
-
- 10 Dec, 2015 1 commit
-
-
jarin authored
MachineType is now a class with two enum fields: - MachineRepresentation - MachineSemantic Both enums are usable on their own, and this change switches some places from using MachineType to use just MachineRepresentation. Most notably: - register allocator now uses just the representation. - Phi and Select nodes only refer to representations. Review URL: https://codereview.chromium.org/1513543003 Cr-Commit-Position: refs/heads/master@{#32738}
-
- 13 Apr, 2015 1 commit
-
-
adamk authored
This avoids both a mysterious boolean argument ("insert") and lets non-mutating lookups skip passing an allocator (in one such case, we were passing a scary-looking ZoneAllocationPolicy(NULL)!). Review URL: https://codereview.chromium.org/1074943002 Cr-Commit-Position: refs/heads/master@{#27799}
-
- 19 Mar, 2015 1 commit
-
-
jarin authored
With this change, we remember the types of frame state inputs (in a new operator, called TypedStateValues). Instead of inferring the value types when building translations, we used the recorded types. The original approach was not reliable because the passes after simplified lowering can change node types, and this in turn confuses the translation builder. BUG=chromium:468727 LOG=n R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1015423002 Cr-Commit-Position: refs/heads/master@{#27310}
-
- 17 Mar, 2015 1 commit
-
-
jarin authored
This change introduces a liveness analyzer for local variables in frame states. The main idea is to use the AstGraphBuilder::Environment class to build the control flow graph, and record local variable loads, stores and checkpoints in the CFG basic blocks (LivenessAnalyzerBlock class). After the graph building finishes, we run a simple data flow analysis over the CFG to figure out liveness of each local variable at each checkpoint. Finally, we run a pass over all the checkpoints and replace dead local variables in the frame states with the 'undefined' value. Performance numbers for Embenchen are below. ----------- box2d.js Current --turbo-deoptimization: EmbenchenBox2d(RunTime): 11265 ms. d8-master --turbo-deoptimization: EmbenchenBox2d(RunTime): 11768 ms. d8-master: EmbenchenBox2d(RunTime): 10996 ms. ----------- bullet.js Current --turbo-deoptimization: EmbenchenBullet(RunTime): 17049 ms. d8-master --turbo-deoptimization: EmbenchenBullet(RunTime): 17384 ms. d8-master: EmbenchenBullet(RunTime): 16153 ms. ----------- copy.js Current --turbo-deoptimization: EmbenchenCopy(RunTime): 4877 ms. d8-master --turbo-deoptimization: EmbenchenCopy(RunTime): 4938 ms. d8-master: EmbenchenCopy(RunTime): 4940 ms. ----------- corrections.js Current --turbo-deoptimization: EmbenchenCorrections(RunTime): 7068 ms. d8-master --turbo-deoptimization: EmbenchenCorrections(RunTime): 6718 ms. d8-master: EmbenchenCorrections(RunTime): 6858 ms. ----------- fannkuch.js Current --turbo-deoptimization: EmbenchenFannkuch(RunTime): 4167 ms. d8-master --turbo-deoptimization: EmbenchenFannkuch(RunTime): 4608 ms. d8-master: EmbenchenFannkuch(RunTime): 4149 ms. ----------- fasta.js Current --turbo-deoptimization: EmbenchenFasta(RunTime): 9981 ms. d8-master --turbo-deoptimization: EmbenchenFasta(RunTime): 9848 ms. d8-master: EmbenchenFasta(RunTime): 9640 ms. ----------- lua_binarytrees.js Current --turbo-deoptimization: EmbenchenLuaBinaryTrees(RunTime): 11571 ms. d8-master --turbo-deoptimization: EmbenchenLuaBinaryTrees(RunTime): 13089 ms. d8-master: EmbenchenLuaBinaryTrees(RunTime): 10957 ms. ----------- memops.js Current --turbo-deoptimization: EmbenchenMemOps(RunTime): 7766 ms. d8-master --turbo-deoptimization: EmbenchenMemOps(RunTime): 7346 ms. d8-master: EmbenchenMemOps(RunTime): 7738 ms. ----------- primes.js Current --turbo-deoptimization: EmbenchenPrimes(RunTime): 7459 ms. d8-master --turbo-deoptimization: EmbenchenPrimes(RunTime): 7453 ms. d8-master: EmbenchenPrimes(RunTime): 7451 ms. ----------- skinning.js Current --turbo-deoptimization: EmbenchenSkinning(RunTime): 15564 ms. d8-master --turbo-deoptimization: EmbenchenSkinning(RunTime): 15611 ms. d8-master: EmbenchenSkinning(RunTime): 15583 ms. ----------- zlib.js Current --turbo-deoptimization: EmbenchenZLib(RunTime): 10825 ms. d8-master --turbo-deoptimization: EmbenchenZLib(RunTime): 11180 ms. d8-master: EmbenchenZLib(RunTime): 10823 ms. BUG= Review URL: https://codereview.chromium.org/949743002 Cr-Commit-Position: refs/heads/master@{#27232}
-
- 16 Mar, 2015 1 commit
-
-
jarin authored
Instead of the current approach of storing flat vectors in frame states (and possibly reusing the last vector in AST graph builder), this change list builds a tree for the values and tries to reuse the nodes for different frame states. At the moment, we only use this for the local variable part of frame state, but nothing prevents us from using this for all parts. This change provides two new classes: one for creating the tree (StateValuesCache) and one for iterating the trees (StateValuesAccess). BUG= Review URL: https://codereview.chromium.org/1008213002 Cr-Commit-Position: refs/heads/master@{#27222}
-