| OLD | NEW |
| 1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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 #include <memory> | 9 #include <memory> |
| 10 | 10 |
| (...skipping 1281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1292 | 1292 |
| 1293 // ES6 section 7.1.14 ToPropertyKey | 1293 // ES6 section 7.1.14 ToPropertyKey |
| 1294 MUST_USE_RESULT static inline MaybeHandle<Name> ToName(Isolate* isolate, | 1294 MUST_USE_RESULT static inline MaybeHandle<Name> ToName(Isolate* isolate, |
| 1295 Handle<Object> input); | 1295 Handle<Object> input); |
| 1296 | 1296 |
| 1297 // ES6 section 7.1.1 ToPrimitive | 1297 // ES6 section 7.1.1 ToPrimitive |
| 1298 MUST_USE_RESULT static inline MaybeHandle<Object> ToPrimitive( | 1298 MUST_USE_RESULT static inline MaybeHandle<Object> ToPrimitive( |
| 1299 Handle<Object> input, ToPrimitiveHint hint = ToPrimitiveHint::kDefault); | 1299 Handle<Object> input, ToPrimitiveHint hint = ToPrimitiveHint::kDefault); |
| 1300 | 1300 |
| 1301 // ES6 section 7.1.3 ToNumber | 1301 // ES6 section 7.1.3 ToNumber |
| 1302 MUST_USE_RESULT static MaybeHandle<Object> ToNumber(Handle<Object> input); | 1302 MUST_USE_RESULT static inline MaybeHandle<Object> ToNumber( |
| 1303 Handle<Object> input); |
| 1303 | 1304 |
| 1304 // ES6 section 7.1.4 ToInteger | 1305 // ES6 section 7.1.4 ToInteger |
| 1305 MUST_USE_RESULT static MaybeHandle<Object> ToInteger(Isolate* isolate, | 1306 MUST_USE_RESULT static inline MaybeHandle<Object> ToInteger( |
| 1306 Handle<Object> input); | 1307 Isolate* isolate, Handle<Object> input); |
| 1307 | 1308 |
| 1308 // ES6 section 7.1.5 ToInt32 | 1309 // ES6 section 7.1.5 ToInt32 |
| 1309 MUST_USE_RESULT static MaybeHandle<Object> ToInt32(Isolate* isolate, | 1310 MUST_USE_RESULT static inline MaybeHandle<Object> ToInt32( |
| 1310 Handle<Object> input); | 1311 Isolate* isolate, Handle<Object> input); |
| 1311 | 1312 |
| 1312 // ES6 section 7.1.6 ToUint32 | 1313 // ES6 section 7.1.6 ToUint32 |
| 1313 MUST_USE_RESULT static MaybeHandle<Object> ToUint32(Isolate* isolate, | 1314 MUST_USE_RESULT inline static MaybeHandle<Object> ToUint32( |
| 1314 Handle<Object> input); | 1315 Isolate* isolate, Handle<Object> input); |
| 1315 | 1316 |
| 1316 // ES6 section 7.1.12 ToString | 1317 // ES6 section 7.1.12 ToString |
| 1317 MUST_USE_RESULT static MaybeHandle<String> ToString(Isolate* isolate, | 1318 MUST_USE_RESULT static inline MaybeHandle<String> ToString( |
| 1318 Handle<Object> input); | 1319 Isolate* isolate, Handle<Object> input); |
| 1319 | 1320 |
| 1320 static Handle<String> NoSideEffectsToString(Isolate* isolate, | 1321 static Handle<String> NoSideEffectsToString(Isolate* isolate, |
| 1321 Handle<Object> input); | 1322 Handle<Object> input); |
| 1322 | 1323 |
| 1323 // ES6 section 7.1.14 ToPropertyKey | 1324 // ES6 section 7.1.14 ToPropertyKey |
| 1324 MUST_USE_RESULT static MaybeHandle<Object> ToPropertyKey( | 1325 MUST_USE_RESULT static MaybeHandle<Object> ToPropertyKey( |
| 1325 Isolate* isolate, Handle<Object> value); | 1326 Isolate* isolate, Handle<Object> value); |
| 1326 | 1327 |
| 1327 // ES6 section 7.1.15 ToLength | 1328 // ES6 section 7.1.15 ToLength |
| 1328 MUST_USE_RESULT static MaybeHandle<Object> ToLength(Isolate* isolate, | 1329 MUST_USE_RESULT static MaybeHandle<Object> ToLength(Isolate* isolate, |
| (...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1557 Map* GetPrototypeChainRootMap(Isolate* isolate); | 1558 Map* GetPrototypeChainRootMap(Isolate* isolate); |
| 1558 | 1559 |
| 1559 // Helper for SetProperty and SetSuperProperty. | 1560 // Helper for SetProperty and SetSuperProperty. |
| 1560 // Return value is only meaningful if [found] is set to true on return. | 1561 // Return value is only meaningful if [found] is set to true on return. |
| 1561 MUST_USE_RESULT static Maybe<bool> SetPropertyInternal( | 1562 MUST_USE_RESULT static Maybe<bool> SetPropertyInternal( |
| 1562 LookupIterator* it, Handle<Object> value, LanguageMode language_mode, | 1563 LookupIterator* it, Handle<Object> value, LanguageMode language_mode, |
| 1563 StoreFromKeyed store_mode, bool* found); | 1564 StoreFromKeyed store_mode, bool* found); |
| 1564 | 1565 |
| 1565 MUST_USE_RESULT static MaybeHandle<Name> ConvertToName(Isolate* isolate, | 1566 MUST_USE_RESULT static MaybeHandle<Name> ConvertToName(Isolate* isolate, |
| 1566 Handle<Object> input); | 1567 Handle<Object> input); |
| 1567 | 1568 MUST_USE_RESULT static MaybeHandle<String> ConvertToString( |
| 1569 Isolate* isolate, Handle<Object> input); |
| 1570 MUST_USE_RESULT static MaybeHandle<Object> ConvertToNumber( |
| 1571 Isolate* isolate, Handle<Object> input); |
| 1572 MUST_USE_RESULT static MaybeHandle<Object> ConvertToInteger( |
| 1573 Isolate* isolate, Handle<Object> input); |
| 1574 MUST_USE_RESULT static MaybeHandle<Object> ConvertToInt32( |
| 1575 Isolate* isolate, Handle<Object> input); |
| 1576 MUST_USE_RESULT static MaybeHandle<Object> ConvertToUint32( |
| 1577 Isolate* isolate, Handle<Object> input); |
| 1568 DISALLOW_IMPLICIT_CONSTRUCTORS(Object); | 1578 DISALLOW_IMPLICIT_CONSTRUCTORS(Object); |
| 1569 }; | 1579 }; |
| 1570 | 1580 |
| 1571 | 1581 |
| 1572 // In objects.h to be usable without objects-inl.h inclusion. | 1582 // In objects.h to be usable without objects-inl.h inclusion. |
| 1573 bool Object::IsSmi() const { return HAS_SMI_TAG(this); } | 1583 bool Object::IsSmi() const { return HAS_SMI_TAG(this); } |
| 1574 bool Object::IsHeapObject() const { return Internals::HasHeapObjectTag(this); } | 1584 bool Object::IsHeapObject() const { return Internals::HasHeapObjectTag(this); } |
| 1575 | 1585 |
| 1576 | 1586 |
| 1577 struct Brief { | 1587 struct Brief { |
| 1578 explicit Brief(const Object* const v) : value(v) {} | 1588 explicit Brief(const Object* const v) : value(v) {} |
| 1579 const Object* value; | 1589 const Object* value; |
| 1580 }; | 1590 }; |
| 1581 | 1591 |
| 1582 V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os, const Brief& v); | 1592 V8_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os, const Brief& v); |
| 1583 | 1593 |
| 1584 // Smi represents integer Numbers that can be stored in 31 bits. | 1594 // Smi represents integer Numbers that can be stored in 31 bits. |
| 1585 // Smis are immediate which means they are NOT allocated in the heap. | 1595 // Smis are immediate which means they are NOT allocated in the heap. |
| 1586 // The this pointer has the following format: [31 bit signed int] 0 | 1596 // The this pointer has the following format: [31 bit signed int] 0 |
| 1587 // For long smis it has the following format: | 1597 // For long smis it has the following format: |
| 1588 // [32 bit signed int] [31 bits zero padding] 0 | 1598 // [32 bit signed int] [31 bits zero padding] 0 |
| 1589 // Smi stands for small integer. | 1599 // Smi stands for small integer. |
| 1590 class Smi: public Object { | 1600 class Smi: public Object { |
| 1591 public: | 1601 public: |
| 1592 // Returns the integer value. | 1602 // Returns the integer value. |
| 1593 inline int value() const { return Internals::SmiValue(this); } | 1603 inline int value() const { return Internals::SmiValue(this); } |
| 1604 inline Smi* ToUint32Smi() { |
| 1605 if (value() <= 0) return Smi::kZero; |
| 1606 return Smi::FromInt(static_cast<uint32_t>(value())); |
| 1607 } |
| 1594 | 1608 |
| 1595 // Convert a value to a Smi object. | 1609 // Convert a value to a Smi object. |
| 1596 static inline Smi* FromInt(int value) { | 1610 static inline Smi* FromInt(int value) { |
| 1597 DCHECK(Smi::IsValid(value)); | 1611 DCHECK(Smi::IsValid(value)); |
| 1598 return reinterpret_cast<Smi*>(Internals::IntToSmi(value)); | 1612 return reinterpret_cast<Smi*>(Internals::IntToSmi(value)); |
| 1599 } | 1613 } |
| 1600 | 1614 |
| 1601 static inline Smi* FromIntptr(intptr_t value) { | 1615 static inline Smi* FromIntptr(intptr_t value) { |
| 1602 DCHECK(Smi::IsValid(value)); | 1616 DCHECK(Smi::IsValid(value)); |
| 1603 int smi_shift_bits = kSmiTagSize + kSmiShiftSize; | 1617 int smi_shift_bits = kSmiTagSize + kSmiShiftSize; |
| (...skipping 10404 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 12008 } | 12022 } |
| 12009 return value; | 12023 return value; |
| 12010 } | 12024 } |
| 12011 }; | 12025 }; |
| 12012 | 12026 |
| 12013 | 12027 |
| 12014 } // NOLINT, false-positive due to second-order macros. | 12028 } // NOLINT, false-positive due to second-order macros. |
| 12015 } // NOLINT, false-positive due to second-order macros. | 12029 } // NOLINT, false-positive due to second-order macros. |
| 12016 | 12030 |
| 12017 #endif // V8_OBJECTS_H_ | 12031 #endif // V8_OBJECTS_H_ |
| OLD | NEW |