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

Unified Diff: runtime/vm/flow_graph_compiler_x64.h

Issue 10696151: Skeleton of a linear scan register allocator. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 5 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 side-by-side diff with in-line comments
Download patch
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);

Powered by Google App Engine
This is Rietveld 408576698