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

Side by Side Diff: src/compiler/effect-control-linearizer.h

Issue 2033143002: [turbofan] Add frame state propagation to linearizer. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@local_turbofan-checkpoint-6
Patch Set: Addressed comment. Created 4 years, 6 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 | « no previous file | src/compiler/effect-control-linearizer.cc » ('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 2016 the V8 project authors. All rights reserved. 1 // Copyright 2016 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 #ifndef V8_COMPILER_EFFECT_CONTROL_LINEARIZER_H_ 5 #ifndef V8_COMPILER_EFFECT_CONTROL_LINEARIZER_H_
6 #define V8_COMPILER_EFFECT_CONTROL_LINEARIZER_H_ 6 #define V8_COMPILER_EFFECT_CONTROL_LINEARIZER_H_
7 7
8 #include "src/compiler/common-operator.h" 8 #include "src/compiler/common-operator.h"
9 #include "src/compiler/node.h" 9 #include "src/compiler/node.h"
10 #include "src/compiler/simplified-operator.h" 10 #include "src/compiler/simplified-operator.h"
(...skipping 12 matching lines...) Expand all
23 class Graph; 23 class Graph;
24 class Schedule; 24 class Schedule;
25 25
26 class EffectControlLinearizer { 26 class EffectControlLinearizer {
27 public: 27 public:
28 EffectControlLinearizer(JSGraph* graph, Schedule* schedule, Zone* temp_zone); 28 EffectControlLinearizer(JSGraph* graph, Schedule* schedule, Zone* temp_zone);
29 29
30 void Run(); 30 void Run();
31 31
32 private: 32 private:
33 void ProcessNode(Node* node, Node** current_effect, Node** control); 33 void ProcessNode(Node* node, Node** frame_state, Node** effect,
34 Node** control);
34 35
35 struct ValueEffectControl { 36 struct ValueEffectControl {
36 Node* value; 37 Node* value;
37 Node* effect; 38 Node* effect;
38 Node* control; 39 Node* control;
39 ValueEffectControl(Node* value, Node* effect, Node* control) 40 ValueEffectControl(Node* value, Node* effect, Node* control)
40 : value(value), effect(effect), control(control) {} 41 : value(value), effect(effect), control(control) {}
41 }; 42 };
42 43
43 bool TryWireInStateEffect(Node* node, Node** effect, Node** control); 44 bool TryWireInStateEffect(Node* node, Node* frame_state, Node** effect,
45 Node** control);
44 ValueEffectControl LowerTypeGuard(Node* node, Node* effect, Node* control); 46 ValueEffectControl LowerTypeGuard(Node* node, Node* effect, Node* control);
45 ValueEffectControl LowerChangeBitToTagged(Node* node, Node* effect, 47 ValueEffectControl LowerChangeBitToTagged(Node* node, Node* effect,
46 Node* control); 48 Node* control);
47 ValueEffectControl LowerChangeInt31ToTaggedSigned(Node* node, Node* effect, 49 ValueEffectControl LowerChangeInt31ToTaggedSigned(Node* node, Node* effect,
48 Node* control); 50 Node* control);
49 ValueEffectControl LowerChangeInt32ToTagged(Node* node, Node* effect, 51 ValueEffectControl LowerChangeInt32ToTagged(Node* node, Node* effect,
50 Node* control); 52 Node* control);
51 ValueEffectControl LowerChangeUint32ToTagged(Node* node, Node* effect, 53 ValueEffectControl LowerChangeUint32ToTagged(Node* node, Node* effect,
52 Node* control); 54 Node* control);
53 ValueEffectControl LowerChangeFloat64ToTagged(Node* node, Node* effect, 55 ValueEffectControl LowerChangeFloat64ToTagged(Node* node, Node* effect,
54 Node* control); 56 Node* control);
55 ValueEffectControl LowerChangeTaggedSignedToInt32(Node* node, Node* effect, 57 ValueEffectControl LowerChangeTaggedSignedToInt32(Node* node, Node* effect,
56 Node* control); 58 Node* control);
57 ValueEffectControl LowerChangeTaggedToBit(Node* node, Node* effect, 59 ValueEffectControl LowerChangeTaggedToBit(Node* node, Node* effect,
58 Node* control); 60 Node* control);
59 ValueEffectControl LowerChangeTaggedToInt32(Node* node, Node* effect, 61 ValueEffectControl LowerChangeTaggedToInt32(Node* node, Node* effect,
60 Node* control); 62 Node* control);
61 ValueEffectControl LowerChangeTaggedToUint32(Node* node, Node* effect, 63 ValueEffectControl LowerChangeTaggedToUint32(Node* node, Node* effect,
62 Node* control); 64 Node* control);
63 ValueEffectControl LowerCheckedUint32ToInt32(Node* node, Node* effect, 65 ValueEffectControl LowerCheckedUint32ToInt32(Node* node, Node* frame_state,
64 Node* control); 66 Node* effect, Node* control);
65 ValueEffectControl LowerCheckedFloat64ToInt32(Node* node, Node* effect, 67 ValueEffectControl LowerCheckedFloat64ToInt32(Node* node, Node* frame_state,
66 Node* control); 68 Node* effect, Node* control);
67 ValueEffectControl LowerCheckedTaggedToInt32(Node* node, Node* effect, 69 ValueEffectControl LowerCheckedTaggedToInt32(Node* node, Node* frame_state,
68 Node* control); 70 Node* effect, Node* control);
69 ValueEffectControl LowerCheckedTaggedToFloat64(Node* node, Node* effect, 71 ValueEffectControl LowerCheckedTaggedToFloat64(Node* node, Node* frame_state,
70 Node* control); 72 Node* effect, Node* control);
71 ValueEffectControl LowerChangeTaggedToFloat64(Node* node, Node* effect, 73 ValueEffectControl LowerChangeTaggedToFloat64(Node* node, Node* effect,
72 Node* control); 74 Node* control);
73 ValueEffectControl LowerTruncateTaggedToFloat64(Node* node, Node* effect, 75 ValueEffectControl LowerTruncateTaggedToFloat64(Node* node, Node* effect,
74 Node* control); 76 Node* control);
75 ValueEffectControl LowerTruncateTaggedToWord32(Node* node, Node* effect, 77 ValueEffectControl LowerTruncateTaggedToWord32(Node* node, Node* effect,
76 Node* control); 78 Node* control);
77 ValueEffectControl LowerObjectIsCallable(Node* node, Node* effect, 79 ValueEffectControl LowerObjectIsCallable(Node* node, Node* effect,
78 Node* control); 80 Node* control);
79 ValueEffectControl LowerObjectIsNumber(Node* node, Node* effect, 81 ValueEffectControl LowerObjectIsNumber(Node* node, Node* effect,
80 Node* control); 82 Node* control);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
118 JSGraph* js_graph_; 120 JSGraph* js_graph_;
119 Schedule* schedule_; 121 Schedule* schedule_;
120 Zone* temp_zone_; 122 Zone* temp_zone_;
121 }; 123 };
122 124
123 } // namespace compiler 125 } // namespace compiler
124 } // namespace internal 126 } // namespace internal
125 } // namespace v8 127 } // namespace v8
126 128
127 #endif // V8_COMPILER_EFFECT_CONTROL_LINEARIZER_H_ 129 #endif // V8_COMPILER_EFFECT_CONTROL_LINEARIZER_H_
OLDNEW
« no previous file with comments | « no previous file | src/compiler/effect-control-linearizer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698