| Index: src/lookup-inl.h
|
| diff --git a/src/lookup-inl.h b/src/lookup-inl.h
|
| deleted file mode 100644
|
| index 003ae5a6db5451a0586ce5fffa8efb1cafca6d25..0000000000000000000000000000000000000000
|
| --- a/src/lookup-inl.h
|
| +++ /dev/null
|
| @@ -1,142 +0,0 @@
|
| -// Copyright 2014 the V8 project authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#ifndef V8_LOOKUP_INL_H_
|
| -#define V8_LOOKUP_INL_H_
|
| -
|
| -#include "src/lookup.h"
|
| -
|
| -#include "src/elements.h"
|
| -
|
| -namespace v8 {
|
| -namespace internal {
|
| -
|
| -
|
| -JSReceiver* LookupIterator::NextHolder(Map* map) {
|
| - DisallowHeapAllocation no_gc;
|
| - if (!map->prototype()->IsJSReceiver()) return NULL;
|
| -
|
| - JSReceiver* next = JSReceiver::cast(map->prototype());
|
| - DCHECK(!next->map()->IsGlobalObjectMap() ||
|
| - next->map()->is_hidden_prototype());
|
| -
|
| - if (!check_prototype_chain() &&
|
| - !(check_hidden() && next->map()->is_hidden_prototype()) &&
|
| - // Always lookup behind the JSGlobalProxy into the JSGlobalObject, even
|
| - // when not checking other hidden prototypes.
|
| - !map->IsJSGlobalProxyMap()) {
|
| - return NULL;
|
| - }
|
| -
|
| - return next;
|
| -}
|
| -
|
| -
|
| -LookupIterator::State LookupIterator::LookupInHolder(Map* const map,
|
| - JSReceiver* const holder) {
|
| - STATIC_ASSERT(INTERCEPTOR == BEFORE_PROPERTY);
|
| - DisallowHeapAllocation no_gc;
|
| - if (interceptor_state_ == InterceptorState::kProcessNonMasking) {
|
| - return LookupNonMaskingInterceptorInHolder(map, holder);
|
| - }
|
| - switch (state_) {
|
| - case NOT_FOUND:
|
| - if (map->IsJSProxyMap()) return JSPROXY;
|
| - if (map->is_access_check_needed() &&
|
| - (IsElement() || !isolate_->IsInternallyUsedPropertyName(name_))) {
|
| - return ACCESS_CHECK;
|
| - }
|
| - // Fall through.
|
| - case ACCESS_CHECK:
|
| - if (exotic_index_state_ != ExoticIndexState::kNotExotic &&
|
| - IsIntegerIndexedExotic(holder)) {
|
| - return INTEGER_INDEXED_EXOTIC;
|
| - }
|
| - if (check_interceptor() && HasInterceptor(map) &&
|
| - !SkipInterceptor(JSObject::cast(holder))) {
|
| - return INTERCEPTOR;
|
| - }
|
| - // Fall through.
|
| - case INTERCEPTOR:
|
| - if (IsElement()) {
|
| - // TODO(verwaest): Optimize.
|
| - if (holder->IsStringObjectWithCharacterAt(index_)) {
|
| - PropertyAttributes attributes =
|
| - static_cast<PropertyAttributes>(READ_ONLY | DONT_DELETE);
|
| - property_details_ = PropertyDetails(attributes, v8::internal::DATA, 0,
|
| - PropertyCellType::kNoCell);
|
| - } else {
|
| - JSObject* js_object = JSObject::cast(holder);
|
| - if (js_object->elements() == isolate()->heap()->empty_fixed_array()) {
|
| - return NOT_FOUND;
|
| - }
|
| -
|
| - ElementsAccessor* accessor = js_object->GetElementsAccessor();
|
| - FixedArrayBase* backing_store = js_object->elements();
|
| - number_ =
|
| - accessor->GetEntryForIndex(js_object, backing_store, index_);
|
| - if (number_ == kMaxUInt32) return NOT_FOUND;
|
| - property_details_ = accessor->GetDetails(backing_store, number_);
|
| - }
|
| - } else if (!map->is_dictionary_map()) {
|
| - DescriptorArray* descriptors = map->instance_descriptors();
|
| - int number = descriptors->SearchWithCache(*name_, map);
|
| - if (number == DescriptorArray::kNotFound) return NOT_FOUND;
|
| - number_ = static_cast<uint32_t>(number);
|
| - property_details_ = descriptors->GetDetails(number_);
|
| - } else if (map->IsGlobalObjectMap()) {
|
| - GlobalDictionary* dict = JSObject::cast(holder)->global_dictionary();
|
| - int number = dict->FindEntry(name_);
|
| - if (number == GlobalDictionary::kNotFound) return NOT_FOUND;
|
| - number_ = static_cast<uint32_t>(number);
|
| - DCHECK(dict->ValueAt(number_)->IsPropertyCell());
|
| - PropertyCell* cell = PropertyCell::cast(dict->ValueAt(number_));
|
| - if (cell->value()->IsTheHole()) return NOT_FOUND;
|
| - property_details_ = cell->property_details();
|
| - } else {
|
| - NameDictionary* dict = JSObject::cast(holder)->property_dictionary();
|
| - int number = dict->FindEntry(name_);
|
| - if (number == NameDictionary::kNotFound) return NOT_FOUND;
|
| - number_ = static_cast<uint32_t>(number);
|
| - property_details_ = dict->DetailsAt(number_);
|
| - }
|
| - has_property_ = true;
|
| - switch (property_details_.kind()) {
|
| - case v8::internal::kData:
|
| - return DATA;
|
| - case v8::internal::kAccessor:
|
| - return ACCESSOR;
|
| - }
|
| - case ACCESSOR:
|
| - case DATA:
|
| - return NOT_FOUND;
|
| - case INTEGER_INDEXED_EXOTIC:
|
| - case JSPROXY:
|
| - case TRANSITION:
|
| - UNREACHABLE();
|
| - }
|
| - UNREACHABLE();
|
| - return state_;
|
| -}
|
| -
|
| -
|
| -LookupIterator::State LookupIterator::LookupNonMaskingInterceptorInHolder(
|
| - Map* const map, JSReceiver* const holder) {
|
| - switch (state_) {
|
| - case NOT_FOUND:
|
| - if (check_interceptor() && HasInterceptor(map) &&
|
| - !SkipInterceptor(JSObject::cast(holder))) {
|
| - return INTERCEPTOR;
|
| - }
|
| - // Fall through.
|
| - default:
|
| - return NOT_FOUND;
|
| - }
|
| - UNREACHABLE();
|
| - return state_;
|
| -}
|
| -} // namespace internal
|
| -} // namespace v8
|
| -
|
| -#endif // V8_LOOKUP_INL_H_
|
|
|