| Index: src/hydrogen-instructions.cc
|
| diff --git a/src/hydrogen-instructions.cc b/src/hydrogen-instructions.cc
|
| index 6865465694402841779541ca516682cb3c8f2924..170f5eda6c51d8eb60b137eb6f8c275b5d7d7a85 100644
|
| --- a/src/hydrogen-instructions.cc
|
| +++ b/src/hydrogen-instructions.cc
|
| @@ -1155,12 +1155,8 @@ void HBoundsCheck::InferRepresentation(HInferRepresentation* h_infer) {
|
| HValue* actual_length = length()->ActualValue();
|
| Representation index_rep = actual_index->representation();
|
| Representation length_rep = actual_length->representation();
|
| - if (index_rep.IsTagged() && actual_index->type().IsSmi()) {
|
| - index_rep = Representation::Smi();
|
| - }
|
| - if (length_rep.IsTagged() && actual_length->type().IsSmi()) {
|
| - length_rep = Representation::Smi();
|
| - }
|
| + if (index_rep.IsTagged()) index_rep = Representation::Smi();
|
| + if (length_rep.IsTagged()) length_rep = Representation::Smi();
|
| Representation r = index_rep.generalize(length_rep);
|
| if (r.is_more_general_than(Representation::Integer32())) {
|
| r = Representation::Integer32();
|
| @@ -3327,9 +3323,10 @@ HInstruction* HStringAdd::New(
|
| HConstant* c_right = HConstant::cast(right);
|
| HConstant* c_left = HConstant::cast(left);
|
| if (c_left->HasStringValue() && c_right->HasStringValue()) {
|
| - Handle<String> concat = zone->isolate()->factory()->NewFlatConcatString(
|
| - c_left->StringValue(), c_right->StringValue());
|
| - return new(zone) HConstant(concat, Representation::Tagged());
|
| + Factory* factory = Isolate::Current()->factory();
|
| + return new(zone) HConstant(factory->NewConsString(c_left->StringValue(),
|
| + c_right->StringValue()),
|
| + Representation::Tagged());
|
| }
|
| }
|
| return new(zone) HStringAdd(context, left, right);
|
|
|