| Index: src/hydrogen-instructions.cc
|
| diff --git a/src/hydrogen-instructions.cc b/src/hydrogen-instructions.cc
|
| index 734cd2ed3dcb90f46b60c3dd0cb48fdee075b6a4..5bf5b48c22e4ee57fe50f9bc10948e043ac14b6e 100644
|
| --- a/src/hydrogen-instructions.cc
|
| +++ b/src/hydrogen-instructions.cc
|
| @@ -336,7 +336,8 @@ HUseListNode* HValue::RemoveUse(HValue* value, int index) {
|
| // Do not reuse use list nodes in debug mode, zap them.
|
| if (current != NULL) {
|
| HUseListNode* temp =
|
| - new HUseListNode(current->value(), current->index(), NULL);
|
| + new(block()->zone())
|
| + HUseListNode(current->value(), current->index(), NULL);
|
| current->Zap();
|
| current = temp;
|
| }
|
| @@ -495,8 +496,8 @@ void HValue::RegisterUse(int index, HValue* new_value) {
|
|
|
| if (new_value != NULL) {
|
| if (removed == NULL) {
|
| - new_value->use_list_ =
|
| - new HUseListNode(this, index, new_value->use_list_);
|
| + new_value->use_list_ = new(new_value->block()->zone()) HUseListNode(
|
| + this, index, new_value->use_list_);
|
| } else {
|
| removed->set_tail(new_value->use_list_);
|
| new_value->use_list_ = removed;
|
| @@ -964,7 +965,7 @@ HValue* HUnaryMathOperation::Canonicalize() {
|
| !HInstruction::cast(new_right)->IsLinked()) {
|
| HInstruction::cast(new_right)->InsertBefore(this);
|
| }
|
| - HMathFloorOfDiv* instr = new HMathFloorOfDiv(context(),
|
| + HMathFloorOfDiv* instr = new(block()->zone()) HMathFloorOfDiv(context(),
|
| new_left,
|
| new_right);
|
| // Replace this HMathFloor instruction by the new HMathFloorOfDiv.
|
| @@ -1251,7 +1252,7 @@ void HPhi::PrintTo(StringStream* stream) {
|
|
|
|
|
| void HPhi::AddInput(HValue* value) {
|
| - inputs_.Add(NULL);
|
| + inputs_.Add(NULL, value->block()->zone());
|
| SetOperandAt(OperandCount() - 1, value);
|
| // Mark phis that may have 'arguments' directly or indirectly as an operand.
|
| if (!CheckFlag(kIsArguments) && value->CheckFlag(kIsArguments)) {
|
| @@ -1397,18 +1398,18 @@ HConstant::HConstant(Handle<Object> handle, Representation r)
|
| }
|
|
|
|
|
| -HConstant* HConstant::CopyToRepresentation(Representation r) const {
|
| +HConstant* HConstant::CopyToRepresentation(Representation r, Zone* zone) const {
|
| if (r.IsInteger32() && !has_int32_value_) return NULL;
|
| if (r.IsDouble() && !has_double_value_) return NULL;
|
| - return new HConstant(handle_, r);
|
| + return new(zone) HConstant(handle_, r);
|
| }
|
|
|
|
|
| -HConstant* HConstant::CopyToTruncatedInt32() const {
|
| +HConstant* HConstant::CopyToTruncatedInt32(Zone* zone) const {
|
| if (!has_double_value_) return NULL;
|
| int32_t truncated = NumberToInt32(*handle_);
|
| - return new HConstant(FACTORY->NewNumberFromInt(truncated),
|
| - Representation::Integer32());
|
| + return new(zone) HConstant(FACTORY->NewNumberFromInt(truncated),
|
| + Representation::Integer32());
|
| }
|
|
|
|
|
| @@ -1620,8 +1621,9 @@ void HLoadNamedField::PrintDataTo(StringStream* stream) {
|
| HLoadNamedFieldPolymorphic::HLoadNamedFieldPolymorphic(HValue* context,
|
| HValue* object,
|
| SmallMapList* types,
|
| - Handle<String> name)
|
| - : types_(Min(types->length(), kMaxLoadPolymorphism)),
|
| + Handle<String> name,
|
| + Zone* zone)
|
| + : types_(Min(types->length(), kMaxLoadPolymorphism), zone),
|
| name_(name),
|
| need_generic_(false) {
|
| SetOperandAt(0, context);
|
| @@ -1644,11 +1646,11 @@ HLoadNamedFieldPolymorphic::HLoadNamedFieldPolymorphic(HValue* context,
|
| } else {
|
| SetGVNFlag(kDependsOnBackingStoreFields);
|
| }
|
| - types_.Add(types->at(i));
|
| + types_.Add(types->at(i), zone);
|
| break;
|
| }
|
| case CONSTANT_FUNCTION:
|
| - types_.Add(types->at(i));
|
| + types_.Add(types->at(i), zone);
|
| break;
|
| case MAP_TRANSITION:
|
| // We should just ignore these since they are not relevant to a load
|
| @@ -1765,10 +1767,10 @@ HValue* HLoadKeyedGeneric::Canonicalize() {
|
| index_cache,
|
| key_load->key(),
|
| OMIT_HOLE_CHECK);
|
| - HLoadFieldByIndex* load = new(block()->zone()) HLoadFieldByIndex(
|
| - object(), index);
|
| map_check->InsertBefore(this);
|
| index->InsertBefore(this);
|
| + HLoadFieldByIndex* load = new(block()->zone()) HLoadFieldByIndex(
|
| + object(), index);
|
| load->InsertBefore(this);
|
| return load;
|
| }
|
|
|