| Index: src/snapshot/startup-serializer.cc
|
| diff --git a/src/snapshot/startup-serializer.cc b/src/snapshot/startup-serializer.cc
|
| index bcb85456c98113c6e954c929107635178a0b2c3e..86b0f833c1e147f0553203413a68f1e26906dc72 100644
|
| --- a/src/snapshot/startup-serializer.cc
|
| +++ b/src/snapshot/startup-serializer.cc
|
| @@ -27,18 +27,26 @@ void StartupSerializer::SerializeObject(HeapObject* obj, HowToCode how_to_code,
|
| WhereToPoint where_to_point, int skip) {
|
| DCHECK(!obj->IsJSFunction());
|
|
|
| - if (obj->IsCode()) {
|
| + if (function_code_handling_ == CLEAR_FUNCTION_CODE) {
|
| + if (obj->IsCode()) {
|
| + Code* code = Code::cast(obj);
|
| + // If the function code is compiled (either as native code or bytecode),
|
| + // replace it with lazy-compile builtin. Only exception is when we are
|
| + // serializing the canonical interpreter-entry-trampoline builtin.
|
| + if (code->kind() == Code::FUNCTION ||
|
| + (!serializing_builtins_ && code->is_interpreter_entry_trampoline())) {
|
| + obj = isolate()->builtins()->builtin(Builtins::kCompileLazy);
|
| + }
|
| + } else if (obj->IsBytecodeArray()) {
|
| + obj = isolate()->heap()->undefined_value();
|
| + }
|
| + } else if (obj->IsCode()) {
|
| + DCHECK_EQ(KEEP_FUNCTION_CODE, function_code_handling_);
|
| Code* code = Code::cast(obj);
|
| - // If the function code is compiled (either as native code or bytecode),
|
| - // replace it with lazy-compile builtin. Only exception is when we are
|
| - // serializing the canonical interpreter-entry-trampoline builtin.
|
| - if (function_code_handling_ == CLEAR_FUNCTION_CODE &&
|
| - (code->kind() == Code::FUNCTION ||
|
| - (!serializing_builtins_ && code->is_interpreter_entry_trampoline()))) {
|
| - obj = isolate()->builtins()->builtin(Builtins::kCompileLazy);
|
| + if (code->kind() == Code::FUNCTION) {
|
| + code->ClearInlineCaches();
|
| + code->set_profiler_ticks(0);
|
| }
|
| - } else if (obj->IsBytecodeArray()) {
|
| - obj = isolate()->heap()->undefined_value();
|
| }
|
|
|
| int root_index = root_index_map_.Lookup(obj);
|
|
|