Index: runtime/vm/flow_graph_compiler_ia32.h |
diff --git a/runtime/vm/flow_graph_compiler_ia32.h b/runtime/vm/flow_graph_compiler_ia32.h |
index 0c9c3f9aee9177237cc9c5dfc8a91e6e8160c17b..ae27ea597a55c7e92e6d733db19807b3f48aaecd 100644 |
--- a/runtime/vm/flow_graph_compiler_ia32.h |
+++ b/runtime/vm/flow_graph_compiler_ia32.h |
@@ -9,22 +9,18 @@ |
#error Include flow_graph_compiler.h instead of flow_graph_compiler_ia32.h. |
#endif |
-#include "vm/assembler.h" |
-#include "vm/assembler_macros.h" |
-#include "vm/code_descriptors.h" |
-#include "vm/code_generator.h" |
-#include "vm/intermediate_language.h" |
- |
namespace dart { |
class AbstractType; |
class Assembler; |
class Code; |
class DeoptimizationStub; |
+class FlowGraphCompiler; |
template <typename T> class GrowableArray; |
class ParsedFunction; |
class StackMapBuilder; |
+ |
// Stubbed out implementation of graph compiler, bails out immediately if |
// CompileGraph is called. The rest of the public API is UNIMPLEMENTED. |
class FlowGraphCompiler : public ValueObject { |
@@ -41,7 +37,7 @@ class FlowGraphCompiler : public ValueObject { |
const GrowableArray<BlockEntryInstr*>& block_order, |
bool is_optimizing); |
- virtual ~FlowGraphCompiler(); |
+ ~FlowGraphCompiler(); |
// Accessors. |
Assembler* assembler() const { return assembler_; } |
@@ -79,31 +75,31 @@ class FlowGraphCompiler : public ValueObject { |
// no fall-through to regular code is needed. |
bool TryIntrinsify(); |
- virtual void GenerateCallRuntime(intptr_t cid, |
- intptr_t token_index, |
- intptr_t try_index, |
- const RuntimeEntry& entry); |
+ void GenerateCallRuntime(intptr_t cid, |
+ intptr_t token_index, |
+ intptr_t try_index, |
+ const RuntimeEntry& entry); |
// Returns pc-offset (in bytes) of the pc after the call, can be used to emit |
// pc-descriptor information. |
- virtual intptr_t EmitStaticCall(const Function& function, |
- const Array& arguments_descriptor, |
- intptr_t argument_count); |
- |
- virtual void GenerateCall(intptr_t token_index, |
- intptr_t try_index, |
- const ExternalLabel* label, |
- PcDescriptors::Kind kind); |
- virtual void GenerateInstanceOf(intptr_t cid, |
- intptr_t token_index, |
- intptr_t try_index, |
- const AbstractType& type, |
- bool negate_result); |
- virtual void GenerateAssertAssignable(intptr_t cid, |
- intptr_t token_index, |
- intptr_t try_index, |
- const AbstractType& dst_type, |
- const String& dst_name); |
+ intptr_t EmitStaticCall(const Function& function, |
+ const Array& arguments_descriptor, |
+ intptr_t argument_count); |
+ |
+ void GenerateCall(intptr_t token_index, |
+ intptr_t try_index, |
+ const ExternalLabel* label, |
+ PcDescriptors::Kind kind); |
+ void GenerateInstanceOf(intptr_t cid, |
+ intptr_t token_index, |
+ intptr_t try_index, |
+ const AbstractType& type, |
+ bool negate_result); |
+ void GenerateAssertAssignable(intptr_t cid, |
+ intptr_t token_index, |
+ intptr_t try_index, |
+ const AbstractType& dst_type, |
+ const String& dst_name); |
void GenerateInstanceCall(intptr_t cid, |
intptr_t token_index, |
@@ -176,6 +172,10 @@ class FlowGraphCompiler : public ValueObject { |
void FinalizeVarDescriptors(const Code& code); |
void FinalizeComments(const Code& code); |
+ FrameRegisterAllocator* frame_register_allocator() { |
+ return &frame_register_allocator_; |
+ } |
+ |
static const int kLocalsOffsetFromFP = (-1 * kWordSize); |
const Bool& bool_true() const { return bool_true_; } |
@@ -188,10 +188,10 @@ class FlowGraphCompiler : public ValueObject { |
void GenerateDeferredCode(); |
void CopyParameters(); |
- virtual void EmitInstructionPrologue(Instruction* instr); |
+ void EmitInstructionPrologue(Instruction* instr); |
- virtual void GenerateInlinedGetter(intptr_t offset); |
- virtual void GenerateInlinedSetter(intptr_t offset); |
+ void GenerateInlinedGetter(intptr_t offset); |
+ void GenerateInlinedSetter(intptr_t offset); |
RawSubtypeTestCache* GenerateInlineInstanceof(intptr_t cid, |
intptr_t token_index, |
@@ -241,10 +241,10 @@ class FlowGraphCompiler : public ValueObject { |
void GenerateBoolToJump(Register bool_reg, Label* is_true, Label* is_false); |
- virtual void CheckClassIds(Register class_id_reg, |
- const GrowableArray<intptr_t>& class_ids, |
- Label* is_equal_lbl, |
- Label* is_not_equal_lbl); |
+ void CheckClassIds(Register class_id_reg, |
+ const GrowableArray<intptr_t>& class_ids, |
+ Label* is_equal_lbl, |
+ Label* is_not_equal_lbl); |
// Map a block number in a forward iteration into the block number in the |
@@ -273,6 +273,8 @@ class FlowGraphCompiler : public ValueObject { |
const Bool& bool_false_; |
const Class& double_class_; |
+ FrameRegisterAllocator frame_register_allocator_; |
+ |
DISALLOW_COPY_AND_ASSIGN(FlowGraphCompiler); |
}; |