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

Side by Side Diff: src/compiler.cc

Issue 1155503002: [turbofan] Prepare mechanism to enable TF on language subset. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix think'o! Created 5 years, 7 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/ast-numbering.cc ('k') | src/flag-definitions.h » ('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 357 matching lines...) Expand 10 before | Expand all | Expand 10 after
368 return SetLastStatus(FAILED); 368 return SetLastStatus(FAILED);
369 } 369 }
370 if (FLAG_hydrogen_stats) { 370 if (FLAG_hydrogen_stats) {
371 isolate()->GetHStatistics()->IncrementFullCodeGen(timer.Elapsed()); 371 isolate()->GetHStatistics()->IncrementFullCodeGen(timer.Elapsed());
372 } 372 }
373 } 373 }
374 374
375 DCHECK(info()->shared_info()->has_deoptimization_support()); 375 DCHECK(info()->shared_info()->has_deoptimization_support());
376 376
377 // Check the enabling conditions for TurboFan. 377 // Check the enabling conditions for TurboFan.
378 bool dont_crankshaft = info()->shared_info()->dont_crankshaft();
378 if (((FLAG_turbo_asm && info()->shared_info()->asm_function()) || 379 if (((FLAG_turbo_asm && info()->shared_info()->asm_function()) ||
380 (dont_crankshaft && strcmp(FLAG_turbo_filter, "~~") == 0) ||
379 info()->closure()->PassesFilter(FLAG_turbo_filter)) && 381 info()->closure()->PassesFilter(FLAG_turbo_filter)) &&
380 (FLAG_turbo_osr || !info()->is_osr())) { 382 (FLAG_turbo_osr || !info()->is_osr())) {
381 // Use TurboFan for the compilation. 383 // Use TurboFan for the compilation.
382 if (FLAG_trace_opt) { 384 if (FLAG_trace_opt) {
383 OFStream os(stdout); 385 OFStream os(stdout);
384 os << "[compiling method " << Brief(*info()->closure()) 386 os << "[compiling method " << Brief(*info()->closure())
385 << " using TurboFan"; 387 << " using TurboFan";
386 if (info()->is_osr()) os << " OSR"; 388 if (info()->is_osr()) os << " OSR";
387 os << "]" << std::endl; 389 os << "]" << std::endl;
388 } 390 }
389 391
390 if (info()->shared_info()->asm_function()) { 392 if (info()->shared_info()->asm_function()) {
391 info()->MarkAsContextSpecializing(); 393 info()->MarkAsContextSpecializing();
392 } else if (FLAG_turbo_type_feedback) { 394 } else if (FLAG_turbo_type_feedback) {
393 info()->MarkAsTypeFeedbackEnabled(); 395 info()->MarkAsTypeFeedbackEnabled();
394 info()->EnsureFeedbackVector(); 396 info()->EnsureFeedbackVector();
395 } 397 }
396 398
397 Timer t(this, &time_taken_to_create_graph_); 399 Timer t(this, &time_taken_to_create_graph_);
398 compiler::Pipeline pipeline(info()); 400 compiler::Pipeline pipeline(info());
399 pipeline.GenerateCode(); 401 pipeline.GenerateCode();
400 if (!info()->code().is_null()) { 402 if (!info()->code().is_null()) {
401 return SetLastStatus(SUCCEEDED); 403 return SetLastStatus(SUCCEEDED);
402 } 404 }
403 } 405 }
404 406
405 if (!isolate()->use_crankshaft()) { 407 if (!isolate()->use_crankshaft() || dont_crankshaft) {
406 // Crankshaft is entirely disabled. 408 // Crankshaft is entirely disabled.
407 return SetLastStatus(FAILED); 409 return SetLastStatus(FAILED);
408 } 410 }
409 411
410 Scope* scope = info()->scope(); 412 Scope* scope = info()->scope();
411 if (LUnallocated::TooManyParameters(scope->num_parameters())) { 413 if (LUnallocated::TooManyParameters(scope->num_parameters())) {
412 // Crankshaft would require too many Lithium operands. 414 // Crankshaft would require too many Lithium operands.
413 return AbortOptimization(kTooManyParameters); 415 return AbortOptimization(kTooManyParameters);
414 } 416 }
415 417
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
731 static bool Renumber(ParseInfo* parse_info) { 733 static bool Renumber(ParseInfo* parse_info) {
732 if (!AstNumbering::Renumber(parse_info->isolate(), parse_info->zone(), 734 if (!AstNumbering::Renumber(parse_info->isolate(), parse_info->zone(),
733 parse_info->function())) { 735 parse_info->function())) {
734 return false; 736 return false;
735 } 737 }
736 Handle<SharedFunctionInfo> shared_info = parse_info->shared_info(); 738 Handle<SharedFunctionInfo> shared_info = parse_info->shared_info();
737 if (!shared_info.is_null()) { 739 if (!shared_info.is_null()) {
738 FunctionLiteral* lit = parse_info->function(); 740 FunctionLiteral* lit = parse_info->function();
739 shared_info->set_ast_node_count(lit->ast_node_count()); 741 shared_info->set_ast_node_count(lit->ast_node_count());
740 MaybeDisableOptimization(shared_info, lit->dont_optimize_reason()); 742 MaybeDisableOptimization(shared_info, lit->dont_optimize_reason());
743 shared_info->set_dont_crankshaft(lit->flags()->Contains(kDontCrankshaft));
741 shared_info->set_dont_cache(lit->flags()->Contains(kDontCache)); 744 shared_info->set_dont_cache(lit->flags()->Contains(kDontCache));
742 } 745 }
743 return true; 746 return true;
744 } 747 }
745 748
746 749
747 bool Compiler::Analyze(ParseInfo* info) { 750 bool Compiler::Analyze(ParseInfo* info) {
748 DCHECK(info->function() != NULL); 751 DCHECK(info->function() != NULL);
749 if (!Rewriter::Rewrite(info)) return false; 752 if (!Rewriter::Rewrite(info)) return false;
750 if (!Scope::Analyze(info)) return false; 753 if (!Scope::Analyze(info)) return false;
(...skipping 810 matching lines...) Expand 10 before | Expand all | Expand 10 after
1561 } 1564 }
1562 1565
1563 1566
1564 #if DEBUG 1567 #if DEBUG
1565 void CompilationInfo::PrintAstForTesting() { 1568 void CompilationInfo::PrintAstForTesting() {
1566 PrintF("--- Source from AST ---\n%s\n", 1569 PrintF("--- Source from AST ---\n%s\n",
1567 PrettyPrinter(isolate(), zone()).PrintProgram(function())); 1570 PrettyPrinter(isolate(), zone()).PrintProgram(function()));
1568 } 1571 }
1569 #endif 1572 #endif
1570 } } // namespace v8::internal 1573 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/ast-numbering.cc ('k') | src/flag-definitions.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698