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 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
166 STORE_NO_TRANSITION_IGNORE_OUT_OF_BOUNDS, | 166 STORE_NO_TRANSITION_IGNORE_OUT_OF_BOUNDS, |
167 STORE_NO_TRANSITION_HANDLE_COW | 167 STORE_NO_TRANSITION_HANDLE_COW |
168 }; | 168 }; |
169 | 169 |
170 | 170 |
171 // Valid hints for the abstract operation ToPrimitive, | 171 // Valid hints for the abstract operation ToPrimitive, |
172 // implemented according to ES6, section 7.1.1. | 172 // implemented according to ES6, section 7.1.1. |
173 enum class ToPrimitiveHint { kDefault, kNumber, kString }; | 173 enum class ToPrimitiveHint { kDefault, kNumber, kString }; |
174 | 174 |
175 | 175 |
176 // Valid hints for the abstract operations OrdinaryToPrimitive, | |
Michael Starzinger
2015/08/31 12:12:57
nit: s/operations/operation/
Benedikt Meurer
2015/08/31 12:26:48
Done.
| |
177 // implemented according to ES6, section 7.1.1. | |
178 enum class OrdinaryToPrimitiveHint { kNumber, kString }; | |
179 | |
180 | |
176 enum TypeofMode { INSIDE_TYPEOF, NOT_INSIDE_TYPEOF }; | 181 enum TypeofMode { INSIDE_TYPEOF, NOT_INSIDE_TYPEOF }; |
177 | 182 |
178 | 183 |
179 enum MutableMode { | 184 enum MutableMode { |
180 MUTABLE, | 185 MUTABLE, |
181 IMMUTABLE | 186 IMMUTABLE |
182 }; | 187 }; |
183 | 188 |
184 | 189 |
185 enum ExternalArrayType { | 190 enum ExternalArrayType { |
(...skipping 1486 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1672 // JSObject and JSProxy. | 1677 // JSObject and JSProxy. |
1673 class JSReceiver: public HeapObject { | 1678 class JSReceiver: public HeapObject { |
1674 public: | 1679 public: |
1675 DECLARE_CAST(JSReceiver) | 1680 DECLARE_CAST(JSReceiver) |
1676 | 1681 |
1677 // ES6 section 7.1.1 ToPrimitive | 1682 // ES6 section 7.1.1 ToPrimitive |
1678 MUST_USE_RESULT static MaybeHandle<Object> ToPrimitive( | 1683 MUST_USE_RESULT static MaybeHandle<Object> ToPrimitive( |
1679 Handle<JSReceiver> receiver, | 1684 Handle<JSReceiver> receiver, |
1680 ToPrimitiveHint hint = ToPrimitiveHint::kDefault); | 1685 ToPrimitiveHint hint = ToPrimitiveHint::kDefault); |
1681 MUST_USE_RESULT static MaybeHandle<Object> OrdinaryToPrimitive( | 1686 MUST_USE_RESULT static MaybeHandle<Object> OrdinaryToPrimitive( |
1682 Handle<JSReceiver> receiver, Handle<String> hint); | 1687 Handle<JSReceiver> receiver, OrdinaryToPrimitiveHint hint); |
1683 | 1688 |
1684 // Implementation of [[HasProperty]], ECMA-262 5th edition, section 8.12.6. | 1689 // Implementation of [[HasProperty]], ECMA-262 5th edition, section 8.12.6. |
1685 MUST_USE_RESULT static inline Maybe<bool> HasProperty( | 1690 MUST_USE_RESULT static inline Maybe<bool> HasProperty( |
1686 Handle<JSReceiver> object, Handle<Name> name); | 1691 Handle<JSReceiver> object, Handle<Name> name); |
1687 MUST_USE_RESULT static inline Maybe<bool> HasOwnProperty(Handle<JSReceiver>, | 1692 MUST_USE_RESULT static inline Maybe<bool> HasOwnProperty(Handle<JSReceiver>, |
1688 Handle<Name> name); | 1693 Handle<Name> name); |
1689 MUST_USE_RESULT static inline Maybe<bool> HasElement( | 1694 MUST_USE_RESULT static inline Maybe<bool> HasElement( |
1690 Handle<JSReceiver> object, uint32_t index); | 1695 Handle<JSReceiver> object, uint32_t index); |
1691 MUST_USE_RESULT static inline Maybe<bool> HasOwnElement( | 1696 MUST_USE_RESULT static inline Maybe<bool> HasOwnElement( |
1692 Handle<JSReceiver> object, uint32_t index); | 1697 Handle<JSReceiver> object, uint32_t index); |
(...skipping 5565 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
7258 DECL_ACCESSORS(cache_stamp, Object) | 7263 DECL_ACCESSORS(cache_stamp, Object) |
7259 | 7264 |
7260 DECLARE_CAST(JSDate) | 7265 DECLARE_CAST(JSDate) |
7261 | 7266 |
7262 // Returns the date field with the specified index. | 7267 // Returns the date field with the specified index. |
7263 // See FieldIndex for the list of date fields. | 7268 // See FieldIndex for the list of date fields. |
7264 static Object* GetField(Object* date, Smi* index); | 7269 static Object* GetField(Object* date, Smi* index); |
7265 | 7270 |
7266 void SetValue(Object* value, bool is_value_nan); | 7271 void SetValue(Object* value, bool is_value_nan); |
7267 | 7272 |
7273 // ES6 section 20.3.4.45 Date.prototype [ @@toPrimitive ] | |
7274 static MUST_USE_RESULT MaybeHandle<Object> ToPrimitive( | |
7275 Handle<JSReceiver> receiver, Handle<Object> hint); | |
7268 | 7276 |
7269 // Dispatched behavior. | 7277 // Dispatched behavior. |
7270 DECLARE_PRINTER(JSDate) | 7278 DECLARE_PRINTER(JSDate) |
7271 DECLARE_VERIFIER(JSDate) | 7279 DECLARE_VERIFIER(JSDate) |
7272 | 7280 |
7273 // The order is important. It must be kept in sync with date macros | 7281 // The order is important. It must be kept in sync with date macros |
7274 // in macros.py. | 7282 // in macros.py. |
7275 enum FieldIndex { | 7283 enum FieldIndex { |
7276 kDateValue, | 7284 kDateValue, |
7277 kYear, | 7285 kYear, |
(...skipping 830 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
8108 inline bool AsArrayIndex(uint32_t* index); | 8116 inline bool AsArrayIndex(uint32_t* index); |
8109 | 8117 |
8110 // If the name is private, it can only name own properties. | 8118 // If the name is private, it can only name own properties. |
8111 inline bool IsPrivate(); | 8119 inline bool IsPrivate(); |
8112 | 8120 |
8113 // If the name is a non-flat string, this method returns a flat version of the | 8121 // If the name is a non-flat string, this method returns a flat version of the |
8114 // string. Otherwise it'll just return the input. | 8122 // string. Otherwise it'll just return the input. |
8115 static inline Handle<Name> Flatten(Handle<Name> name, | 8123 static inline Handle<Name> Flatten(Handle<Name> name, |
8116 PretenureFlag pretenure = NOT_TENURED); | 8124 PretenureFlag pretenure = NOT_TENURED); |
8117 | 8125 |
8126 // Return a string version of this name that is converted according to the | |
8127 // rules described in ES6 section 9.2.11. | |
8128 static Handle<String> ToFunctionName(Handle<Name> name); | |
8129 | |
8118 DECLARE_CAST(Name) | 8130 DECLARE_CAST(Name) |
8119 | 8131 |
8120 DECLARE_PRINTER(Name) | 8132 DECLARE_PRINTER(Name) |
8121 #if TRACE_MAPS | 8133 #if TRACE_MAPS |
8122 void NameShortPrint(); | 8134 void NameShortPrint(); |
8123 int NameShortPrint(Vector<char> str); | 8135 int NameShortPrint(Vector<char> str); |
8124 #endif | 8136 #endif |
8125 | 8137 |
8126 // Layout description. | 8138 // Layout description. |
8127 static const int kHashFieldSlot = HeapObject::kHeaderSize; | 8139 static const int kHashFieldSlot = HeapObject::kHeaderSize; |
(...skipping 2242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
10370 } else { | 10382 } else { |
10371 value &= ~(1 << bit_position); | 10383 value &= ~(1 << bit_position); |
10372 } | 10384 } |
10373 return value; | 10385 return value; |
10374 } | 10386 } |
10375 }; | 10387 }; |
10376 | 10388 |
10377 } } // namespace v8::internal | 10389 } } // namespace v8::internal |
10378 | 10390 |
10379 #endif // V8_OBJECTS_H_ | 10391 #endif // V8_OBJECTS_H_ |
OLD | NEW |