Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(162)

Side by Side Diff: src/objects.h

Issue 15562008: Recording array buffer views. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 8725 matching lines...) Expand 10 before | Expand all | Expand 10 after
8736 static inline JSWeakMap* cast(Object* obj); 8736 static inline JSWeakMap* cast(Object* obj);
8737 8737
8738 // Dispatched behavior. 8738 // Dispatched behavior.
8739 DECLARE_PRINTER(JSWeakMap) 8739 DECLARE_PRINTER(JSWeakMap)
8740 DECLARE_VERIFIER(JSWeakMap) 8740 DECLARE_VERIFIER(JSWeakMap)
8741 8741
8742 static const int kTableOffset = JSObject::kHeaderSize; 8742 static const int kTableOffset = JSObject::kHeaderSize;
8743 static const int kNextOffset = kTableOffset + kPointerSize; 8743 static const int kNextOffset = kTableOffset + kPointerSize;
8744 static const int kSize = kNextOffset + kPointerSize; 8744 static const int kSize = kNextOffset + kPointerSize;
8745 8745
8746 private:
8747 DISALLOW_IMPLICIT_CONSTRUCTORS(JSWeakMap); 8746 DISALLOW_IMPLICIT_CONSTRUCTORS(JSWeakMap);
8748 }; 8747 };
8749 8748
8750 8749
8751 class JSArrayBuffer: public JSObject { 8750 class JSArrayBuffer: public JSObject {
8752 public: 8751 public:
8753 // [backing_store]: backing memory for this array 8752 // [backing_store]: backing memory for this array
8754 DECL_ACCESSORS(backing_store, void) 8753 DECL_ACCESSORS(backing_store, void)
8755 8754
8756 // [byte_length]: length in bytes 8755 // [byte_length]: length in bytes
8757 DECL_ACCESSORS(byte_length, Object) 8756 DECL_ACCESSORS(byte_length, Object)
8758 8757
8758 // [next]: linked list of encountered array buffers during GC.
8759 DECL_ACCESSORS(next, Object)
8760
8761 // [first_array]: weak linked list of typed arrays.
8762 DECL_ACCESSORS(first_array, Object)
8763
8759 // Casting. 8764 // Casting.
8760 static inline JSArrayBuffer* cast(Object* obj); 8765 static inline JSArrayBuffer* cast(Object* obj);
8761 8766
8762 // Dispatched behavior. 8767 // Dispatched behavior.
8763 DECLARE_PRINTER(JSArrayBuffer) 8768 DECLARE_PRINTER(JSArrayBuffer)
8764 DECLARE_VERIFIER(JSArrayBuffer) 8769 DECLARE_VERIFIER(JSArrayBuffer)
8765 8770
8766 static const int kBackingStoreOffset = JSObject::kHeaderSize; 8771 static const int kBackingStoreOffset = JSObject::kHeaderSize;
8767 static const int kByteLengthOffset = kBackingStoreOffset + kPointerSize; 8772 static const int kByteLengthOffset = kBackingStoreOffset + kPointerSize;
8768 static const int kSize = kByteLengthOffset + kPointerSize; 8773 static const int kNextOffset = kByteLengthOffset + kPointerSize;
8774 static const int kFirstArrayOffset = kNextOffset + kPointerSize;
8775 static const int kSize = kFirstArrayOffset + kPointerSize;
8769 8776
8770 private: 8777 private:
8771 DISALLOW_IMPLICIT_CONSTRUCTORS(JSArrayBuffer); 8778 DISALLOW_IMPLICIT_CONSTRUCTORS(JSArrayBuffer);
8772 }; 8779 };
8773 8780
8774 8781
8775 class JSTypedArray: public JSObject { 8782 class JSTypedArray: public JSObject {
8776 public: 8783 public:
8777 // [buffer]: ArrayBuffer that this typed array views. 8784 // [buffer]: ArrayBuffer that this typed array views.
8778 DECL_ACCESSORS(buffer, Object) 8785 DECL_ACCESSORS(buffer, Object)
8779 8786
8780 // [byte_length]: offset of typed array in bytes. 8787 // [byte_length]: offset of typed array in bytes.
8781 DECL_ACCESSORS(byte_offset, Object) 8788 DECL_ACCESSORS(byte_offset, Object)
8782 8789
8783 // [byte_length]: length of typed array in bytes. 8790 // [byte_length]: length of typed array in bytes.
8784 DECL_ACCESSORS(byte_length, Object) 8791 DECL_ACCESSORS(byte_length, Object)
8785 8792
8786 // [length]: length of typed array in elements. 8793 // [length]: length of typed array in elements.
8787 DECL_ACCESSORS(length, Object) 8794 DECL_ACCESSORS(length, Object)
8788 8795
8796 // [next]: linked list of typed arrays over the same array buffer.
8797 DECL_ACCESSORS(next, Object)
8798
8789 // Casting. 8799 // Casting.
8790 static inline JSTypedArray* cast(Object* obj); 8800 static inline JSTypedArray* cast(Object* obj);
8791 8801
8792 ExternalArrayType type(); 8802 ExternalArrayType type();
8793 size_t element_size(); 8803 size_t element_size();
8794 8804
8795 // Dispatched behavior. 8805 // Dispatched behavior.
8796 DECLARE_PRINTER(JSTypedArray) 8806 DECLARE_PRINTER(JSTypedArray)
8797 DECLARE_VERIFIER(JSTypedArray) 8807 DECLARE_VERIFIER(JSTypedArray)
8798 8808
8799 static const int kBufferOffset = JSObject::kHeaderSize; 8809 static const int kBufferOffset = JSObject::kHeaderSize;
8800 static const int kByteOffsetOffset = kBufferOffset + kPointerSize; 8810 static const int kByteOffsetOffset = kBufferOffset + kPointerSize;
8801 static const int kByteLengthOffset = kByteOffsetOffset + kPointerSize; 8811 static const int kByteLengthOffset = kByteOffsetOffset + kPointerSize;
8802 static const int kLengthOffset = kByteLengthOffset + kPointerSize; 8812 static const int kLengthOffset = kByteLengthOffset + kPointerSize;
8803 static const int kSize = kLengthOffset + kPointerSize; 8813 static const int kNextOffset = kLengthOffset + kLengthOffset;
8814 static const int kSize = kNextOffset + kPointerSize;
8804 8815
8805 private: 8816 private:
8806 DISALLOW_IMPLICIT_CONSTRUCTORS(JSTypedArray); 8817 DISALLOW_IMPLICIT_CONSTRUCTORS(JSTypedArray);
8807 }; 8818 };
8808 8819
8809 8820
8810 // Foreign describes objects pointing from JavaScript to C structures. 8821 // Foreign describes objects pointing from JavaScript to C structures.
8811 // Since they cannot contain references to JS HeapObjects they can be 8822 // Since they cannot contain references to JS HeapObjects they can be
8812 // placed in old_data_space. 8823 // placed in old_data_space.
8813 class Foreign: public HeapObject { 8824 class Foreign: public HeapObject {
(...skipping 794 matching lines...) Expand 10 before | Expand all | Expand 10 after
9608 } else { 9619 } else {
9609 value &= ~(1 << bit_position); 9620 value &= ~(1 << bit_position);
9610 } 9621 }
9611 return value; 9622 return value;
9612 } 9623 }
9613 }; 9624 };
9614 9625
9615 } } // namespace v8::internal 9626 } } // namespace v8::internal
9616 9627
9617 #endif // V8_OBJECTS_H_ 9628 #endif // V8_OBJECTS_H_
OLDNEW
« no previous file with comments | « src/mark-compact.cc ('k') | src/objects-inl.h » ('j') | src/objects-visiting-inl.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698