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