| OLD | NEW |
| 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 <sstream> | 5 #include <sstream> |
| 6 | 6 |
| 7 #include "src/v8.h" | 7 #include "src/v8.h" |
| 8 | 8 |
| 9 #include "src/accessors.h" | 9 #include "src/accessors.h" |
| 10 #include "src/allocation-site-scopes.h" | 10 #include "src/allocation-site-scopes.h" |
| (...skipping 13521 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 13532 args(isolate, interceptor->data(), *receiver, *object); | 13532 args(isolate, interceptor->data(), *receiver, *object); |
| 13533 v8::Handle<v8::Object> result; | 13533 v8::Handle<v8::Object> result; |
| 13534 if (!interceptor->enumerator()->IsUndefined()) { | 13534 if (!interceptor->enumerator()->IsUndefined()) { |
| 13535 v8::GenericNamedPropertyEnumeratorCallback enum_fun = | 13535 v8::GenericNamedPropertyEnumeratorCallback enum_fun = |
| 13536 v8::ToCData<v8::GenericNamedPropertyEnumeratorCallback>( | 13536 v8::ToCData<v8::GenericNamedPropertyEnumeratorCallback>( |
| 13537 interceptor->enumerator()); | 13537 interceptor->enumerator()); |
| 13538 LOG(isolate, ApiObjectAccess("interceptor-named-enum", *object)); | 13538 LOG(isolate, ApiObjectAccess("interceptor-named-enum", *object)); |
| 13539 result = args.Call(enum_fun); | 13539 result = args.Call(enum_fun); |
| 13540 } | 13540 } |
| 13541 if (result.IsEmpty()) return MaybeHandle<JSObject>(); | 13541 if (result.IsEmpty()) return MaybeHandle<JSObject>(); |
| 13542 #if ENABLE_EXTRA_CHECKS | 13542 DCHECK(v8::Utils::OpenHandle(*result)->IsJSArray() || |
| 13543 CHECK(v8::Utils::OpenHandle(*result)->IsJSArray() || | 13543 v8::Utils::OpenHandle(*result)->HasSloppyArgumentsElements()); |
| 13544 v8::Utils::OpenHandle(*result)->HasSloppyArgumentsElements()); | |
| 13545 #endif | |
| 13546 // Rebox before returning. | 13544 // Rebox before returning. |
| 13547 return handle(*v8::Utils::OpenHandle(*result), isolate); | 13545 return handle(*v8::Utils::OpenHandle(*result), isolate); |
| 13548 } | 13546 } |
| 13549 | 13547 |
| 13550 | 13548 |
| 13551 // Compute the element keys from the interceptor. | 13549 // Compute the element keys from the interceptor. |
| 13552 MaybeHandle<JSObject> JSObject::GetKeysForIndexedInterceptor( | 13550 MaybeHandle<JSObject> JSObject::GetKeysForIndexedInterceptor( |
| 13553 Handle<JSObject> object, Handle<JSReceiver> receiver) { | 13551 Handle<JSObject> object, Handle<JSReceiver> receiver) { |
| 13554 Isolate* isolate = receiver->GetIsolate(); | 13552 Isolate* isolate = receiver->GetIsolate(); |
| 13555 Handle<InterceptorInfo> interceptor(object->GetIndexedInterceptor()); | 13553 Handle<InterceptorInfo> interceptor(object->GetIndexedInterceptor()); |
| 13556 PropertyCallbackArguments | 13554 PropertyCallbackArguments |
| 13557 args(isolate, interceptor->data(), *receiver, *object); | 13555 args(isolate, interceptor->data(), *receiver, *object); |
| 13558 v8::Handle<v8::Object> result; | 13556 v8::Handle<v8::Object> result; |
| 13559 if (!interceptor->enumerator()->IsUndefined()) { | 13557 if (!interceptor->enumerator()->IsUndefined()) { |
| 13560 v8::IndexedPropertyEnumeratorCallback enum_fun = | 13558 v8::IndexedPropertyEnumeratorCallback enum_fun = |
| 13561 v8::ToCData<v8::IndexedPropertyEnumeratorCallback>( | 13559 v8::ToCData<v8::IndexedPropertyEnumeratorCallback>( |
| 13562 interceptor->enumerator()); | 13560 interceptor->enumerator()); |
| 13563 LOG(isolate, ApiObjectAccess("interceptor-indexed-enum", *object)); | 13561 LOG(isolate, ApiObjectAccess("interceptor-indexed-enum", *object)); |
| 13564 result = args.Call(enum_fun); | 13562 result = args.Call(enum_fun); |
| 13565 } | 13563 } |
| 13566 if (result.IsEmpty()) return MaybeHandle<JSObject>(); | 13564 if (result.IsEmpty()) return MaybeHandle<JSObject>(); |
| 13567 #if ENABLE_EXTRA_CHECKS | 13565 DCHECK(v8::Utils::OpenHandle(*result)->IsJSArray() || |
| 13568 CHECK(v8::Utils::OpenHandle(*result)->IsJSArray() || | 13566 v8::Utils::OpenHandle(*result)->HasSloppyArgumentsElements()); |
| 13569 v8::Utils::OpenHandle(*result)->HasSloppyArgumentsElements()); | |
| 13570 #endif | |
| 13571 // Rebox before returning. | 13567 // Rebox before returning. |
| 13572 return handle(*v8::Utils::OpenHandle(*result), isolate); | 13568 return handle(*v8::Utils::OpenHandle(*result), isolate); |
| 13573 } | 13569 } |
| 13574 | 13570 |
| 13575 | 13571 |
| 13576 Maybe<bool> JSObject::HasRealNamedProperty(Handle<JSObject> object, | 13572 Maybe<bool> JSObject::HasRealNamedProperty(Handle<JSObject> object, |
| 13577 Handle<Name> key) { | 13573 Handle<Name> key) { |
| 13578 LookupIterator it(object, key, LookupIterator::OWN_SKIP_INTERCEPTOR); | 13574 LookupIterator it(object, key, LookupIterator::OWN_SKIP_INTERCEPTOR); |
| 13579 Maybe<PropertyAttributes> maybe_result = GetPropertyAttributes(&it); | 13575 Maybe<PropertyAttributes> maybe_result = GetPropertyAttributes(&it); |
| 13580 if (!maybe_result.has_value) return Maybe<bool>(); | 13576 if (!maybe_result.has_value) return Maybe<bool>(); |
| (...skipping 3250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 16831 Handle<DependentCode> codes = | 16827 Handle<DependentCode> codes = |
| 16832 DependentCode::Insert(handle(cell->dependent_code(), info->isolate()), | 16828 DependentCode::Insert(handle(cell->dependent_code(), info->isolate()), |
| 16833 DependentCode::kPropertyCellChangedGroup, | 16829 DependentCode::kPropertyCellChangedGroup, |
| 16834 info->object_wrapper()); | 16830 info->object_wrapper()); |
| 16835 if (*codes != cell->dependent_code()) cell->set_dependent_code(*codes); | 16831 if (*codes != cell->dependent_code()) cell->set_dependent_code(*codes); |
| 16836 info->dependencies(DependentCode::kPropertyCellChangedGroup)->Add( | 16832 info->dependencies(DependentCode::kPropertyCellChangedGroup)->Add( |
| 16837 cell, info->zone()); | 16833 cell, info->zone()); |
| 16838 } | 16834 } |
| 16839 | 16835 |
| 16840 } } // namespace v8::internal | 16836 } } // namespace v8::internal |
| OLD | NEW |