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

Side by Side Diff: src/compiler.cc

Issue 1823033002: [compiler] Move PassesFilter onto SharedFunctionInfo. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 9 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 | « no previous file | src/crankshaft/compilation-phase.cc » ('j') | src/objects.cc » ('J')
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/ast-numbering.h" 9 #include "src/ast/ast-numbering.h"
10 #include "src/ast/prettyprinter.h" 10 #include "src/ast/prettyprinter.h"
(...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 } 403 }
404 404
405 // Limit the number of times we try to optimize functions. 405 // Limit the number of times we try to optimize functions.
406 const int kMaxOptCount = 406 const int kMaxOptCount =
407 FLAG_deopt_every_n_times == 0 ? FLAG_max_opt_count : 1000; 407 FLAG_deopt_every_n_times == 0 ? FLAG_max_opt_count : 1000;
408 if (info()->opt_count() > kMaxOptCount) { 408 if (info()->opt_count() > kMaxOptCount) {
409 return AbortOptimization(kOptimizedTooManyTimes); 409 return AbortOptimization(kOptimizedTooManyTimes);
410 } 410 }
411 411
412 // Check the whitelist for Crankshaft. 412 // Check the whitelist for Crankshaft.
413 if (!info()->closure()->PassesFilter(FLAG_hydrogen_filter)) { 413 if (!info()->shared_info()->PassesFilter(FLAG_hydrogen_filter)) {
414 return AbortOptimization(kHydrogenFilter); 414 return AbortOptimization(kHydrogenFilter);
415 } 415 }
416 416
417 // Optimization requires a version of fullcode with deoptimization support. 417 // Optimization requires a version of fullcode with deoptimization support.
418 // Recompile the unoptimized version of the code if the current version 418 // Recompile the unoptimized version of the code if the current version
419 // doesn't have deoptimization support already. 419 // doesn't have deoptimization support already.
420 // Otherwise, if we are gathering compilation time and space statistics 420 // Otherwise, if we are gathering compilation time and space statistics
421 // for hydrogen, gather baseline statistics for a fullcode compilation. 421 // for hydrogen, gather baseline statistics for a fullcode compilation.
422 bool should_recompile = !info()->shared_info()->has_deoptimization_support(); 422 bool should_recompile = !info()->shared_info()->has_deoptimization_support();
423 if (should_recompile || FLAG_hydrogen_stats) { 423 if (should_recompile || FLAG_hydrogen_stats) {
(...skipping 20 matching lines...) Expand all
444 bool is_turbofanable_asm = FLAG_turbo_asm && 444 bool is_turbofanable_asm = FLAG_turbo_asm &&
445 info()->shared_info()->asm_function() && 445 info()->shared_info()->asm_function() &&
446 !optimization_disabled; 446 !optimization_disabled;
447 447
448 // 2. Fallback for features unsupported by Crankshaft. 448 // 2. Fallback for features unsupported by Crankshaft.
449 bool is_unsupported_by_crankshaft_but_turbofanable = 449 bool is_unsupported_by_crankshaft_but_turbofanable =
450 dont_crankshaft && strcmp(FLAG_turbo_filter, "~~") == 0 && 450 dont_crankshaft && strcmp(FLAG_turbo_filter, "~~") == 0 &&
451 !optimization_disabled; 451 !optimization_disabled;
452 452
453 // 3. Explicitly enabled by the command-line filter. 453 // 3. Explicitly enabled by the command-line filter.
454 bool passes_turbo_filter = info()->closure()->PassesFilter(FLAG_turbo_filter); 454 bool passes_turbo_filter =
455 info()->shared_info()->PassesFilter(FLAG_turbo_filter);
455 456
456 // If this is OSR request, OSR must be enabled by Turbofan. 457 // If this is OSR request, OSR must be enabled by Turbofan.
457 bool passes_osr_test = FLAG_turbo_osr || !info()->is_osr(); 458 bool passes_osr_test = FLAG_turbo_osr || !info()->is_osr();
458 459
459 if ((is_turbofanable_asm || is_unsupported_by_crankshaft_but_turbofanable || 460 if ((is_turbofanable_asm || is_unsupported_by_crankshaft_but_turbofanable ||
460 passes_turbo_filter) && 461 passes_turbo_filter) &&
461 passes_osr_test) { 462 passes_osr_test) {
462 // Use TurboFan for the compilation. 463 // Use TurboFan for the compilation.
463 if (FLAG_trace_opt) { 464 if (FLAG_trace_opt) {
464 OFStream os(stdout); 465 OFStream os(stdout);
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after
813 return false; 814 return false;
814 } 815 }
815 816
816 // Checks whether top level functions should be passed by the filter. 817 // Checks whether top level functions should be passed by the filter.
817 if (info->closure().is_null()) { 818 if (info->closure().is_null()) {
818 Vector<const char> filter = CStrVector(FLAG_ignition_filter); 819 Vector<const char> filter = CStrVector(FLAG_ignition_filter);
819 return (filter.length() == 0) || (filter.length() == 1 && filter[0] == '*'); 820 return (filter.length() == 0) || (filter.length() == 1 && filter[0] == '*');
820 } 821 }
821 822
822 // Finally respect the filter. 823 // Finally respect the filter.
823 return info->closure()->PassesFilter(FLAG_ignition_filter); 824 return info->closure()->shared()->PassesFilter(FLAG_ignition_filter);
Michael Starzinger 2016/03/22 09:06:31 Note that CompilationInfo::shared_info() cannot ye
Jakob Kummerow 2016/03/22 09:32:10 Acknowledged.
824 } 825 }
825 826
826 int CodeAndMetadataSize(CompilationInfo* info) { 827 int CodeAndMetadataSize(CompilationInfo* info) {
827 int size = 0; 828 int size = 0;
828 if (info->has_bytecode_array()) { 829 if (info->has_bytecode_array()) {
829 Handle<BytecodeArray> bytecode_array = info->bytecode_array(); 830 Handle<BytecodeArray> bytecode_array = info->bytecode_array();
830 size += bytecode_array->BytecodeArraySize(); 831 size += bytecode_array->BytecodeArraySize();
831 size += bytecode_array->constant_pool()->Size(); 832 size += bytecode_array->constant_pool()->Size();
832 size += bytecode_array->handler_table()->Size(); 833 size += bytecode_array->handler_table()->Size();
833 size += bytecode_array->source_position_table()->Size(); 834 size += bytecode_array->source_position_table()->Size();
(...skipping 1118 matching lines...) Expand 10 before | Expand all | Expand 10 after
1952 MaybeHandle<Code> code; 1953 MaybeHandle<Code> code;
1953 if (cached.code != nullptr) code = handle(cached.code); 1954 if (cached.code != nullptr) code = handle(cached.code);
1954 Handle<Context> native_context(function->context()->native_context()); 1955 Handle<Context> native_context(function->context()->native_context());
1955 SharedFunctionInfo::AddToOptimizedCodeMap(shared, native_context, code, 1956 SharedFunctionInfo::AddToOptimizedCodeMap(shared, native_context, code,
1956 literals, BailoutId::None()); 1957 literals, BailoutId::None());
1957 } 1958 }
1958 } 1959 }
1959 1960
1960 } // namespace internal 1961 } // namespace internal
1961 } // namespace v8 1962 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | src/crankshaft/compilation-phase.cc » ('j') | src/objects.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698