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 "src/allocation.h" | 8 #include "src/allocation.h" |
9 #include "src/assert-scope.h" | 9 #include "src/assert-scope.h" |
10 #include "src/base/bits.h" | 10 #include "src/base/bits.h" |
(...skipping 1317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1328 HEAP_OBJECT_TYPE_LIST(IS_TYPE_FUNCTION_DECL) | 1328 HEAP_OBJECT_TYPE_LIST(IS_TYPE_FUNCTION_DECL) |
1329 #undef IS_TYPE_FUNCTION_DECL | 1329 #undef IS_TYPE_FUNCTION_DECL |
1330 | 1330 |
1331 // A non-keyed store is of the form a.x = foo or a["x"] = foo whereas | 1331 // A non-keyed store is of the form a.x = foo or a["x"] = foo whereas |
1332 // a keyed store is of the form a[expression] = foo. | 1332 // a keyed store is of the form a[expression] = foo. |
1333 enum StoreFromKeyed { | 1333 enum StoreFromKeyed { |
1334 MAY_BE_STORE_FROM_KEYED, | 1334 MAY_BE_STORE_FROM_KEYED, |
1335 CERTAINLY_NOT_STORE_FROM_KEYED | 1335 CERTAINLY_NOT_STORE_FROM_KEYED |
1336 }; | 1336 }; |
1337 | 1337 |
| 1338 enum StorePropertyMode { NORMAL_PROPERTY, SUPER_PROPERTY }; |
| 1339 |
1338 INLINE(bool IsFixedArrayBase() const); | 1340 INLINE(bool IsFixedArrayBase() const); |
1339 INLINE(bool IsExternal() const); | 1341 INLINE(bool IsExternal() const); |
1340 INLINE(bool IsAccessorInfo() const); | 1342 INLINE(bool IsAccessorInfo() const); |
1341 | 1343 |
1342 INLINE(bool IsStruct() const); | 1344 INLINE(bool IsStruct() const); |
1343 #define DECLARE_STRUCT_PREDICATE(NAME, Name, name) \ | 1345 #define DECLARE_STRUCT_PREDICATE(NAME, Name, name) \ |
1344 INLINE(bool Is##Name() const); | 1346 INLINE(bool Is##Name() const); |
1345 STRUCT_LIST(DECLARE_STRUCT_PREDICATE) | 1347 STRUCT_LIST(DECLARE_STRUCT_PREDICATE) |
1346 #undef DECLARE_STRUCT_PREDICATE | 1348 #undef DECLARE_STRUCT_PREDICATE |
1347 | 1349 |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1437 MUST_USE_RESULT static MaybeHandle<Object> GetProperty(LookupIterator* it); | 1439 MUST_USE_RESULT static MaybeHandle<Object> GetProperty(LookupIterator* it); |
1438 | 1440 |
1439 // Implementation of [[Put]], ECMA-262 5th edition, section 8.12.5. | 1441 // Implementation of [[Put]], ECMA-262 5th edition, section 8.12.5. |
1440 MUST_USE_RESULT static MaybeHandle<Object> SetProperty( | 1442 MUST_USE_RESULT static MaybeHandle<Object> SetProperty( |
1441 Handle<Object> object, Handle<Name> key, Handle<Object> value, | 1443 Handle<Object> object, Handle<Name> key, Handle<Object> value, |
1442 StrictMode strict_mode, | 1444 StrictMode strict_mode, |
1443 StoreFromKeyed store_mode = MAY_BE_STORE_FROM_KEYED); | 1445 StoreFromKeyed store_mode = MAY_BE_STORE_FROM_KEYED); |
1444 | 1446 |
1445 MUST_USE_RESULT static MaybeHandle<Object> SetProperty( | 1447 MUST_USE_RESULT static MaybeHandle<Object> SetProperty( |
1446 LookupIterator* it, Handle<Object> value, StrictMode strict_mode, | 1448 LookupIterator* it, Handle<Object> value, StrictMode strict_mode, |
1447 StoreFromKeyed store_mode); | 1449 StoreFromKeyed store_mode, |
| 1450 StorePropertyMode data_store_mode = NORMAL_PROPERTY); |
1448 MUST_USE_RESULT static MaybeHandle<Object> WriteToReadOnlyProperty( | 1451 MUST_USE_RESULT static MaybeHandle<Object> WriteToReadOnlyProperty( |
1449 LookupIterator* it, Handle<Object> value, StrictMode strict_mode); | 1452 LookupIterator* it, Handle<Object> value, StrictMode strict_mode); |
1450 static Handle<Object> SetDataProperty(LookupIterator* it, | 1453 static Handle<Object> SetDataProperty(LookupIterator* it, |
1451 Handle<Object> value); | 1454 Handle<Object> value); |
1452 MUST_USE_RESULT static MaybeHandle<Object> AddDataProperty( | 1455 MUST_USE_RESULT static MaybeHandle<Object> AddDataProperty( |
1453 LookupIterator* it, Handle<Object> value, PropertyAttributes attributes, | 1456 LookupIterator* it, Handle<Object> value, PropertyAttributes attributes, |
1454 StrictMode strict_mode, StoreFromKeyed store_mode); | 1457 StrictMode strict_mode, StoreFromKeyed store_mode); |
1455 MUST_USE_RESULT static inline MaybeHandle<Object> GetPropertyOrElement( | 1458 MUST_USE_RESULT static inline MaybeHandle<Object> GetPropertyOrElement( |
1456 Handle<Object> object, | 1459 Handle<Object> object, |
1457 Handle<Name> key); | 1460 Handle<Name> key); |
(...skipping 9673 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11131 } else { | 11134 } else { |
11132 value &= ~(1 << bit_position); | 11135 value &= ~(1 << bit_position); |
11133 } | 11136 } |
11134 return value; | 11137 return value; |
11135 } | 11138 } |
11136 }; | 11139 }; |
11137 | 11140 |
11138 } } // namespace v8::internal | 11141 } } // namespace v8::internal |
11139 | 11142 |
11140 #endif // V8_OBJECTS_H_ | 11143 #endif // V8_OBJECTS_H_ |
OLD | NEW |