| Index: runtime/vm/jit_optimizer.cc
|
| diff --git a/runtime/vm/jit_optimizer.cc b/runtime/vm/jit_optimizer.cc
|
| index 719f359c116b6fc679b2f6a9c0a1275ad2fa4b60..25ffd3058e8077cebfa7cfedfa040ea53455e1cd 100644
|
| --- a/runtime/vm/jit_optimizer.cc
|
| +++ b/runtime/vm/jit_optimizer.cc
|
| @@ -194,24 +194,26 @@ bool JitOptimizer::TryCreateICData(InstanceCallInstr* call) {
|
|
|
| const ICData& JitOptimizer::TrySpecializeICData(const ICData& ic_data,
|
| intptr_t cid) {
|
| - ASSERT(ic_data.NumArgsTested() == 1);
|
| + Zone* zone = Thread::Current()->zone();
|
| + if (ic_data.NumArgsTested() != 1) return ic_data;
|
|
|
| if ((ic_data.NumberOfUsedChecks() == 1) && ic_data.HasReceiverClassId(cid)) {
|
| return ic_data; // Nothing to do
|
| }
|
|
|
| + intptr_t count = 1;
|
| const Function& function =
|
| - Function::Handle(Z, ic_data.GetTargetForReceiverClassId(cid));
|
| + Function::Handle(zone, ic_data.GetTargetForReceiverClassId(cid, &count));
|
| // TODO(fschneider): Try looking up the function on the class if it is
|
| // not found in the ICData.
|
| if (!function.IsNull()) {
|
| const ICData& new_ic_data = ICData::ZoneHandle(
|
| - Z, ICData::New(Function::Handle(Z, ic_data.Owner()),
|
| - String::Handle(Z, ic_data.target_name()),
|
| - Object::empty_array(), // Dummy argument descriptor.
|
| - ic_data.deopt_id(), ic_data.NumArgsTested(), false));
|
| + zone, ICData::New(Function::Handle(zone, ic_data.Owner()),
|
| + String::Handle(zone, ic_data.target_name()),
|
| + Object::empty_array(), // Dummy argument descriptor.
|
| + ic_data.deopt_id(), ic_data.NumArgsTested(), false));
|
| new_ic_data.SetDeoptReasons(ic_data.DeoptReasons());
|
| - new_ic_data.AddReceiverCheck(cid, function);
|
| + new_ic_data.AddReceiverCheck(cid, function, count);
|
| return new_ic_data;
|
| }
|
|
|
|
|