| Index: src/runtime.cc
|
| diff --git a/src/runtime.cc b/src/runtime.cc
|
| index 4997d56df54b8dceb95b98938b0bff0dca4283d7..08acfd120b5caf11b9bd1d249cbabfa328d4f374 100644
|
| --- a/src/runtime.cc
|
| +++ b/src/runtime.cc
|
| @@ -594,12 +594,26 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_CreateJSProxy) {
|
| Object* handler = args[0];
|
| Object* prototype = args[1];
|
| Object* used_prototype =
|
| - (prototype->IsJSObject() || prototype->IsJSProxy()) ? prototype
|
| - : isolate->heap()->null_value();
|
| + prototype->IsJSReceiver() ? prototype : isolate->heap()->null_value();
|
| return isolate->heap()->AllocateJSProxy(handler, used_prototype);
|
| }
|
|
|
|
|
| +RUNTIME_FUNCTION(MaybeObject*, Runtime_IsJSProxy) {
|
| + ASSERT(args.length() == 1);
|
| + Object* obj = args[0];
|
| + return obj->IsJSProxy()
|
| + ? isolate->heap()->true_value() : isolate->heap()->false_value();
|
| +}
|
| +
|
| +
|
| +RUNTIME_FUNCTION(MaybeObject*, Runtime_GetHandler) {
|
| + ASSERT(args.length() == 1);
|
| + CONVERT_CHECKED(JSProxy, proxy, args[0]);
|
| + return proxy->handler();
|
| +}
|
| +
|
| +
|
| RUNTIME_FUNCTION(MaybeObject*, Runtime_CreateCatchExtensionObject) {
|
| ASSERT(args.length() == 2);
|
| CONVERT_CHECKED(String, key, args[0]);
|
| @@ -634,6 +648,15 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_ClassOf) {
|
| }
|
|
|
|
|
| +RUNTIME_FUNCTION(MaybeObject*, Runtime_GetPrototype) {
|
| + NoHandleAllocation ha;
|
| + ASSERT(args.length() == 1);
|
| + Object* obj = args[0];
|
| + if (obj->IsJSGlobalProxy()) obj = obj->GetPrototype();
|
| + return obj->GetPrototype();
|
| +}
|
| +
|
| +
|
| RUNTIME_FUNCTION(MaybeObject*, Runtime_IsInPrototypeChain) {
|
| NoHandleAllocation ha;
|
| ASSERT(args.length() == 2);
|
|
|