| Index: src/runtime.cc
|
| ===================================================================
|
| --- src/runtime.cc (revision 8174)
|
| +++ src/runtime.cc (working copy)
|
| @@ -594,12 +594,26 @@
|
| 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,19 @@
|
| }
|
|
|
|
|
| +RUNTIME_FUNCTION(MaybeObject*, Runtime_GetPrototype) {
|
| + NoHandleAllocation ha;
|
| + ASSERT(args.length() == 1);
|
| + Object* obj = args[0];
|
| + obj = obj->GetPrototype();
|
| + while (obj->IsJSObject() &&
|
| + JSObject::cast(obj)->map()->is_hidden_prototype()) {
|
| + obj = obj->GetPrototype();
|
| + }
|
| + return obj;
|
| +}
|
| +
|
| +
|
| RUNTIME_FUNCTION(MaybeObject*, Runtime_IsInPrototypeChain) {
|
| NoHandleAllocation ha;
|
| ASSERT(args.length() == 2);
|
|
|