Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(149)

Side by Side Diff: src/objects.cc

Issue 503663003: Clean up LookupIterator::Configuration naming (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/lookup-inl.h ('k') | src/runtime.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/accessors.h" 7 #include "src/accessors.h"
8 #include "src/allocation-site-scopes.h" 8 #include "src/allocation-site-scopes.h"
9 #include "src/api.h" 9 #include "src/api.h"
10 #include "src/arguments.h" 10 #include "src/arguments.h"
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 } 136 }
137 break; 137 break;
138 } 138 }
139 } 139 }
140 return it->factory()->undefined_value(); 140 return it->factory()->undefined_value();
141 } 141 }
142 142
143 143
144 Handle<Object> JSObject::GetDataProperty(Handle<JSObject> object, 144 Handle<Object> JSObject::GetDataProperty(Handle<JSObject> object,
145 Handle<Name> key) { 145 Handle<Name> key) {
146 LookupIterator it(object, key, LookupIterator::CHECK_DERIVED_PROPERTY); 146 LookupIterator it(object, key, LookupIterator::PROTOTYPE_CHAIN_PROPERTY);
147 return GetDataProperty(&it); 147 return GetDataProperty(&it);
148 } 148 }
149 149
150 150
151 Handle<Object> JSObject::GetDataProperty(LookupIterator* it) { 151 Handle<Object> JSObject::GetDataProperty(LookupIterator* it) {
152 for (; it->IsFound(); it->Next()) { 152 for (; it->IsFound(); it->Next()) {
153 switch (it->state()) { 153 switch (it->state()) {
154 case LookupIterator::ACCESS_CHECK: 154 case LookupIterator::ACCESS_CHECK:
155 case LookupIterator::INTERCEPTOR: 155 case LookupIterator::INTERCEPTOR:
156 case LookupIterator::NOT_FOUND: 156 case LookupIterator::NOT_FOUND:
(...skipping 3623 matching lines...) Expand 10 before | Expand all | Expand 10 after
3780 box->set_value(value->Number()); 3780 box->set_value(value->Number());
3781 } else { 3781 } else {
3782 FastPropertyAtPut(index, value); 3782 FastPropertyAtPut(index, value);
3783 } 3783 }
3784 } 3784 }
3785 3785
3786 3786
3787 void JSObject::AddProperty(Handle<JSObject> object, Handle<Name> name, 3787 void JSObject::AddProperty(Handle<JSObject> object, Handle<Name> name,
3788 Handle<Object> value, 3788 Handle<Object> value,
3789 PropertyAttributes attributes) { 3789 PropertyAttributes attributes) {
3790 LookupIterator it(object, name, LookupIterator::CHECK_PROPERTY); 3790 LookupIterator it(object, name, LookupIterator::OWN_PROPERTY);
3791 #ifdef DEBUG 3791 #ifdef DEBUG
3792 uint32_t index; 3792 uint32_t index;
3793 DCHECK(!object->IsJSProxy()); 3793 DCHECK(!object->IsJSProxy());
3794 DCHECK(!name->AsArrayIndex(&index)); 3794 DCHECK(!name->AsArrayIndex(&index));
3795 Maybe<PropertyAttributes> maybe = GetPropertyAttributes(&it); 3795 Maybe<PropertyAttributes> maybe = GetPropertyAttributes(&it);
3796 DCHECK(maybe.has_value); 3796 DCHECK(maybe.has_value);
3797 DCHECK(!it.IsFound()); 3797 DCHECK(!it.IsFound());
3798 DCHECK(object->map()->is_extensible() || 3798 DCHECK(object->map()->is_extensible() ||
3799 name.is_identical_to(it.isolate()->factory()->hidden_string())); 3799 name.is_identical_to(it.isolate()->factory()->hidden_string()));
3800 #endif 3800 #endif
3801 AddDataProperty(&it, value, attributes, STRICT, 3801 AddDataProperty(&it, value, attributes, STRICT,
3802 CERTAINLY_NOT_STORE_FROM_KEYED).Check(); 3802 CERTAINLY_NOT_STORE_FROM_KEYED).Check();
3803 } 3803 }
3804 3804
3805 3805
3806 // Reconfigures a property to a data property with attributes, even if it is not 3806 // Reconfigures a property to a data property with attributes, even if it is not
3807 // reconfigurable. 3807 // reconfigurable.
3808 MaybeHandle<Object> JSObject::SetOwnPropertyIgnoreAttributes( 3808 MaybeHandle<Object> JSObject::SetOwnPropertyIgnoreAttributes(
3809 Handle<JSObject> object, 3809 Handle<JSObject> object,
3810 Handle<Name> name, 3810 Handle<Name> name,
3811 Handle<Object> value, 3811 Handle<Object> value,
3812 PropertyAttributes attributes, 3812 PropertyAttributes attributes,
3813 ExecutableAccessorInfoHandling handling) { 3813 ExecutableAccessorInfoHandling handling) {
3814 DCHECK(!value->IsTheHole()); 3814 DCHECK(!value->IsTheHole());
3815 LookupIterator it(object, name, 3815 LookupIterator it(object, name, LookupIterator::HIDDEN_SKIP_INTERCEPTOR);
3816 LookupIterator::CHECK_HIDDEN_SKIP_INTERCEPTOR);
3817 bool is_observed = object->map()->is_observed() && 3816 bool is_observed = object->map()->is_observed() &&
3818 *name != it.isolate()->heap()->hidden_string(); 3817 *name != it.isolate()->heap()->hidden_string();
3819 for (; it.IsFound(); it.Next()) { 3818 for (; it.IsFound(); it.Next()) {
3820 switch (it.state()) { 3819 switch (it.state()) {
3821 case LookupIterator::INTERCEPTOR: 3820 case LookupIterator::INTERCEPTOR:
3822 case LookupIterator::JSPROXY: 3821 case LookupIterator::JSPROXY:
3823 case LookupIterator::NOT_FOUND: 3822 case LookupIterator::NOT_FOUND:
3824 case LookupIterator::TRANSITION: 3823 case LookupIterator::TRANSITION:
3825 UNREACHABLE(); 3824 UNREACHABLE();
3826 3825
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
3977 } 3976 }
3978 3977
3979 3978
3980 Maybe<PropertyAttributes> JSReceiver::GetOwnPropertyAttributes( 3979 Maybe<PropertyAttributes> JSReceiver::GetOwnPropertyAttributes(
3981 Handle<JSReceiver> object, Handle<Name> name) { 3980 Handle<JSReceiver> object, Handle<Name> name) {
3982 // Check whether the name is an array index. 3981 // Check whether the name is an array index.
3983 uint32_t index = 0; 3982 uint32_t index = 0;
3984 if (object->IsJSObject() && name->AsArrayIndex(&index)) { 3983 if (object->IsJSObject() && name->AsArrayIndex(&index)) {
3985 return GetOwnElementAttribute(object, index); 3984 return GetOwnElementAttribute(object, index);
3986 } 3985 }
3987 LookupIterator it(object, name, LookupIterator::CHECK_HIDDEN); 3986 LookupIterator it(object, name, LookupIterator::HIDDEN);
3988 return GetPropertyAttributes(&it); 3987 return GetPropertyAttributes(&it);
3989 } 3988 }
3990 3989
3991 3990
3992 Maybe<PropertyAttributes> JSReceiver::GetPropertyAttributes( 3991 Maybe<PropertyAttributes> JSReceiver::GetPropertyAttributes(
3993 LookupIterator* it) { 3992 LookupIterator* it) {
3994 for (; it->IsFound(); it->Next()) { 3993 for (; it->IsFound(); it->Next()) {
3995 switch (it->state()) { 3994 switch (it->state()) {
3996 case LookupIterator::NOT_FOUND: 3995 case LookupIterator::NOT_FOUND:
3997 case LookupIterator::TRANSITION: 3996 case LookupIterator::TRANSITION:
(...skipping 687 matching lines...) Expand 10 before | Expand all | Expand 10 after
4685 if (inline_value->IsUndefined() || inline_value->IsSmi()) return; 4684 if (inline_value->IsUndefined() || inline_value->IsSmi()) return;
4686 4685
4687 Handle<ObjectHashTable> hashtable(ObjectHashTable::cast(inline_value)); 4686 Handle<ObjectHashTable> hashtable(ObjectHashTable::cast(inline_value));
4688 bool was_present = false; 4687 bool was_present = false;
4689 ObjectHashTable::Remove(hashtable, key, &was_present); 4688 ObjectHashTable::Remove(hashtable, key, &was_present);
4690 } 4689 }
4691 4690
4692 4691
4693 bool JSObject::HasHiddenProperties(Handle<JSObject> object) { 4692 bool JSObject::HasHiddenProperties(Handle<JSObject> object) {
4694 Handle<Name> hidden = object->GetIsolate()->factory()->hidden_string(); 4693 Handle<Name> hidden = object->GetIsolate()->factory()->hidden_string();
4695 LookupIterator it(object, hidden, LookupIterator::CHECK_PROPERTY); 4694 LookupIterator it(object, hidden, LookupIterator::OWN_PROPERTY);
4696 Maybe<PropertyAttributes> maybe = GetPropertyAttributes(&it); 4695 Maybe<PropertyAttributes> maybe = GetPropertyAttributes(&it);
4697 // Cannot get an exception since the hidden_string isn't accessible to JS. 4696 // Cannot get an exception since the hidden_string isn't accessible to JS.
4698 DCHECK(maybe.has_value); 4697 DCHECK(maybe.has_value);
4699 return maybe.value != ABSENT; 4698 return maybe.value != ABSENT;
4700 } 4699 }
4701 4700
4702 4701
4703 Object* JSObject::GetHiddenPropertiesHashTable() { 4702 Object* JSObject::GetHiddenPropertiesHashTable() {
4704 DCHECK(!IsJSGlobalProxy()); 4703 DCHECK(!IsJSGlobalProxy());
4705 if (HasFastProperties()) { 4704 if (HasFastProperties()) {
(...skipping 14 matching lines...) Expand all
4720 return this->RawFastPropertyAt(index); 4719 return this->RawFastPropertyAt(index);
4721 } else { 4720 } else {
4722 return GetHeap()->undefined_value(); 4721 return GetHeap()->undefined_value();
4723 } 4722 }
4724 } else { 4723 } else {
4725 return GetHeap()->undefined_value(); 4724 return GetHeap()->undefined_value();
4726 } 4725 }
4727 } else { 4726 } else {
4728 Isolate* isolate = GetIsolate(); 4727 Isolate* isolate = GetIsolate();
4729 LookupIterator it(handle(this), isolate->factory()->hidden_string(), 4728 LookupIterator it(handle(this), isolate->factory()->hidden_string(),
4730 LookupIterator::CHECK_PROPERTY); 4729 LookupIterator::OWN_PROPERTY);
4731 if (it.IsFound() && it.HasProperty()) { 4730 if (it.IsFound() && it.HasProperty()) {
4732 DCHECK_EQ(LookupIterator::DATA, it.property_kind()); 4731 DCHECK_EQ(LookupIterator::DATA, it.property_kind());
4733 return *it.GetDataValue(); 4732 return *it.GetDataValue();
4734 } 4733 }
4735 return GetHeap()->undefined_value(); 4734 return GetHeap()->undefined_value();
4736 } 4735 }
4737 } 4736 }
4738 4737
4739 Handle<ObjectHashTable> JSObject::GetOrCreateHiddenPropertiesHashtable( 4738 Handle<ObjectHashTable> JSObject::GetOrCreateHiddenPropertiesHashtable(
4740 Handle<JSObject> object) { 4739 Handle<JSObject> object) {
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
4916 // ECMA-262, 3rd, 8.6.2.5 4915 // ECMA-262, 3rd, 8.6.2.5
4917 DCHECK(name->IsName()); 4916 DCHECK(name->IsName());
4918 4917
4919 uint32_t index = 0; 4918 uint32_t index = 0;
4920 if (name->AsArrayIndex(&index)) { 4919 if (name->AsArrayIndex(&index)) {
4921 return DeleteElement(object, index, delete_mode); 4920 return DeleteElement(object, index, delete_mode);
4922 } 4921 }
4923 4922
4924 // Skip interceptors on FORCE_DELETION. 4923 // Skip interceptors on FORCE_DELETION.
4925 LookupIterator::Configuration config = 4924 LookupIterator::Configuration config =
4926 delete_mode == FORCE_DELETION 4925 delete_mode == FORCE_DELETION ? LookupIterator::HIDDEN_SKIP_INTERCEPTOR
4927 ? LookupIterator::CHECK_HIDDEN_SKIP_INTERCEPTOR 4926 : LookupIterator::HIDDEN;
4928 : LookupIterator::CHECK_HIDDEN;
4929 4927
4930 LookupIterator it(object, name, config); 4928 LookupIterator it(object, name, config);
4931 4929
4932 bool is_observed = object->map()->is_observed() && 4930 bool is_observed = object->map()->is_observed() &&
4933 *name != it.isolate()->heap()->hidden_string(); 4931 *name != it.isolate()->heap()->hidden_string();
4934 4932
4935 for (; it.IsFound(); it.Next()) { 4933 for (; it.IsFound(); it.Next()) {
4936 switch (it.state()) { 4934 switch (it.state()) {
4937 case LookupIterator::JSPROXY: 4935 case LookupIterator::JSPROXY:
4938 case LookupIterator::NOT_FOUND: 4936 case LookupIterator::NOT_FOUND:
(...skipping 1208 matching lines...) Expand 10 before | Expand all | Expand 10 after
6147 if (!maybe.has_value) { 6145 if (!maybe.has_value) {
6148 DCHECK(false); 6146 DCHECK(false);
6149 return isolate->factory()->undefined_value(); 6147 return isolate->factory()->undefined_value();
6150 } 6148 }
6151 preexists = maybe.value; 6149 preexists = maybe.value;
6152 if (preexists && GetOwnElementAccessorPair(object, index).is_null()) { 6150 if (preexists && GetOwnElementAccessorPair(object, index).is_null()) {
6153 old_value = 6151 old_value =
6154 Object::GetElement(isolate, object, index).ToHandleChecked(); 6152 Object::GetElement(isolate, object, index).ToHandleChecked();
6155 } 6153 }
6156 } else { 6154 } else {
6157 LookupIterator it(object, name, 6155 LookupIterator it(object, name, LookupIterator::HIDDEN_SKIP_INTERCEPTOR);
6158 LookupIterator::CHECK_HIDDEN_SKIP_INTERCEPTOR);
6159 CHECK(GetPropertyAttributes(&it).has_value); 6156 CHECK(GetPropertyAttributes(&it).has_value);
6160 preexists = it.IsFound(); 6157 preexists = it.IsFound();
6161 if (preexists && (it.property_kind() == LookupIterator::DATA || 6158 if (preexists && (it.property_kind() == LookupIterator::DATA ||
6162 it.GetAccessors()->IsAccessorInfo())) { 6159 it.GetAccessors()->IsAccessorInfo())) {
6163 old_value = GetProperty(&it).ToHandleChecked(); 6160 old_value = GetProperty(&it).ToHandleChecked();
6164 } 6161 }
6165 } 6162 }
6166 } 6163 }
6167 6164
6168 if (is_element) { 6165 if (is_element) {
6169 DefineElementAccessor(object, index, getter, setter, attributes); 6166 DefineElementAccessor(object, index, getter, setter, attributes);
6170 } else { 6167 } else {
6171 DCHECK(getter->IsSpecFunction() || getter->IsUndefined() || 6168 DCHECK(getter->IsSpecFunction() || getter->IsUndefined() ||
6172 getter->IsNull()); 6169 getter->IsNull());
6173 DCHECK(setter->IsSpecFunction() || setter->IsUndefined() || 6170 DCHECK(setter->IsSpecFunction() || setter->IsUndefined() ||
6174 setter->IsNull()); 6171 setter->IsNull());
6175 // At least one of the accessors needs to be a new value. 6172 // At least one of the accessors needs to be a new value.
6176 DCHECK(!getter->IsNull() || !setter->IsNull()); 6173 DCHECK(!getter->IsNull() || !setter->IsNull());
6177 LookupIterator it(object, name, LookupIterator::CHECK_PROPERTY); 6174 LookupIterator it(object, name, LookupIterator::OWN_PROPERTY);
6178 if (!getter->IsNull()) { 6175 if (!getter->IsNull()) {
6179 it.TransitionToAccessorProperty(ACCESSOR_GETTER, getter, attributes); 6176 it.TransitionToAccessorProperty(ACCESSOR_GETTER, getter, attributes);
6180 } 6177 }
6181 if (!setter->IsNull()) { 6178 if (!setter->IsNull()) {
6182 it.TransitionToAccessorProperty(ACCESSOR_SETTER, setter, attributes); 6179 it.TransitionToAccessorProperty(ACCESSOR_SETTER, setter, attributes);
6183 } 6180 }
6184 } 6181 }
6185 6182
6186 if (is_observed) { 6183 if (is_observed) {
6187 const char* type = preexists ? "reconfigure" : "add"; 6184 const char* type = preexists ? "reconfigure" : "add";
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
6250 case DICTIONARY_ELEMENTS: 6247 case DICTIONARY_ELEMENTS:
6251 break; 6248 break;
6252 case SLOPPY_ARGUMENTS_ELEMENTS: 6249 case SLOPPY_ARGUMENTS_ELEMENTS:
6253 UNIMPLEMENTED(); 6250 UNIMPLEMENTED();
6254 break; 6251 break;
6255 } 6252 }
6256 6253
6257 SetElementCallback(object, index, info, info->property_attributes()); 6254 SetElementCallback(object, index, info, info->property_attributes());
6258 } else { 6255 } else {
6259 // Lookup the name. 6256 // Lookup the name.
6260 LookupIterator it(object, name, 6257 LookupIterator it(object, name, LookupIterator::HIDDEN_SKIP_INTERCEPTOR);
6261 LookupIterator::CHECK_HIDDEN_SKIP_INTERCEPTOR);
6262 CHECK(GetPropertyAttributes(&it).has_value); 6258 CHECK(GetPropertyAttributes(&it).has_value);
6263 // ES5 forbids turning a property into an accessor if it's not 6259 // ES5 forbids turning a property into an accessor if it's not
6264 // configurable. See 8.6.1 (Table 5). 6260 // configurable. See 8.6.1 (Table 5).
6265 if (it.IsFound() && (it.IsReadOnly() || !it.IsConfigurable())) { 6261 if (it.IsFound() && (it.IsReadOnly() || !it.IsConfigurable())) {
6266 return factory->undefined_value(); 6262 return factory->undefined_value();
6267 } 6263 }
6268 6264
6269 SetPropertyCallback(object, name, info, info->property_attributes()); 6265 SetPropertyCallback(object, name, info, info->property_attributes());
6270 } 6266 }
6271 6267
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
6309 if (dictionary->DetailsAt(entry).type() == CALLBACKS && 6305 if (dictionary->DetailsAt(entry).type() == CALLBACKS &&
6310 element->IsAccessorPair()) { 6306 element->IsAccessorPair()) {
6311 return handle(AccessorPair::cast(element)->GetComponent(component), 6307 return handle(AccessorPair::cast(element)->GetComponent(component),
6312 isolate); 6308 isolate);
6313 } 6309 }
6314 } 6310 }
6315 } 6311 }
6316 } 6312 }
6317 } else { 6313 } else {
6318 LookupIterator it(object, name, 6314 LookupIterator it(object, name,
6319 LookupIterator::CHECK_DERIVED_SKIP_INTERCEPTOR); 6315 LookupIterator::PROTOTYPE_CHAIN_SKIP_INTERCEPTOR);
6320 for (; it.IsFound(); it.Next()) { 6316 for (; it.IsFound(); it.Next()) {
6321 switch (it.state()) { 6317 switch (it.state()) {
6322 case LookupIterator::INTERCEPTOR: 6318 case LookupIterator::INTERCEPTOR:
6323 case LookupIterator::NOT_FOUND: 6319 case LookupIterator::NOT_FOUND:
6324 case LookupIterator::TRANSITION: 6320 case LookupIterator::TRANSITION:
6325 UNREACHABLE(); 6321 UNREACHABLE();
6326 6322
6327 case LookupIterator::ACCESS_CHECK: 6323 case LookupIterator::ACCESS_CHECK:
6328 if (it.HasAccess(v8::ACCESS_HAS)) continue; 6324 if (it.HasAccess(v8::ACCESS_HAS)) continue;
6329 isolate->ReportFailedAccessCheck(it.GetHolder<JSObject>(), 6325 isolate->ReportFailedAccessCheck(it.GetHolder<JSObject>(),
(...skipping 6522 matching lines...) Expand 10 before | Expand all | Expand 10 after
12852 return lookup.IsReadOnly(); 12848 return lookup.IsReadOnly();
12853 } 12849 }
12854 12850
12855 12851
12856 bool JSArray::WouldChangeReadOnlyLength(Handle<JSArray> array, 12852 bool JSArray::WouldChangeReadOnlyLength(Handle<JSArray> array,
12857 uint32_t index) { 12853 uint32_t index) {
12858 uint32_t length = 0; 12854 uint32_t length = 0;
12859 CHECK(array->length()->ToArrayIndex(&length)); 12855 CHECK(array->length()->ToArrayIndex(&length));
12860 if (length <= index) { 12856 if (length <= index) {
12861 LookupIterator it(array, array->GetIsolate()->factory()->length_string(), 12857 LookupIterator it(array, array->GetIsolate()->factory()->length_string(),
12862 LookupIterator::CHECK_PROPERTY); 12858 LookupIterator::OWN_PROPERTY);
12863 CHECK(it.IsFound()); 12859 CHECK(it.IsFound());
12864 CHECK(it.HasProperty()); 12860 CHECK(it.HasProperty());
12865 return it.IsReadOnly(); 12861 return it.IsReadOnly();
12866 } 12862 }
12867 return false; 12863 return false;
12868 } 12864 }
12869 12865
12870 12866
12871 MaybeHandle<Object> JSArray::ReadOnlyLengthError(Handle<JSArray> array) { 12867 MaybeHandle<Object> JSArray::ReadOnlyLengthError(Handle<JSArray> array) {
12872 Isolate* isolate = array->GetIsolate(); 12868 Isolate* isolate = array->GetIsolate();
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after
13239 CHECK(v8::Utils::OpenHandle(*result)->IsJSArray() || 13235 CHECK(v8::Utils::OpenHandle(*result)->IsJSArray() ||
13240 v8::Utils::OpenHandle(*result)->HasSloppyArgumentsElements()); 13236 v8::Utils::OpenHandle(*result)->HasSloppyArgumentsElements());
13241 #endif 13237 #endif
13242 // Rebox before returning. 13238 // Rebox before returning.
13243 return handle(*v8::Utils::OpenHandle(*result), isolate); 13239 return handle(*v8::Utils::OpenHandle(*result), isolate);
13244 } 13240 }
13245 13241
13246 13242
13247 Maybe<bool> JSObject::HasRealNamedProperty(Handle<JSObject> object, 13243 Maybe<bool> JSObject::HasRealNamedProperty(Handle<JSObject> object,
13248 Handle<Name> key) { 13244 Handle<Name> key) {
13249 LookupIterator it(object, key, LookupIterator::CHECK_ACCESS_CHECK); 13245 LookupIterator it(object, key, LookupIterator::OWN_SKIP_INTERCEPTOR);
13250 Maybe<PropertyAttributes> maybe_result = GetPropertyAttributes(&it); 13246 Maybe<PropertyAttributes> maybe_result = GetPropertyAttributes(&it);
13251 if (!maybe_result.has_value) return Maybe<bool>(); 13247 if (!maybe_result.has_value) return Maybe<bool>();
13252 return maybe(it.IsFound()); 13248 return maybe(it.IsFound());
13253 } 13249 }
13254 13250
13255 13251
13256 Maybe<bool> JSObject::HasRealElementProperty(Handle<JSObject> object, 13252 Maybe<bool> JSObject::HasRealElementProperty(Handle<JSObject> object,
13257 uint32_t index) { 13253 uint32_t index) {
13258 Isolate* isolate = object->GetIsolate(); 13254 Isolate* isolate = object->GetIsolate();
13259 HandleScope scope(isolate); 13255 HandleScope scope(isolate);
(...skipping 17 matching lines...) Expand all
13277 13273
13278 Maybe<PropertyAttributes> result = 13274 Maybe<PropertyAttributes> result =
13279 GetElementAttributeWithoutInterceptor(object, object, index, false); 13275 GetElementAttributeWithoutInterceptor(object, object, index, false);
13280 if (!result.has_value) return Maybe<bool>(); 13276 if (!result.has_value) return Maybe<bool>();
13281 return maybe(result.value != ABSENT); 13277 return maybe(result.value != ABSENT);
13282 } 13278 }
13283 13279
13284 13280
13285 Maybe<bool> JSObject::HasRealNamedCallbackProperty(Handle<JSObject> object, 13281 Maybe<bool> JSObject::HasRealNamedCallbackProperty(Handle<JSObject> object,
13286 Handle<Name> key) { 13282 Handle<Name> key) {
13287 LookupIterator it(object, key, LookupIterator::CHECK_ACCESS_CHECK); 13283 LookupIterator it(object, key, LookupIterator::OWN_SKIP_INTERCEPTOR);
13288 Maybe<PropertyAttributes> maybe_result = GetPropertyAttributes(&it); 13284 Maybe<PropertyAttributes> maybe_result = GetPropertyAttributes(&it);
13289 if (!maybe_result.has_value) return Maybe<bool>(); 13285 if (!maybe_result.has_value) return Maybe<bool>();
13290 return maybe(it.IsFound() && it.property_kind() == LookupIterator::ACCESSOR); 13286 return maybe(it.IsFound() && it.property_kind() == LookupIterator::ACCESSOR);
13291 } 13287 }
13292 13288
13293 13289
13294 int JSObject::NumberOfOwnProperties(PropertyAttributes filter) { 13290 int JSObject::NumberOfOwnProperties(PropertyAttributes filter) {
13295 if (HasFastProperties()) { 13291 if (HasFastProperties()) {
13296 Map* map = this->map(); 13292 Map* map = this->map();
13297 if (filter == NONE) return map->NumberOfOwnDescriptors(); 13293 if (filter == NONE) return map->NumberOfOwnDescriptors();
(...skipping 3136 matching lines...) Expand 10 before | Expand all | Expand 10 after
16434 #define ERROR_MESSAGES_TEXTS(C, T) T, 16430 #define ERROR_MESSAGES_TEXTS(C, T) T,
16435 static const char* error_messages_[] = { 16431 static const char* error_messages_[] = {
16436 ERROR_MESSAGES_LIST(ERROR_MESSAGES_TEXTS) 16432 ERROR_MESSAGES_LIST(ERROR_MESSAGES_TEXTS)
16437 }; 16433 };
16438 #undef ERROR_MESSAGES_TEXTS 16434 #undef ERROR_MESSAGES_TEXTS
16439 return error_messages_[reason]; 16435 return error_messages_[reason];
16440 } 16436 }
16441 16437
16442 16438
16443 } } // namespace v8::internal 16439 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/lookup-inl.h ('k') | src/runtime.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698