| Index: src/compiler.cc
|
| diff --git a/src/compiler.cc b/src/compiler.cc
|
| index bc65b1f536ca02c5e7b08c5762ca81368e365688..ba202d0be8a2033dd1a6287ae639c28ec2bab3eb 100644
|
| --- a/src/compiler.cc
|
| +++ b/src/compiler.cc
|
| @@ -494,6 +494,8 @@ OptimizingCompiler::Status OptimizingCompiler::GenerateAndInstallCode() {
|
| info()->SetCode(optimized_code);
|
| }
|
| RecordOptimizationStats();
|
| + // Add to the weak list of optimized code objects.
|
| + info()->context()->native_context()->AddOptimizedCode(*info()->code());
|
| return SetLastStatus(SUCCEEDED);
|
| }
|
|
|
| @@ -875,9 +877,10 @@ static void InstallCodeCommon(CompilationInfo* info) {
|
|
|
| static void InsertCodeIntoOptimizedCodeMap(CompilationInfo* info) {
|
| Handle<Code> code = info->code();
|
| - if (FLAG_cache_optimized_code &&
|
| - info->osr_ast_id().IsNone() &&
|
| - code->kind() == Code::OPTIMIZED_FUNCTION) {
|
| + if (code->kind() != Code::OPTIMIZED_FUNCTION) return; // Nothing to do.
|
| +
|
| + // Cache non-OSR optimized code.
|
| + if (FLAG_cache_optimized_code && info->osr_ast_id().IsNone()) {
|
| Handle<JSFunction> function = info->closure();
|
| Handle<SharedFunctionInfo> shared(function->shared());
|
| Handle<FixedArray> literals(function->literals());
|
| @@ -889,9 +892,10 @@ static void InsertCodeIntoOptimizedCodeMap(CompilationInfo* info) {
|
|
|
|
|
| static bool InstallCodeFromOptimizedCodeMap(CompilationInfo* info) {
|
| - if (FLAG_cache_optimized_code &&
|
| - info->osr_ast_id().IsNone() &&
|
| - info->IsOptimizing()) {
|
| + if (!info->IsOptimizing()) return false; // Nothing to look up.
|
| +
|
| + // Lookup non-OSR optimized code.
|
| + if (FLAG_cache_optimized_code && info->osr_ast_id().IsNone()) {
|
| Handle<SharedFunctionInfo> shared = info->shared_info();
|
| Handle<JSFunction> function = info->closure();
|
| ASSERT(!function.is_null());
|
|
|