| 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 1122 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1133 | 1133 | 
| 1134 | 1134 | 
| 1135 // ES5 section 15.2.3.8. | 1135 // ES5 section 15.2.3.8. | 
| 1136 function ObjectSealJS(obj) { | 1136 function ObjectSealJS(obj) { | 
| 1137   if (!IS_SPEC_OBJECT(obj)) return obj; | 1137   if (!IS_SPEC_OBJECT(obj)) return obj; | 
| 1138   var isProxy = %_IsJSProxy(obj); | 1138   var isProxy = %_IsJSProxy(obj); | 
| 1139   if (isProxy || %HasSloppyArgumentsElements(obj) || %IsObserved(obj)) { | 1139   if (isProxy || %HasSloppyArgumentsElements(obj) || %IsObserved(obj)) { | 
| 1140     if (isProxy) { | 1140     if (isProxy) { | 
| 1141       ProxyFix(obj); | 1141       ProxyFix(obj); | 
| 1142     } | 1142     } | 
| 1143     var names = ObjectGetOwnPropertyNames(obj); | 1143     var names = OwnPropertyKeys(obj); | 
| 1144     for (var i = 0; i < names.length; i++) { | 1144     for (var i = 0; i < names.length; i++) { | 
| 1145       var name = names[i]; | 1145       var name = names[i]; | 
| 1146       var desc = GetOwnPropertyJS(obj, name); | 1146       var desc = GetOwnPropertyJS(obj, name); | 
| 1147       if (desc.isConfigurable()) { | 1147       if (desc.isConfigurable()) { | 
| 1148         desc.setConfigurable(false); | 1148         desc.setConfigurable(false); | 
| 1149         DefineOwnProperty(obj, name, desc, true); | 1149         DefineOwnProperty(obj, name, desc, true); | 
| 1150       } | 1150       } | 
| 1151     } | 1151     } | 
| 1152     %PreventExtensions(obj); | 1152     %PreventExtensions(obj); | 
| 1153   } else { | 1153   } else { | 
| 1154     // TODO(adamk): Is it worth going to this fast path if the | 1154     // TODO(adamk): Is it worth going to this fast path if the | 
| 1155     // object's properties are already in dictionary mode? | 1155     // object's properties are already in dictionary mode? | 
| 1156     %ObjectSeal(obj); | 1156     %ObjectSeal(obj); | 
| 1157   } | 1157   } | 
| 1158   return obj; | 1158   return obj; | 
| 1159 } | 1159 } | 
| 1160 | 1160 | 
| 1161 | 1161 | 
| 1162 // ES5 section 15.2.3.9. | 1162 // ES5 section 15.2.3.9. | 
| 1163 function ObjectFreezeJS(obj) { | 1163 function ObjectFreezeJS(obj) { | 
| 1164   if (!IS_SPEC_OBJECT(obj)) return obj; | 1164   if (!IS_SPEC_OBJECT(obj)) return obj; | 
| 1165   var isProxy = %_IsJSProxy(obj); | 1165   var isProxy = %_IsJSProxy(obj); | 
| 1166   // TODO(conradw): Investigate modifying the fast path to accommodate strong | 1166   // TODO(conradw): Investigate modifying the fast path to accommodate strong | 
| 1167   // objects. | 1167   // objects. | 
| 1168   if (isProxy || %HasSloppyArgumentsElements(obj) || %IsObserved(obj) || | 1168   if (isProxy || %HasSloppyArgumentsElements(obj) || %IsObserved(obj) || | 
| 1169       IS_STRONG(obj)) { | 1169       IS_STRONG(obj)) { | 
| 1170     if (isProxy) { | 1170     if (isProxy) { | 
| 1171       ProxyFix(obj); | 1171       ProxyFix(obj); | 
| 1172     } | 1172     } | 
| 1173     var names = ObjectGetOwnPropertyNames(obj); | 1173     var names = OwnPropertyKeys(obj); | 
| 1174     for (var i = 0; i < names.length; i++) { | 1174     for (var i = 0; i < names.length; i++) { | 
| 1175       var name = names[i]; | 1175       var name = names[i]; | 
| 1176       var desc = GetOwnPropertyJS(obj, name); | 1176       var desc = GetOwnPropertyJS(obj, name); | 
| 1177       if (desc.isWritable() || desc.isConfigurable()) { | 1177       if (desc.isWritable() || desc.isConfigurable()) { | 
| 1178         if (IsDataDescriptor(desc)) desc.setWritable(false); | 1178         if (IsDataDescriptor(desc)) desc.setWritable(false); | 
| 1179         desc.setConfigurable(false); | 1179         desc.setConfigurable(false); | 
| 1180         DefineOwnProperty(obj, name, desc, true); | 1180         DefineOwnProperty(obj, name, desc, true); | 
| 1181       } | 1181       } | 
| 1182     } | 1182     } | 
| 1183     %PreventExtensions(obj); | 1183     %PreventExtensions(obj); | 
| (...skipping 19 matching lines...) Expand all  Loading... | 
| 1203 | 1203 | 
| 1204 // ES5 section 15.2.3.11 | 1204 // ES5 section 15.2.3.11 | 
| 1205 function ObjectIsSealed(obj) { | 1205 function ObjectIsSealed(obj) { | 
| 1206   if (!IS_SPEC_OBJECT(obj)) return true; | 1206   if (!IS_SPEC_OBJECT(obj)) return true; | 
| 1207   if (%_IsJSProxy(obj)) { | 1207   if (%_IsJSProxy(obj)) { | 
| 1208     return false; | 1208     return false; | 
| 1209   } | 1209   } | 
| 1210   if (%IsExtensible(obj)) { | 1210   if (%IsExtensible(obj)) { | 
| 1211     return false; | 1211     return false; | 
| 1212   } | 1212   } | 
| 1213   var names = ObjectGetOwnPropertyNames(obj); | 1213   var names = OwnPropertyKeys(obj); | 
| 1214   for (var i = 0; i < names.length; i++) { | 1214   for (var i = 0; i < names.length; i++) { | 
| 1215     var name = names[i]; | 1215     var name = names[i]; | 
| 1216     var desc = GetOwnPropertyJS(obj, name); | 1216     var desc = GetOwnPropertyJS(obj, name); | 
| 1217     if (desc.isConfigurable()) { | 1217     if (desc.isConfigurable()) { | 
| 1218       return false; | 1218       return false; | 
| 1219     } | 1219     } | 
| 1220   } | 1220   } | 
| 1221   return true; | 1221   return true; | 
| 1222 } | 1222 } | 
| 1223 | 1223 | 
| 1224 | 1224 | 
| 1225 // ES5 section 15.2.3.12 | 1225 // ES5 section 15.2.3.12 | 
| 1226 function ObjectIsFrozen(obj) { | 1226 function ObjectIsFrozen(obj) { | 
| 1227   if (!IS_SPEC_OBJECT(obj)) return true; | 1227   if (!IS_SPEC_OBJECT(obj)) return true; | 
| 1228   if (%_IsJSProxy(obj)) { | 1228   if (%_IsJSProxy(obj)) { | 
| 1229     return false; | 1229     return false; | 
| 1230   } | 1230   } | 
| 1231   if (%IsExtensible(obj)) { | 1231   if (%IsExtensible(obj)) { | 
| 1232     return false; | 1232     return false; | 
| 1233   } | 1233   } | 
| 1234   var names = ObjectGetOwnPropertyNames(obj); | 1234   var names = OwnPropertyKeys(obj); | 
| 1235   for (var i = 0; i < names.length; i++) { | 1235   for (var i = 0; i < names.length; i++) { | 
| 1236     var name = names[i]; | 1236     var name = names[i]; | 
| 1237     var desc = GetOwnPropertyJS(obj, name); | 1237     var desc = GetOwnPropertyJS(obj, name); | 
| 1238     if (IsDataDescriptor(desc) && desc.isWritable()) return false; | 1238     if (IsDataDescriptor(desc) && desc.isWritable()) return false; | 
| 1239     if (desc.isConfigurable()) return false; | 1239     if (desc.isConfigurable()) return false; | 
| 1240   } | 1240   } | 
| 1241   return true; | 1241   return true; | 
| 1242 } | 1242 } | 
| 1243 | 1243 | 
| 1244 | 1244 | 
| (...skipping 596 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1841 %InstallToContext([ | 1841 %InstallToContext([ | 
| 1842   "global_eval_fun", GlobalEval, | 1842   "global_eval_fun", GlobalEval, | 
| 1843   "object_value_of", ObjectValueOf, | 1843   "object_value_of", ObjectValueOf, | 
| 1844   "object_to_string", ObjectToString, | 1844   "object_to_string", ObjectToString, | 
| 1845   "object_define_own_property", DefineOwnPropertyFromAPI, | 1845   "object_define_own_property", DefineOwnPropertyFromAPI, | 
| 1846   "object_get_own_property_descriptor", ObjectGetOwnPropertyDescriptor, | 1846   "object_get_own_property_descriptor", ObjectGetOwnPropertyDescriptor, | 
| 1847   "to_complete_property_descriptor", ToCompletePropertyDescriptor, | 1847   "to_complete_property_descriptor", ToCompletePropertyDescriptor, | 
| 1848 ]); | 1848 ]); | 
| 1849 | 1849 | 
| 1850 }) | 1850 }) | 
| OLD | NEW | 
|---|