Index: runtime/vm/precompiler.cc |
diff --git a/runtime/vm/precompiler.cc b/runtime/vm/precompiler.cc |
index 1eaf79a917eb729e8daaee09eb3844eb244f92e1..dc0edb5efd6cb0c112a7d077541404e1bd27e4af 100644 |
--- a/runtime/vm/precompiler.cc |
+++ b/runtime/vm/precompiler.cc |
@@ -240,8 +240,8 @@ void Precompiler::DoCompileAll( |
DropTypeArguments(); |
// Clear these before dropping classes as they may hold onto otherwise |
- // dead instances of classes we will remove. |
- DropCompileTimeConstantCaches(); |
+ // dead instances of classes we will remove or otherwise unused symbols. |
+ DropScriptData(); |
I->object_store()->set_unique_dynamic_targets(Array::null_array()); |
Class& null_class = Class::Handle(Z); |
I->object_store()->set_future_class(null_class); |
@@ -1560,16 +1560,19 @@ void Precompiler::DropTypeArguments() { |
} |
-void Precompiler::DropCompileTimeConstantCaches() { |
+void Precompiler::DropScriptData() { |
Library& lib = Library::Handle(Z); |
Array& scripts = Array::Handle(Z); |
Script& script = Script::Handle(Z); |
+ const TokenStream& null_tokens = TokenStream::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()); |
+ script.set_source(String::null_string()); |
+ script.set_tokens(null_tokens); |
} |
} |
} |