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 786 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
797 return obj; | 797 return obj; |
798 } | 798 } |
799 | 799 |
800 | 800 |
801 // ES6 section 19.1.2.6 | 801 // ES6 section 19.1.2.6 |
802 function ObjectGetOwnPropertyDescriptor(obj, p) { | 802 function ObjectGetOwnPropertyDescriptor(obj, p) { |
803 return %GetOwnProperty(obj, p); | 803 return %GetOwnProperty(obj, p); |
804 } | 804 } |
805 | 805 |
806 | 806 |
807 // ES6 section 9.1.12 / 9.5.12 | |
808 function OwnPropertyKeys(obj) { | |
809 return %GetOwnPropertyKeys(obj, PROPERTY_FILTER_NONE); | |
810 } | |
811 | |
812 | |
813 // ES5 section 15.2.3.4. | 807 // ES5 section 15.2.3.4. |
814 function ObjectGetOwnPropertyNames(obj) { | 808 function ObjectGetOwnPropertyNames(obj) { |
815 obj = TO_OBJECT(obj); | 809 obj = TO_OBJECT(obj); |
816 return %GetOwnPropertyKeys(obj, PROPERTY_FILTER_SKIP_SYMBOLS); | 810 return %GetOwnPropertyKeys(obj, PROPERTY_FILTER_SKIP_SYMBOLS); |
817 } | 811 } |
818 | 812 |
819 | 813 |
820 // ES5 section 15.2.3.5. | 814 // ES5 section 15.2.3.5. |
821 function ObjectCreate(proto, properties) { | 815 function ObjectCreate(proto, properties) { |
822 if (!IS_SPEC_OBJECT(proto) && proto !== null) { | 816 if (!IS_SPEC_OBJECT(proto) && proto !== null) { |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
909 } | 903 } |
910 | 904 |
911 | 905 |
912 // ES6 19.1.2.11 | 906 // ES6 19.1.2.11 |
913 function ObjectIsExtensible(obj) { | 907 function ObjectIsExtensible(obj) { |
914 if (!IS_SPEC_OBJECT(obj)) return false; | 908 if (!IS_SPEC_OBJECT(obj)) return false; |
915 return %IsExtensible(obj); | 909 return %IsExtensible(obj); |
916 } | 910 } |
917 | 911 |
918 | 912 |
919 // ES6 19.1.2.1 | |
920 function ObjectAssign(target, sources) { | |
921 // TODO(bmeurer): Move this to toplevel. | |
922 "use strict"; | |
923 var to = TO_OBJECT(target); | |
924 var argsLen = %_ArgumentsLength(); | |
925 if (argsLen < 2) return to; | |
926 | |
927 for (var i = 1; i < argsLen; ++i) { | |
928 var nextSource = %_Arguments(i); | |
929 if (IS_NULL_OR_UNDEFINED(nextSource)) { | |
930 continue; | |
931 } | |
932 | |
933 var from = TO_OBJECT(nextSource); | |
934 var keys = OwnPropertyKeys(from); | |
935 var len = keys.length; | |
936 | |
937 for (var j = 0; j < len; ++j) { | |
938 var key = keys[j]; | |
939 if (%PropertyIsEnumerable(from, key)) { | |
940 var propValue = from[key]; | |
941 to[key] = propValue; | |
942 } | |
943 } | |
944 } | |
945 return to; | |
946 } | |
947 | |
948 | |
949 // ES6 B.2.2.1.1 | 913 // ES6 B.2.2.1.1 |
950 function ObjectGetProto() { | 914 function ObjectGetProto() { |
951 return %_GetPrototype(TO_OBJECT(this)); | 915 return %_GetPrototype(TO_OBJECT(this)); |
952 } | 916 } |
953 | 917 |
954 | 918 |
955 // ES6 B.2.2.1.2 | 919 // ES6 B.2.2.1.2 |
956 function ObjectSetProto(proto) { | 920 function ObjectSetProto(proto) { |
957 CHECK_OBJECT_COERCIBLE(this, "Object.prototype.__proto__"); | 921 CHECK_OBJECT_COERCIBLE(this, "Object.prototype.__proto__"); |
958 | 922 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
992 "__defineGetter__", ObjectDefineGetter, | 956 "__defineGetter__", ObjectDefineGetter, |
993 "__lookupGetter__", ObjectLookupGetter, | 957 "__lookupGetter__", ObjectLookupGetter, |
994 "__defineSetter__", ObjectDefineSetter, | 958 "__defineSetter__", ObjectDefineSetter, |
995 "__lookupSetter__", ObjectLookupSetter | 959 "__lookupSetter__", ObjectLookupSetter |
996 ]); | 960 ]); |
997 utils.InstallGetterSetter(GlobalObject.prototype, "__proto__", ObjectGetProto, | 961 utils.InstallGetterSetter(GlobalObject.prototype, "__proto__", ObjectGetProto, |
998 ObjectSetProto); | 962 ObjectSetProto); |
999 | 963 |
1000 // Set up non-enumerable functions in the Object object. | 964 // Set up non-enumerable functions in the Object object. |
1001 utils.InstallFunctions(GlobalObject, DONT_ENUM, [ | 965 utils.InstallFunctions(GlobalObject, DONT_ENUM, [ |
1002 "assign", ObjectAssign, | 966 // assign is added in bootstrapper.cc. |
1003 "keys", ObjectKeys, | 967 "keys", ObjectKeys, |
1004 "create", ObjectCreate, | 968 "create", ObjectCreate, |
1005 "defineProperty", ObjectDefineProperty, | 969 "defineProperty", ObjectDefineProperty, |
1006 "defineProperties", ObjectDefineProperties, | 970 "defineProperties", ObjectDefineProperties, |
1007 "freeze", ObjectFreezeJS, | 971 "freeze", ObjectFreezeJS, |
1008 "getPrototypeOf", ObjectGetPrototypeOf, | 972 "getPrototypeOf", ObjectGetPrototypeOf, |
1009 "setPrototypeOf", ObjectSetPrototypeOf, | 973 "setPrototypeOf", ObjectSetPrototypeOf, |
1010 "getOwnPropertyDescriptor", ObjectGetOwnPropertyDescriptor, | 974 "getOwnPropertyDescriptor", ObjectGetOwnPropertyDescriptor, |
1011 "getOwnPropertyNames", ObjectGetOwnPropertyNames, | 975 "getOwnPropertyNames", ObjectGetOwnPropertyNames, |
1012 // getOwnPropertySymbols is added in symbol.js. | 976 // getOwnPropertySymbols is added in symbol.js. |
(...skipping 477 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1490 to.ObjectIsSealed = ObjectIsSealed; | 1454 to.ObjectIsSealed = ObjectIsSealed; |
1491 to.ObjectKeys = ObjectKeys; | 1455 to.ObjectKeys = ObjectKeys; |
1492 }); | 1456 }); |
1493 | 1457 |
1494 %InstallToContext([ | 1458 %InstallToContext([ |
1495 "global_eval_fun", GlobalEval, | 1459 "global_eval_fun", GlobalEval, |
1496 "object_value_of", ObjectValueOf, | 1460 "object_value_of", ObjectValueOf, |
1497 ]); | 1461 ]); |
1498 | 1462 |
1499 }) | 1463 }) |
OLD | NEW |