| Index: src/objects.cc
|
| diff --git a/src/objects.cc b/src/objects.cc
|
| index c91ed7c5fd366c24c544b2e4a70637a56e8eabfc..2287dd95c052992be250e87746daeb327e0120d2 100644
|
| --- a/src/objects.cc
|
| +++ b/src/objects.cc
|
| @@ -5076,7 +5076,7 @@ Object* JSObject::GetHiddenProperty(Handle<Name> key) {
|
| // If the proxy is detached, return undefined.
|
| if (iter.IsAtEnd()) return GetHeap()->the_hole_value();
|
| DCHECK(iter.GetCurrent()->IsJSGlobalObject());
|
| - return JSObject::cast(iter.GetCurrent())->GetHiddenProperty(key);
|
| + return iter.GetCurrent<JSObject>()->GetHiddenProperty(key);
|
| }
|
| DCHECK(!IsJSGlobalProxy());
|
| Object* inline_value = GetHiddenPropertiesHashTable();
|
| @@ -5101,9 +5101,8 @@ Handle<Object> JSObject::SetHiddenProperty(Handle<JSObject> object,
|
| // If the proxy is detached, return undefined.
|
| if (iter.IsAtEnd()) return isolate->factory()->undefined_value();
|
| DCHECK(PrototypeIterator::GetCurrent(iter)->IsJSGlobalObject());
|
| - return SetHiddenProperty(
|
| - Handle<JSObject>::cast(PrototypeIterator::GetCurrent(iter)), key,
|
| - value);
|
| + return SetHiddenProperty(PrototypeIterator::GetCurrent<JSObject>(iter), key,
|
| + value);
|
| }
|
| DCHECK(!object->IsJSGlobalProxy());
|
|
|
| @@ -5134,8 +5133,8 @@ void JSObject::DeleteHiddenProperty(Handle<JSObject> object, Handle<Name> key) {
|
| PrototypeIterator iter(isolate, object);
|
| if (iter.IsAtEnd()) return;
|
| DCHECK(PrototypeIterator::GetCurrent(iter)->IsJSGlobalObject());
|
| - return DeleteHiddenProperty(
|
| - Handle<JSObject>::cast(PrototypeIterator::GetCurrent(iter)), key);
|
| + return DeleteHiddenProperty(PrototypeIterator::GetCurrent<JSObject>(iter),
|
| + key);
|
| }
|
|
|
| Object* inline_value = object->GetHiddenPropertiesHashTable();
|
| @@ -5548,8 +5547,7 @@ MaybeHandle<Object> JSObject::PreventExtensions(Handle<JSObject> object) {
|
| PrototypeIterator iter(isolate, object);
|
| if (iter.IsAtEnd()) return object;
|
| DCHECK(PrototypeIterator::GetCurrent(iter)->IsJSGlobalObject());
|
| - return PreventExtensions(
|
| - Handle<JSObject>::cast(PrototypeIterator::GetCurrent(iter)));
|
| + return PreventExtensions(PrototypeIterator::GetCurrent<JSObject>(iter));
|
| }
|
|
|
| // It's not possible to seal objects with external array elements
|
| @@ -5591,7 +5589,7 @@ bool JSObject::IsExtensible() {
|
| PrototypeIterator iter(GetIsolate(), this);
|
| if (iter.IsAtEnd()) return false;
|
| DCHECK(iter.GetCurrent()->IsJSGlobalObject());
|
| - return JSObject::cast(iter.GetCurrent())->map()->is_extensible();
|
| + return iter.GetCurrent<JSObject>()->map()->is_extensible();
|
| }
|
| return map()->is_extensible();
|
| }
|
| @@ -5642,7 +5640,7 @@ MaybeHandle<Object> JSObject::PreventExtensionsWithTransition(
|
| if (iter.IsAtEnd()) return object;
|
| DCHECK(PrototypeIterator::GetCurrent(iter)->IsJSGlobalObject());
|
| return PreventExtensionsWithTransition<attrs>(
|
| - Handle<JSObject>::cast(PrototypeIterator::GetCurrent(iter)));
|
| + PrototypeIterator::GetCurrent<JSObject>(iter));
|
| }
|
|
|
| // It's not possible to seal or freeze objects with external array elements
|
| @@ -6097,14 +6095,14 @@ bool JSReceiver::IsSimpleEnum() {
|
| PrototypeIterator::START_AT_RECEIVER);
|
| !iter.IsAtEnd(); iter.Advance()) {
|
| if (!iter.GetCurrent()->IsJSObject()) return false;
|
| - JSObject* curr = JSObject::cast(iter.GetCurrent());
|
| - int enum_length = curr->map()->EnumLength();
|
| + JSObject* current = iter.GetCurrent<JSObject>();
|
| + int enum_length = current->map()->EnumLength();
|
| if (enum_length == kInvalidEnumCacheSentinel) return false;
|
| - if (curr->IsAccessCheckNeeded()) return false;
|
| - DCHECK(!curr->HasNamedInterceptor());
|
| - DCHECK(!curr->HasIndexedInterceptor());
|
| - if (curr->NumberOfEnumElements() > 0) return false;
|
| - if (curr != this && enum_length != 0) return false;
|
| + if (current->IsAccessCheckNeeded()) return false;
|
| + DCHECK(!current->HasNamedInterceptor());
|
| + DCHECK(!current->HasIndexedInterceptor());
|
| + if (current->NumberOfEnumElements() > 0) return false;
|
| + if (current != this && enum_length != 0) return false;
|
| }
|
| return true;
|
| }
|
| @@ -6305,8 +6303,7 @@ MaybeHandle<FixedArray> JSReceiver::GetKeys(Handle<JSReceiver> object,
|
| PrototypeIterator::START_AT_RECEIVER);
|
| !iter.IsAtEnd(end); iter.Advance()) {
|
| if (PrototypeIterator::GetCurrent(iter)->IsJSProxy()) {
|
| - Handle<JSProxy> proxy(JSProxy::cast(*PrototypeIterator::GetCurrent(iter)),
|
| - isolate);
|
| + Handle<JSProxy> proxy = PrototypeIterator::GetCurrent<JSProxy>(iter);
|
| Handle<Object> args[] = { proxy };
|
| Handle<Object> names;
|
| ASSIGN_RETURN_ON_EXCEPTION(
|
| @@ -6325,8 +6322,7 @@ MaybeHandle<FixedArray> JSReceiver::GetKeys(Handle<JSReceiver> object,
|
| break;
|
| }
|
|
|
| - Handle<JSObject> current =
|
| - Handle<JSObject>::cast(PrototypeIterator::GetCurrent(iter));
|
| + Handle<JSObject> current = PrototypeIterator::GetCurrent<JSObject>(iter);
|
|
|
| // Check access rights if required.
|
| if (current->IsAccessCheckNeeded() && !isolate->MayAccess(current)) {
|
| @@ -6409,7 +6405,7 @@ bool Map::DictionaryElementsInPrototypeChainOnly() {
|
| if (iter.GetCurrent()->IsJSProxy()) return true;
|
| // String wrappers have non-configurable, non-writable elements.
|
| if (iter.GetCurrent()->IsStringWrapper()) return true;
|
| - JSObject* current = JSObject::cast(iter.GetCurrent());
|
| + JSObject* current = iter.GetCurrent<JSObject>();
|
|
|
| if (current->HasDictionaryElements() &&
|
| current->element_dictionary()->requires_slow_elements()) {
|
| @@ -9968,7 +9964,7 @@ bool JSObject::UnregisterPrototypeUser(Handle<Map> user, Isolate* isolate) {
|
| if (slot == PrototypeInfo::UNREGISTERED) return false;
|
| if (prototype->IsJSGlobalProxy()) {
|
| PrototypeIterator iter(isolate, prototype);
|
| - prototype = Handle<JSObject>::cast(PrototypeIterator::GetCurrent(iter));
|
| + prototype = PrototypeIterator::GetCurrent<JSObject>(iter);
|
| }
|
| DCHECK(prototype->map()->is_prototype_map());
|
| Object* maybe_proto_info = prototype->map()->prototype_info();
|
| @@ -10020,7 +10016,7 @@ void JSObject::InvalidatePrototypeChains(Map* map) {
|
| DisallowHeapAllocation no_gc;
|
| if (map->IsJSGlobalProxyMap()) {
|
| PrototypeIterator iter(map);
|
| - map = JSObject::cast(iter.GetCurrent())->map();
|
| + map = iter.GetCurrent<JSObject>()->map();
|
| }
|
| InvalidatePrototypeChainsInternal(map);
|
| }
|
| @@ -10060,7 +10056,7 @@ Handle<Cell> Map::GetOrCreatePrototypeChainValidityCell(Handle<Map> map,
|
| Handle<JSObject> prototype = Handle<JSObject>::cast(maybe_prototype);
|
| if (prototype->IsJSGlobalProxy()) {
|
| PrototypeIterator iter(isolate, prototype);
|
| - prototype = Handle<JSObject>::cast(PrototypeIterator::GetCurrent(iter));
|
| + prototype = PrototypeIterator::GetCurrent<JSObject>(iter);
|
| }
|
| // Ensure the prototype is registered with its own prototypes so its cell
|
| // will be invalidated when necessary.
|
| @@ -12391,7 +12387,7 @@ MaybeHandle<Object> JSObject::SetPrototype(Handle<JSObject> object,
|
| for (PrototypeIterator iter(isolate, *value,
|
| PrototypeIterator::START_AT_RECEIVER);
|
| !iter.IsAtEnd(); iter.Advance()) {
|
| - if (JSReceiver::cast(iter.GetCurrent()) == *object) {
|
| + if (iter.GetCurrent<JSReceiver>() == *object) {
|
| // Cycle detected.
|
| THROW_NEW_ERROR(isolate, NewTypeError(MessageTemplate::kCyclicProto),
|
| Object);
|
| @@ -12407,8 +12403,7 @@ MaybeHandle<Object> JSObject::SetPrototype(Handle<JSObject> object,
|
| // hidden and set the new prototype on that object.
|
| PrototypeIterator iter(isolate, real_receiver);
|
| while (!iter.IsAtEnd(PrototypeIterator::END_AT_NON_HIDDEN)) {
|
| - real_receiver =
|
| - Handle<JSObject>::cast(PrototypeIterator::GetCurrent(iter));
|
| + real_receiver = PrototypeIterator::GetCurrent<JSObject>(iter);
|
| iter.Advance();
|
| if (!real_receiver->map()->is_extensible()) {
|
| THROW_NEW_ERROR(
|
|
|