| Index: src/hydrogen.cc
 | 
| diff --git a/src/hydrogen.cc b/src/hydrogen.cc
 | 
| index 50e3b2124df60ddc29331f0d9d4feb8f753c6a54..3d3575fb5d4041d5c8113b4edca319156dbc85a7 100644
 | 
| --- a/src/hydrogen.cc
 | 
| +++ b/src/hydrogen.cc
 | 
| @@ -10488,16 +10488,21 @@ HValue* HGraphBuilder::BuildBinaryOperation(
 | 
|        return AddUncasted<HInvokeFunction>(function, 2);
 | 
|      }
 | 
|  
 | 
| -    // Fast path for empty constant strings.
 | 
| -    if (left->IsConstant() &&
 | 
| -        HConstant::cast(left)->HasStringValue() &&
 | 
| -        HConstant::cast(left)->StringValue()->length() == 0) {
 | 
| -      return right;
 | 
| -    }
 | 
| -    if (right->IsConstant() &&
 | 
| -        HConstant::cast(right)->HasStringValue() &&
 | 
| -        HConstant::cast(right)->StringValue()->length() == 0) {
 | 
| -      return left;
 | 
| +    // Fast paths for empty constant strings.
 | 
| +    Handle<String> left_string =
 | 
| +        left->IsConstant() && HConstant::cast(left)->HasStringValue()
 | 
| +            ? HConstant::cast(left)->StringValue()
 | 
| +            : Handle<String>();
 | 
| +    Handle<String> right_string =
 | 
| +        right->IsConstant() && HConstant::cast(right)->HasStringValue()
 | 
| +            ? HConstant::cast(right)->StringValue()
 | 
| +            : Handle<String>();
 | 
| +    if (!left_string.is_null() && left_string->length() == 0) return right;
 | 
| +    if (!right_string.is_null() && right_string->length() == 0) return left;
 | 
| +    if (!left_string.is_null() && !right_string.is_null()) {
 | 
| +      return AddUncasted<HStringAdd>(
 | 
| +          left, right, allocation_mode.GetPretenureMode(),
 | 
| +          STRING_ADD_CHECK_NONE, allocation_mode.feedback_site());
 | 
|      }
 | 
|  
 | 
|      // Register the dependent code with the allocation site.
 | 
| 
 |