| Index: src/api.cc
|
| diff --git a/src/api.cc b/src/api.cc
|
| index 6b50f99cdad232648012734d976959b65a62c871..bf3ed278537c1df86f15d19cd474378c52045820 100644
|
| --- a/src/api.cc
|
| +++ b/src/api.cc
|
| @@ -3192,39 +3192,7 @@ int v8::Object::GetIdentityHash() {
|
| ENTER_V8(isolate);
|
| i::HandleScope scope(isolate);
|
| i::Handle<i::JSObject> self = Utils::OpenHandle(this);
|
| - i::Handle<i::Object> hidden_props_obj(i::GetHiddenProperties(self, true));
|
| - if (!hidden_props_obj->IsJSObject()) {
|
| - // We failed to create hidden properties. That's a detached
|
| - // global proxy.
|
| - ASSERT(hidden_props_obj->IsUndefined());
|
| - return 0;
|
| - }
|
| - i::Handle<i::JSObject> hidden_props =
|
| - i::Handle<i::JSObject>::cast(hidden_props_obj);
|
| - i::Handle<i::String> hash_symbol = isolate->factory()->identity_hash_symbol();
|
| - if (hidden_props->HasLocalProperty(*hash_symbol)) {
|
| - i::Handle<i::Object> hash = i::GetProperty(hidden_props, hash_symbol);
|
| - CHECK(!hash.is_null());
|
| - CHECK(hash->IsSmi());
|
| - return i::Smi::cast(*hash)->value();
|
| - }
|
| -
|
| - int hash_value;
|
| - int attempts = 0;
|
| - do {
|
| - // Generate a random 32-bit hash value but limit range to fit
|
| - // within a smi.
|
| - hash_value = i::V8::Random(self->GetIsolate()) & i::Smi::kMaxValue;
|
| - attempts++;
|
| - } while (hash_value == 0 && attempts < 30);
|
| - hash_value = hash_value != 0 ? hash_value : 1; // never return 0
|
| - CHECK(!i::SetLocalPropertyIgnoreAttributes(
|
| - hidden_props,
|
| - hash_symbol,
|
| - i::Handle<i::Object>(i::Smi::FromInt(hash_value)),
|
| - static_cast<PropertyAttributes>(None)).is_null());
|
| -
|
| - return hash_value;
|
| + return i::GetIdentityHash(self)->value();
|
| }
|
|
|
|
|
|
|