| Index: src/hydrogen.cc
|
| diff --git a/src/hydrogen.cc b/src/hydrogen.cc
|
| index 89f61decba5c833f9bafc5e94a829fc3b2216ee1..1b6cb11c54c0e9d41c407f4eebbaef673ae61950 100644
|
| --- a/src/hydrogen.cc
|
| +++ b/src/hydrogen.cc
|
| @@ -1513,13 +1513,23 @@ void HGraphBuilder::BuildKeyedIndexCheck(HValue* key,
|
| Token::BIT_AND,
|
| instance_type,
|
| Add<HConstant>(static_cast<int>(kIsNotInternalizedMask)));
|
| - DeoptimizeIf<HCompareNumericAndBranch>(
|
| - not_internalized_bit,
|
| - graph()->GetConstant0(),
|
| - Token::NE,
|
| - "BuildKeyedIndexCheck: string isn't internalized");
|
| - // Key guaranteed to be a unqiue string
|
| +
|
| + IfBuilder internalized(this);
|
| + internalized.If<HCompareNumericAndBranch>(not_internalized_bit,
|
| + graph()->GetConstant0(),
|
| + Token::EQ);
|
| + internalized.Then();
|
| Push(key);
|
| +
|
| + internalized.Else();
|
| + Add<HPushArguments>(key);
|
| + HValue* intern_key = Add<HCallRuntime>(
|
| + isolate()->factory()->empty_string(),
|
| + Runtime::FunctionForId(Runtime::kInternalizeString), 1);
|
| + Push(intern_key);
|
| +
|
| + internalized.End();
|
| + // Key guaranteed to be a unique string
|
| }
|
| string_index_if.JoinContinuation(join_continuation);
|
| }
|
|
|