Index: runtime/vm/flow_graph_compiler_x64.h |
diff --git a/runtime/vm/flow_graph_compiler_x64.h b/runtime/vm/flow_graph_compiler_x64.h |
index c7fe8c332c610aa4aac72c982b8fa263fce18787..c1fa60a4413fea64ac2122939970c7e772b78eb1 100644 |
--- a/runtime/vm/flow_graph_compiler_x64.h |
+++ b/runtime/vm/flow_graph_compiler_x64.h |
@@ -29,6 +29,7 @@ class FlowGraphCompiler : public ValueObject { |
const ParsedFunction& parsed_function, |
const GrowableArray<BlockEntryInstr*>& block_order, |
bool is_optimizing, |
+ bool is_ssa, |
bool is_leaf); |
~FlowGraphCompiler(); |
@@ -282,6 +283,7 @@ class FlowGraphCompiler : public ValueObject { |
GrowableArray<BlockInfo*> block_info_; |
GrowableArray<DeoptimizationStub*> deopt_stubs_; |
const bool is_optimizing_; |
+ const bool is_ssa_; |
const bool is_dart_leaf_; |
const Bool& bool_true_; |
@@ -289,6 +291,13 @@ class FlowGraphCompiler : public ValueObject { |
const Class& double_class_; |
FrameRegisterAllocator frame_register_allocator_; |
+ ParallelMoveResolver parallel_move_resolver_; |
+ |
+ // Currently instructions generate deopt stubs internally by |
+ // calling AddDeoptStub. To communicate deoptimization environment |
+ // that should be used when deoptimizing we store it in this variable. |
+ // In future AddDeoptStub should be moved out of the instruction template. |
+ Environment* pending_deoptimization_env_; |
DISALLOW_COPY_AND_ASSIGN(FlowGraphCompiler); |
}; |
@@ -305,6 +314,7 @@ class DeoptimizationStub : public ZoneAllocated { |
try_index_(try_index), |
reason_(reason), |
registers_(2), |
+ deoptimization_env_(NULL), |
entry_label_() {} |
void Push(Register reg) { registers_.Add(reg); } |
@@ -313,12 +323,17 @@ class DeoptimizationStub : public ZoneAllocated { |
// Implementation is in architecture specific file. |
void GenerateCode(FlowGraphCompiler* compiler); |
+ void set_deoptimization_env(Environment* env) { |
+ deoptimization_env_ = env; |
+ } |
+ |
private: |
const intptr_t deopt_id_; |
const intptr_t deopt_token_pos_; |
const intptr_t try_index_; |
const DeoptReasonId reason_; |
GrowableArray<Register> registers_; |
+ const Environment* deoptimization_env_; |
Label entry_label_; |
DISALLOW_COPY_AND_ASSIGN(DeoptimizationStub); |