| Index: runtime/vm/flow_graph_compiler.h
|
| diff --git a/runtime/vm/flow_graph_compiler.h b/runtime/vm/flow_graph_compiler.h
|
| index 075e239a4b5e005026eb6f890b5a8e550864c06b..b6d4c4c13ae061d5167d0ce4aad177a25a398b51 100644
|
| --- a/runtime/vm/flow_graph_compiler.h
|
| +++ b/runtime/vm/flow_graph_compiler.h
|
| @@ -214,6 +214,37 @@ class SlowPathCode : public ZoneAllocated {
|
| };
|
|
|
|
|
| +class MegamorphicSlowPath : public SlowPathCode {
|
| + public:
|
| + MegamorphicSlowPath(const ICData& ic_data,
|
| + intptr_t argument_count,
|
| + intptr_t deopt_id,
|
| + intptr_t token_pos,
|
| + LocationSummary* locs,
|
| + intptr_t try_index)
|
| + : SlowPathCode(),
|
| + ic_data_(ic_data),
|
| + argument_count_(argument_count),
|
| + deopt_id_(deopt_id),
|
| + token_pos_(token_pos),
|
| + locs_(locs),
|
| + try_index_(try_index) {}
|
| + virtual ~MegamorphicSlowPath() {}
|
| +
|
| + private:
|
| + virtual void EmitNativeCode(FlowGraphCompiler* comp);
|
| +
|
| + const ICData& ic_data_;
|
| + intptr_t argument_count_;
|
| + intptr_t deopt_id_;
|
| + intptr_t token_pos_;
|
| + LocationSummary* locs_;
|
| + const intptr_t try_index_; // For try/catch ranges.
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(MegamorphicSlowPath);
|
| +};
|
| +
|
| +
|
| struct CidTarget {
|
| intptr_t cid;
|
| Function* target;
|
| @@ -414,11 +445,14 @@ class FlowGraphCompiler : public ValueObject {
|
| intptr_t token_pos,
|
| LocationSummary* locs);
|
|
|
| - void EmitMegamorphicInstanceCall(const ICData& ic_data,
|
| - intptr_t argument_count,
|
| - intptr_t deopt_id,
|
| - intptr_t token_pos,
|
| - LocationSummary* locs);
|
| + // Pass a value for try-index where block is not available (e.g. slow path).
|
| + void EmitMegamorphicInstanceCall(
|
| + const ICData& ic_data,
|
| + intptr_t argument_count,
|
| + intptr_t deopt_id,
|
| + intptr_t token_pos,
|
| + LocationSummary* locs,
|
| + intptr_t try_index = CatchClauseNode::kInvalidTryIndex);
|
|
|
| void EmitSwitchableInstanceCall(const ICData& ic_data,
|
| intptr_t argument_count,
|
|
|