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 1150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1161 static inline MaybeHandle<JSReceiver> ToObject(Isolate* isolate, | 1161 static inline MaybeHandle<JSReceiver> ToObject(Isolate* isolate, |
1162 Handle<Object> object); | 1162 Handle<Object> object); |
1163 static MaybeHandle<JSReceiver> ToObject(Isolate* isolate, | 1163 static MaybeHandle<JSReceiver> ToObject(Isolate* isolate, |
1164 Handle<Object> object, | 1164 Handle<Object> object, |
1165 Handle<Context> context); | 1165 Handle<Context> context); |
1166 | 1166 |
1167 // Converts this to a Smi if possible. | 1167 // Converts this to a Smi if possible. |
1168 MUST_USE_RESULT static inline MaybeHandle<Smi> ToSmi(Isolate* isolate, | 1168 MUST_USE_RESULT static inline MaybeHandle<Smi> ToSmi(Isolate* isolate, |
1169 Handle<Object> object); | 1169 Handle<Object> object); |
1170 | 1170 |
1171 MUST_USE_RESULT static MaybeHandle<Object> GetProperty(LookupIterator* it); | 1171 MUST_USE_RESULT static MaybeHandle<Object> GetProperty( |
| 1172 LookupIterator* it, LanguageMode language_mode = SLOPPY); |
1172 | 1173 |
1173 // Implementation of [[Put]], ECMA-262 5th edition, section 8.12.5. | 1174 // Implementation of [[Put]], ECMA-262 5th edition, section 8.12.5. |
1174 MUST_USE_RESULT static MaybeHandle<Object> SetProperty( | 1175 MUST_USE_RESULT static MaybeHandle<Object> SetProperty( |
1175 Handle<Object> object, Handle<Name> name, Handle<Object> value, | 1176 Handle<Object> object, Handle<Name> name, Handle<Object> value, |
1176 LanguageMode language_mode, | 1177 LanguageMode language_mode, |
1177 StoreFromKeyed store_mode = MAY_BE_STORE_FROM_KEYED); | 1178 StoreFromKeyed store_mode = MAY_BE_STORE_FROM_KEYED); |
1178 | 1179 |
1179 MUST_USE_RESULT static MaybeHandle<Object> SetProperty( | 1180 MUST_USE_RESULT static MaybeHandle<Object> SetProperty( |
1180 LookupIterator* it, Handle<Object> value, LanguageMode language_mode, | 1181 LookupIterator* it, Handle<Object> value, LanguageMode language_mode, |
1181 StoreFromKeyed store_mode); | 1182 StoreFromKeyed store_mode); |
1182 | 1183 |
1183 MUST_USE_RESULT static MaybeHandle<Object> SetSuperProperty( | 1184 MUST_USE_RESULT static MaybeHandle<Object> SetSuperProperty( |
1184 LookupIterator* it, Handle<Object> value, LanguageMode language_mode, | 1185 LookupIterator* it, Handle<Object> value, LanguageMode language_mode, |
1185 StoreFromKeyed store_mode); | 1186 StoreFromKeyed store_mode); |
1186 | 1187 |
| 1188 MUST_USE_RESULT static MaybeHandle<Object> ReadAbsentProperty( |
| 1189 LookupIterator* it, LanguageMode language_mode); |
| 1190 MUST_USE_RESULT static MaybeHandle<Object> ReadAbsentProperty( |
| 1191 Isolate* isolate, Handle<Object> receiver, Handle<Object> name, |
| 1192 LanguageMode language_mode); |
1187 MUST_USE_RESULT static MaybeHandle<Object> WriteToReadOnlyProperty( | 1193 MUST_USE_RESULT static MaybeHandle<Object> WriteToReadOnlyProperty( |
1188 LookupIterator* it, Handle<Object> value, LanguageMode language_mode); | 1194 LookupIterator* it, Handle<Object> value, LanguageMode language_mode); |
1189 MUST_USE_RESULT static MaybeHandle<Object> WriteToReadOnlyProperty( | 1195 MUST_USE_RESULT static MaybeHandle<Object> WriteToReadOnlyProperty( |
1190 Isolate* isolate, Handle<Object> reciever, Handle<Object> name, | 1196 Isolate* isolate, Handle<Object> receiver, Handle<Object> name, |
1191 Handle<Object> value, LanguageMode language_mode); | 1197 Handle<Object> value, LanguageMode language_mode); |
1192 MUST_USE_RESULT static MaybeHandle<Object> RedefineNonconfigurableProperty( | 1198 MUST_USE_RESULT static MaybeHandle<Object> RedefineNonconfigurableProperty( |
1193 Isolate* isolate, Handle<Object> name, Handle<Object> value, | 1199 Isolate* isolate, Handle<Object> name, Handle<Object> value, |
1194 LanguageMode language_mode); | 1200 LanguageMode language_mode); |
1195 MUST_USE_RESULT static MaybeHandle<Object> SetDataProperty( | 1201 MUST_USE_RESULT static MaybeHandle<Object> SetDataProperty( |
1196 LookupIterator* it, Handle<Object> value); | 1202 LookupIterator* it, Handle<Object> value); |
1197 MUST_USE_RESULT static MaybeHandle<Object> AddDataProperty( | 1203 MUST_USE_RESULT static MaybeHandle<Object> AddDataProperty( |
1198 LookupIterator* it, Handle<Object> value, PropertyAttributes attributes, | 1204 LookupIterator* it, Handle<Object> value, PropertyAttributes attributes, |
1199 LanguageMode language_mode, StoreFromKeyed store_mode); | 1205 LanguageMode language_mode, StoreFromKeyed store_mode); |
1200 MUST_USE_RESULT static inline MaybeHandle<Object> GetPropertyOrElement( | 1206 MUST_USE_RESULT static inline MaybeHandle<Object> GetPropertyOrElement( |
1201 Handle<Object> object, Handle<Name> name); | 1207 Handle<Object> object, Handle<Name> name, |
| 1208 LanguageMode language_mode = SLOPPY); |
1202 MUST_USE_RESULT static inline MaybeHandle<Object> GetProperty( | 1209 MUST_USE_RESULT static inline MaybeHandle<Object> GetProperty( |
1203 Isolate* isolate, | 1210 Isolate* isolate, Handle<Object> object, const char* key, |
1204 Handle<Object> object, | 1211 LanguageMode language_mode = SLOPPY); |
1205 const char* key); | |
1206 MUST_USE_RESULT static inline MaybeHandle<Object> GetProperty( | 1212 MUST_USE_RESULT static inline MaybeHandle<Object> GetProperty( |
1207 Handle<Object> object, Handle<Name> name); | 1213 Handle<Object> object, Handle<Name> name, |
| 1214 LanguageMode language_mode = SLOPPY); |
1208 | 1215 |
1209 MUST_USE_RESULT static MaybeHandle<Object> GetPropertyWithAccessor( | 1216 MUST_USE_RESULT static MaybeHandle<Object> GetPropertyWithAccessor( |
1210 LookupIterator* it); | 1217 LookupIterator* it, LanguageMode language_mode); |
1211 MUST_USE_RESULT static MaybeHandle<Object> SetPropertyWithAccessor( | 1218 MUST_USE_RESULT static MaybeHandle<Object> SetPropertyWithAccessor( |
1212 LookupIterator* it, Handle<Object> value, LanguageMode language_mode); | 1219 LookupIterator* it, Handle<Object> value, LanguageMode language_mode); |
1213 | 1220 |
1214 MUST_USE_RESULT static MaybeHandle<Object> GetPropertyWithDefinedGetter( | 1221 MUST_USE_RESULT static MaybeHandle<Object> GetPropertyWithDefinedGetter( |
1215 Handle<Object> receiver, | 1222 Handle<Object> receiver, |
1216 Handle<JSReceiver> getter); | 1223 Handle<JSReceiver> getter); |
1217 MUST_USE_RESULT static MaybeHandle<Object> SetPropertyWithDefinedSetter( | 1224 MUST_USE_RESULT static MaybeHandle<Object> SetPropertyWithDefinedSetter( |
1218 Handle<Object> receiver, | 1225 Handle<Object> receiver, |
1219 Handle<JSReceiver> setter, | 1226 Handle<JSReceiver> setter, |
1220 Handle<Object> value); | 1227 Handle<Object> value); |
1221 | 1228 |
1222 MUST_USE_RESULT static inline MaybeHandle<Object> GetElement( | 1229 MUST_USE_RESULT static inline MaybeHandle<Object> GetElement( |
1223 Isolate* isolate, | 1230 Isolate* isolate, Handle<Object> object, uint32_t index, |
1224 Handle<Object> object, | 1231 LanguageMode language_mode = SLOPPY); |
1225 uint32_t index); | |
1226 | 1232 |
1227 static inline Handle<Object> GetPrototypeSkipHiddenPrototypes( | 1233 static inline Handle<Object> GetPrototypeSkipHiddenPrototypes( |
1228 Isolate* isolate, Handle<Object> receiver); | 1234 Isolate* isolate, Handle<Object> receiver); |
1229 | 1235 |
1230 // Returns the permanent hash code associated with this object. May return | 1236 // Returns the permanent hash code associated with this object. May return |
1231 // undefined if not yet created. | 1237 // undefined if not yet created. |
1232 Object* GetHash(); | 1238 Object* GetHash(); |
1233 | 1239 |
1234 // Returns undefined for JSObjects, but returns the hash code for simple | 1240 // Returns undefined for JSObjects, but returns the hash code for simple |
1235 // objects. This avoids a double lookup in the cases where we know we will | 1241 // objects. This avoids a double lookup in the cases where we know we will |
(...skipping 1052 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2288 friend class JSReceiver; | 2294 friend class JSReceiver; |
2289 friend class Object; | 2295 friend class Object; |
2290 | 2296 |
2291 static void MigrateFastToFast(Handle<JSObject> object, Handle<Map> new_map); | 2297 static void MigrateFastToFast(Handle<JSObject> object, Handle<Map> new_map); |
2292 static void MigrateFastToSlow(Handle<JSObject> object, | 2298 static void MigrateFastToSlow(Handle<JSObject> object, |
2293 Handle<Map> new_map, | 2299 Handle<Map> new_map, |
2294 int expected_additional_properties); | 2300 int expected_additional_properties); |
2295 | 2301 |
2296 // Used from Object::GetProperty(). | 2302 // Used from Object::GetProperty(). |
2297 MUST_USE_RESULT static MaybeHandle<Object> GetPropertyWithFailedAccessCheck( | 2303 MUST_USE_RESULT static MaybeHandle<Object> GetPropertyWithFailedAccessCheck( |
2298 LookupIterator* it); | 2304 LookupIterator* it, LanguageMode language_mode); |
2299 | 2305 |
2300 MUST_USE_RESULT static MaybeHandle<Object> SetPropertyWithFailedAccessCheck( | 2306 MUST_USE_RESULT static MaybeHandle<Object> SetPropertyWithFailedAccessCheck( |
2301 LookupIterator* it, Handle<Object> value); | 2307 LookupIterator* it, Handle<Object> value); |
2302 | 2308 |
2303 // Add a property to a slow-case object. | 2309 // Add a property to a slow-case object. |
2304 static void AddSlowProperty(Handle<JSObject> object, | 2310 static void AddSlowProperty(Handle<JSObject> object, |
2305 Handle<Name> name, | 2311 Handle<Name> name, |
2306 Handle<Object> value, | 2312 Handle<Object> value, |
2307 PropertyAttributes attributes); | 2313 PropertyAttributes attributes); |
2308 | 2314 |
(...skipping 8508 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10817 } else { | 10823 } else { |
10818 value &= ~(1 << bit_position); | 10824 value &= ~(1 << bit_position); |
10819 } | 10825 } |
10820 return value; | 10826 return value; |
10821 } | 10827 } |
10822 }; | 10828 }; |
10823 | 10829 |
10824 } } // namespace v8::internal | 10830 } } // namespace v8::internal |
10825 | 10831 |
10826 #endif // V8_OBJECTS_H_ | 10832 #endif // V8_OBJECTS_H_ |
OLD | NEW |