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 8550 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8561 // Returns a hash value used for the property table | 8561 // Returns a hash value used for the property table |
8562 inline uint32_t Hash(); | 8562 inline uint32_t Hash(); |
8563 | 8563 |
8564 // Equality operations. | 8564 // Equality operations. |
8565 inline bool Equals(Name* other); | 8565 inline bool Equals(Name* other); |
8566 inline static bool Equals(Handle<Name> one, Handle<Name> two); | 8566 inline static bool Equals(Handle<Name> one, Handle<Name> two); |
8567 | 8567 |
8568 // Conversion. | 8568 // Conversion. |
8569 inline bool AsArrayIndex(uint32_t* index); | 8569 inline bool AsArrayIndex(uint32_t* index); |
8570 | 8570 |
8571 // Whether name can only name own properties. | 8571 // If the name is private, it can only name own properties. |
8572 inline bool IsOwn(); | 8572 inline bool IsPrivate(); |
8573 | 8573 |
8574 DECLARE_CAST(Name) | 8574 DECLARE_CAST(Name) |
8575 | 8575 |
8576 DECLARE_PRINTER(Name) | 8576 DECLARE_PRINTER(Name) |
8577 #if TRACE_MAPS | 8577 #if TRACE_MAPS |
8578 void NameShortPrint(); | 8578 void NameShortPrint(); |
8579 int NameShortPrint(Vector<char> str); | 8579 int NameShortPrint(Vector<char> str); |
8580 #endif | 8580 #endif |
8581 | 8581 |
8582 // Layout description. | 8582 // Layout description. |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8640 static inline bool IsHashFieldComputed(uint32_t field); | 8640 static inline bool IsHashFieldComputed(uint32_t field); |
8641 | 8641 |
8642 private: | 8642 private: |
8643 DISALLOW_IMPLICIT_CONSTRUCTORS(Name); | 8643 DISALLOW_IMPLICIT_CONSTRUCTORS(Name); |
8644 }; | 8644 }; |
8645 | 8645 |
8646 | 8646 |
8647 // ES6 symbols. | 8647 // ES6 symbols. |
8648 class Symbol: public Name { | 8648 class Symbol: public Name { |
8649 public: | 8649 public: |
8650 // [name]: the print name of a symbol, or undefined if none. | 8650 // [name]: The print name of a symbol, or undefined if none. |
8651 DECL_ACCESSORS(name, Object) | 8651 DECL_ACCESSORS(name, Object) |
8652 | 8652 |
8653 DECL_ACCESSORS(flags, Smi) | 8653 DECL_ACCESSORS(flags, Smi) |
8654 | 8654 |
8655 // [is_private]: whether this is a private symbol. | 8655 // [is_private]: Whether this is a private symbol. Private symbols can only |
| 8656 // be used to designate own properties of objects. |
8656 DECL_BOOLEAN_ACCESSORS(is_private) | 8657 DECL_BOOLEAN_ACCESSORS(is_private) |
8657 | 8658 |
8658 // [is_own]: whether this is an own symbol, that is, only used to designate | |
8659 // own properties of objects. | |
8660 DECL_BOOLEAN_ACCESSORS(is_own) | |
8661 | |
8662 DECLARE_CAST(Symbol) | 8659 DECLARE_CAST(Symbol) |
8663 | 8660 |
8664 // Dispatched behavior. | 8661 // Dispatched behavior. |
8665 DECLARE_PRINTER(Symbol) | 8662 DECLARE_PRINTER(Symbol) |
8666 DECLARE_VERIFIER(Symbol) | 8663 DECLARE_VERIFIER(Symbol) |
8667 | 8664 |
8668 // Layout description. | 8665 // Layout description. |
8669 static const int kNameOffset = Name::kSize; | 8666 static const int kNameOffset = Name::kSize; |
8670 static const int kFlagsOffset = kNameOffset + kPointerSize; | 8667 static const int kFlagsOffset = kNameOffset + kPointerSize; |
8671 static const int kSize = kFlagsOffset + kPointerSize; | 8668 static const int kSize = kFlagsOffset + kPointerSize; |
8672 | 8669 |
8673 typedef FixedBodyDescriptor<kNameOffset, kFlagsOffset, kSize> BodyDescriptor; | 8670 typedef FixedBodyDescriptor<kNameOffset, kFlagsOffset, kSize> BodyDescriptor; |
8674 | 8671 |
8675 void SymbolShortPrint(std::ostream& os); | 8672 void SymbolShortPrint(std::ostream& os); |
8676 | 8673 |
8677 private: | 8674 private: |
8678 static const int kPrivateBit = 0; | 8675 static const int kPrivateBit = 0; |
8679 static const int kOwnBit = 1; | |
8680 | 8676 |
8681 const char* PrivateSymbolToName() const; | 8677 const char* PrivateSymbolToName() const; |
8682 | 8678 |
8683 #if TRACE_MAPS | 8679 #if TRACE_MAPS |
8684 friend class Name; // For PrivateSymbolToName. | 8680 friend class Name; // For PrivateSymbolToName. |
8685 #endif | 8681 #endif |
8686 | 8682 |
8687 DISALLOW_IMPLICIT_CONSTRUCTORS(Symbol); | 8683 DISALLOW_IMPLICIT_CONSTRUCTORS(Symbol); |
8688 }; | 8684 }; |
8689 | 8685 |
(...skipping 2160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10850 } else { | 10846 } else { |
10851 value &= ~(1 << bit_position); | 10847 value &= ~(1 << bit_position); |
10852 } | 10848 } |
10853 return value; | 10849 return value; |
10854 } | 10850 } |
10855 }; | 10851 }; |
10856 | 10852 |
10857 } } // namespace v8::internal | 10853 } } // namespace v8::internal |
10858 | 10854 |
10859 #endif // V8_OBJECTS_H_ | 10855 #endif // V8_OBJECTS_H_ |
OLD | NEW |