Chromium Code Reviews| Index: src/compiler/effect-control-linearizer.h |
| diff --git a/src/compiler/effect-control-linearizer.h b/src/compiler/effect-control-linearizer.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..846a6dfd092bb91c731a7dee0cacc6048f3b8d5a |
| --- /dev/null |
| +++ b/src/compiler/effect-control-linearizer.h |
| @@ -0,0 +1,80 @@ |
| +// Copyright 2016 the V8 project authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef V8_COMPILER_EFFECT_CONTROL_LINEARIZER_H_ |
|
Benedikt Meurer
2016/04/18 04:34:18
Please rename to effect-control-linearization.h/.c
|
| +#define V8_COMPILER_EFFECT_CONTROL_LINEARIZER_H_ |
| + |
| +#include "src/compiler/common-operator.h" |
| +#include "src/compiler/node.h" |
| +#include "src/compiler/simplified-operator.h" |
| + |
| +namespace v8 { |
| +namespace internal { |
| + |
| +class Zone; |
| + |
| +namespace compiler { |
| + |
| +class CommonOperatorBuilder; |
| +class SimplifiedOperatorBuilder; |
| +class MachineOperatorBuilder; |
| +class JSGraph; |
| +class Graph; |
| +class Schedule; |
| + |
| +class EffectControlLinearizer { |
|
Benedikt Meurer
2016/04/18 04:34:18
Please rename to EffectControlLinearization to mat
|
| + public: |
| + EffectControlLinearizer(JSGraph* graph, Schedule* schedule, Zone* temp_zone); |
| + |
| + void Run(); |
| + |
| + private: |
| + void ProcessNode(Node* node, Node** current_effect, Node** control); |
| + |
| + struct ValueEffectControl { |
| + Node* value; |
| + Node* effect; |
| + Node* control; |
| + ValueEffectControl(Node* value, Node* effect, Node* control) |
| + : value(value), effect(effect), control(control) {} |
| + }; |
| + |
| + bool TryWireInStateEffect(Node* node, Node** effect, Node** control); |
| + ValueEffectControl LowerChangeInt32ToTagged(Node* node, Node* effect, |
| + Node* control); |
| + ValueEffectControl LowerChangeUint32ToTagged(Node* node, Node* effect, |
| + Node* control); |
| + ValueEffectControl LowerChangeFloat64ToTagged(Node* node, Node* effect, |
| + Node* control); |
| + ValueEffectControl AllocateHeapNumberWithValue(Node* node, Node* effect, |
| + Node* control); |
| + |
| + Node* ChangeInt32ToSmi(Node* value); |
| + Node* ChangeUint32ToSmi(Node* value); |
| + Node* ChangeInt32ToFloat64(Node* value); |
| + Node* ChangeUint32ToFloat64(Node* value); |
| + |
| + Node* HeapNumberValueIndexConstant(); |
| + Node* SmiMaxValueConstant(); |
| + Node* SmiShiftBitsConstant(); |
| + |
| + JSGraph* jsgraph() const { return js_graph_; } |
| + Graph* graph() const; |
| + Schedule* schedule() const { return schedule_; } |
| + Zone* temp_zone() const { return temp_zone_; } |
| + CommonOperatorBuilder* common() const; |
| + SimplifiedOperatorBuilder* simplified() const; |
| + MachineOperatorBuilder* machine() const; |
| + |
| + JSGraph* js_graph_; |
| + Schedule* schedule_; |
| + Zone* temp_zone_; |
| + SetOncePointer<const Operator> allocate_heap_number_operator_; |
| +}; |
| + |
| +} // namespace compiler |
| +} // namespace internal |
| +} // namespace v8 |
| + |
| +#endif // V8_COMPILER_EFFECT_CONTROL_LINEARIZER_H_ |