Revision: 4120
Author: [email protected]
Date: Fri Mar 12 07:01:05 2010
Log: Only invoke reaching definitions if there are >0 variables and >0
definitions.
Review URL: http://codereview.chromium.org/885004
http://code.google.com/p/v8/source/detail?r=4120
Modified:
/branches/bleeding_edge/src/compiler.cc
/branches/bleeding_edge/src/data-flow.cc
=======================================
--- /branches/bleeding_edge/src/compiler.cc Thu Mar 11 08:24:05 2010
+++ /branches/bleeding_edge/src/compiler.cc Fri Mar 12 07:01:05 2010
@@ -95,10 +95,12 @@
if (!builder.HasStackOverflow()) {
int variable_count =
function->num_parameters() +
function->scope()->num_stack_slots();
- ReachingDefinitions rd(builder.postorder(),
- builder.definitions(),
- variable_count);
- rd.Compute();
+ if (variable_count > 0 && builder.definitions()->length() > 0) {
+ ReachingDefinitions rd(builder.postorder(),
+ builder.definitions(),
+ variable_count);
+ rd.Compute();
+ }
}
#ifdef DEBUG
@@ -497,10 +499,12 @@
if (!builder.HasStackOverflow()) {
int variable_count =
literal->num_parameters() + literal->scope()->num_stack_slots();
- ReachingDefinitions rd(builder.postorder(),
- builder.definitions(),
- variable_count);
- rd.Compute();
+ if (variable_count > 0 && builder.definitions()->length() > 0) {
+ ReachingDefinitions rd(builder.postorder(),
+ builder.definitions(),
+ variable_count);
+ rd.Compute();
+ }
}
#ifdef DEBUG
=======================================
--- /branches/bleeding_edge/src/data-flow.cc Fri Mar 12 06:06:04 2010
+++ /branches/bleeding_edge/src/data-flow.cc Fri Mar 12 07:01:05 2010
@@ -2061,7 +2061,7 @@
void ReachingDefinitions::Compute() {
- if (definitions_->is_empty()) return;
+ ASSERT(!definitions_->is_empty());
int variable_count = variables_.length();
int definition_count = definitions_->length();
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev