Reviewers: titzer,

Description:
Ensure environment does not contain nil values.

[email protected]

Please review this at https://codereview.chromium.org/436553003/

SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files (+2, -8 lines):
  M src/compiler/ast-graph-builder.cc
  M src/compiler/graph-builder.cc


Index: src/compiler/ast-graph-builder.cc
diff --git a/src/compiler/ast-graph-builder.cc b/src/compiler/ast-graph-builder.cc index 47adab368527c29a4fb795e8fc20e9b3f82f15fb..2bcf53a98f0cb48c43dfbe6c4d1afc11ff85e24f 100644
--- a/src/compiler/ast-graph-builder.cc
+++ b/src/compiler/ast-graph-builder.cc
@@ -177,18 +177,14 @@ AstGraphBuilder::Environment::Environment(AstGraphBuilder* builder,
   ASSERT_EQ(scope->num_parameters() + 1, parameters_count());

   // Bind the receiver variable.
-  values()->insert(values()->end(), parameters_count(),
-                   static_cast<Node*>(NULL));
   Node* receiver = builder->graph()->NewNode(common()->Parameter(0));
-  Bind(scope->receiver(), receiver);
+  values()->push_back(receiver);

   // Bind all parameter variables. The parameter indices are shifted by 1
   // (receiver is parameter index -1 but environment index 0).
   for (int i = 0; i < scope->num_parameters(); ++i) {
-    // Unused parameters are allocated to Variable::UNALLOCATED.
-    if (!scope->parameter(i)->IsParameter()) continue;
Node* parameter = builder->graph()->NewNode(common()->Parameter(i + 1));
-    Bind(scope->parameter(i), parameter);
+    values()->push_back(parameter);
   }

   // Bind all local variables to undefined.
Index: src/compiler/graph-builder.cc
diff --git a/src/compiler/graph-builder.cc b/src/compiler/graph-builder.cc
index 94606ce6daa66c51bd718d12f4b9c2cd06514eae..e58c7b6bd5162de30074986adf9228ee7816efcd 100644
--- a/src/compiler/graph-builder.cc
+++ b/src/compiler/graph-builder.cc
@@ -145,7 +145,6 @@ void StructuredGraphBuilder::Environment::Merge(Environment* other) { // Introduce Phi nodes for values that have differing input at merge points,
   // potentially extending an existing Phi node if possible.
   for (int i = 0; i < static_cast<int>(values_.size()); ++i) {
-    if (values_[i] == NULL) continue;
values_[i] = builder_->MergeValue(values_[i], other->values_[i], control);
   }
 }
@@ -154,7 +153,6 @@ void StructuredGraphBuilder::Environment::Merge(Environment* other) {
 void StructuredGraphBuilder::Environment::PrepareForLoop() {
   Node* control = GetControlDependency();
   for (int i = 0; i < static_cast<int>(values()->size()); ++i) {
-    if (values()->at(i) == NULL) continue;
     Node* phi = builder_->NewPhi(1, values()->at(i), control);
     values()->at(i) = phi;
   }


--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to