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

Side by Side Diff: src/compiler/js-typed-lowering.cc

Issue 2228983002: [turbofan] Simplify BinaryOperationHints and CompareOperationHints. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix compile for realz Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/compiler/js-operator.cc ('k') | src/compiler/type-hint-analyzer.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/compiler/js-typed-lowering.h" 5 #include "src/compiler/js-typed-lowering.h"
6 6
7 #include "src/code-factory.h" 7 #include "src/code-factory.h"
8 #include "src/compilation-dependencies.h" 8 #include "src/compilation-dependencies.h"
9 #include "src/compiler/access-builder.h" 9 #include "src/compiler/access-builder.h"
10 #include "src/compiler/js-graph.h" 10 #include "src/compiler/js-graph.h"
(...skipping 15 matching lines...) Expand all
26 class JSBinopReduction final { 26 class JSBinopReduction final {
27 public: 27 public:
28 JSBinopReduction(JSTypedLowering* lowering, Node* node) 28 JSBinopReduction(JSTypedLowering* lowering, Node* node)
29 : lowering_(lowering), node_(node) {} 29 : lowering_(lowering), node_(node) {}
30 30
31 bool GetBinaryNumberOperationHint(NumberOperationHint* hint) { 31 bool GetBinaryNumberOperationHint(NumberOperationHint* hint) {
32 if (lowering_->flags() & JSTypedLowering::kDeoptimizationEnabled) { 32 if (lowering_->flags() & JSTypedLowering::kDeoptimizationEnabled) {
33 DCHECK_NE(0, node_->op()->ControlOutputCount()); 33 DCHECK_NE(0, node_->op()->ControlOutputCount());
34 DCHECK_EQ(1, node_->op()->EffectOutputCount()); 34 DCHECK_EQ(1, node_->op()->EffectOutputCount());
35 DCHECK_EQ(1, OperatorProperties::GetFrameStateInputCount(node_->op())); 35 DCHECK_EQ(1, OperatorProperties::GetFrameStateInputCount(node_->op()));
36 BinaryOperationHints hints = BinaryOperationHintsOf(node_->op()); 36 switch (BinaryOperationHintOf(node_->op())) {
37 switch (hints.combined()) { 37 case BinaryOperationHint::kSignedSmall:
38 case BinaryOperationHints::kSignedSmall:
39 *hint = NumberOperationHint::kSignedSmall; 38 *hint = NumberOperationHint::kSignedSmall;
40 return true; 39 return true;
41 case BinaryOperationHints::kSigned32: 40 case BinaryOperationHint::kSigned32:
42 *hint = NumberOperationHint::kSigned32; 41 *hint = NumberOperationHint::kSigned32;
43 return true; 42 return true;
44 case BinaryOperationHints::kNumberOrOddball: 43 case BinaryOperationHint::kNumberOrOddball:
45 *hint = NumberOperationHint::kNumberOrOddball; 44 *hint = NumberOperationHint::kNumberOrOddball;
46 return true; 45 return true;
47 case BinaryOperationHints::kAny: 46 case BinaryOperationHint::kAny:
48 case BinaryOperationHints::kNone: 47 case BinaryOperationHint::kNone:
49 case BinaryOperationHints::kString:
50 break; 48 break;
51 } 49 }
52 } 50 }
53 return false; 51 return false;
54 } 52 }
55 53
56 bool GetCompareNumberOperationHint(NumberOperationHint* hint) { 54 bool GetCompareNumberOperationHint(NumberOperationHint* hint) {
57 if (lowering_->flags() & JSTypedLowering::kDeoptimizationEnabled) { 55 if (lowering_->flags() & JSTypedLowering::kDeoptimizationEnabled) {
58 DCHECK_EQ(1, node_->op()->EffectOutputCount()); 56 DCHECK_EQ(1, node_->op()->EffectOutputCount());
59 CompareOperationHints hints = CompareOperationHintsOf(node_->op()); 57 switch (CompareOperationHintOf(node_->op())) {
60 switch (hints.combined()) { 58 case CompareOperationHint::kSignedSmall:
61 case CompareOperationHints::kSignedSmall:
62 *hint = NumberOperationHint::kSignedSmall; 59 *hint = NumberOperationHint::kSignedSmall;
63 return true; 60 return true;
64 case CompareOperationHints::kNumber: 61 case CompareOperationHint::kNumber:
65 *hint = NumberOperationHint::kNumber; 62 *hint = NumberOperationHint::kNumber;
66 return true; 63 return true;
67 case CompareOperationHints::kNumberOrOddball: 64 case CompareOperationHint::kNumberOrOddball:
68 *hint = NumberOperationHint::kNumberOrOddball; 65 *hint = NumberOperationHint::kNumberOrOddball;
69 return true; 66 return true;
70 case CompareOperationHints::kAny: 67 case CompareOperationHint::kAny:
71 case CompareOperationHints::kNone: 68 case CompareOperationHint::kNone:
72 case CompareOperationHints::kString:
73 case CompareOperationHints::kBoolean:
74 case CompareOperationHints::kUniqueName:
75 case CompareOperationHints::kInternalizedString:
76 case CompareOperationHints::kReceiver:
77 break; 69 break;
78 } 70 }
79 } 71 }
80 return false; 72 return false;
81 } 73 }
82 74
83 void ConvertInputsToNumber() { 75 void ConvertInputsToNumber() {
84 // To convert the inputs to numbers, we have to provide frame states 76 // To convert the inputs to numbers, we have to provide frame states
85 // for lazy bailouts in the ToNumber conversions. 77 // for lazy bailouts in the ToNumber conversions.
86 // We use a little hack here: we take the frame state before the binary 78 // We use a little hack here: we take the frame state before the binary
(...skipping 2077 matching lines...) Expand 10 before | Expand all | Expand 10 after
2164 } 2156 }
2165 2157
2166 2158
2167 CompilationDependencies* JSTypedLowering::dependencies() const { 2159 CompilationDependencies* JSTypedLowering::dependencies() const {
2168 return dependencies_; 2160 return dependencies_;
2169 } 2161 }
2170 2162
2171 } // namespace compiler 2163 } // namespace compiler
2172 } // namespace internal 2164 } // namespace internal
2173 } // namespace v8 2165 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/js-operator.cc ('k') | src/compiler/type-hint-analyzer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698