| 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 413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 424 V(JS_GLOBAL_PROXY_TYPE) \ | 424 V(JS_GLOBAL_PROXY_TYPE) \ |
| 425 V(JS_ARRAY_TYPE) \ | 425 V(JS_ARRAY_TYPE) \ |
| 426 V(JS_ARRAY_BUFFER_TYPE) \ | 426 V(JS_ARRAY_BUFFER_TYPE) \ |
| 427 V(JS_TYPED_ARRAY_TYPE) \ | 427 V(JS_TYPED_ARRAY_TYPE) \ |
| 428 V(JS_DATA_VIEW_TYPE) \ | 428 V(JS_DATA_VIEW_TYPE) \ |
| 429 V(JS_PROXY_TYPE) \ | 429 V(JS_PROXY_TYPE) \ |
| 430 V(JS_SET_TYPE) \ | 430 V(JS_SET_TYPE) \ |
| 431 V(JS_MAP_TYPE) \ | 431 V(JS_MAP_TYPE) \ |
| 432 V(JS_SET_ITERATOR_TYPE) \ | 432 V(JS_SET_ITERATOR_TYPE) \ |
| 433 V(JS_MAP_ITERATOR_TYPE) \ | 433 V(JS_MAP_ITERATOR_TYPE) \ |
| 434 V(JS_ITERATOR_RESULT_TYPE) \ |
| 434 V(JS_WEAK_MAP_TYPE) \ | 435 V(JS_WEAK_MAP_TYPE) \ |
| 435 V(JS_WEAK_SET_TYPE) \ | 436 V(JS_WEAK_SET_TYPE) \ |
| 436 V(JS_REGEXP_TYPE) \ | 437 V(JS_REGEXP_TYPE) \ |
| 437 \ | 438 \ |
| 438 V(JS_FUNCTION_TYPE) \ | 439 V(JS_FUNCTION_TYPE) \ |
| 439 V(JS_FUNCTION_PROXY_TYPE) \ | 440 V(JS_FUNCTION_PROXY_TYPE) \ |
| 440 V(DEBUG_INFO_TYPE) \ | 441 V(DEBUG_INFO_TYPE) \ |
| 441 V(BREAK_POINT_INFO_TYPE) | 442 V(BREAK_POINT_INFO_TYPE) |
| 442 | 443 |
| 443 | 444 |
| (...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 722 JS_BUILTINS_OBJECT_TYPE, | 723 JS_BUILTINS_OBJECT_TYPE, |
| 723 JS_GLOBAL_PROXY_TYPE, | 724 JS_GLOBAL_PROXY_TYPE, |
| 724 JS_ARRAY_TYPE, | 725 JS_ARRAY_TYPE, |
| 725 JS_ARRAY_BUFFER_TYPE, | 726 JS_ARRAY_BUFFER_TYPE, |
| 726 JS_TYPED_ARRAY_TYPE, | 727 JS_TYPED_ARRAY_TYPE, |
| 727 JS_DATA_VIEW_TYPE, | 728 JS_DATA_VIEW_TYPE, |
| 728 JS_SET_TYPE, | 729 JS_SET_TYPE, |
| 729 JS_MAP_TYPE, | 730 JS_MAP_TYPE, |
| 730 JS_SET_ITERATOR_TYPE, | 731 JS_SET_ITERATOR_TYPE, |
| 731 JS_MAP_ITERATOR_TYPE, | 732 JS_MAP_ITERATOR_TYPE, |
| 733 JS_ITERATOR_RESULT_TYPE, |
| 732 JS_WEAK_MAP_TYPE, | 734 JS_WEAK_MAP_TYPE, |
| 733 JS_WEAK_SET_TYPE, | 735 JS_WEAK_SET_TYPE, |
| 734 JS_REGEXP_TYPE, | 736 JS_REGEXP_TYPE, |
| 735 JS_FUNCTION_TYPE, // LAST_JS_OBJECT_TYPE, LAST_JS_RECEIVER_TYPE | 737 JS_FUNCTION_TYPE, // LAST_JS_OBJECT_TYPE, LAST_JS_RECEIVER_TYPE |
| 736 | 738 |
| 737 // Pseudo-types | 739 // Pseudo-types |
| 738 FIRST_TYPE = 0x0, | 740 FIRST_TYPE = 0x0, |
| 739 LAST_TYPE = JS_FUNCTION_TYPE, | 741 LAST_TYPE = JS_FUNCTION_TYPE, |
| 740 FIRST_NAME_TYPE = FIRST_TYPE, | 742 FIRST_NAME_TYPE = FIRST_TYPE, |
| 741 LAST_NAME_TYPE = SYMBOL_TYPE, | 743 LAST_NAME_TYPE = SYMBOL_TYPE, |
| (...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 950 V(JSArrayBuffer) \ | 952 V(JSArrayBuffer) \ |
| 951 V(JSArrayBufferView) \ | 953 V(JSArrayBufferView) \ |
| 952 V(JSTypedArray) \ | 954 V(JSTypedArray) \ |
| 953 V(JSDataView) \ | 955 V(JSDataView) \ |
| 954 V(JSProxy) \ | 956 V(JSProxy) \ |
| 955 V(JSFunctionProxy) \ | 957 V(JSFunctionProxy) \ |
| 956 V(JSSet) \ | 958 V(JSSet) \ |
| 957 V(JSMap) \ | 959 V(JSMap) \ |
| 958 V(JSSetIterator) \ | 960 V(JSSetIterator) \ |
| 959 V(JSMapIterator) \ | 961 V(JSMapIterator) \ |
| 962 V(JSIteratorResult) \ |
| 960 V(JSWeakCollection) \ | 963 V(JSWeakCollection) \ |
| 961 V(JSWeakMap) \ | 964 V(JSWeakMap) \ |
| 962 V(JSWeakSet) \ | 965 V(JSWeakSet) \ |
| 963 V(JSRegExp) \ | 966 V(JSRegExp) \ |
| 964 V(HashTable) \ | 967 V(HashTable) \ |
| 965 V(Dictionary) \ | 968 V(Dictionary) \ |
| 966 V(StringTable) \ | 969 V(StringTable) \ |
| 967 V(NormalizedMapCache) \ | 970 V(NormalizedMapCache) \ |
| 968 V(CompilationCacheTable) \ | 971 V(CompilationCacheTable) \ |
| 969 V(CodeCacheHashTable) \ | 972 V(CodeCacheHashTable) \ |
| (...skipping 5874 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6844 static const int kFunctionOffset = JSObject::kHeaderSize; | 6847 static const int kFunctionOffset = JSObject::kHeaderSize; |
| 6845 static const int kContextOffset = kFunctionOffset + kPointerSize; | 6848 static const int kContextOffset = kFunctionOffset + kPointerSize; |
| 6846 static const int kReceiverOffset = kContextOffset + kPointerSize; | 6849 static const int kReceiverOffset = kContextOffset + kPointerSize; |
| 6847 static const int kContinuationOffset = kReceiverOffset + kPointerSize; | 6850 static const int kContinuationOffset = kReceiverOffset + kPointerSize; |
| 6848 static const int kOperandStackOffset = kContinuationOffset + kPointerSize; | 6851 static const int kOperandStackOffset = kContinuationOffset + kPointerSize; |
| 6849 static const int kSize = kOperandStackOffset + kPointerSize; | 6852 static const int kSize = kOperandStackOffset + kPointerSize; |
| 6850 | 6853 |
| 6851 // Resume mode, for use by runtime functions. | 6854 // Resume mode, for use by runtime functions. |
| 6852 enum ResumeMode { NEXT, THROW }; | 6855 enum ResumeMode { NEXT, THROW }; |
| 6853 | 6856 |
| 6854 // Yielding from a generator returns an object with the following inobject | |
| 6855 // properties. See Context::iterator_result_map() for the map. | |
| 6856 static const int kResultValuePropertyIndex = 0; | |
| 6857 static const int kResultDonePropertyIndex = 1; | |
| 6858 static const int kResultPropertyCount = 2; | |
| 6859 | |
| 6860 static const int kResultValuePropertyOffset = JSObject::kHeaderSize; | |
| 6861 static const int kResultDonePropertyOffset = | |
| 6862 kResultValuePropertyOffset + kPointerSize; | |
| 6863 static const int kResultSize = kResultDonePropertyOffset + kPointerSize; | |
| 6864 | |
| 6865 private: | 6857 private: |
| 6866 DISALLOW_IMPLICIT_CONSTRUCTORS(JSGeneratorObject); | 6858 DISALLOW_IMPLICIT_CONSTRUCTORS(JSGeneratorObject); |
| 6867 }; | 6859 }; |
| 6868 | 6860 |
| 6869 | 6861 |
| 6870 // Representation for module instance objects. | 6862 // Representation for module instance objects. |
| 6871 class JSModule: public JSObject { | 6863 class JSModule: public JSObject { |
| 6872 public: | 6864 public: |
| 6873 // [context]: the context holding the module's locals, or undefined if none. | 6865 // [context]: the context holding the module's locals, or undefined if none. |
| 6874 DECL_ACCESSORS(context, Object) | 6866 DECL_ACCESSORS(context, Object) |
| (...skipping 2598 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9473 | 9465 |
| 9474 private: | 9466 private: |
| 9475 // Returns the current value of the iterator. This should only be called when | 9467 // Returns the current value of the iterator. This should only be called when |
| 9476 // |HasMore| returns true. | 9468 // |HasMore| returns true. |
| 9477 inline Object* CurrentValue(); | 9469 inline Object* CurrentValue(); |
| 9478 | 9470 |
| 9479 DISALLOW_IMPLICIT_CONSTRUCTORS(JSMapIterator); | 9471 DISALLOW_IMPLICIT_CONSTRUCTORS(JSMapIterator); |
| 9480 }; | 9472 }; |
| 9481 | 9473 |
| 9482 | 9474 |
| 9475 // ES6 section 25.1.1.3 The IteratorResult Interface |
| 9476 class JSIteratorResult final : public JSObject { |
| 9477 public: |
| 9478 // [done]: This is the result status of an iterator next method call. If the |
| 9479 // end of the iterator was reached done is true. If the end was not reached |
| 9480 // done is false and a [value] is available. |
| 9481 DECL_ACCESSORS(done, Object) |
| 9482 |
| 9483 // [value]: If [done] is false, this is the current iteration element value. |
| 9484 // If [done] is true, this is the return value of the iterator, if it supplied |
| 9485 // one. If the iterator does not have a return value, value is undefined. |
| 9486 // In that case, the value property may be absent from the conforming object |
| 9487 // if it does not inherit an explicit value property. |
| 9488 DECL_ACCESSORS(value, Object) |
| 9489 |
| 9490 // Dispatched behavior. |
| 9491 DECLARE_PRINTER(JSIteratorResult) |
| 9492 DECLARE_VERIFIER(JSIteratorResult) |
| 9493 |
| 9494 DECLARE_CAST(JSIteratorResult) |
| 9495 |
| 9496 static const int kValueOffset = JSObject::kHeaderSize; |
| 9497 static const int kDoneOffset = kValueOffset + kPointerSize; |
| 9498 static const int kSize = kDoneOffset + kPointerSize; |
| 9499 |
| 9500 // Indices of in-object properties. |
| 9501 static const int kValueIndex = 0; |
| 9502 static const int kDoneIndex = 1; |
| 9503 |
| 9504 private: |
| 9505 DISALLOW_IMPLICIT_CONSTRUCTORS(JSIteratorResult); |
| 9506 }; |
| 9507 |
| 9508 |
| 9483 // Base class for both JSWeakMap and JSWeakSet | 9509 // Base class for both JSWeakMap and JSWeakSet |
| 9484 class JSWeakCollection: public JSObject { | 9510 class JSWeakCollection: public JSObject { |
| 9485 public: | 9511 public: |
| 9486 // [table]: the backing hash table mapping keys to values. | 9512 // [table]: the backing hash table mapping keys to values. |
| 9487 DECL_ACCESSORS(table, Object) | 9513 DECL_ACCESSORS(table, Object) |
| 9488 | 9514 |
| 9489 // [next]: linked list of encountered weak maps during GC. | 9515 // [next]: linked list of encountered weak maps during GC. |
| 9490 DECL_ACCESSORS(next, Object) | 9516 DECL_ACCESSORS(next, Object) |
| 9491 | 9517 |
| 9492 static void Initialize(Handle<JSWeakCollection> collection, Isolate* isolate); | 9518 static void Initialize(Handle<JSWeakCollection> collection, Isolate* isolate); |
| (...skipping 886 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10379 } else { | 10405 } else { |
| 10380 value &= ~(1 << bit_position); | 10406 value &= ~(1 << bit_position); |
| 10381 } | 10407 } |
| 10382 return value; | 10408 return value; |
| 10383 } | 10409 } |
| 10384 }; | 10410 }; |
| 10385 | 10411 |
| 10386 } } // namespace v8::internal | 10412 } } // namespace v8::internal |
| 10387 | 10413 |
| 10388 #endif // V8_OBJECTS_H_ | 10414 #endif // V8_OBJECTS_H_ |
| OLD | NEW |