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

Side by Side Diff: src/objects.h

Issue 1061753008: Revert of Remove the weak list of views from array buffers (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 8 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
« no previous file with comments | « src/hydrogen-instructions.h ('k') | src/objects.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 4632 matching lines...) Expand 10 before | Expand all | Expand 10 after
4643 inline uint8_t* external_uint8_clamped_pointer(); 4643 inline uint8_t* external_uint8_clamped_pointer();
4644 4644
4645 // Setter and getter. 4645 // Setter and getter.
4646 inline uint8_t get_scalar(int index); 4646 inline uint8_t get_scalar(int index);
4647 static inline Handle<Object> get(Handle<ExternalUint8ClampedArray> array, 4647 static inline Handle<Object> get(Handle<ExternalUint8ClampedArray> array,
4648 int index); 4648 int index);
4649 inline void set(int index, uint8_t value); 4649 inline void set(int index, uint8_t value);
4650 4650
4651 // This accessor applies the correct conversion from Smi, HeapNumber 4651 // This accessor applies the correct conversion from Smi, HeapNumber
4652 // and undefined and clamps the converted value between 0 and 255. 4652 // and undefined and clamps the converted value between 0 and 255.
4653 static Handle<Object> SetValue(Handle<JSObject> holder, 4653 static Handle<Object> SetValue(Handle<ExternalUint8ClampedArray> array,
4654 Handle<ExternalUint8ClampedArray> array, 4654 uint32_t index,
4655 uint32_t index, Handle<Object> value); 4655 Handle<Object> value);
4656 4656
4657 DECLARE_CAST(ExternalUint8ClampedArray) 4657 DECLARE_CAST(ExternalUint8ClampedArray)
4658 4658
4659 // Dispatched behavior. 4659 // Dispatched behavior.
4660 DECLARE_PRINTER(ExternalUint8ClampedArray) 4660 DECLARE_PRINTER(ExternalUint8ClampedArray)
4661 DECLARE_VERIFIER(ExternalUint8ClampedArray) 4661 DECLARE_VERIFIER(ExternalUint8ClampedArray)
4662 4662
4663 private: 4663 private:
4664 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUint8ClampedArray); 4664 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUint8ClampedArray);
4665 }; 4665 };
4666 4666
4667 4667
4668 class ExternalInt8Array: public ExternalArray { 4668 class ExternalInt8Array: public ExternalArray {
4669 public: 4669 public:
4670 // Setter and getter. 4670 // Setter and getter.
4671 inline int8_t get_scalar(int index); 4671 inline int8_t get_scalar(int index);
4672 static inline Handle<Object> get(Handle<ExternalInt8Array> array, int index); 4672 static inline Handle<Object> get(Handle<ExternalInt8Array> array, int index);
4673 inline void set(int index, int8_t value); 4673 inline void set(int index, int8_t value);
4674 4674
4675 // This accessor applies the correct conversion from Smi, HeapNumber 4675 // This accessor applies the correct conversion from Smi, HeapNumber
4676 // and undefined. 4676 // and undefined.
4677 static Handle<Object> SetValue(Handle<JSObject> holder, 4677 static Handle<Object> SetValue(Handle<ExternalInt8Array> array,
4678 Handle<ExternalInt8Array> array, 4678 uint32_t index,
4679 uint32_t index, Handle<Object> value); 4679 Handle<Object> value);
4680 4680
4681 DECLARE_CAST(ExternalInt8Array) 4681 DECLARE_CAST(ExternalInt8Array)
4682 4682
4683 // Dispatched behavior. 4683 // Dispatched behavior.
4684 DECLARE_PRINTER(ExternalInt8Array) 4684 DECLARE_PRINTER(ExternalInt8Array)
4685 DECLARE_VERIFIER(ExternalInt8Array) 4685 DECLARE_VERIFIER(ExternalInt8Array)
4686 4686
4687 private: 4687 private:
4688 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalInt8Array); 4688 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalInt8Array);
4689 }; 4689 };
4690 4690
4691 4691
4692 class ExternalUint8Array: public ExternalArray { 4692 class ExternalUint8Array: public ExternalArray {
4693 public: 4693 public:
4694 // Setter and getter. 4694 // Setter and getter.
4695 inline uint8_t get_scalar(int index); 4695 inline uint8_t get_scalar(int index);
4696 static inline Handle<Object> get(Handle<ExternalUint8Array> array, int index); 4696 static inline Handle<Object> get(Handle<ExternalUint8Array> array, int index);
4697 inline void set(int index, uint8_t value); 4697 inline void set(int index, uint8_t value);
4698 4698
4699 // This accessor applies the correct conversion from Smi, HeapNumber 4699 // This accessor applies the correct conversion from Smi, HeapNumber
4700 // and undefined. 4700 // and undefined.
4701 static Handle<Object> SetValue(Handle<JSObject> holder, 4701 static Handle<Object> SetValue(Handle<ExternalUint8Array> array,
4702 Handle<ExternalUint8Array> array, 4702 uint32_t index,
4703 uint32_t index, Handle<Object> value); 4703 Handle<Object> value);
4704 4704
4705 DECLARE_CAST(ExternalUint8Array) 4705 DECLARE_CAST(ExternalUint8Array)
4706 4706
4707 // Dispatched behavior. 4707 // Dispatched behavior.
4708 DECLARE_PRINTER(ExternalUint8Array) 4708 DECLARE_PRINTER(ExternalUint8Array)
4709 DECLARE_VERIFIER(ExternalUint8Array) 4709 DECLARE_VERIFIER(ExternalUint8Array)
4710 4710
4711 private: 4711 private:
4712 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUint8Array); 4712 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUint8Array);
4713 }; 4713 };
4714 4714
4715 4715
4716 class ExternalInt16Array: public ExternalArray { 4716 class ExternalInt16Array: public ExternalArray {
4717 public: 4717 public:
4718 // Setter and getter. 4718 // Setter and getter.
4719 inline int16_t get_scalar(int index); 4719 inline int16_t get_scalar(int index);
4720 static inline Handle<Object> get(Handle<ExternalInt16Array> array, int index); 4720 static inline Handle<Object> get(Handle<ExternalInt16Array> array, int index);
4721 inline void set(int index, int16_t value); 4721 inline void set(int index, int16_t value);
4722 4722
4723 // This accessor applies the correct conversion from Smi, HeapNumber 4723 // This accessor applies the correct conversion from Smi, HeapNumber
4724 // and undefined. 4724 // and undefined.
4725 static Handle<Object> SetValue(Handle<JSObject> holder, 4725 static Handle<Object> SetValue(Handle<ExternalInt16Array> array,
4726 Handle<ExternalInt16Array> array, 4726 uint32_t index,
4727 uint32_t index, Handle<Object> value); 4727 Handle<Object> value);
4728 4728
4729 DECLARE_CAST(ExternalInt16Array) 4729 DECLARE_CAST(ExternalInt16Array)
4730 4730
4731 // Dispatched behavior. 4731 // Dispatched behavior.
4732 DECLARE_PRINTER(ExternalInt16Array) 4732 DECLARE_PRINTER(ExternalInt16Array)
4733 DECLARE_VERIFIER(ExternalInt16Array) 4733 DECLARE_VERIFIER(ExternalInt16Array)
4734 4734
4735 private: 4735 private:
4736 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalInt16Array); 4736 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalInt16Array);
4737 }; 4737 };
4738 4738
4739 4739
4740 class ExternalUint16Array: public ExternalArray { 4740 class ExternalUint16Array: public ExternalArray {
4741 public: 4741 public:
4742 // Setter and getter. 4742 // Setter and getter.
4743 inline uint16_t get_scalar(int index); 4743 inline uint16_t get_scalar(int index);
4744 static inline Handle<Object> get(Handle<ExternalUint16Array> array, 4744 static inline Handle<Object> get(Handle<ExternalUint16Array> array,
4745 int index); 4745 int index);
4746 inline void set(int index, uint16_t value); 4746 inline void set(int index, uint16_t value);
4747 4747
4748 // This accessor applies the correct conversion from Smi, HeapNumber 4748 // This accessor applies the correct conversion from Smi, HeapNumber
4749 // and undefined. 4749 // and undefined.
4750 static Handle<Object> SetValue(Handle<JSObject> holder, 4750 static Handle<Object> SetValue(Handle<ExternalUint16Array> array,
4751 Handle<ExternalUint16Array> array, 4751 uint32_t index,
4752 uint32_t index, Handle<Object> value); 4752 Handle<Object> value);
4753 4753
4754 DECLARE_CAST(ExternalUint16Array) 4754 DECLARE_CAST(ExternalUint16Array)
4755 4755
4756 // Dispatched behavior. 4756 // Dispatched behavior.
4757 DECLARE_PRINTER(ExternalUint16Array) 4757 DECLARE_PRINTER(ExternalUint16Array)
4758 DECLARE_VERIFIER(ExternalUint16Array) 4758 DECLARE_VERIFIER(ExternalUint16Array)
4759 4759
4760 private: 4760 private:
4761 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUint16Array); 4761 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUint16Array);
4762 }; 4762 };
4763 4763
4764 4764
4765 class ExternalInt32Array: public ExternalArray { 4765 class ExternalInt32Array: public ExternalArray {
4766 public: 4766 public:
4767 // Setter and getter. 4767 // Setter and getter.
4768 inline int32_t get_scalar(int index); 4768 inline int32_t get_scalar(int index);
4769 static inline Handle<Object> get(Handle<ExternalInt32Array> array, int index); 4769 static inline Handle<Object> get(Handle<ExternalInt32Array> array, int index);
4770 inline void set(int index, int32_t value); 4770 inline void set(int index, int32_t value);
4771 4771
4772 // This accessor applies the correct conversion from Smi, HeapNumber 4772 // This accessor applies the correct conversion from Smi, HeapNumber
4773 // and undefined. 4773 // and undefined.
4774 static Handle<Object> SetValue(Handle<JSObject> holder, 4774 static Handle<Object> SetValue(Handle<ExternalInt32Array> array,
4775 Handle<ExternalInt32Array> array, 4775 uint32_t index,
4776 uint32_t index, Handle<Object> value); 4776 Handle<Object> value);
4777 4777
4778 DECLARE_CAST(ExternalInt32Array) 4778 DECLARE_CAST(ExternalInt32Array)
4779 4779
4780 // Dispatched behavior. 4780 // Dispatched behavior.
4781 DECLARE_PRINTER(ExternalInt32Array) 4781 DECLARE_PRINTER(ExternalInt32Array)
4782 DECLARE_VERIFIER(ExternalInt32Array) 4782 DECLARE_VERIFIER(ExternalInt32Array)
4783 4783
4784 private: 4784 private:
4785 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalInt32Array); 4785 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalInt32Array);
4786 }; 4786 };
4787 4787
4788 4788
4789 class ExternalUint32Array: public ExternalArray { 4789 class ExternalUint32Array: public ExternalArray {
4790 public: 4790 public:
4791 // Setter and getter. 4791 // Setter and getter.
4792 inline uint32_t get_scalar(int index); 4792 inline uint32_t get_scalar(int index);
4793 static inline Handle<Object> get(Handle<ExternalUint32Array> array, 4793 static inline Handle<Object> get(Handle<ExternalUint32Array> array,
4794 int index); 4794 int index);
4795 inline void set(int index, uint32_t value); 4795 inline void set(int index, uint32_t value);
4796 4796
4797 // This accessor applies the correct conversion from Smi, HeapNumber 4797 // This accessor applies the correct conversion from Smi, HeapNumber
4798 // and undefined. 4798 // and undefined.
4799 static Handle<Object> SetValue(Handle<JSObject> holder, 4799 static Handle<Object> SetValue(Handle<ExternalUint32Array> array,
4800 Handle<ExternalUint32Array> array, 4800 uint32_t index,
4801 uint32_t index, Handle<Object> value); 4801 Handle<Object> value);
4802 4802
4803 DECLARE_CAST(ExternalUint32Array) 4803 DECLARE_CAST(ExternalUint32Array)
4804 4804
4805 // Dispatched behavior. 4805 // Dispatched behavior.
4806 DECLARE_PRINTER(ExternalUint32Array) 4806 DECLARE_PRINTER(ExternalUint32Array)
4807 DECLARE_VERIFIER(ExternalUint32Array) 4807 DECLARE_VERIFIER(ExternalUint32Array)
4808 4808
4809 private: 4809 private:
4810 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUint32Array); 4810 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUint32Array);
4811 }; 4811 };
4812 4812
4813 4813
4814 class ExternalFloat32Array: public ExternalArray { 4814 class ExternalFloat32Array: public ExternalArray {
4815 public: 4815 public:
4816 // Setter and getter. 4816 // Setter and getter.
4817 inline float get_scalar(int index); 4817 inline float get_scalar(int index);
4818 static inline Handle<Object> get(Handle<ExternalFloat32Array> array, 4818 static inline Handle<Object> get(Handle<ExternalFloat32Array> array,
4819 int index); 4819 int index);
4820 inline void set(int index, float value); 4820 inline void set(int index, float value);
4821 4821
4822 // This accessor applies the correct conversion from Smi, HeapNumber 4822 // This accessor applies the correct conversion from Smi, HeapNumber
4823 // and undefined. 4823 // and undefined.
4824 static Handle<Object> SetValue(Handle<JSObject> holder, 4824 static Handle<Object> SetValue(Handle<ExternalFloat32Array> array,
4825 Handle<ExternalFloat32Array> array, 4825 uint32_t index,
4826 uint32_t index, Handle<Object> value); 4826 Handle<Object> value);
4827 4827
4828 DECLARE_CAST(ExternalFloat32Array) 4828 DECLARE_CAST(ExternalFloat32Array)
4829 4829
4830 // Dispatched behavior. 4830 // Dispatched behavior.
4831 DECLARE_PRINTER(ExternalFloat32Array) 4831 DECLARE_PRINTER(ExternalFloat32Array)
4832 DECLARE_VERIFIER(ExternalFloat32Array) 4832 DECLARE_VERIFIER(ExternalFloat32Array)
4833 4833
4834 private: 4834 private:
4835 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalFloat32Array); 4835 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalFloat32Array);
4836 }; 4836 };
4837 4837
4838 4838
4839 class ExternalFloat64Array: public ExternalArray { 4839 class ExternalFloat64Array: public ExternalArray {
4840 public: 4840 public:
4841 // Setter and getter. 4841 // Setter and getter.
4842 inline double get_scalar(int index); 4842 inline double get_scalar(int index);
4843 static inline Handle<Object> get(Handle<ExternalFloat64Array> array, 4843 static inline Handle<Object> get(Handle<ExternalFloat64Array> array,
4844 int index); 4844 int index);
4845 inline void set(int index, double value); 4845 inline void set(int index, double value);
4846 4846
4847 // This accessor applies the correct conversion from Smi, HeapNumber 4847 // This accessor applies the correct conversion from Smi, HeapNumber
4848 // and undefined. 4848 // and undefined.
4849 static Handle<Object> SetValue(Handle<JSObject> holder, 4849 static Handle<Object> SetValue(Handle<ExternalFloat64Array> array,
4850 Handle<ExternalFloat64Array> array, 4850 uint32_t index,
4851 uint32_t index, Handle<Object> value); 4851 Handle<Object> value);
4852 4852
4853 DECLARE_CAST(ExternalFloat64Array) 4853 DECLARE_CAST(ExternalFloat64Array)
4854 4854
4855 // Dispatched behavior. 4855 // Dispatched behavior.
4856 DECLARE_PRINTER(ExternalFloat64Array) 4856 DECLARE_PRINTER(ExternalFloat64Array)
4857 DECLARE_VERIFIER(ExternalFloat64Array) 4857 DECLARE_VERIFIER(ExternalFloat64Array)
4858 4858
4859 private: 4859 private:
4860 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalFloat64Array); 4860 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalFloat64Array);
4861 }; 4861 };
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
4904 4904
4905 inline ElementType get_scalar(int index); 4905 inline ElementType get_scalar(int index);
4906 static inline Handle<Object> get(Handle<FixedTypedArray> array, int index); 4906 static inline Handle<Object> get(Handle<FixedTypedArray> array, int index);
4907 inline void set(int index, ElementType value); 4907 inline void set(int index, ElementType value);
4908 4908
4909 static inline ElementType from_int(int value); 4909 static inline ElementType from_int(int value);
4910 static inline ElementType from_double(double value); 4910 static inline ElementType from_double(double value);
4911 4911
4912 // This accessor applies the correct conversion from Smi, HeapNumber 4912 // This accessor applies the correct conversion from Smi, HeapNumber
4913 // and undefined. 4913 // and undefined.
4914 static Handle<Object> SetValue(Handle<JSObject> holder, 4914 static Handle<Object> SetValue(Handle<FixedTypedArray<Traits> > array,
4915 Handle<FixedTypedArray<Traits> > array, 4915 uint32_t index,
4916 uint32_t index, Handle<Object> value); 4916 Handle<Object> value);
4917 4917
4918 DECLARE_PRINTER(FixedTypedArray) 4918 DECLARE_PRINTER(FixedTypedArray)
4919 DECLARE_VERIFIER(FixedTypedArray) 4919 DECLARE_VERIFIER(FixedTypedArray)
4920 4920
4921 private: 4921 private:
4922 DISALLOW_IMPLICIT_CONSTRUCTORS(FixedTypedArray); 4922 DISALLOW_IMPLICIT_CONSTRUCTORS(FixedTypedArray);
4923 }; 4923 };
4924 4924
4925 #define FIXED_TYPED_ARRAY_TRAITS(Type, type, TYPE, elementType, size) \ 4925 #define FIXED_TYPED_ARRAY_TRAITS(Type, type, TYPE, elementType, size) \
4926 class Type##ArrayTraits { \ 4926 class Type##ArrayTraits { \
(...skipping 5300 matching lines...) Expand 10 before | Expand all | Expand 10 after
10227 10227
10228 inline bool is_external(); 10228 inline bool is_external();
10229 inline void set_is_external(bool value); 10229 inline void set_is_external(bool value);
10230 10230
10231 inline bool should_be_freed(); 10231 inline bool should_be_freed();
10232 inline void set_should_be_freed(bool value); 10232 inline void set_should_be_freed(bool value);
10233 10233
10234 inline bool is_neuterable(); 10234 inline bool is_neuterable();
10235 inline void set_is_neuterable(bool value); 10235 inline void set_is_neuterable(bool value);
10236 10236
10237 inline bool was_neutered();
10238 inline void set_was_neutered(bool value);
10239
10240 // [weak_next]: linked list of array buffers. 10237 // [weak_next]: linked list of array buffers.
10241 DECL_ACCESSORS(weak_next, Object) 10238 DECL_ACCESSORS(weak_next, Object)
10242 10239
10240 // [weak_first_array]: weak linked list of views.
10241 DECL_ACCESSORS(weak_first_view, Object)
10242
10243 DECLARE_CAST(JSArrayBuffer) 10243 DECLARE_CAST(JSArrayBuffer)
10244 10244
10245 // Neutering. Only neuters the buffer, not associated typed arrays.
10245 void Neuter(); 10246 void Neuter();
10246 10247
10247 // Dispatched behavior. 10248 // Dispatched behavior.
10248 DECLARE_PRINTER(JSArrayBuffer) 10249 DECLARE_PRINTER(JSArrayBuffer)
10249 DECLARE_VERIFIER(JSArrayBuffer) 10250 DECLARE_VERIFIER(JSArrayBuffer)
10250 10251
10251 static const int kBackingStoreOffset = JSObject::kHeaderSize; 10252 static const int kBackingStoreOffset = JSObject::kHeaderSize;
10252 static const int kByteLengthOffset = kBackingStoreOffset + kPointerSize; 10253 static const int kByteLengthOffset = kBackingStoreOffset + kPointerSize;
10253 static const int kFlagOffset = kByteLengthOffset + kPointerSize; 10254 static const int kFlagOffset = kByteLengthOffset + kPointerSize;
10254 static const int kWeakNextOffset = kFlagOffset + kPointerSize; 10255 static const int kWeakNextOffset = kFlagOffset + kPointerSize;
10255 static const int kSize = kWeakNextOffset + kPointerSize; 10256 static const int kWeakFirstViewOffset = kWeakNextOffset + kPointerSize;
10257 static const int kSize = kWeakFirstViewOffset + kPointerSize;
10256 10258
10257 static const int kSizeWithInternalFields = 10259 static const int kSizeWithInternalFields =
10258 kSize + v8::ArrayBuffer::kInternalFieldCount * kPointerSize; 10260 kSize + v8::ArrayBuffer::kInternalFieldCount * kPointerSize;
10259 10261
10262 private:
10260 // Bit position in a flag 10263 // Bit position in a flag
10261 static const int kIsExternalBit = 0; 10264 static const int kIsExternalBit = 0;
10262 static const int kShouldBeFreed = 1; 10265 static const int kShouldBeFreed = 1;
10263 static const int kIsNeuterableBit = 2; 10266 static const int kIsNeuterableBit = 2;
10264 static const int kWasNeuteredBit = 3;
10265 10267
10266 private:
10267 DISALLOW_IMPLICIT_CONSTRUCTORS(JSArrayBuffer); 10268 DISALLOW_IMPLICIT_CONSTRUCTORS(JSArrayBuffer);
10268 }; 10269 };
10269 10270
10270 10271
10271 class JSArrayBufferView: public JSObject { 10272 class JSArrayBufferView: public JSObject {
10272 public: 10273 public:
10273 // [buffer]: ArrayBuffer that this typed array views. 10274 // [buffer]: ArrayBuffer that this typed array views.
10274 DECL_ACCESSORS(buffer, Object) 10275 DECL_ACCESSORS(buffer, Object)
10275 10276
10276 // [byte_length]: offset of typed array in bytes. 10277 // [byte_length]: offset of typed array in bytes.
10277 DECL_ACCESSORS(byte_offset, Object) 10278 DECL_ACCESSORS(byte_offset, Object)
10278 10279
10279 // [byte_length]: length of typed array in bytes. 10280 // [byte_length]: length of typed array in bytes.
10280 DECL_ACCESSORS(byte_length, Object) 10281 DECL_ACCESSORS(byte_length, Object)
10281 10282
10283 // [weak_next]: linked list of typed arrays over the same array buffer.
10284 DECL_ACCESSORS(weak_next, Object)
10285
10282 DECLARE_CAST(JSArrayBufferView) 10286 DECLARE_CAST(JSArrayBufferView)
10283 10287
10284 DECLARE_VERIFIER(JSArrayBufferView) 10288 DECLARE_VERIFIER(JSArrayBufferView)
10285 10289
10286 inline bool WasNeutered() const;
10287
10288 static const int kBufferOffset = JSObject::kHeaderSize; 10290 static const int kBufferOffset = JSObject::kHeaderSize;
10289 static const int kByteOffsetOffset = kBufferOffset + kPointerSize; 10291 static const int kByteOffsetOffset = kBufferOffset + kPointerSize;
10290 static const int kByteLengthOffset = kByteOffsetOffset + kPointerSize; 10292 static const int kByteLengthOffset = kByteOffsetOffset + kPointerSize;
10291 static const int kViewSize = kByteLengthOffset + kPointerSize; 10293 static const int kWeakNextOffset = kByteLengthOffset + kPointerSize;
10294 static const int kViewSize = kWeakNextOffset + kPointerSize;
10295
10296 protected:
10297 void NeuterView();
10292 10298
10293 private: 10299 private:
10294 #ifdef VERIFY_HEAP
10295 DECL_ACCESSORS(raw_byte_offset, Object)
10296 DECL_ACCESSORS(raw_byte_length, Object)
10297 #endif
10298
10299 DISALLOW_IMPLICIT_CONSTRUCTORS(JSArrayBufferView); 10300 DISALLOW_IMPLICIT_CONSTRUCTORS(JSArrayBufferView);
10300 }; 10301 };
10301 10302
10302 10303
10303 class JSTypedArray: public JSArrayBufferView { 10304 class JSTypedArray: public JSArrayBufferView {
10304 public: 10305 public:
10305 // [length]: length of typed array in elements. 10306 // [length]: length of typed array in elements.
10306 DECL_ACCESSORS(length, Object) 10307 DECL_ACCESSORS(length, Object)
10307 10308
10309 // Neutering. Only neuters this typed array.
10310 void Neuter();
10311
10308 DECLARE_CAST(JSTypedArray) 10312 DECLARE_CAST(JSTypedArray)
10309 10313
10310 ExternalArrayType type(); 10314 ExternalArrayType type();
10311 size_t element_size(); 10315 size_t element_size();
10312 10316
10313 Handle<JSArrayBuffer> GetBuffer(); 10317 Handle<JSArrayBuffer> GetBuffer();
10314 10318
10315 // Dispatched behavior. 10319 // Dispatched behavior.
10316 DECLARE_PRINTER(JSTypedArray) 10320 DECLARE_PRINTER(JSTypedArray)
10317 DECLARE_VERIFIER(JSTypedArray) 10321 DECLARE_VERIFIER(JSTypedArray)
10318 10322
10319 static const int kLengthOffset = kViewSize + kPointerSize; 10323 static const int kLengthOffset = kViewSize + kPointerSize;
10320 static const int kSize = kLengthOffset + kPointerSize; 10324 static const int kSize = kLengthOffset + kPointerSize;
10321 10325
10322 static const int kSizeWithInternalFields = 10326 static const int kSizeWithInternalFields =
10323 kSize + v8::ArrayBufferView::kInternalFieldCount * kPointerSize; 10327 kSize + v8::ArrayBufferView::kInternalFieldCount * kPointerSize;
10324 10328
10325 private: 10329 private:
10326 static Handle<JSArrayBuffer> MaterializeArrayBuffer( 10330 static Handle<JSArrayBuffer> MaterializeArrayBuffer(
10327 Handle<JSTypedArray> typed_array); 10331 Handle<JSTypedArray> typed_array);
10328 #ifdef VERIFY_HEAP
10329 DECL_ACCESSORS(raw_length, Object)
10330 #endif
10331 10332
10332 DISALLOW_IMPLICIT_CONSTRUCTORS(JSTypedArray); 10333 DISALLOW_IMPLICIT_CONSTRUCTORS(JSTypedArray);
10333 }; 10334 };
10334 10335
10335 10336
10336 class JSDataView: public JSArrayBufferView { 10337 class JSDataView: public JSArrayBufferView {
10337 public: 10338 public:
10339 // Only neuters this DataView
10340 void Neuter();
10341
10338 DECLARE_CAST(JSDataView) 10342 DECLARE_CAST(JSDataView)
10339 10343
10340 // Dispatched behavior. 10344 // Dispatched behavior.
10341 DECLARE_PRINTER(JSDataView) 10345 DECLARE_PRINTER(JSDataView)
10342 DECLARE_VERIFIER(JSDataView) 10346 DECLARE_VERIFIER(JSDataView)
10343 10347
10344 static const int kSize = kViewSize; 10348 static const int kSize = kViewSize;
10345 10349
10346 static const int kSizeWithInternalFields = 10350 static const int kSizeWithInternalFields =
10347 kSize + v8::ArrayBufferView::kInternalFieldCount * kPointerSize; 10351 kSize + v8::ArrayBufferView::kInternalFieldCount * kPointerSize;
(...skipping 735 matching lines...) Expand 10 before | Expand all | Expand 10 after
11083 } else { 11087 } else {
11084 value &= ~(1 << bit_position); 11088 value &= ~(1 << bit_position);
11085 } 11089 }
11086 return value; 11090 return value;
11087 } 11091 }
11088 }; 11092 };
11089 11093
11090 } } // namespace v8::internal 11094 } } // namespace v8::internal
11091 11095
11092 #endif // V8_OBJECTS_H_ 11096 #endif // V8_OBJECTS_H_
OLDNEW
« no previous file with comments | « src/hydrogen-instructions.h ('k') | src/objects.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698