| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 var $proxyDelegateCallAndConstruct; |
| 5 var $proxyDerivedGetTrap; | 6 var $proxyDerivedGetTrap; |
| 6 var $proxyDerivedHasTrap; | 7 var $proxyDerivedHasTrap; |
| 8 var $proxyDerivedHasOwnTrap; |
| 9 var $proxyDerivedKeysTrap; |
| 7 var $proxyDerivedSetTrap; | 10 var $proxyDerivedSetTrap; |
| 8 var $proxyEnumerate; | 11 var $proxyEnumerate; |
| 9 | 12 |
| 10 (function(global, utils) { | 13 (function(global, utils) { |
| 11 | 14 |
| 12 "use strict"; | 15 "use strict"; |
| 13 | 16 |
| 14 %CheckIsBootstrapping(); | 17 %CheckIsBootstrapping(); |
| 15 | 18 |
| 16 // ---------------------------------------------------------------------------- | |
| 17 // Imports | |
| 18 | |
| 19 var GlobalFunction = global.Function; | 19 var GlobalFunction = global.Function; |
| 20 var GlobalObject = global.Object; | 20 var GlobalObject = global.Object; |
| 21 | 21 |
| 22 var ToNameArray; | 22 // ------------------------------------------------------------------- |
| 23 | |
| 24 utils.Import(function(from) { | |
| 25 ToNameArray = from.ToNameArray; | |
| 26 }); | |
| 27 | |
| 28 //---------------------------------------------------------------------------- | |
| 29 | 23 |
| 30 function ProxyCreate(handler, proto) { | 24 function ProxyCreate(handler, proto) { |
| 31 if (!IS_SPEC_OBJECT(handler)) | 25 if (!IS_SPEC_OBJECT(handler)) |
| 32 throw MakeTypeError(kProxyHandlerNonObject, "create") | 26 throw MakeTypeError(kProxyHandlerNonObject, "create") |
| 33 if (IS_UNDEFINED(proto)) | 27 if (IS_UNDEFINED(proto)) |
| 34 proto = null | 28 proto = null |
| 35 else if (!(IS_SPEC_OBJECT(proto) || IS_NULL(proto))) | 29 else if (!(IS_SPEC_OBJECT(proto) || IS_NULL(proto))) |
| 36 throw MakeTypeError(kProxyProtoNonObject) | 30 throw MakeTypeError(kProxyProtoNonObject) |
| 37 return %CreateJSProxy(handler, proto) | 31 return %CreateJSProxy(handler, proto) |
| 38 } | 32 } |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 174 } | 168 } |
| 175 } | 169 } |
| 176 return enumerableNames | 170 return enumerableNames |
| 177 } | 171 } |
| 178 | 172 |
| 179 function ProxyEnumerate(proxy) { | 173 function ProxyEnumerate(proxy) { |
| 180 var handler = %GetHandler(proxy) | 174 var handler = %GetHandler(proxy) |
| 181 if (IS_UNDEFINED(handler.enumerate)) { | 175 if (IS_UNDEFINED(handler.enumerate)) { |
| 182 return %Apply(DerivedEnumerateTrap, handler, [], 0, 0) | 176 return %Apply(DerivedEnumerateTrap, handler, [], 0, 0) |
| 183 } else { | 177 } else { |
| 184 return ToNameArray(handler.enumerate(), "enumerate", false) | 178 return $toNameArray(handler.enumerate(), "enumerate", false) |
| 185 } | 179 } |
| 186 } | 180 } |
| 187 | 181 |
| 188 //------------------------------------------------------------------- | 182 //------------------------------------------------------------------- |
| 189 | 183 |
| 190 var Proxy = new GlobalObject(); | 184 var Proxy = new GlobalObject(); |
| 191 %AddNamedProperty(global, "Proxy", Proxy, DONT_ENUM); | 185 %AddNamedProperty(global, "Proxy", Proxy, DONT_ENUM); |
| 192 | 186 |
| 193 //Set up non-enumerable properties of the Proxy object. | 187 //Set up non-enumerable properties of the Proxy object. |
| 194 utils.InstallFunctions(Proxy, DONT_ENUM, [ | 188 $installFunctions(Proxy, DONT_ENUM, [ |
| 195 "create", ProxyCreate, | 189 "create", ProxyCreate, |
| 196 "createFunction", ProxyCreateFunction | 190 "createFunction", ProxyCreateFunction |
| 197 ]) | 191 ]) |
| 198 | 192 |
| 199 // ------------------------------------------------------------------- | 193 $proxyDelegateCallAndConstruct = DelegateCallAndConstruct; |
| 200 // Exports | |
| 201 | |
| 202 $proxyDerivedGetTrap = DerivedGetTrap; | 194 $proxyDerivedGetTrap = DerivedGetTrap; |
| 203 $proxyDerivedHasTrap = DerivedHasTrap; | 195 $proxyDerivedHasTrap = DerivedHasTrap; |
| 196 $proxyDerivedHasOwnTrap = DerivedHasOwnTrap; |
| 197 $proxyDerivedKeysTrap = DerivedKeysTrap; |
| 204 $proxyDerivedSetTrap = DerivedSetTrap; | 198 $proxyDerivedSetTrap = DerivedSetTrap; |
| 205 $proxyEnumerate = ProxyEnumerate; | 199 $proxyEnumerate = ProxyEnumerate; |
| 206 | 200 |
| 207 utils.Export(function(to) { | |
| 208 to.ProxyDelegateCallAndConstruct = DelegateCallAndConstruct; | |
| 209 to.ProxyDerivedHasOwnTrap = DerivedHasOwnTrap; | |
| 210 to.ProxyDerivedKeysTrap = DerivedKeysTrap; | |
| 211 }); | |
| 212 | |
| 213 }) | 201 }) |
| OLD | NEW |