Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(21)

Issue 2181743004: [turbofan] Speculative optimize number operations with no feedback.

Created:
4 years, 5 months ago by Benedikt Meurer
Modified:
4 years, 5 months ago
Reviewers:
Jarin
CC:
v8-reviews_googlegroups.com
Base URL:
https://chromium.googlesource.com/v8/v8.git@631318
Target Ref:
refs/pending/heads/master
Project:
v8
Visibility:
Public.

Description

[turbofan] Speculative optimize number operations with no feedback. Introduce a dedicated NumberOperationHint enum that represents the feedback we can use for speculative number operations. On top of that speculatively assume signed32 or number if we don't have any feedback for a certain number operation yet (we choose signed32 as long as the inputs can be signed32, otherwise we speculately choose number). Also eliminate redundant speculative operators along the effect chain during the load elimination phase. If we see a redundant speculative number operation, we always use the dominating one, even if that type feedback is different than ours. R=jarin@chromium.org BUG=v8:4930

Patch Set 1 #

Total comments: 3
Unified diffs Side-by-side diffs Delta from patch set Stats (+349 lines, -224 lines) Patch
M src/compiler/js-typed-lowering.cc View 13 chunks +148 lines, -135 lines 0 comments Download
M src/compiler/redundancy-elimination.h View 2 chunks +3 lines, -1 line 1 comment Download
M src/compiler/redundancy-elimination.cc View 4 chunks +39 lines, -3 lines 1 comment Download
M src/compiler/simplified-lowering.cc View 18 chunks +83 lines, -30 lines 1 comment Download
M src/compiler/simplified-operator.h View 3 chunks +18 lines, -14 lines 0 comments Download
M src/compiler/simplified-operator.cc View 4 chunks +54 lines, -41 lines 0 comments Download
M test/cctest/test-serialize.cc View 2 chunks +4 lines, -0 lines 0 comments Download

Depends on Patchset:

Messages

Total messages: 7 (4 generated)
Benedikt Meurer
4 years, 5 months ago (2016-07-26 08:51:33 UTC) #1
Benedikt Meurer
Hey Jaro, Here's the type feedback speculation. Not using soft deopts for now, but we ...
4 years, 5 months ago (2016-07-26 08:52:49 UTC) #4
Jarin
4 years, 5 months ago (2016-07-26 09:39:21 UTC) #7
This is a scary CL combining bunch of things - could we split it up into several
CLs? I am imagining:

- Unification of hints.
- None feedback handling.
- Redundancy elimination part.

https://codereview.chromium.org/2181743004/diff/1/src/compiler/redundancy-eli...
File src/compiler/redundancy-elimination.cc (right):

https://codereview.chromium.org/2181743004/diff/1/src/compiler/redundancy-eli...
src/compiler/redundancy-elimination.cc:143: template <typename Predicate>
Do we really need to have templates for this? How about passing a flag to the
compatibility check?

https://codereview.chromium.org/2181743004/diff/1/src/compiler/redundancy-eli...
File src/compiler/redundancy-elimination.h (right):

https://codereview.chromium.org/2181743004/diff/1/src/compiler/redundancy-eli...
src/compiler/redundancy-elimination.h:28: class EffectPathChecks final {
How about moving this class to the .cc file?

https://codereview.chromium.org/2181743004/diff/1/src/compiler/simplified-low...
File src/compiler/simplified-lowering.cc (right):

https://codereview.chromium.org/2181743004/diff/1/src/compiler/simplified-low...
src/compiler/simplified-lowering.cc:1112: hint =
NumberOperationHint::kNumberOrOddball;
I doubt this helps anything - if the type cannot be Signed32, then it would have
to be some funky type to benefit (such as minus-zero or NaN or bool). Perhaps it
would be best to keep it simple and always set Signed32 here.

Powered by Google App Engine
This is Rietveld 408576698