- 22 Jan, 2020 1 commit
-
-
Georg Neis authored
... and consult it there from the various reducers. The flag makes no sense without the broker and the reducers already have access to the broker, so we can avoid an additional flag per reducer. Bug: v8:7790 Change-Id: I448050a55951b94d5313c1a79a502be906b98b25 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2013108 Auto-Submit: Georg Neis <neis@chromium.org> Reviewed-by:
Maya Lekova <mslekova@chromium.org> Commit-Queue: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#65918}
-
- 09 Jan, 2020 1 commit
-
-
Maya Lekova authored
Bug: v8:7790 Change-Id: Idf066adcd5c3dca3004e2eaa0d8fa389755720af Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1991490Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Commit-Queue: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#65671}
-
- 27 Nov, 2019 1 commit
-
-
Georg Neis authored
This enum defined three modes of doing inlining: kGeneralInlining, kRestrictedInlining, kStressInlining. kStressInlining was unused. kRestrictedInlining meant that JSInliningHeuristic::Reduce would return NoChange, but only after wasting some time inspecting calls. This is now replaced by simply not installing JSInliningHeuristic as a reducer when inlining is disabled. Note: There is still a --stress-inline flag, which sets (through flag implications) a bunch of parameters that affect inlining. Change-Id: I05bafbe3f1f35610d7035a2c71c5ac17bdb80758 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1936473 Auto-Submit: Georg Neis <neis@chromium.org> Reviewed-by:
Mythri Alle <mythria@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#65196}
-
- 05 Jul, 2019 1 commit
-
-
Georg Neis authored
- Always account for small functions. - Always check against the hard limit. - Rename some things for clarity. Change-Id: Iad98ee625d4385dfab02fb7d5e0cb2c25eb5d67a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1686664Reviewed-by:
Mythri Alle <mythria@chromium.org> Reviewed-by:
Maya Lekova <mslekova@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#62537}
-
- 24 May, 2019 1 commit
-
-
Jaroslav Sevcik authored
Bug: chromium:958717 Change-Id: Ib0f12cc7ec9cca12c7859bf838e536fb330c5e9e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627537 Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#61818}
-
- 08 Apr, 2019 1 commit
-
-
Maya Lekova authored
The JSInliningHeuristic is now completely heap-access free. JSInliner still includes Allow* guards and will be brokerized as a follow-up CL. R=neis@chromium.org Bug: v8:7790 Change-Id: I6df5d8515bb8bd8d512e8442e4f4dba9ebe9dd2e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1528437Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#60680}
-
- 29 Mar, 2019 1 commit
-
-
Clemens Hammacher authored
Even though both are allowed in the style guide, it recommends to use 'using', as its syntax is more consistent with the rest of C++. This CL turns all typedefs in compiler code to 'using' declarations. R=mstarzinger@chromium.org Bug: v8:8834 Change-Id: I3baf3ecbfe2c853cb17bb479ebbf140382193b5c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1545896 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#60527}
-
- 11 Mar, 2019 1 commit
-
-
Maya Lekova authored
Bug: v8:7790 R=neis@chromium.org Change-Id: I10085cff40e14ea63074e29649af55fa2c0ea462 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1514494 Commit-Queue: Maya Lekova <mslekova@chromium.org> Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Auto-Submit: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#60157}
-
- 15 Nov, 2018 1 commit
-
-
Ross McIlroy authored
With Bytecode flushing, the a SharedFunctionInfo's bytecode might be flushed while the compiler is expecting it to still exist. Rather than continually getting the bytecode from the SFI, instead bottleneck the points where we get BytecodeArray from SFIs and maintain an explicit strong reference to the BytecodeArray from that point onwards to prevent flushing. BUG=v8:8395 Change-Id: I6a18adec99402838690971eb37ee0617cdc15920 Reviewed-on: https://chromium-review.googlesource.com/c/1309763 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#57536}
-
- 12 Oct, 2018 1 commit
-
-
Georg Neis authored
As part of the standard objects serialization, collect the identities of the Array prototype and the Object prototype from all native contexts. This information is then be consulted at compile time instead of having to call Isolate::IsInAnyContext (which accesses the heap). Bug: v8:7790 Change-Id: I26a8271afadfce243a8032e4a012f249ce3c2a60 Reviewed-on: https://chromium-review.googlesource.com/c/1275815 Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#56599}
-
- 23 Aug, 2018 1 commit
-
-
Michael Starzinger authored
R=titzer@chromium.org BUG=v8:6408 Change-Id: I277beafaace334883ddbe63b9615e3f18085ce5e Reviewed-on: https://chromium-review.googlesource.com/1186411 Commit-Queue: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Ben Titzer <titzer@chromium.org> Cr-Commit-Position: refs/heads/master@{#55350}
-
- 15 Jun, 2018 1 commit
-
-
Leszek Swirski authored
Bug: v8:7786 Change-Id: I1e568ff6da02dfd92b24b8badd665096cf49a13a Reviewed-on: https://chromium-review.googlesource.com/1101321Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#53747}
-
- 04 Apr, 2018 1 commit
-
-
Ross McIlroy authored
With the Ignition + Turbofan pipeline there is very little overlap between the data needed for unoptimized compilation and optimized compilation. As a result, it is cleaner to split up the CompilationInfo into UnoptimizedCompilationInfo and OptimizedCompilationInfo. Doing so also necessitate splitting up CompilationJob into UnoptimizedCompilationJob and OptimizedCompilationJob - again there is not much overlap so this seems cleaner. Change-Id: I1056ad520937b7f8582e4fc3ca8f4910742de30a Reviewed-on: https://chromium-review.googlesource.com/995895 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#52369}
-
- 13 Dec, 2017 1 commit
-
-
Tobias Tebbi authored
I also used the opportunity to clean up the loop peeler a bit by making the class stateful, to avoid passing long argument lists around. Bug: v8:5864 Change-Id: I2e034c6eabd381b01e15cf3e6aa3ce7b14e7b3d8 Reviewed-on: https://chromium-review.googlesource.com/822933 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#50067}
-
- 18 Sep, 2017 1 commit
-
-
Mythri authored
SetForceInline flag is no longer used. This flag was added for inlining some of the javascript builtins. They are now ported to TurboFan builtins. This cl removes SetForceInline runtime function and the corresponding bits in the SharedFunctionInfo. Also update inlining heuristics to not look for this bit. Bug: v8:6682 Change-Id: Ie8df9648332b765a556e24609c38b4e55b810527 Reviewed-on: https://chromium-review.googlesource.com/668436Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Mythri Alle <mythria@chromium.org> Cr-Commit-Position: refs/heads/master@{#48065}
-
- 11 Sep, 2017 1 commit
-
-
Jaroslav Sevcik authored
[turbofan] Reland^3 "Polymorphic inlining - try merge map check dispatch with function call dispatch." This reverts commit ae28e0cf. Bug: chromium:758096 Change-Id: I6541bd1ba46cd5dfb942ed3f3d382e047fb1f3e6 Reviewed-on: https://chromium-review.googlesource.com/657401Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#47934}
-
- 06 Sep, 2017 1 commit
-
-
Jaroslav Sevcik authored
Revert "[turbofan] Reland^2 "Polymorphic inlining - try merge map check dispatch with function call dispatch."" This reverts commit 8cf4aafc. Reason for revert: Likely crashes Canary. https://crash.corp.google.com/browse?q=product.name%3D%27Chrome_Mac%27%20AND%20product.version%3D%2763.0.3207.0%27%20AND%20custom_data.ChromeCrashProto.channel%3D%27canary%27%20AND%20custom_data.ChromeCrashProto.ptype%3D%27renderer%27%20AND%20custom_data.ChromeCrashProto.magic_signature_1.name%3D%27v8%3A%3Ainternal%3A%3Acompiler%3A%3AGraphTrimmer%3A%3ATrimGraph%27&sql_dialect=dremelsql&ignore_case=false&enable_rewrite=true&omit_field_name=&omit_field_value=&omit_field_opt=%3D&unnest= Original change's description: > [turbofan] Reland^2 "Polymorphic inlining - try merge map check dispatch with function call dispatch." > > This reverts commit e26e6d88. > > Bug: chromium:758096 > Change-Id: I1d8ecda995c93c84a9a3c24da041fdb730dbd3b2 > Reviewed-on: https://chromium-review.googlesource.com/628169 > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> > Cr-Commit-Position: refs/heads/master@{#47812} TBR=jarin@chromium.org,tebbi@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: chromium:758096 Change-Id: I96b62d08efa25ac1ead30e08401919d42a20ca1b Reviewed-on: https://chromium-review.googlesource.com/652370Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#47845}
-
- 05 Sep, 2017 1 commit
-
-
Jaroslav Sevcik authored
[turbofan] Reland^2 "Polymorphic inlining - try merge map check dispatch with function call dispatch." This reverts commit e26e6d88. Bug: chromium:758096 Change-Id: I1d8ecda995c93c84a9a3c24da041fdb730dbd3b2 Reviewed-on: https://chromium-review.googlesource.com/628169Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#47812}
-
- 23 Aug, 2017 1 commit
-
-
Jaroslav Sevcik authored
Revert "Reland "[turbofan] Polymorphic inlining - try merge map check dispatch with function call dispatch."" This reverts commit 4cee9fbc. Reason for revert: Breaks on clusterfuzz. Original change's description: > Reland "[turbofan] Polymorphic inlining - try merge map check dispatch with function call dispatch." > > This reverts commit 57af6811. > > This adds the checkpoint between the call and the polymorphic load. > I thought that JSCall with constant target cannot cause eager deopt, > but Canary seems to disagree (http://crbug.com/718019). > > Bug: v8:5267,chromium:718019 > Change-Id: I552b850db6beb93e733b371ad0e7204513da1dc4 > Reviewed-on: https://chromium-review.googlesource.com/622867 > Reviewed-by: Tobias Tebbi <tebbi@chromium.org> > Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> > Cr-Commit-Position: refs/heads/master@{#47521} TBR=jarin@chromium.org,tebbi@chromium.org,bmeurer@chromium.org Change-Id: Ib333883fa27b79fcd766c33997cb0ce46547bb94 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:5267, chromium:718019 Reviewed-on: https://chromium-review.googlesource.com/628076Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#47539}
-
- 22 Aug, 2017 1 commit
-
-
Jaroslav Sevcik authored
Reland "[turbofan] Polymorphic inlining - try merge map check dispatch with function call dispatch." This reverts commit 57af6811. This adds the checkpoint between the call and the polymorphic load. I thought that JSCall with constant target cannot cause eager deopt, but Canary seems to disagree (http://crbug.com/718019). Bug: v8:5267,chromium:718019 Change-Id: I552b850db6beb93e733b371ad0e7204513da1dc4 Reviewed-on: https://chromium-review.googlesource.com/622867Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#47521}
-
- 20 Aug, 2017 1 commit
-
-
Jaroslav Sevcik authored
Revert "[turbofan] Polymorphic inlining - try merge map check dispatch with function call dispatch." This reverts commit 627c440b. Reason for revert: Likely breaks Canary. Original change's description: > [turbofan] Polymorphic inlining - try merge map check dispatch with function call dispatch. > > This improves delta blue by about >5%. Unfortunately, this still does not help load > and check elimination because we do not learn maps from control flow. > > Change-Id: I49a97dbc40576b9bc80c87ec2b459e37ba9b4440 > Bug: v8:5267 > Reviewed-on: https://chromium-review.googlesource.com/618328 > Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> > Cr-Commit-Position: refs/heads/master@{#47405} TBR=jarin@chromium.org,bmeurer@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: v8:5267 Change-Id: Id12519ae98b42b57fbef86d0685950f6c85f5082 Reviewed-on: https://chromium-review.googlesource.com/622827Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#47457}
-
- 17 Aug, 2017 1 commit
-
-
Jaroslav Sevcik authored
This improves delta blue by about >5%. Unfortunately, this still does not help load and check elimination because we do not learn maps from control flow. Change-Id: I49a97dbc40576b9bc80c87ec2b459e37ba9b4440 Bug: v8:5267 Reviewed-on: https://chromium-review.googlesource.com/618328 Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#47405}
-
- 10 Aug, 2017 2 commits
-
-
Mythri authored
Inline only if there is some additional budget left even after inlining the current candidate. This allows any small functions exposed by this function to be inlined. Earlier we used to check for the limit after inlining the function. Bug: v8:6682 Change-Id: Ia3931751f212e89ca6d9c8500c6b3a909f12d962 Reviewed-on: https://chromium-review.googlesource.com/608970Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Mythri Alle <mythria@chromium.org> Cr-Commit-Position: refs/heads/master@{#47285}
-
Mythri Alle authored
This reverts commit 48cee973. Reason for revert: Including size of parent function in the inlining budget does not allow even small functions to be inlined into large functions. This causes regressions on some benchmarks: https://bugs.chromium.org/p/chromium/issues/detail?id=747247 Bug:747247 Original change's description: > [Turbofan] Include size of parent function in inlining decisions. > > The size of parent function is not considered when taking decisions > on which functions to inline. This cl, includes the size of the > parent function to the cumulative count. > > Bug: > Change-Id: Ib8f4ec684f8313f7c2e29237580bb3c0403930bd > Reviewed-on: https://chromium-review.googlesource.com/506205 > Commit-Queue: Mythri Alle <mythria@chromium.org> > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Cr-Commit-Position: refs/heads/master@{#46789} TBR=mstarzinger@chromium.org,mythria@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Change-Id: Ic8a5282f4f41474dc1608044a81920cdd794437d Reviewed-on: https://chromium-review.googlesource.com/609780Reviewed-by:
Mythri Alle <mythria@chromium.org> Commit-Queue: Mythri Alle <mythria@chromium.org> Cr-Commit-Position: refs/heads/master@{#47270}
-
- 20 Jul, 2017 1 commit
-
-
Mythri authored
The size of parent function is not considered when taking decisions on which functions to inline. This cl, includes the size of the parent function to the cumulative count. Bug: Change-Id: Ib8f4ec684f8313f7c2e29237580bb3c0403930bd Reviewed-on: https://chromium-review.googlesource.com/506205 Commit-Queue: Mythri Alle <mythria@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#46789}
-
- 11 Jul, 2017 1 commit
-
-
Alexandre Talon authored
Each reducer now has a virtual reducer_name function, returning its name (the name of the class containing this reducer). This gets displayed when using the --trace_turbo_reduction flag. Also when using this flags more messages are displayed. Actually when a node is replaced in-place (which is called an update of the node), other reducers can still update it right after the in-place replacement. When a node is really replaced (not in-place), then we stop trying to apply reducers to it before we propagate the reduction through the relevant nodes. Before a message got printed only for the last reduction it went through. So in case a node was reduced in-place several times in a row, only the last update was printed, or none at all if after being reduced in-place it got reduced by being replaced by another node: only the non-in-place replacement was showed. Now each time an in-place reduction is applied to a node, a message gets printed. Bug: Change-Id: Id0f816fecd44c01d0253966c6decc4861be0c2fa Reviewed-on: https://chromium-review.googlesource.com/563365Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Alexandre Talon <alexandret@google.com> Cr-Commit-Position: refs/heads/master@{#46552}
-
- 19 May, 2017 1 commit
-
-
Mythri authored
In the current implementation the decision to inline polymorphic function calls applies to all functions. Either we inline all of them or none of them. Also, we decide to inline if the size of one of function is less than the FLAG_max_inlined_nodes. This cl changes it to a decision on individual functions. In the case of polymorphic calls, we might inline some of the functions and not inline others. Bug: Change-Id: I2f4049b5e55445b4858b260d289c96090c6aaa74 Reviewed-on: https://chromium-review.googlesource.com/508668 Commit-Queue: Mythri Alle <mythria@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#45428}
-
- 03 May, 2017 1 commit
-
-
bmeurer authored
When we don't know the call count for a given call site (i.e. for inlined accessors), we put 0 as call frequency so far. But as of https://codereview.chromium.org/2859433002, this would completely disable the inlining of those calls, since 0 is interpreted as never called, which is not what we want. So instead of defaulting to 0, add a dedicated sentinel, whose value is NaN, which makes the call site eligible for inlining, but not high priority (as it was before the CL mentioned above). BUG=v8:4493,v8:5267 R=jarin@chromium.org Review-Url: https://codereview.chromium.org/2856103002 Cr-Commit-Position: refs/heads/master@{#45053}
-
- 06 Feb, 2017 1 commit
-
-
mstarzinger authored
This adapts the inlining logic to allow for inlining based solely on a statically known underlying SharedFunctionInfo instead of a concrete closure of the call target. In cases where the closure is known, its bound context is constant promoted just as before. In the new cases where only the SFI for an entire class of closures is known, we use the dynamic SSA-value of the bound context. R=bmeurer@chromium.org BUG=v8:2206 Review-Url: https://codereview.chromium.org/2626783003 Cr-Commit-Position: refs/heads/master@{#42968}
-
- 14 Nov, 2016 1 commit
-
-
tebbi authored
This CL enables precise source positions for all V8 compilers. It merges compiler::SourcePosition and internal::SourcePosition to a single class used throughout the codebase. The new internal::SourcePosition instances store an id identifying an inlined function in addition to a script offset. SourcePosition::InliningId() refers to a the new table DeoptimizationInputData::InliningPositions(), which provides the following data for every inlining id: - The inlined SharedFunctionInfo as an offset into DeoptimizationInfo::LiteralArray - The SourcePosition of the inlining. Recursively, this yields the full inlining stack. Before the Code object is created, the same information can be found in CompilationInfo::inlined_functions(). If SourcePosition::InliningId() is SourcePosition::kNotInlined, it refers to the outer (non-inlined) function. So every SourcePosition has full information about its inlining stack, as long as the corresponding Code object is known. The internal represenation of a source position is a positive 64bit integer. All compilers create now appropriate source positions for inlined functions. In the case of Turbofan, this required using AstGraphBuilderWithPositions for inlined functions too. So this class is now moved to a header file. At the moment, the additional information in source positions is only used in --trace-deopt and --code-comments. The profiler needs to be updated, at the moment it gets the correct script offsets from the deopt info, but the wrong script id from the reconstructed deopt stack, which can lead to wrong outputs. This should be resolved by making the profiler use the new inlining information for deopts. I activated the inlined deoptimization tests in test-cpu-profiler.cc for Turbofan, changing them to a case where the deopt stack and the inlining position agree. It is currently still broken for other cases. The following additional changes were necessary: - The source position table (internal::SourcePositionTableBuilder etc.) supports now 64bit source positions. Encoding source positions in a single 64bit int together with the difference encoding in the source position table results in very little overhead for the inlining id, since only 12% of the source positions in Octane have a changed inlining id. - The class HPositionInfo was effectively dead code and is now removed. - SourcePosition has new printing and information facilities, including computing a full inlining stack. - I had to rename compiler/source-position.{h,cc} to compiler/compiler-source-position-table.{h,cc} to avoid clashes with the new src/source-position.cc file. - I wrote the new wrapper PodArray for ByteArray. It is a template working with any POD-type. This is used in DeoptimizationInputData::InliningPositions(). - I removed HInlinedFunctionInfo and HGraph::inlined_function_infos, because they were only used for the now obsolete Crankshaft inlining ids. - Crankshaft managed a list of inlined functions in Lithium: LChunk::inlined_functions. This is an analog structure to CompilationInfo::inlined_functions. So I removed LChunk::inlined_functions and made Crankshaft use CompilationInfo::inlined_functions instead, because this was necessary to register the offsets into the literal array in a uniform way. This is a safe change because LChunk::inlined_functions has no other uses and the functions in CompilationInfo::inlined_functions have a strictly longer lifespan, being created earlier (in Hydrogen already). BUG=v8:5432 Review-Url: https://codereview.chromium.org/2451853002 Cr-Commit-Position: refs/heads/master@{#40975}
-
- 14 Sep, 2016 1 commit
-
-
bmeurer authored
Extract the call counts from the type feedback vector during graph building (either via the AstGraphBuilder or the BytecodeGraphBuilder), and put them onto the JSCallFunction and JSCallConstruct operators, so that they work even across inlinine through .apply and .call (which was previously hacked by creating a temporary type feedback vector for those). The next logic step will be to make those call counts into real relative call frequencies (also during graph building), so that we can make inlining decisions that make sense for the function being optimized (where absolute values are misleading). R=jarin@chromium.org BUG=v8:5267,v8:5372 Review-Url: https://codereview.chromium.org/2330883002 Cr-Commit-Position: refs/heads/master@{#39400}
-
- 09 Sep, 2016 1 commit
-
-
bmeurer authored
For call sites where the target is not a known constant, but potentially a list of known constants (i.e. a Phi with all HeapConstant inputs), we still record the call site as a potential candidate for inlining. In case the heuristic picks that candidate for inlining, we expand the call site to a dispatched call site and invoke the actual inlining logic for all the nested call sites. Like Crankshaft, we currently allow up to 4 targets for polymorphic inlining, although we might want to refine that later. This approach is different from what Crankshaft does in that we don't duplicate the evaluation of the parameters per polymorphic case. Instead we first perform the load of the target (which usually dispatches based on the receiver map), then we evaluate all the parameters, and then we dispatch again based on the known targets. This might generate better or worse code compared to what Crankshaft does, and for the cases where we generate worse code (i.e. because we have only trivial parameters or no parameters at all), we might want to investigate optimizing away the double dispatch in the future. R=mvstanton@chromium.org BUG=v8:5267,v8:5365 Review-Url: https://codereview.chromium.org/2325943002 Cr-Commit-Position: refs/heads/master@{#39302}
-
- 09 Nov, 2015 1 commit
-
-
bmeurer authored
Introduce Reducer::Finalize, which get's called by the GraphReducer once all reductions are done, and use this to implement full inlining as part of the regular reducer fixpoint. R=jarin@chromium.org BUG=v8:4493 LOG=n Review URL: https://codereview.chromium.org/1419373012 Cr-Commit-Position: refs/heads/master@{#31875}
-
- 03 Nov, 2015 1 commit
-
-
mstarzinger authored
This changes the inlining candidates to be stored in a sorted set of unique entries instead of a vector. We can avoid the final sorting operation by amortizing the cost across insertions and also duplicate entries are not created in the first place. Duplicate entries cause crashes when candidates are processed. R=bmeurer@chromium.org BUG=chromium:549113 LOG=n Review URL: https://codereview.chromium.org/1430553003 Cr-Commit-Position: refs/heads/master@{#31742}
-
- 29 Oct, 2015 1 commit
-
-
mstarzinger authored
This adapts the general purpose inlining heuristic to not inline within or across the boundary of asm.js code. Note that this only affects the heuristics, from a functional point of view it is still supported. R=bmeurer@chromium.org BUG=chromium:549000 LOG=n Review URL: https://codereview.chromium.org/1418823005 Cr-Commit-Position: refs/heads/master@{#31654}
-
- 14 Oct, 2015 1 commit
-
-
mstarzinger authored
This is a first prototype for a rudimentary inlining heuristic allowing enabling of general inlining based existing budget flags. Also note that this approach does not yet work for multi-level inlining, for now the list of candidates is processed exactly once. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1406543002 Cr-Commit-Position: refs/heads/master@{#31249}
-
- 07 Oct, 2015 1 commit
-
-
mstarzinger authored
This separates the core machinery and the heuristics involved with inlining functions calls. So far the heuristic only respects our %SetForceInlineFlag hint, but it will the place where general inlining heuristics can live without impeding clarity of the core machinery. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1391903002 Cr-Commit-Position: refs/heads/master@{#31150}
-