Index: src/hydrogen.cc |
diff --git a/src/hydrogen.cc b/src/hydrogen.cc |
index 0aa063bb628b3b1cbb8fbd28eaeadff91e1cc913..f286dacbe8d43366828c5dfad4651c6056cff07c 100644 |
--- a/src/hydrogen.cc |
+++ b/src/hydrogen.cc |
@@ -152,8 +152,11 @@ HSimulate* HBasicBlock::CreateSimulate(BailoutId ast_id, |
for (int i = 0; i < push_count; ++i) { |
instr->AddPushedValue(environment->ExpressionStackAt(i)); |
} |
- for (int i = 0; i < environment->assigned_variables()->length(); ++i) { |
- int index = environment->assigned_variables()->at(i); |
+ for (GrowableBitVector::Iterator it(environment->assigned_variables(), |
+ zone()); |
+ !it.Done(); |
+ it.Advance()) { |
+ int index = it.Current(); |
instr->AddAssignedValue(index, environment->Lookup(index)); |
} |
environment->ClearHistory(); |
@@ -9570,7 +9573,6 @@ HEnvironment::HEnvironment(HEnvironment* outer, |
Zone* zone) |
: closure_(closure), |
values_(0, zone), |
- assigned_variables_(4, zone), |
frame_type_(JS_FUNCTION), |
parameter_count_(0), |
specials_count_(1), |
@@ -9587,7 +9589,6 @@ HEnvironment::HEnvironment(HEnvironment* outer, |
HEnvironment::HEnvironment(Zone* zone) |
: values_(0, zone), |
- assigned_variables_(0, zone), |
frame_type_(STUB), |
parameter_count_(0), |
specials_count_(0), |
@@ -9604,7 +9605,6 @@ HEnvironment::HEnvironment(Zone* zone) |
HEnvironment::HEnvironment(const HEnvironment* other, Zone* zone) |
: values_(0, zone), |
- assigned_variables_(0, zone), |
frame_type_(JS_FUNCTION), |
parameter_count_(0), |
specials_count_(1), |
@@ -9626,7 +9626,6 @@ HEnvironment::HEnvironment(HEnvironment* outer, |
Zone* zone) |
: closure_(closure), |
values_(arguments, zone), |
- assigned_variables_(0, zone), |
frame_type_(frame_type), |
parameter_count_(arguments), |
local_count_(0), |
@@ -9655,7 +9654,7 @@ void HEnvironment::Initialize(int parameter_count, |
void HEnvironment::Initialize(const HEnvironment* other) { |
closure_ = other->closure(); |
values_.AddAll(other->values_, zone()); |
- assigned_variables_.AddAll(other->assigned_variables_, zone()); |
+ assigned_variables_.Union(other->assigned_variables_, zone()); |
frame_type_ = other->frame_type_; |
parameter_count_ = other->parameter_count_; |
local_count_ = other->local_count_; |
@@ -9699,9 +9698,7 @@ void HEnvironment::AddIncomingEdge(HBasicBlock* block, HEnvironment* other) { |
void HEnvironment::Bind(int index, HValue* value) { |
ASSERT(value != NULL); |
- if (!assigned_variables_.Contains(index)) { |
- assigned_variables_.Add(index, zone()); |
- } |
+ assigned_variables_.Add(index, zone()); |
values_[index] = value; |
} |