| Index: src/lookup-inl.h
|
| diff --git a/src/lookup-inl.h b/src/lookup-inl.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..87ee0e0361e85b3b7546e616cf467f78772a476b
|
| --- /dev/null
|
| +++ b/src/lookup-inl.h
|
| @@ -0,0 +1,68 @@
|
| +// 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"
|
| +
|
| +namespace v8 {
|
| +namespace internal {
|
| +
|
| +
|
| +JSReceiver* LookupIterator::NextHolder(Map* map) {
|
| + DisallowHeapAllocation no_gc;
|
| + if (map->prototype()->IsNull()) return NULL;
|
| +
|
| + JSReceiver* next = JSReceiver::cast(map->prototype());
|
| + ASSERT(!next->map()->IsGlobalObjectMap() ||
|
| + next->map()->is_hidden_prototype());
|
| +
|
| + if (!check_derived() &&
|
| + !(check_hidden() && next->map()->is_hidden_prototype())) {
|
| + return NULL;
|
| + }
|
| +
|
| + return next;
|
| +}
|
| +
|
| +
|
| +LookupIterator::State LookupIterator::LookupInHolder(Map* map) {
|
| + DisallowHeapAllocation no_gc;
|
| + switch (state_) {
|
| + case NOT_FOUND:
|
| + if (map->IsJSProxyMap()) {
|
| + return JSPROXY;
|
| + }
|
| + if (check_access_check() && map->is_access_check_needed()) {
|
| + return ACCESS_CHECK;
|
| + }
|
| + // Fall through.
|
| + case ACCESS_CHECK:
|
| + if (check_interceptor() && map->has_named_interceptor()) {
|
| + return INTERCEPTOR;
|
| + }
|
| + // Fall through.
|
| + case INTERCEPTOR:
|
| + if (map->is_dictionary_map()) {
|
| + property_encoding_ = DICTIONARY;
|
| + } else {
|
| + DescriptorArray* descriptors = map->instance_descriptors();
|
| + number_ = descriptors->SearchWithCache(*name_, map);
|
| + if (number_ == DescriptorArray::kNotFound) return NOT_FOUND;
|
| + property_encoding_ = DESCRIPTOR;
|
| + }
|
| + return PROPERTY;
|
| + case PROPERTY:
|
| + return NOT_FOUND;
|
| + case JSPROXY:
|
| + UNREACHABLE();
|
| + }
|
| + UNREACHABLE();
|
| + return state_;
|
| +}
|
| +}
|
| +} // namespace v8::internal
|
| +
|
| +#endif // V8_LOOKUP_INL_H_
|
|
|