| Index: runtime/vm/isolate_reload.cc
|
| diff --git a/runtime/vm/isolate_reload.cc b/runtime/vm/isolate_reload.cc
|
| index cd2935747508072fc21d58510de592fc8f601cb4..453f692ab8c5b2ac79562e62d17dcc3103207273 100644
|
| --- a/runtime/vm/isolate_reload.cc
|
| +++ b/runtime/vm/isolate_reload.cc
|
| @@ -881,46 +881,6 @@ ObjectStore* IsolateReloadContext::object_store() {
|
| }
|
|
|
|
|
| -static void ResetICs(const Function& function, const Code& code) {
|
| - // TODO(johnmccutchan): Relying on the function's ICData Map can miss ICDatas.
|
| - // Use the code's object pool instead.
|
| - if (function.ic_data_array() == Array::null()) {
|
| - // TODO(johnmccutchan): Even in this case, we need to scan the code's object
|
| - // pool instead.
|
| - return; // Already reset in an earlier round.
|
| - }
|
| -
|
| - Thread* thread = Thread::Current();
|
| - Zone* zone = thread->zone();
|
| -
|
| - ZoneGrowableArray<const ICData*>* ic_data_array =
|
| - new(zone) ZoneGrowableArray<const ICData*>();
|
| - function.RestoreICDataMap(ic_data_array, false /* clone ic-data */);
|
| - const intptr_t ic_data_array_length = ic_data_array->length();
|
| - if (ic_data_array_length == 0) {
|
| - return;
|
| - }
|
| - const PcDescriptors& descriptors =
|
| - PcDescriptors::Handle(code.pc_descriptors());
|
| - PcDescriptors::Iterator iter(descriptors, RawPcDescriptors::kIcCall |
|
| - RawPcDescriptors::kUnoptStaticCall);
|
| - while (iter.MoveNext()) {
|
| - const intptr_t index = iter.DeoptId();
|
| - if (index >= ic_data_array_length) {
|
| - // TODO(johnmccutchan): Investigate how this can happen.
|
| - continue;
|
| - }
|
| - const ICData* ic_data = (*ic_data_array)[index];
|
| - if (ic_data == NULL) {
|
| - // TODO(johnmccutchan): Investigate how this can happen.
|
| - continue;
|
| - }
|
| - bool is_static_call = iter.Kind() == RawPcDescriptors::kUnoptStaticCall;
|
| - ic_data->Reset(is_static_call);
|
| - }
|
| -}
|
| -
|
| -
|
| void IsolateReloadContext::ResetUnoptimizedICsOnStack() {
|
| Code& code = Code::Handle();
|
| Function& function = Function::Handle();
|
| @@ -935,10 +895,10 @@ void IsolateReloadContext::ResetUnoptimizedICsOnStack() {
|
| function = code.function();
|
| code = function.unoptimized_code();
|
| ASSERT(!code.IsNull());
|
| - ResetICs(function, code);
|
| + code.ResetICDatas(function);
|
| } else {
|
| function = code.function();
|
| - ResetICs(function, code);
|
| + code.ResetICDatas(function);
|
| }
|
| frame = iterator.NextFrame();
|
| }
|
| @@ -1015,7 +975,7 @@ class MarkFunctionsForRecompilation : public ObjectVisitor {
|
| ASSERT(!code_.IsNull());
|
| // We are preserving the unoptimized code, fill all ICData arrays with
|
| // the sentinel values so that we have no stale type feedback.
|
| - func.FillICDataWithSentinels(code_);
|
| + code_.ResetICDatas(func);
|
| }
|
|
|
| bool IsFromDirtyLibrary(const Function& func) {
|
|
|