Chromium Code Reviews| Index: src/runtime.cc |
| diff --git a/src/runtime.cc b/src/runtime.cc |
| index 38199f8c5826fbbee560d6dde3bb78a317009d35..5d6727a0a486ac794405deb13e42657c29d97a73 100644 |
| --- a/src/runtime.cc |
| +++ b/src/runtime.cc |
| @@ -612,6 +612,19 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_CreateJSProxy) { |
| } |
| +RUNTIME_FUNCTION(MaybeObject*, Runtime_CreateJSFunctionProxy) { |
| + ASSERT(args.length() == 4); |
| + Object* handler = args[0]; |
| + Object* call_trap = args[1]; |
| + Object* construct_trap = args[2]; |
| + Object* prototype = args[3]; |
| + Object* used_prototype = |
| + prototype->IsJSReceiver() ? prototype : isolate->heap()->null_value(); |
| + return isolate->heap()->AllocateJSFunctionProxy( |
| + handler, call_trap, construct_trap, used_prototype); |
| +} |
| + |
| + |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_IsJSProxy) { |
| ASSERT(args.length() == 1); |
| Object* obj = args[0]; |
| @@ -619,6 +632,14 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_IsJSProxy) { |
| } |
| +RUNTIME_FUNCTION(MaybeObject*, Runtime_IsJSFunctionProxy) { |
| + ASSERT(args.length() == 1); |
| + Object* obj = args[0]; |
| + return obj->IsJSFunctionProxy() |
| + ? isolate->heap()->true_value() : isolate->heap()->false_value(); |
|
Kevin Millikin (Chromium)
2011/09/08 17:30:40
return isolate->heap()->ToBoolean(obj->IsJSFunctio
rossberg
2011/09/09 17:05:30
Done.
|
| +} |
| + |
| + |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_GetHandler) { |
| ASSERT(args.length() == 1); |
| CONVERT_CHECKED(JSProxy, proxy, args[0]); |
| @@ -626,6 +647,20 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_GetHandler) { |
| } |
| +RUNTIME_FUNCTION(MaybeObject*, Runtime_GetCallTrap) { |
| + ASSERT(args.length() == 1); |
| + CONVERT_CHECKED(JSFunctionProxy, proxy, args[0]); |
| + return proxy->call_trap(); |
| +} |
| + |
| + |
| +RUNTIME_FUNCTION(MaybeObject*, Runtime_GetConstructTrap) { |
| + ASSERT(args.length() == 1); |
| + CONVERT_CHECKED(JSFunctionProxy, proxy, args[0]); |
| + return proxy->construct_trap(); |
| +} |
| + |
| + |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_Fix) { |
| ASSERT(args.length() == 1); |
| CONVERT_CHECKED(JSProxy, proxy, args[0]); |
| @@ -4860,6 +4895,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_Typeof) { |
| ASSERT(heap_obj->IsUndefined()); |
| return isolate->heap()->undefined_symbol(); |
| case JS_FUNCTION_TYPE: |
| + case JS_FUNCTION_PROXY_TYPE: |
| return isolate->heap()->function_symbol(); |
| default: |
| // For any kind of object not handled above, the spec rule for |