| Index: runtime/vm/precompiler.cc
|
| diff --git a/runtime/vm/precompiler.cc b/runtime/vm/precompiler.cc
|
| index 4ba710b69aeb6b8892a0e4132c2c1da5466e6b07..13c4595e5535617f29b3711ded14422758982ca5 100644
|
| --- a/runtime/vm/precompiler.cc
|
| +++ b/runtime/vm/precompiler.cc
|
| @@ -241,6 +241,7 @@ void Precompiler::DoCompileAll(
|
|
|
| // Clear these before dropping classes as they may hold onto otherwise
|
| // dead instances of classes we will remove.
|
| + DropCompileTimeConstantCaches();
|
| I->object_store()->set_unique_dynamic_targets(Array::null_array());
|
| Class& null_class = Class::Handle(Z);
|
| I->object_store()->set_future_class(null_class);
|
| @@ -1559,6 +1560,21 @@ void Precompiler::DropTypeArguments() {
|
| }
|
|
|
|
|
| +void Precompiler::DropCompileTimeConstantCaches() {
|
| + Library& lib = Library::Handle(Z);
|
| + Array& scripts = Array::Handle(Z);
|
| + Script& script = Script::Handle(Z);
|
| + for (intptr_t i = 0; i < libraries_.Length(); i++) {
|
| + lib ^= libraries_.At(i);
|
| + scripts = lib.LoadedScripts();
|
| + for (intptr_t j = 0; j < scripts.Length(); j++) {
|
| + script ^= scripts.At(j);
|
| + script.set_compile_time_constants(Array::null_array());
|
| + }
|
| + }
|
| +}
|
| +
|
| +
|
| void Precompiler::TraceTypesFromRetainedClasses() {
|
| Library& lib = Library::Handle(Z);
|
| Class& cls = Class::Handle(Z);
|
|
|