Index: runtime/vm/flow_graph_compiler_shared.h |
=================================================================== |
--- runtime/vm/flow_graph_compiler_shared.h (revision 8338) |
+++ runtime/vm/flow_graph_compiler_shared.h (working copy) |
@@ -16,6 +16,7 @@ |
class BlockEntryInstr; |
class ExceptionHandlerList; |
class FlowGraphCompilerShared; |
+class Instruction; |
class ParsedFunction; |
class TargetEntryInstr; |
@@ -63,6 +64,8 @@ |
// This makes it easier to measure time spent in the compiler. |
void InitCompiler(); |
+ void VisitBlocks(); |
+ |
Assembler* assembler() const { return assembler_; } |
const ParsedFunction& parsed_function() const { return parsed_function_; } |
const GrowableArray<BlockEntryInstr*>& block_order() const { |
@@ -151,7 +154,27 @@ |
const GrowableArray<intptr_t>& class_ids, |
Label* is_equal_lbl, |
Label* is_not_equal_lbl) = 0; |
+ virtual void EmitInstructionPrologue(Instruction* instr) = 0; |
Florian Schneider
2012/06/07 10:41:48
Somehow it feels wrong to make those pure virtual
srdjan
2012/06/07 16:34:45
Excellent idea, will do that and then submit.
|
+ virtual void GenerateCallRuntime(intptr_t cid, |
+ intptr_t token_index, |
+ intptr_t try_index, |
+ const RuntimeEntry& entry) = 0; |
+ virtual void GenerateCall(intptr_t token_index, |
+ intptr_t try_index, |
+ const ExternalLabel* label, |
+ PcDescriptors::Kind kind) = 0; |
+ virtual void GenerateAssertAssignable(intptr_t cid, |
+ intptr_t token_index, |
+ intptr_t try_index, |
+ const AbstractType& dst_type, |
+ const String& dst_name) = 0; |
+ virtual void GenerateInstanceOf(intptr_t cid, |
+ intptr_t token_index, |
+ intptr_t try_index, |
+ const AbstractType& type, |
+ bool negate_result) = 0; |
+ void EmitComment(Instruction* instr); |
struct BlockInfo : public ZoneAllocated { |
public: |