| Index: runtime/vm/intermediate_language.h
|
| diff --git a/runtime/vm/intermediate_language.h b/runtime/vm/intermediate_language.h
|
| index 20d201203ac356d708712f01fe6d210e485aee37..95119caf7bfe2ed37eba84f91a8541ae6e65bcd0 100644
|
| --- a/runtime/vm/intermediate_language.h
|
| +++ b/runtime/vm/intermediate_language.h
|
| @@ -646,6 +646,8 @@ class Instruction : public ZoneAllocated {
|
| return deopt_id_;
|
| }
|
|
|
| + ICData* GetICData(const Array& ic_data_array) const;
|
| +
|
| bool IsBlockEntry() { return (AsBlockEntry() != NULL); }
|
| virtual BlockEntryInstr* AsBlockEntry() { return NULL; }
|
|
|
| @@ -2591,8 +2593,9 @@ class InstanceCallInstr : public TemplateDefinition<0> {
|
| Token::Kind token_kind,
|
| ZoneGrowableArray<PushArgumentInstr*>* arguments,
|
| const Array& argument_names,
|
| - intptr_t checked_argument_count)
|
| - : ic_data_(Isolate::Current()->GetICDataForDeoptId(deopt_id())),
|
| + intptr_t checked_argument_count,
|
| + const Array& ic_data_array)
|
| + : ic_data_(GetICData(ic_data_array)),
|
| token_pos_(token_pos),
|
| function_name_(function_name),
|
| token_kind_(token_kind),
|
| @@ -2833,12 +2836,12 @@ class EqualityCompareInstr : public ComparisonInstr {
|
| EqualityCompareInstr(intptr_t token_pos,
|
| Token::Kind kind,
|
| Value* left,
|
| - Value* right)
|
| + Value* right,
|
| + const Array& ic_data_array)
|
| : ComparisonInstr(kind, left, right),
|
| + ic_data_(GetICData(ic_data_array)),
|
| token_pos_(token_pos),
|
| receiver_class_id_(kIllegalCid) {
|
| - // deopt_id() checks receiver_class_id_ value.
|
| - ic_data_ = Isolate::Current()->GetICDataForDeoptId(deopt_id());
|
| ASSERT((kind == Token::kEQ) || (kind == Token::kNE));
|
| }
|
|
|
| @@ -2912,12 +2915,12 @@ class RelationalOpInstr : public ComparisonInstr {
|
| RelationalOpInstr(intptr_t token_pos,
|
| Token::Kind kind,
|
| Value* left,
|
| - Value* right)
|
| + Value* right,
|
| + const Array& ic_data_array)
|
| : ComparisonInstr(kind, left, right),
|
| + ic_data_(GetICData(ic_data_array)),
|
| token_pos_(token_pos),
|
| operands_class_id_(kIllegalCid) {
|
| - // deopt_id() checks operands_class_id_ value.
|
| - ic_data_ = Isolate::Current()->GetICDataForDeoptId(deopt_id());
|
| ASSERT(Token::IsRelationalOperator(kind));
|
| }
|
|
|
|
|