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 468 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
479 function CallTrap2(handler, name, defaultTrap, x, y) { | 479 function CallTrap2(handler, name, defaultTrap, x, y) { |
480 return %_Call(GetTrap(handler, name, defaultTrap), handler, x, y); | 480 return %_Call(GetTrap(handler, name, defaultTrap), handler, x, y); |
481 } | 481 } |
482 | 482 |
483 | 483 |
484 // ES5 section 8.12.1. | 484 // ES5 section 8.12.1. |
485 // TODO(jkummerow): Deprecated. Migrate all callers to | 485 // TODO(jkummerow): Deprecated. Migrate all callers to |
486 // ObjectGetOwnPropertyDescriptor and delete this. | 486 // ObjectGetOwnPropertyDescriptor and delete this. |
487 function GetOwnPropertyJS(obj, v) { | 487 function GetOwnPropertyJS(obj, v) { |
488 var p = TO_NAME(v); | 488 var p = TO_NAME(v); |
489 if (%_IsJSProxy(obj)) { | 489 if (IS_PROXY(obj)) { |
490 // TODO(rossberg): adjust once there is a story for symbols vs proxies. | 490 // TODO(rossberg): adjust once there is a story for symbols vs proxies. |
491 if (IS_SYMBOL(v)) return UNDEFINED; | 491 if (IS_SYMBOL(v)) return UNDEFINED; |
492 | 492 |
493 var handler = %GetHandler(obj); | 493 var handler = %JSProxyGetHandler(obj); |
494 var descriptor = CallTrap1( | 494 var descriptor = CallTrap1( |
495 handler, "getOwnPropertyDescriptor", UNDEFINED, p); | 495 handler, "getOwnPropertyDescriptor", UNDEFINED, p); |
496 if (IS_UNDEFINED(descriptor)) return descriptor; | 496 if (IS_UNDEFINED(descriptor)) return descriptor; |
497 var desc = ToCompletePropertyDescriptor(descriptor); | 497 var desc = ToCompletePropertyDescriptor(descriptor); |
498 if (!desc.isConfigurable()) { | 498 if (!desc.isConfigurable()) { |
499 throw MakeTypeError(kIllegalInvocation); | 499 throw MakeTypeError(kIllegalInvocation); |
500 } | 500 } |
501 return desc; | 501 return desc; |
502 } | 502 } |
503 | 503 |
(...skipping 13 matching lines...) Expand all Loading... |
517 if (IS_CALLABLE(func)) return func; | 517 if (IS_CALLABLE(func)) return func; |
518 throw MakeTypeError(kCalledNonCallable, typeof func); | 518 throw MakeTypeError(kCalledNonCallable, typeof func); |
519 } | 519 } |
520 | 520 |
521 | 521 |
522 // Harmony proxies. | 522 // Harmony proxies. |
523 function DefineProxyProperty(obj, p, attributes, should_throw) { | 523 function DefineProxyProperty(obj, p, attributes, should_throw) { |
524 // TODO(rossberg): adjust once there is a story for symbols vs proxies. | 524 // TODO(rossberg): adjust once there is a story for symbols vs proxies. |
525 if (IS_SYMBOL(p)) return false; | 525 if (IS_SYMBOL(p)) return false; |
526 | 526 |
527 var handler = %GetHandler(obj); | 527 var handler = %JSProxyGetHandler(obj); |
528 var result = CallTrap2(handler, "defineProperty", UNDEFINED, p, attributes); | 528 var result = CallTrap2(handler, "defineProperty", UNDEFINED, p, attributes); |
529 if (!result) { | 529 if (!result) { |
530 if (should_throw) { | 530 if (should_throw) { |
531 throw MakeTypeError(kIllegalInvocation); | 531 throw MakeTypeError(kIllegalInvocation); |
532 } else { | 532 } else { |
533 return false; | 533 return false; |
534 } | 534 } |
535 } | 535 } |
536 return true; | 536 return true; |
537 } | 537 } |
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
740 } | 740 } |
741 } | 741 } |
742 | 742 |
743 // Step 5 - Fallback to default implementation. | 743 // Step 5 - Fallback to default implementation. |
744 return DefineObjectProperty(obj, p, desc, should_throw); | 744 return DefineObjectProperty(obj, p, desc, should_throw); |
745 } | 745 } |
746 | 746 |
747 | 747 |
748 // ES5 section 8.12.9, ES5 section 15.4.5.1 and Harmony proxies. | 748 // ES5 section 8.12.9, ES5 section 15.4.5.1 and Harmony proxies. |
749 function DefineOwnProperty(obj, p, desc, should_throw) { | 749 function DefineOwnProperty(obj, p, desc, should_throw) { |
750 if (%_IsJSProxy(obj)) { | 750 if (IS_PROXY(obj)) { |
751 // TODO(rossberg): adjust once there is a story for symbols vs proxies. | 751 // TODO(rossberg): adjust once there is a story for symbols vs proxies. |
752 if (IS_SYMBOL(p)) return false; | 752 if (IS_SYMBOL(p)) return false; |
753 | 753 |
754 var attributes = FromGenericPropertyDescriptor(desc); | 754 var attributes = FromGenericPropertyDescriptor(desc); |
755 return DefineProxyProperty(obj, p, attributes, should_throw); | 755 return DefineProxyProperty(obj, p, attributes, should_throw); |
756 } else if (IS_ARRAY(obj)) { | 756 } else if (IS_ARRAY(obj)) { |
757 return DefineArrayProperty(obj, p, desc, should_throw); | 757 return DefineArrayProperty(obj, p, desc, should_throw); |
758 } else { | 758 } else { |
759 return DefineObjectProperty(obj, p, desc, should_throw); | 759 return DefineObjectProperty(obj, p, desc, should_throw); |
760 } | 760 } |
(...skipping 625 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1386 to.ObjectIsFrozen = ObjectIsFrozen; | 1386 to.ObjectIsFrozen = ObjectIsFrozen; |
1387 to.ObjectIsSealed = ObjectIsSealed; | 1387 to.ObjectIsSealed = ObjectIsSealed; |
1388 to.ObjectKeys = ObjectKeys; | 1388 to.ObjectKeys = ObjectKeys; |
1389 }); | 1389 }); |
1390 | 1390 |
1391 %InstallToContext([ | 1391 %InstallToContext([ |
1392 "object_value_of", ObjectValueOf, | 1392 "object_value_of", ObjectValueOf, |
1393 ]); | 1393 ]); |
1394 | 1394 |
1395 }) | 1395 }) |
OLD | NEW |