| 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;
|
| }
|
|
|
|
|