Index: src/heap/mark-compact.cc |
diff --git a/src/heap/mark-compact.cc b/src/heap/mark-compact.cc |
index bad3495bbe4befe1c583ff680b66bc8a845ff213..7177f88cc6c78b04e33add6ea9e36e58808e0f79 100644 |
--- a/src/heap/mark-compact.cc |
+++ b/src/heap/mark-compact.cc |
@@ -904,6 +904,8 @@ void MarkCompactCollector::Finish() { |
void CodeFlusher::ProcessJSFunctionCandidates() { |
Code* lazy_compile = isolate_->builtins()->builtin(Builtins::kCompileLazy); |
+ Code* interpreter_entry_trampoline = |
+ isolate_->builtins()->builtin(Builtins::kInterpreterEntryTrampoline); |
Object* undefined = isolate_->heap()->undefined_value(); |
JSFunction* candidate = jsfunction_candidates_head_; |
@@ -926,8 +928,13 @@ void CodeFlusher::ProcessJSFunctionCandidates() { |
if (!shared->OptimizedCodeMapIsCleared()) { |
shared->ClearOptimizedCodeMap(); |
} |
- shared->set_code(lazy_compile); |
- candidate->set_code(lazy_compile); |
+ if (shared->HasBytecodeArray()) { |
+ shared->set_code(interpreter_entry_trampoline); |
+ candidate->set_code(interpreter_entry_trampoline); |
+ } else { |
+ shared->set_code(lazy_compile); |
+ candidate->set_code(lazy_compile); |
+ } |
} else { |
DCHECK(Marking::IsBlack(code_mark)); |
candidate->set_code(code); |
@@ -954,7 +961,8 @@ void CodeFlusher::ProcessJSFunctionCandidates() { |
void CodeFlusher::ProcessSharedFunctionInfoCandidates() { |
Code* lazy_compile = isolate_->builtins()->builtin(Builtins::kCompileLazy); |
- |
+ Code* interpreter_entry_trampoline = |
+ isolate_->builtins()->builtin(Builtins::kInterpreterEntryTrampoline); |
SharedFunctionInfo* candidate = shared_function_info_candidates_head_; |
SharedFunctionInfo* next_candidate; |
while (candidate != NULL) { |
@@ -973,7 +981,11 @@ void CodeFlusher::ProcessSharedFunctionInfoCandidates() { |
if (!candidate->OptimizedCodeMapIsCleared()) { |
candidate->ClearOptimizedCodeMap(); |
} |
- candidate->set_code(lazy_compile); |
+ if (candidate->HasBytecodeArray()) { |
+ candidate->set_code(interpreter_entry_trampoline); |
+ } else { |
+ candidate->set_code(lazy_compile); |
+ } |
} |
Object** code_slot = |