Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(281)

Side by Side Diff: src/compiler.cc

Issue 1209383002: Mark function info as compiled after EnsureDeoptimizationSupport. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/compiler.h ('k') | test/mjsunit/regress/regress-crbug-504787.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/compiler.h" 5 #include "src/compiler.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "src/ast-numbering.h" 9 #include "src/ast-numbering.h"
10 #include "src/bootstrapper.h" 10 #include "src/bootstrapper.h"
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after
369 } 369 }
370 if (!Compiler::EnsureDeoptimizationSupport(info())) { 370 if (!Compiler::EnsureDeoptimizationSupport(info())) {
371 return SetLastStatus(FAILED); 371 return SetLastStatus(FAILED);
372 } 372 }
373 if (FLAG_hydrogen_stats) { 373 if (FLAG_hydrogen_stats) {
374 isolate()->GetHStatistics()->IncrementFullCodeGen(timer.Elapsed()); 374 isolate()->GetHStatistics()->IncrementFullCodeGen(timer.Elapsed());
375 } 375 }
376 } 376 }
377 377
378 DCHECK(info()->shared_info()->has_deoptimization_support()); 378 DCHECK(info()->shared_info()->has_deoptimization_support());
379 DCHECK(!info()->is_first_compile());
379 380
380 // Check the enabling conditions for TurboFan. 381 // Check the enabling conditions for TurboFan.
381 bool dont_crankshaft = info()->shared_info()->dont_crankshaft(); 382 bool dont_crankshaft = info()->shared_info()->dont_crankshaft();
382 if (((FLAG_turbo_asm && info()->shared_info()->asm_function()) || 383 if (((FLAG_turbo_asm && info()->shared_info()->asm_function()) ||
383 (dont_crankshaft && strcmp(FLAG_turbo_filter, "~~") == 0) || 384 (dont_crankshaft && strcmp(FLAG_turbo_filter, "~~") == 0) ||
384 info()->closure()->PassesFilter(FLAG_turbo_filter)) && 385 info()->closure()->PassesFilter(FLAG_turbo_filter)) &&
385 (FLAG_turbo_osr || !info()->is_osr())) { 386 (FLAG_turbo_osr || !info()->is_osr())) {
386 // Use TurboFan for the compilation. 387 // Use TurboFan for the compilation.
387 if (FLAG_trace_opt) { 388 if (FLAG_trace_opt) {
388 OFStream os(stdout); 389 OFStream os(stdout);
(...skipping 560 matching lines...) Expand 10 before | Expand all | Expand 10 after
949 // can be added without losing IC state. 950 // can be added without losing IC state.
950 if (shared->code()->kind() == Code::FUNCTION && 951 if (shared->code()->kind() == Code::FUNCTION &&
951 shared->code()->has_reloc_info_for_serialization()) { 952 shared->code()->has_reloc_info_for_serialization()) {
952 unoptimized.PrepareForSerializing(); 953 unoptimized.PrepareForSerializing();
953 } 954 }
954 if (!FullCodeGenerator::MakeCode(&unoptimized)) return false; 955 if (!FullCodeGenerator::MakeCode(&unoptimized)) return false;
955 956
956 shared->EnableDeoptimizationSupport(*unoptimized.code()); 957 shared->EnableDeoptimizationSupport(*unoptimized.code());
957 shared->set_feedback_vector(*unoptimized.feedback_vector()); 958 shared->set_feedback_vector(*unoptimized.feedback_vector());
958 959
960 info->MarkAsCompiled();
961
959 // The scope info might not have been set if a lazily compiled 962 // The scope info might not have been set if a lazily compiled
960 // function is inlined before being called for the first time. 963 // function is inlined before being called for the first time.
961 if (shared->scope_info() == ScopeInfo::Empty(info->isolate())) { 964 if (shared->scope_info() == ScopeInfo::Empty(info->isolate())) {
962 Handle<ScopeInfo> target_scope_info = 965 Handle<ScopeInfo> target_scope_info =
963 ScopeInfo::Create(info->isolate(), info->zone(), info->scope()); 966 ScopeInfo::Create(info->isolate(), info->zone(), info->scope());
964 shared->set_scope_info(*target_scope_info); 967 shared->set_scope_info(*target_scope_info);
965 } 968 }
966 969
967 // The existing unoptimized code was replaced with the new one. 970 // The existing unoptimized code was replaced with the new one.
968 RecordFunctionCompilation(Logger::LAZY_COMPILE_TAG, &unoptimized, shared); 971 RecordFunctionCompilation(Logger::LAZY_COMPILE_TAG, &unoptimized, shared);
(...skipping 648 matching lines...) Expand 10 before | Expand all | Expand 10 after
1617 1620
1618 1621
1619 #if DEBUG 1622 #if DEBUG
1620 void CompilationInfo::PrintAstForTesting() { 1623 void CompilationInfo::PrintAstForTesting() {
1621 PrintF("--- Source from AST ---\n%s\n", 1624 PrintF("--- Source from AST ---\n%s\n",
1622 PrettyPrinter(isolate(), zone()).PrintProgram(function())); 1625 PrettyPrinter(isolate(), zone()).PrintProgram(function()));
1623 } 1626 }
1624 #endif 1627 #endif
1625 } // namespace internal 1628 } // namespace internal
1626 } // namespace v8 1629 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler.h ('k') | test/mjsunit/regress/regress-crbug-504787.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698