| Index: src/builtins/builtins-object.cc
|
| diff --git a/src/builtins/builtins-object.cc b/src/builtins/builtins-object.cc
|
| index 3c5e6aa2a114826a895104b064df56d3392062cc..ed21528fe8f7631c932056c6a84d426e89a12264 100644
|
| --- a/src/builtins/builtins-object.cc
|
| +++ b/src/builtins/builtins-object.cc
|
| @@ -37,24 +37,26 @@ void Builtins::Generate_ObjectHasOwnProperty(
|
| Node* map = assembler.LoadMap(object);
|
| Node* instance_type = assembler.LoadMapInstanceType(map);
|
|
|
| - Variable var_index(&assembler, MachineType::PointerRepresentation());
|
| -
|
| - Label keyisindex(&assembler), if_iskeyunique(&assembler);
|
| - assembler.TryToName(key, &keyisindex, &var_index, &if_iskeyunique,
|
| - &call_runtime);
|
| -
|
| - assembler.Bind(&if_iskeyunique);
|
| - assembler.TryHasOwnProperty(object, map, instance_type, key, &return_true,
|
| - &return_false, &call_runtime);
|
| -
|
| - assembler.Bind(&keyisindex);
|
| - // Handle negative keys in the runtime.
|
| - assembler.GotoIf(
|
| - assembler.IntPtrLessThan(var_index.value(), assembler.IntPtrConstant(0)),
|
| - &call_runtime);
|
| - assembler.TryLookupElement(object, map, instance_type, var_index.value(),
|
| - &return_true, &return_false, &call_runtime);
|
| -
|
| + {
|
| + Variable var_index(&assembler, MachineType::PointerRepresentation());
|
| + Variable var_unique(&assembler, MachineRepresentation::kTagged);
|
| +
|
| + Label keyisindex(&assembler), if_iskeyunique(&assembler);
|
| + assembler.TryToName(key, &keyisindex, &var_index, &if_iskeyunique,
|
| + &var_unique, &call_runtime);
|
| +
|
| + assembler.Bind(&if_iskeyunique);
|
| + assembler.TryHasOwnProperty(object, map, instance_type, var_unique.value(),
|
| + &return_true, &return_false, &call_runtime);
|
| +
|
| + assembler.Bind(&keyisindex);
|
| + // Handle negative keys in the runtime.
|
| + assembler.GotoIf(assembler.IntPtrLessThan(var_index.value(),
|
| + assembler.IntPtrConstant(0)),
|
| + &call_runtime);
|
| + assembler.TryLookupElement(object, map, instance_type, var_index.value(),
|
| + &return_true, &return_false, &call_runtime);
|
| + }
|
| assembler.Bind(&return_true);
|
| assembler.Return(assembler.BooleanConstant(true));
|
|
|
|
|