| Index: runtime/vm/flow_graph_compiler.h
|
| diff --git a/runtime/vm/flow_graph_compiler.h b/runtime/vm/flow_graph_compiler.h
|
| index 7c1fa0e41161f6e7aed39302a3cbe0efd75159c3..586dbdb9bf485a4b153072da831581c22ec43413 100644
|
| --- a/runtime/vm/flow_graph_compiler.h
|
| +++ b/runtime/vm/flow_graph_compiler.h
|
| @@ -367,6 +367,15 @@ class FlowGraphCompiler : public ValueObject {
|
| // Returns 'true' if regular code generation should be skipped.
|
| bool TryIntrinsify();
|
|
|
| + void GenerateAssertAssignable(TokenPosition token_pos,
|
| + intptr_t deopt_id,
|
| + const AbstractType& dst_type,
|
| + const String& dst_name,
|
| + LocationSummary* locs);
|
| +
|
| + // DBC emits calls very differently from all other architectures due to its
|
| + // interpreted nature.
|
| +#if !defined(TARGET_ARCH_DBC)
|
| void GenerateRuntimeCall(TokenPosition token_pos,
|
| intptr_t deopt_id,
|
| const RuntimeEntry& entry,
|
| @@ -390,12 +399,6 @@ class FlowGraphCompiler : public ValueObject {
|
| LocationSummary* locs,
|
| const Function& target);
|
|
|
| - void GenerateAssertAssignable(TokenPosition token_pos,
|
| - intptr_t deopt_id,
|
| - const AbstractType& dst_type,
|
| - const String& dst_name,
|
| - LocationSummary* locs);
|
| -
|
| void GenerateInstanceOf(TokenPosition token_pos,
|
| intptr_t deopt_id,
|
| const AbstractType& type,
|
| @@ -426,12 +429,6 @@ class FlowGraphCompiler : public ValueObject {
|
| void GenerateListTypeCheck(Register kClassIdReg,
|
| Label* is_instance_lbl);
|
|
|
| - void EmitComment(Instruction* instr);
|
| -
|
| - bool NeedsEdgeCounter(TargetEntryInstr* block);
|
| -
|
| - void EmitEdgeCounter(intptr_t edge_id);
|
| -
|
| void EmitOptimizedInstanceCall(const StubEntry& stub_entry,
|
| const ICData& ic_data,
|
| intptr_t argument_count,
|
| @@ -489,8 +486,15 @@ class FlowGraphCompiler : public ValueObject {
|
| bool needs_number_check,
|
| TokenPosition token_pos);
|
|
|
| + bool NeedsEdgeCounter(TargetEntryInstr* block);
|
| +
|
| + void EmitEdgeCounter(intptr_t edge_id);
|
| +#endif // !defined(TARGET_ARCH_DBC)
|
| +
|
| void EmitTrySync(Instruction* instr, intptr_t try_index);
|
|
|
| + void EmitComment(Instruction* instr);
|
| +
|
| intptr_t StackSize() const;
|
|
|
| // Returns assembler label associated with the given block entry.
|
| @@ -637,6 +641,9 @@ class FlowGraphCompiler : public ValueObject {
|
| LocationSummary* locs,
|
| const ICData& ic_data);
|
|
|
| + // DBC handles type tests differently from all other architectures due
|
| + // to its interpreted nature.
|
| +#if !defined(TARGET_ARCH_DBC)
|
| // Type checking helper methods.
|
| void CheckClassIds(Register class_id_reg,
|
| const GrowableArray<intptr_t>& class_ids,
|
| @@ -690,6 +697,7 @@ class FlowGraphCompiler : public ValueObject {
|
| void GenerateBoolToJump(Register bool_reg, Label* is_true, Label* is_false);
|
|
|
| void CopyParameters();
|
| +#endif // !defined(TARGET_ARCH_DBC)
|
|
|
| void GenerateInlinedGetter(intptr_t offset);
|
| void GenerateInlinedSetter(intptr_t offset);
|
| @@ -722,7 +730,10 @@ class FlowGraphCompiler : public ValueObject {
|
| return stackmap_table_builder_;
|
| }
|
|
|
| -#if defined(DEBUG)
|
| + // TODO(vegorov) re-enable frame state tracking on DBC. It is
|
| + // currently disabled because it relies on LocationSummaries and
|
| + // we don't use them during unoptimized compilation on DBC.
|
| +#if defined(DEBUG) && !defined(TARGET_ARCH_DBC)
|
| void FrameStateUpdateWith(Instruction* instr);
|
| void FrameStatePush(Definition* defn);
|
| void FrameStatePop(intptr_t count);
|
|
|