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 #ifndef V8_OBJECTS_H_ | 5 #ifndef V8_OBJECTS_H_ |
6 #define V8_OBJECTS_H_ | 6 #define V8_OBJECTS_H_ |
7 | 7 |
8 #include <iosfwd> | 8 #include <iosfwd> |
9 | 9 |
10 #include "src/allocation.h" | 10 #include "src/allocation.h" |
(...skipping 1137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1148 static inline MaybeHandle<JSReceiver> ToObject(Isolate* isolate, | 1148 static inline MaybeHandle<JSReceiver> ToObject(Isolate* isolate, |
1149 Handle<Object> object); | 1149 Handle<Object> object); |
1150 static MaybeHandle<JSReceiver> ToObject(Isolate* isolate, | 1150 static MaybeHandle<JSReceiver> ToObject(Isolate* isolate, |
1151 Handle<Object> object, | 1151 Handle<Object> object, |
1152 Handle<Context> context); | 1152 Handle<Context> context); |
1153 | 1153 |
1154 // Converts this to a Smi if possible. | 1154 // Converts this to a Smi if possible. |
1155 MUST_USE_RESULT static inline MaybeHandle<Smi> ToSmi(Isolate* isolate, | 1155 MUST_USE_RESULT static inline MaybeHandle<Smi> ToSmi(Isolate* isolate, |
1156 Handle<Object> object); | 1156 Handle<Object> object); |
1157 | 1157 |
1158 MUST_USE_RESULT static MaybeHandle<Object> GetProperty(LookupIterator* it); | 1158 MUST_USE_RESULT static MaybeHandle<Object> GetProperty( |
| 1159 LookupIterator* it, LanguageMode language_mode = SLOPPY); |
1159 | 1160 |
1160 // Implementation of [[Put]], ECMA-262 5th edition, section 8.12.5. | 1161 // Implementation of [[Put]], ECMA-262 5th edition, section 8.12.5. |
1161 MUST_USE_RESULT static MaybeHandle<Object> SetProperty( | 1162 MUST_USE_RESULT static MaybeHandle<Object> SetProperty( |
1162 Handle<Object> object, Handle<Name> name, Handle<Object> value, | 1163 Handle<Object> object, Handle<Name> name, Handle<Object> value, |
1163 LanguageMode language_mode, | 1164 LanguageMode language_mode, |
1164 StoreFromKeyed store_mode = MAY_BE_STORE_FROM_KEYED); | 1165 StoreFromKeyed store_mode = MAY_BE_STORE_FROM_KEYED); |
1165 | 1166 |
1166 MUST_USE_RESULT static MaybeHandle<Object> SetProperty( | 1167 MUST_USE_RESULT static MaybeHandle<Object> SetProperty( |
1167 LookupIterator* it, Handle<Object> value, LanguageMode language_mode, | 1168 LookupIterator* it, Handle<Object> value, LanguageMode language_mode, |
1168 StoreFromKeyed store_mode); | 1169 StoreFromKeyed store_mode); |
1169 | 1170 |
1170 MUST_USE_RESULT static MaybeHandle<Object> SetSuperProperty( | 1171 MUST_USE_RESULT static MaybeHandle<Object> SetSuperProperty( |
1171 LookupIterator* it, Handle<Object> value, LanguageMode language_mode, | 1172 LookupIterator* it, Handle<Object> value, LanguageMode language_mode, |
1172 StoreFromKeyed store_mode); | 1173 StoreFromKeyed store_mode); |
1173 | 1174 |
| 1175 MUST_USE_RESULT static MaybeHandle<Object> ReadAbsentProperty( |
| 1176 LookupIterator* it, LanguageMode language_mode); |
| 1177 MUST_USE_RESULT static MaybeHandle<Object> ReadAbsentProperty( |
| 1178 Isolate* isolate, Handle<Object> receiver, Handle<Object> name, |
| 1179 LanguageMode language_mode); |
1174 MUST_USE_RESULT static MaybeHandle<Object> WriteToReadOnlyProperty( | 1180 MUST_USE_RESULT static MaybeHandle<Object> WriteToReadOnlyProperty( |
1175 LookupIterator* it, Handle<Object> value, LanguageMode language_mode); | 1181 LookupIterator* it, Handle<Object> value, LanguageMode language_mode); |
1176 MUST_USE_RESULT static MaybeHandle<Object> WriteToReadOnlyProperty( | 1182 MUST_USE_RESULT static MaybeHandle<Object> WriteToReadOnlyProperty( |
1177 Isolate* isolate, Handle<Object> reciever, Handle<Object> name, | 1183 Isolate* isolate, Handle<Object> receiver, Handle<Object> name, |
1178 Handle<Object> value, LanguageMode language_mode); | 1184 Handle<Object> value, LanguageMode language_mode); |
1179 MUST_USE_RESULT static MaybeHandle<Object> RedefineNonconfigurableProperty( | 1185 MUST_USE_RESULT static MaybeHandle<Object> RedefineNonconfigurableProperty( |
1180 Isolate* isolate, Handle<Object> name, Handle<Object> value, | 1186 Isolate* isolate, Handle<Object> name, Handle<Object> value, |
1181 LanguageMode language_mode); | 1187 LanguageMode language_mode); |
1182 MUST_USE_RESULT static MaybeHandle<Object> SetDataProperty( | 1188 MUST_USE_RESULT static MaybeHandle<Object> SetDataProperty( |
1183 LookupIterator* it, Handle<Object> value); | 1189 LookupIterator* it, Handle<Object> value); |
1184 MUST_USE_RESULT static MaybeHandle<Object> AddDataProperty( | 1190 MUST_USE_RESULT static MaybeHandle<Object> AddDataProperty( |
1185 LookupIterator* it, Handle<Object> value, PropertyAttributes attributes, | 1191 LookupIterator* it, Handle<Object> value, PropertyAttributes attributes, |
1186 LanguageMode language_mode, StoreFromKeyed store_mode); | 1192 LanguageMode language_mode, StoreFromKeyed store_mode); |
1187 MUST_USE_RESULT static inline MaybeHandle<Object> GetPropertyOrElement( | 1193 MUST_USE_RESULT static inline MaybeHandle<Object> GetPropertyOrElement( |
1188 Handle<Object> object, Handle<Name> name); | 1194 Handle<Object> object, Handle<Name> name, |
| 1195 LanguageMode language_mode = SLOPPY); |
1189 MUST_USE_RESULT static inline MaybeHandle<Object> GetProperty( | 1196 MUST_USE_RESULT static inline MaybeHandle<Object> GetProperty( |
1190 Isolate* isolate, | 1197 Isolate* isolate, Handle<Object> object, const char* key, |
1191 Handle<Object> object, | 1198 LanguageMode language_mode = SLOPPY); |
1192 const char* key); | |
1193 MUST_USE_RESULT static inline MaybeHandle<Object> GetProperty( | 1199 MUST_USE_RESULT static inline MaybeHandle<Object> GetProperty( |
1194 Handle<Object> object, Handle<Name> name); | 1200 Handle<Object> object, Handle<Name> name, |
| 1201 LanguageMode language_mode = SLOPPY); |
1195 | 1202 |
1196 MUST_USE_RESULT static MaybeHandle<Object> GetPropertyWithAccessor( | 1203 MUST_USE_RESULT static MaybeHandle<Object> GetPropertyWithAccessor( |
1197 LookupIterator* it); | 1204 LookupIterator* it, LanguageMode language_mode); |
1198 MUST_USE_RESULT static MaybeHandle<Object> SetPropertyWithAccessor( | 1205 MUST_USE_RESULT static MaybeHandle<Object> SetPropertyWithAccessor( |
1199 LookupIterator* it, Handle<Object> value, LanguageMode language_mode); | 1206 LookupIterator* it, Handle<Object> value, LanguageMode language_mode); |
1200 | 1207 |
1201 MUST_USE_RESULT static MaybeHandle<Object> GetPropertyWithDefinedGetter( | 1208 MUST_USE_RESULT static MaybeHandle<Object> GetPropertyWithDefinedGetter( |
1202 Handle<Object> receiver, | 1209 Handle<Object> receiver, |
1203 Handle<JSReceiver> getter); | 1210 Handle<JSReceiver> getter); |
1204 MUST_USE_RESULT static MaybeHandle<Object> SetPropertyWithDefinedSetter( | 1211 MUST_USE_RESULT static MaybeHandle<Object> SetPropertyWithDefinedSetter( |
1205 Handle<Object> receiver, | 1212 Handle<Object> receiver, |
1206 Handle<JSReceiver> setter, | 1213 Handle<JSReceiver> setter, |
1207 Handle<Object> value); | 1214 Handle<Object> value); |
1208 | 1215 |
1209 MUST_USE_RESULT static inline MaybeHandle<Object> GetElement( | 1216 MUST_USE_RESULT static inline MaybeHandle<Object> GetElement( |
1210 Isolate* isolate, | 1217 Isolate* isolate, Handle<Object> object, uint32_t index, |
1211 Handle<Object> object, | 1218 LanguageMode language_mode = SLOPPY); |
1212 uint32_t index); | |
1213 | 1219 |
1214 static inline Handle<Object> GetPrototypeSkipHiddenPrototypes( | 1220 static inline Handle<Object> GetPrototypeSkipHiddenPrototypes( |
1215 Isolate* isolate, Handle<Object> receiver); | 1221 Isolate* isolate, Handle<Object> receiver); |
1216 | 1222 |
1217 // Returns the permanent hash code associated with this object. May return | 1223 // Returns the permanent hash code associated with this object. May return |
1218 // undefined if not yet created. | 1224 // undefined if not yet created. |
1219 Object* GetHash(); | 1225 Object* GetHash(); |
1220 | 1226 |
1221 // Returns undefined for JSObjects, but returns the hash code for simple | 1227 // Returns undefined for JSObjects, but returns the hash code for simple |
1222 // objects. This avoids a double lookup in the cases where we know we will | 1228 // objects. This avoids a double lookup in the cases where we know we will |
(...skipping 1091 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2314 friend class JSReceiver; | 2320 friend class JSReceiver; |
2315 friend class Object; | 2321 friend class Object; |
2316 | 2322 |
2317 static void MigrateFastToFast(Handle<JSObject> object, Handle<Map> new_map); | 2323 static void MigrateFastToFast(Handle<JSObject> object, Handle<Map> new_map); |
2318 static void MigrateFastToSlow(Handle<JSObject> object, | 2324 static void MigrateFastToSlow(Handle<JSObject> object, |
2319 Handle<Map> new_map, | 2325 Handle<Map> new_map, |
2320 int expected_additional_properties); | 2326 int expected_additional_properties); |
2321 | 2327 |
2322 // Used from Object::GetProperty(). | 2328 // Used from Object::GetProperty(). |
2323 MUST_USE_RESULT static MaybeHandle<Object> GetPropertyWithFailedAccessCheck( | 2329 MUST_USE_RESULT static MaybeHandle<Object> GetPropertyWithFailedAccessCheck( |
2324 LookupIterator* it); | 2330 LookupIterator* it, LanguageMode language_mode); |
2325 | 2331 |
2326 MUST_USE_RESULT static MaybeHandle<Object> SetPropertyWithFailedAccessCheck( | 2332 MUST_USE_RESULT static MaybeHandle<Object> SetPropertyWithFailedAccessCheck( |
2327 LookupIterator* it, Handle<Object> value); | 2333 LookupIterator* it, Handle<Object> value); |
2328 | 2334 |
2329 // Add a property to a slow-case object. | 2335 // Add a property to a slow-case object. |
2330 static void AddSlowProperty(Handle<JSObject> object, | 2336 static void AddSlowProperty(Handle<JSObject> object, |
2331 Handle<Name> name, | 2337 Handle<Name> name, |
2332 Handle<Object> value, | 2338 Handle<Object> value, |
2333 PropertyAttributes attributes); | 2339 PropertyAttributes attributes); |
2334 | 2340 |
(...skipping 8537 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10872 } else { | 10878 } else { |
10873 value &= ~(1 << bit_position); | 10879 value &= ~(1 << bit_position); |
10874 } | 10880 } |
10875 return value; | 10881 return value; |
10876 } | 10882 } |
10877 }; | 10883 }; |
10878 | 10884 |
10879 } } // namespace v8::internal | 10885 } } // namespace v8::internal |
10880 | 10886 |
10881 #endif // V8_OBJECTS_H_ | 10887 #endif // V8_OBJECTS_H_ |
OLD | NEW |