Revision: 11036
Author: [email protected]
Date: Wed Mar 14 02:45:17 2012
Log: Change --hydrogen-filter to allow specifying a negative filter
for optimized functions.
When prepending a '-' to the function name, the function will not be
optimized.
--hydrogen-filter=foo works as before.
--hydrogen-filter=-foo means don't optimize foo.
Review URL: https://chromiumcodereview.appspot.com/9691042
http://code.google.com/p/v8/source/detail?r=11036
Modified:
/branches/bleeding_edge/src/codegen.cc
/branches/bleeding_edge/src/compiler.cc
/branches/bleeding_edge/src/flag-definitions.h
=======================================
--- /branches/bleeding_edge/src/codegen.cc Wed Feb 8 05:53:24 2012
+++ /branches/bleeding_edge/src/codegen.cc Wed Mar 14 02:45:17 2012
@@ -71,13 +71,6 @@
} else {
print_source = FLAG_print_source;
print_ast = FLAG_print_ast;
- Vector<const char> filter = CStrVector(FLAG_hydrogen_filter);
- if (print_source && !filter.is_empty()) {
- print_source = info->function()->name()->IsEqualTo(filter);
- }
- if (print_ast && !filter.is_empty()) {
- print_ast = info->function()->name()->IsEqualTo(filter);
- }
ftype = "user-defined";
}
@@ -124,11 +117,9 @@
bool print_code = Isolate::Current()->bootstrapper()->IsActive()
? FLAG_print_builtin_code
: (FLAG_print_code || (info->IsOptimizing() && FLAG_print_opt_code));
- Vector<const char> filter = CStrVector(FLAG_hydrogen_filter);
- FunctionLiteral* function = info->function();
- bool match = filter.is_empty() ||
function->debug_name()->IsEqualTo(filter);
- if (print_code && match) {
+ if (print_code) {
// Print the source code if available.
+ FunctionLiteral* function = info->function();
Handle<Script> script = info->script();
if (!script->IsUndefined() && !script->source()->IsUndefined()) {
PrintF("--- Raw source ---\n");
=======================================
--- /branches/bleeding_edge/src/compiler.cc Fri Mar 9 08:23:06 2012
+++ /branches/bleeding_edge/src/compiler.cc Wed Mar 14 02:45:17 2012
@@ -243,12 +243,15 @@
}
// Take --hydrogen-filter into account.
- Vector<const char> filter = CStrVector(FLAG_hydrogen_filter);
Handle<String> name = info->function()->debug_name();
- bool match = filter.is_empty() || name->IsEqualTo(filter);
- if (!match) {
- info->SetCode(code);
- return true;
+ if (*FLAG_hydrogen_filter != '\0') {
+ Vector<const char> filter = CStrVector(FLAG_hydrogen_filter);
+ if ((filter[0] == '-'
+ && name->IsEqualTo(filter.SubVector(1, filter.length())))
+ || (filter[0] != '-' && !name->IsEqualTo(filter))) {
+ info->SetCode(code);
+ return true;
+ }
}
// Recompile the unoptimized version of the code if the current version
=======================================
--- /branches/bleeding_edge/src/flag-definitions.h Tue Mar 13 04:38:37 2012
+++ /branches/bleeding_edge/src/flag-definitions.h Wed Mar 14 02:45:17 2012
@@ -159,7 +159,7 @@
// Flags for Crankshaft.
DEFINE_bool(crankshaft, true, "use crankshaft")
-DEFINE_string(hydrogen_filter, "", "hydrogen use/trace filter")
+DEFINE_string(hydrogen_filter, "", "optimization filter")
DEFINE_bool(use_range, true, "use hydrogen range analysis")
DEFINE_bool(eliminate_dead_phis, true, "eliminate dead phis")
DEFINE_bool(use_gvn, true, "use hydrogen global value numbering")
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev