| Index: src/runtime.cc
|
| diff --git a/src/runtime.cc b/src/runtime.cc
|
| index 10de6f9e5ec001c595a0b86632599f9be9a22074..3ad4515480543d667ccace3ceda7445e60499ac3 100644
|
| --- a/src/runtime.cc
|
| +++ b/src/runtime.cc
|
| @@ -14222,6 +14222,14 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_HaveSameMap) {
|
| }
|
|
|
|
|
| +RUNTIME_FUNCTION(MaybeObject*, Runtime_IsAccessCheckNeeded) {
|
| + SealHandleScope shs(isolate);
|
| + ASSERT(args.length() == 1);
|
| + CONVERT_ARG_CHECKED(HeapObject, obj, 0);
|
| + return isolate->heap()->ToBoolean(obj->IsAccessCheckNeeded());
|
| +}
|
| +
|
| +
|
| RUNTIME_FUNCTION(MaybeObject*, Runtime_IsObserved) {
|
| SealHandleScope shs(isolate);
|
| ASSERT(args.length() == 1);
|
| @@ -14299,6 +14307,27 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_UnwrapGlobalProxy) {
|
| }
|
|
|
|
|
| +RUNTIME_FUNCTION(MaybeObject*, Runtime_GetAccessAllowedForObserver) {
|
| + HandleScope scope(isolate);
|
| + ASSERT(args.length() == 3);
|
| + CONVERT_ARG_HANDLE_CHECKED(JSFunction, observer, 0);
|
| + CONVERT_ARG_HANDLE_CHECKED(JSObject, object, 1);
|
| + ASSERT(object->IsAccessCheckNeeded());
|
| + Handle<Object> key = args.at<Object>(2);
|
| + SaveContext save(isolate);
|
| + isolate->set_context(observer->context());
|
| + bool access_allowed = false;
|
| + uint32_t index = 0;
|
| + if (key->ToArrayIndex(&index) ||
|
| + (key->IsString() && String::cast(*key)->AsArrayIndex(&index))) {
|
| + access_allowed = isolate->MayIndexedAccess(*object, index, v8::ACCESS_GET);
|
| + } else {
|
| + access_allowed = isolate->MayNamedAccess(*object, *key, v8::ACCESS_GET);
|
| + }
|
| + return isolate->heap()->ToBoolean(access_allowed);
|
| +}
|
| +
|
| +
|
| static MaybeObject* ArrayConstructorCommon(Isolate* isolate,
|
| Handle<JSFunction> constructor,
|
| Handle<Object> type_info,
|
|
|