| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 (function(global, utils) { | 5 (function(global, utils) { |
| 6 | 6 |
| 7 %CheckIsBootstrapping(); | 7 %CheckIsBootstrapping(); |
| 8 | 8 |
| 9 // ---------------------------------------------------------------------------- | 9 // ---------------------------------------------------------------------------- |
| 10 // Imports | 10 // Imports |
| (...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 493 function CallTrap2(handler, name, defaultTrap, x, y) { | 493 function CallTrap2(handler, name, defaultTrap, x, y) { |
| 494 return %_Call(GetTrap(handler, name, defaultTrap), handler, x, y); | 494 return %_Call(GetTrap(handler, name, defaultTrap), handler, x, y); |
| 495 } | 495 } |
| 496 | 496 |
| 497 | 497 |
| 498 // ES5 section 8.12.1. | 498 // ES5 section 8.12.1. |
| 499 // TODO(jkummerow): Deprecated. Migrate all callers to | 499 // TODO(jkummerow): Deprecated. Migrate all callers to |
| 500 // ObjectGetOwnPropertyDescriptor and delete this. | 500 // ObjectGetOwnPropertyDescriptor and delete this. |
| 501 function GetOwnPropertyJS(obj, v) { | 501 function GetOwnPropertyJS(obj, v) { |
| 502 var p = TO_NAME(v); | 502 var p = TO_NAME(v); |
| 503 if (IS_PROXY(obj)) { | 503 if (%_IsJSProxy(obj)) { |
| 504 // TODO(rossberg): adjust once there is a story for symbols vs proxies. | 504 // TODO(rossberg): adjust once there is a story for symbols vs proxies. |
| 505 if (IS_SYMBOL(v)) return UNDEFINED; | 505 if (IS_SYMBOL(v)) return UNDEFINED; |
| 506 | 506 |
| 507 var handler = %JSProxyGetHandler(obj); | 507 var handler = %GetHandler(obj); |
| 508 var descriptor = CallTrap1( | 508 var descriptor = CallTrap1( |
| 509 handler, "getOwnPropertyDescriptor", UNDEFINED, p); | 509 handler, "getOwnPropertyDescriptor", UNDEFINED, p); |
| 510 if (IS_UNDEFINED(descriptor)) return descriptor; | 510 if (IS_UNDEFINED(descriptor)) return descriptor; |
| 511 var desc = ToCompletePropertyDescriptor(descriptor); | 511 var desc = ToCompletePropertyDescriptor(descriptor); |
| 512 if (!desc.isConfigurable()) { | 512 if (!desc.isConfigurable()) { |
| 513 throw MakeTypeError(kIllegalInvocation); | 513 throw MakeTypeError(kIllegalInvocation); |
| 514 } | 514 } |
| 515 return desc; | 515 return desc; |
| 516 } | 516 } |
| 517 | 517 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 531 if (IS_CALLABLE(func)) return func; | 531 if (IS_CALLABLE(func)) return func; |
| 532 throw MakeTypeError(kCalledNonCallable, typeof func); | 532 throw MakeTypeError(kCalledNonCallable, typeof func); |
| 533 } | 533 } |
| 534 | 534 |
| 535 | 535 |
| 536 // Harmony proxies. | 536 // Harmony proxies. |
| 537 function DefineProxyProperty(obj, p, attributes, should_throw) { | 537 function DefineProxyProperty(obj, p, attributes, should_throw) { |
| 538 // TODO(rossberg): adjust once there is a story for symbols vs proxies. | 538 // TODO(rossberg): adjust once there is a story for symbols vs proxies. |
| 539 if (IS_SYMBOL(p)) return false; | 539 if (IS_SYMBOL(p)) return false; |
| 540 | 540 |
| 541 var handler = %JSProxyGetHandler(obj); | 541 var handler = %GetHandler(obj); |
| 542 var result = CallTrap2(handler, "defineProperty", UNDEFINED, p, attributes); | 542 var result = CallTrap2(handler, "defineProperty", UNDEFINED, p, attributes); |
| 543 if (!result) { | 543 if (!result) { |
| 544 if (should_throw) { | 544 if (should_throw) { |
| 545 throw MakeTypeError(kIllegalInvocation); | 545 throw MakeTypeError(kIllegalInvocation); |
| 546 } else { | 546 } else { |
| 547 return false; | 547 return false; |
| 548 } | 548 } |
| 549 } | 549 } |
| 550 return true; | 550 return true; |
| 551 } | 551 } |
| (...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 754 } | 754 } |
| 755 } | 755 } |
| 756 | 756 |
| 757 // Step 5 - Fallback to default implementation. | 757 // Step 5 - Fallback to default implementation. |
| 758 return DefineObjectProperty(obj, p, desc, should_throw); | 758 return DefineObjectProperty(obj, p, desc, should_throw); |
| 759 } | 759 } |
| 760 | 760 |
| 761 | 761 |
| 762 // ES5 section 8.12.9, ES5 section 15.4.5.1 and Harmony proxies. | 762 // ES5 section 8.12.9, ES5 section 15.4.5.1 and Harmony proxies. |
| 763 function DefineOwnProperty(obj, p, desc, should_throw) { | 763 function DefineOwnProperty(obj, p, desc, should_throw) { |
| 764 if (IS_PROXY(obj)) { | 764 if (%_IsJSProxy(obj)) { |
| 765 // TODO(rossberg): adjust once there is a story for symbols vs proxies. | 765 // TODO(rossberg): adjust once there is a story for symbols vs proxies. |
| 766 if (IS_SYMBOL(p)) return false; | 766 if (IS_SYMBOL(p)) return false; |
| 767 | 767 |
| 768 var attributes = FromGenericPropertyDescriptor(desc); | 768 var attributes = FromGenericPropertyDescriptor(desc); |
| 769 return DefineProxyProperty(obj, p, attributes, should_throw); | 769 return DefineProxyProperty(obj, p, attributes, should_throw); |
| 770 } else if (IS_ARRAY(obj)) { | 770 } else if (IS_ARRAY(obj)) { |
| 771 return DefineArrayProperty(obj, p, desc, should_throw); | 771 return DefineArrayProperty(obj, p, desc, should_throw); |
| 772 } else { | 772 } else { |
| 773 return DefineObjectProperty(obj, p, desc, should_throw); | 773 return DefineObjectProperty(obj, p, desc, should_throw); |
| 774 } | 774 } |
| (...skipping 678 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1453 to.ObjectIsSealed = ObjectIsSealed; | 1453 to.ObjectIsSealed = ObjectIsSealed; |
| 1454 to.ObjectKeys = ObjectKeys; | 1454 to.ObjectKeys = ObjectKeys; |
| 1455 }); | 1455 }); |
| 1456 | 1456 |
| 1457 %InstallToContext([ | 1457 %InstallToContext([ |
| 1458 "global_eval_fun", GlobalEval, | 1458 "global_eval_fun", GlobalEval, |
| 1459 "object_value_of", ObjectValueOf, | 1459 "object_value_of", ObjectValueOf, |
| 1460 ]); | 1460 ]); |
| 1461 | 1461 |
| 1462 }) | 1462 }) |
| OLD | NEW |