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

Side by Side Diff: src/objects.h

Issue 1094863002: 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
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 4612 matching lines...) Expand 10 before | Expand all | Expand 10 after
4623 inline uint8_t* external_uint8_clamped_pointer(); 4623 inline uint8_t* external_uint8_clamped_pointer();
4624 4624
4625 // Setter and getter. 4625 // Setter and getter.
4626 inline uint8_t get_scalar(int index); 4626 inline uint8_t get_scalar(int index);
4627 static inline Handle<Object> get(Handle<ExternalUint8ClampedArray> array, 4627 static inline Handle<Object> get(Handle<ExternalUint8ClampedArray> array,
4628 int index); 4628 int index);
4629 inline void set(int index, uint8_t value); 4629 inline void set(int index, uint8_t value);
4630 4630
4631 // This accessor applies the correct conversion from Smi, HeapNumber 4631 // This accessor applies the correct conversion from Smi, HeapNumber
4632 // and undefined and clamps the converted value between 0 and 255. 4632 // and undefined and clamps the converted value between 0 and 255.
4633 static Handle<Object> SetValue(Handle<ExternalUint8ClampedArray> array, 4633 static Handle<Object> SetValue(Handle<JSObject> holder,
4634 uint32_t index, 4634 Handle<ExternalUint8ClampedArray> array,
4635 Handle<Object> value); 4635 uint32_t index, Handle<Object> value);
4636 4636
4637 DECLARE_CAST(ExternalUint8ClampedArray) 4637 DECLARE_CAST(ExternalUint8ClampedArray)
4638 4638
4639 // Dispatched behavior. 4639 // Dispatched behavior.
4640 DECLARE_PRINTER(ExternalUint8ClampedArray) 4640 DECLARE_PRINTER(ExternalUint8ClampedArray)
4641 DECLARE_VERIFIER(ExternalUint8ClampedArray) 4641 DECLARE_VERIFIER(ExternalUint8ClampedArray)
4642 4642
4643 private: 4643 private:
4644 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUint8ClampedArray); 4644 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUint8ClampedArray);
4645 }; 4645 };
4646 4646
4647 4647
4648 class ExternalInt8Array: public ExternalArray { 4648 class ExternalInt8Array: public ExternalArray {
4649 public: 4649 public:
4650 // Setter and getter. 4650 // Setter and getter.
4651 inline int8_t get_scalar(int index); 4651 inline int8_t get_scalar(int index);
4652 static inline Handle<Object> get(Handle<ExternalInt8Array> array, int index); 4652 static inline Handle<Object> get(Handle<ExternalInt8Array> array, int index);
4653 inline void set(int index, int8_t value); 4653 inline void set(int index, int8_t value);
4654 4654
4655 // This accessor applies the correct conversion from Smi, HeapNumber 4655 // This accessor applies the correct conversion from Smi, HeapNumber
4656 // and undefined. 4656 // and undefined.
4657 static Handle<Object> SetValue(Handle<ExternalInt8Array> array, 4657 static Handle<Object> SetValue(Handle<JSObject> holder,
4658 uint32_t index, 4658 Handle<ExternalInt8Array> array,
4659 Handle<Object> value); 4659 uint32_t index, Handle<Object> value);
4660 4660
4661 DECLARE_CAST(ExternalInt8Array) 4661 DECLARE_CAST(ExternalInt8Array)
4662 4662
4663 // Dispatched behavior. 4663 // Dispatched behavior.
4664 DECLARE_PRINTER(ExternalInt8Array) 4664 DECLARE_PRINTER(ExternalInt8Array)
4665 DECLARE_VERIFIER(ExternalInt8Array) 4665 DECLARE_VERIFIER(ExternalInt8Array)
4666 4666
4667 private: 4667 private:
4668 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalInt8Array); 4668 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalInt8Array);
4669 }; 4669 };
4670 4670
4671 4671
4672 class ExternalUint8Array: public ExternalArray { 4672 class ExternalUint8Array: public ExternalArray {
4673 public: 4673 public:
4674 // Setter and getter. 4674 // Setter and getter.
4675 inline uint8_t get_scalar(int index); 4675 inline uint8_t get_scalar(int index);
4676 static inline Handle<Object> get(Handle<ExternalUint8Array> array, int index); 4676 static inline Handle<Object> get(Handle<ExternalUint8Array> array, int index);
4677 inline void set(int index, uint8_t value); 4677 inline void set(int index, uint8_t value);
4678 4678
4679 // This accessor applies the correct conversion from Smi, HeapNumber 4679 // This accessor applies the correct conversion from Smi, HeapNumber
4680 // and undefined. 4680 // and undefined.
4681 static Handle<Object> SetValue(Handle<ExternalUint8Array> array, 4681 static Handle<Object> SetValue(Handle<JSObject> holder,
4682 uint32_t index, 4682 Handle<ExternalUint8Array> array,
4683 Handle<Object> value); 4683 uint32_t index, Handle<Object> value);
4684 4684
4685 DECLARE_CAST(ExternalUint8Array) 4685 DECLARE_CAST(ExternalUint8Array)
4686 4686
4687 // Dispatched behavior. 4687 // Dispatched behavior.
4688 DECLARE_PRINTER(ExternalUint8Array) 4688 DECLARE_PRINTER(ExternalUint8Array)
4689 DECLARE_VERIFIER(ExternalUint8Array) 4689 DECLARE_VERIFIER(ExternalUint8Array)
4690 4690
4691 private: 4691 private:
4692 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUint8Array); 4692 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUint8Array);
4693 }; 4693 };
4694 4694
4695 4695
4696 class ExternalInt16Array: public ExternalArray { 4696 class ExternalInt16Array: public ExternalArray {
4697 public: 4697 public:
4698 // Setter and getter. 4698 // Setter and getter.
4699 inline int16_t get_scalar(int index); 4699 inline int16_t get_scalar(int index);
4700 static inline Handle<Object> get(Handle<ExternalInt16Array> array, int index); 4700 static inline Handle<Object> get(Handle<ExternalInt16Array> array, int index);
4701 inline void set(int index, int16_t value); 4701 inline void set(int index, int16_t value);
4702 4702
4703 // This accessor applies the correct conversion from Smi, HeapNumber 4703 // This accessor applies the correct conversion from Smi, HeapNumber
4704 // and undefined. 4704 // and undefined.
4705 static Handle<Object> SetValue(Handle<ExternalInt16Array> array, 4705 static Handle<Object> SetValue(Handle<JSObject> holder,
4706 uint32_t index, 4706 Handle<ExternalInt16Array> array,
4707 Handle<Object> value); 4707 uint32_t index, Handle<Object> value);
4708 4708
4709 DECLARE_CAST(ExternalInt16Array) 4709 DECLARE_CAST(ExternalInt16Array)
4710 4710
4711 // Dispatched behavior. 4711 // Dispatched behavior.
4712 DECLARE_PRINTER(ExternalInt16Array) 4712 DECLARE_PRINTER(ExternalInt16Array)
4713 DECLARE_VERIFIER(ExternalInt16Array) 4713 DECLARE_VERIFIER(ExternalInt16Array)
4714 4714
4715 private: 4715 private:
4716 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalInt16Array); 4716 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalInt16Array);
4717 }; 4717 };
4718 4718
4719 4719
4720 class ExternalUint16Array: public ExternalArray { 4720 class ExternalUint16Array: public ExternalArray {
4721 public: 4721 public:
4722 // Setter and getter. 4722 // Setter and getter.
4723 inline uint16_t get_scalar(int index); 4723 inline uint16_t get_scalar(int index);
4724 static inline Handle<Object> get(Handle<ExternalUint16Array> array, 4724 static inline Handle<Object> get(Handle<ExternalUint16Array> array,
4725 int index); 4725 int index);
4726 inline void set(int index, uint16_t value); 4726 inline void set(int index, uint16_t value);
4727 4727
4728 // This accessor applies the correct conversion from Smi, HeapNumber 4728 // This accessor applies the correct conversion from Smi, HeapNumber
4729 // and undefined. 4729 // and undefined.
4730 static Handle<Object> SetValue(Handle<ExternalUint16Array> array, 4730 static Handle<Object> SetValue(Handle<JSObject> holder,
4731 uint32_t index, 4731 Handle<ExternalUint16Array> array,
4732 Handle<Object> value); 4732 uint32_t index, Handle<Object> value);
4733 4733
4734 DECLARE_CAST(ExternalUint16Array) 4734 DECLARE_CAST(ExternalUint16Array)
4735 4735
4736 // Dispatched behavior. 4736 // Dispatched behavior.
4737 DECLARE_PRINTER(ExternalUint16Array) 4737 DECLARE_PRINTER(ExternalUint16Array)
4738 DECLARE_VERIFIER(ExternalUint16Array) 4738 DECLARE_VERIFIER(ExternalUint16Array)
4739 4739
4740 private: 4740 private:
4741 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUint16Array); 4741 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUint16Array);
4742 }; 4742 };
4743 4743
4744 4744
4745 class ExternalInt32Array: public ExternalArray { 4745 class ExternalInt32Array: public ExternalArray {
4746 public: 4746 public:
4747 // Setter and getter. 4747 // Setter and getter.
4748 inline int32_t get_scalar(int index); 4748 inline int32_t get_scalar(int index);
4749 static inline Handle<Object> get(Handle<ExternalInt32Array> array, int index); 4749 static inline Handle<Object> get(Handle<ExternalInt32Array> array, int index);
4750 inline void set(int index, int32_t value); 4750 inline void set(int index, int32_t value);
4751 4751
4752 // This accessor applies the correct conversion from Smi, HeapNumber 4752 // This accessor applies the correct conversion from Smi, HeapNumber
4753 // and undefined. 4753 // and undefined.
4754 static Handle<Object> SetValue(Handle<ExternalInt32Array> array, 4754 static Handle<Object> SetValue(Handle<JSObject> holder,
4755 uint32_t index, 4755 Handle<ExternalInt32Array> array,
4756 Handle<Object> value); 4756 uint32_t index, Handle<Object> value);
4757 4757
4758 DECLARE_CAST(ExternalInt32Array) 4758 DECLARE_CAST(ExternalInt32Array)
4759 4759
4760 // Dispatched behavior. 4760 // Dispatched behavior.
4761 DECLARE_PRINTER(ExternalInt32Array) 4761 DECLARE_PRINTER(ExternalInt32Array)
4762 DECLARE_VERIFIER(ExternalInt32Array) 4762 DECLARE_VERIFIER(ExternalInt32Array)
4763 4763
4764 private: 4764 private:
4765 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalInt32Array); 4765 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalInt32Array);
4766 }; 4766 };
4767 4767
4768 4768
4769 class ExternalUint32Array: public ExternalArray { 4769 class ExternalUint32Array: public ExternalArray {
4770 public: 4770 public:
4771 // Setter and getter. 4771 // Setter and getter.
4772 inline uint32_t get_scalar(int index); 4772 inline uint32_t get_scalar(int index);
4773 static inline Handle<Object> get(Handle<ExternalUint32Array> array, 4773 static inline Handle<Object> get(Handle<ExternalUint32Array> array,
4774 int index); 4774 int index);
4775 inline void set(int index, uint32_t value); 4775 inline void set(int index, uint32_t value);
4776 4776
4777 // This accessor applies the correct conversion from Smi, HeapNumber 4777 // This accessor applies the correct conversion from Smi, HeapNumber
4778 // and undefined. 4778 // and undefined.
4779 static Handle<Object> SetValue(Handle<ExternalUint32Array> array, 4779 static Handle<Object> SetValue(Handle<JSObject> holder,
4780 uint32_t index, 4780 Handle<ExternalUint32Array> array,
4781 Handle<Object> value); 4781 uint32_t index, Handle<Object> value);
4782 4782
4783 DECLARE_CAST(ExternalUint32Array) 4783 DECLARE_CAST(ExternalUint32Array)
4784 4784
4785 // Dispatched behavior. 4785 // Dispatched behavior.
4786 DECLARE_PRINTER(ExternalUint32Array) 4786 DECLARE_PRINTER(ExternalUint32Array)
4787 DECLARE_VERIFIER(ExternalUint32Array) 4787 DECLARE_VERIFIER(ExternalUint32Array)
4788 4788
4789 private: 4789 private:
4790 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUint32Array); 4790 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalUint32Array);
4791 }; 4791 };
4792 4792
4793 4793
4794 class ExternalFloat32Array: public ExternalArray { 4794 class ExternalFloat32Array: public ExternalArray {
4795 public: 4795 public:
4796 // Setter and getter. 4796 // Setter and getter.
4797 inline float get_scalar(int index); 4797 inline float get_scalar(int index);
4798 static inline Handle<Object> get(Handle<ExternalFloat32Array> array, 4798 static inline Handle<Object> get(Handle<ExternalFloat32Array> array,
4799 int index); 4799 int index);
4800 inline void set(int index, float value); 4800 inline void set(int index, float value);
4801 4801
4802 // This accessor applies the correct conversion from Smi, HeapNumber 4802 // This accessor applies the correct conversion from Smi, HeapNumber
4803 // and undefined. 4803 // and undefined.
4804 static Handle<Object> SetValue(Handle<ExternalFloat32Array> array, 4804 static Handle<Object> SetValue(Handle<JSObject> holder,
4805 uint32_t index, 4805 Handle<ExternalFloat32Array> array,
4806 Handle<Object> value); 4806 uint32_t index, Handle<Object> value);
4807 4807
4808 DECLARE_CAST(ExternalFloat32Array) 4808 DECLARE_CAST(ExternalFloat32Array)
4809 4809
4810 // Dispatched behavior. 4810 // Dispatched behavior.
4811 DECLARE_PRINTER(ExternalFloat32Array) 4811 DECLARE_PRINTER(ExternalFloat32Array)
4812 DECLARE_VERIFIER(ExternalFloat32Array) 4812 DECLARE_VERIFIER(ExternalFloat32Array)
4813 4813
4814 private: 4814 private:
4815 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalFloat32Array); 4815 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalFloat32Array);
4816 }; 4816 };
4817 4817
4818 4818
4819 class ExternalFloat64Array: public ExternalArray { 4819 class ExternalFloat64Array: public ExternalArray {
4820 public: 4820 public:
4821 // Setter and getter. 4821 // Setter and getter.
4822 inline double get_scalar(int index); 4822 inline double get_scalar(int index);
4823 static inline Handle<Object> get(Handle<ExternalFloat64Array> array, 4823 static inline Handle<Object> get(Handle<ExternalFloat64Array> array,
4824 int index); 4824 int index);
4825 inline void set(int index, double value); 4825 inline void set(int index, double value);
4826 4826
4827 // This accessor applies the correct conversion from Smi, HeapNumber 4827 // This accessor applies the correct conversion from Smi, HeapNumber
4828 // and undefined. 4828 // and undefined.
4829 static Handle<Object> SetValue(Handle<ExternalFloat64Array> array, 4829 static Handle<Object> SetValue(Handle<JSObject> holder,
4830 uint32_t index, 4830 Handle<ExternalFloat64Array> array,
4831 Handle<Object> value); 4831 uint32_t index, Handle<Object> value);
4832 4832
4833 DECLARE_CAST(ExternalFloat64Array) 4833 DECLARE_CAST(ExternalFloat64Array)
4834 4834
4835 // Dispatched behavior. 4835 // Dispatched behavior.
4836 DECLARE_PRINTER(ExternalFloat64Array) 4836 DECLARE_PRINTER(ExternalFloat64Array)
4837 DECLARE_VERIFIER(ExternalFloat64Array) 4837 DECLARE_VERIFIER(ExternalFloat64Array)
4838 4838
4839 private: 4839 private:
4840 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalFloat64Array); 4840 DISALLOW_IMPLICIT_CONSTRUCTORS(ExternalFloat64Array);
4841 }; 4841 };
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
4884 4884
4885 inline ElementType get_scalar(int index); 4885 inline ElementType get_scalar(int index);
4886 static inline Handle<Object> get(Handle<FixedTypedArray> array, int index); 4886 static inline Handle<Object> get(Handle<FixedTypedArray> array, int index);
4887 inline void set(int index, ElementType value); 4887 inline void set(int index, ElementType value);
4888 4888
4889 static inline ElementType from_int(int value); 4889 static inline ElementType from_int(int value);
4890 static inline ElementType from_double(double value); 4890 static inline ElementType from_double(double value);
4891 4891
4892 // This accessor applies the correct conversion from Smi, HeapNumber 4892 // This accessor applies the correct conversion from Smi, HeapNumber
4893 // and undefined. 4893 // and undefined.
4894 static Handle<Object> SetValue(Handle<FixedTypedArray<Traits> > array, 4894 static Handle<Object> SetValue(Handle<JSObject> holder,
4895 uint32_t index, 4895 Handle<FixedTypedArray<Traits> > array,
4896 Handle<Object> value); 4896 uint32_t index, Handle<Object> value);
4897 4897
4898 DECLARE_PRINTER(FixedTypedArray) 4898 DECLARE_PRINTER(FixedTypedArray)
4899 DECLARE_VERIFIER(FixedTypedArray) 4899 DECLARE_VERIFIER(FixedTypedArray)
4900 4900
4901 private: 4901 private:
4902 DISALLOW_IMPLICIT_CONSTRUCTORS(FixedTypedArray); 4902 DISALLOW_IMPLICIT_CONSTRUCTORS(FixedTypedArray);
4903 }; 4903 };
4904 4904
4905 #define FIXED_TYPED_ARRAY_TRAITS(Type, type, TYPE, elementType, size) \ 4905 #define FIXED_TYPED_ARRAY_TRAITS(Type, type, TYPE, elementType, size) \
4906 class Type##ArrayTraits { \ 4906 class Type##ArrayTraits { \
(...skipping 5302 matching lines...) Expand 10 before | Expand all | Expand 10 after
10209 10209
10210 inline bool is_external(); 10210 inline bool is_external();
10211 inline void set_is_external(bool value); 10211 inline void set_is_external(bool value);
10212 10212
10213 inline bool should_be_freed(); 10213 inline bool should_be_freed();
10214 inline void set_should_be_freed(bool value); 10214 inline void set_should_be_freed(bool value);
10215 10215
10216 inline bool is_neuterable(); 10216 inline bool is_neuterable();
10217 inline void set_is_neuterable(bool value); 10217 inline void set_is_neuterable(bool value);
10218 10218
10219 inline bool was_neutered();
10220 inline void set_was_neutered(bool value);
10221
10219 // [weak_next]: linked list of array buffers. 10222 // [weak_next]: linked list of array buffers.
10220 DECL_ACCESSORS(weak_next, Object) 10223 DECL_ACCESSORS(weak_next, Object)
10221 10224
10222 // [weak_first_array]: weak linked list of views.
10223 DECL_ACCESSORS(weak_first_view, Object)
10224
10225 DECLARE_CAST(JSArrayBuffer) 10225 DECLARE_CAST(JSArrayBuffer)
10226 10226
10227 // Neutering. Only neuters the buffer, not associated typed arrays.
10228 void Neuter(); 10227 void Neuter();
10229 10228
10230 // Dispatched behavior. 10229 // Dispatched behavior.
10231 DECLARE_PRINTER(JSArrayBuffer) 10230 DECLARE_PRINTER(JSArrayBuffer)
10232 DECLARE_VERIFIER(JSArrayBuffer) 10231 DECLARE_VERIFIER(JSArrayBuffer)
10233 10232
10234 static const int kBackingStoreOffset = JSObject::kHeaderSize; 10233 static const int kBackingStoreOffset = JSObject::kHeaderSize;
10235 static const int kByteLengthOffset = kBackingStoreOffset + kPointerSize; 10234 static const int kByteLengthOffset = kBackingStoreOffset + kPointerSize;
10236 static const int kFlagOffset = kByteLengthOffset + kPointerSize; 10235 static const int kFlagOffset = kByteLengthOffset + kPointerSize;
10237 static const int kWeakNextOffset = kFlagOffset + kPointerSize; 10236 static const int kWeakNextOffset = kFlagOffset + kPointerSize;
10238 static const int kWeakFirstViewOffset = kWeakNextOffset + kPointerSize; 10237 static const int kSize = kWeakNextOffset + kPointerSize;
10239 static const int kSize = kWeakFirstViewOffset + kPointerSize;
10240 10238
10241 static const int kSizeWithInternalFields = 10239 static const int kSizeWithInternalFields =
10242 kSize + v8::ArrayBuffer::kInternalFieldCount * kPointerSize; 10240 kSize + v8::ArrayBuffer::kInternalFieldCount * kPointerSize;
10243 10241
10244 private:
10245 // Bit position in a flag 10242 // Bit position in a flag
10246 static const int kIsExternalBit = 0; 10243 static const int kIsExternalBit = 0;
10247 static const int kShouldBeFreed = 1; 10244 static const int kShouldBeFreed = 1;
10248 static const int kIsNeuterableBit = 2; 10245 static const int kIsNeuterableBit = 2;
10246 static const int kWasNeuteredBit = 3;
10249 10247
10248 private:
10250 DISALLOW_IMPLICIT_CONSTRUCTORS(JSArrayBuffer); 10249 DISALLOW_IMPLICIT_CONSTRUCTORS(JSArrayBuffer);
10251 }; 10250 };
10252 10251
10253 10252
10254 class JSArrayBufferView: public JSObject { 10253 class JSArrayBufferView: public JSObject {
10255 public: 10254 public:
10256 // [buffer]: ArrayBuffer that this typed array views. 10255 // [buffer]: ArrayBuffer that this typed array views.
10257 DECL_ACCESSORS(buffer, Object) 10256 DECL_ACCESSORS(buffer, Object)
10258 10257
10259 // [byte_length]: offset of typed array in bytes. 10258 // [byte_length]: offset of typed array in bytes.
10260 DECL_ACCESSORS(byte_offset, Object) 10259 DECL_ACCESSORS(byte_offset, Object)
10261 10260
10262 // [byte_length]: length of typed array in bytes. 10261 // [byte_length]: length of typed array in bytes.
10263 DECL_ACCESSORS(byte_length, Object) 10262 DECL_ACCESSORS(byte_length, Object)
10264 10263
10265 // [weak_next]: linked list of typed arrays over the same array buffer.
10266 DECL_ACCESSORS(weak_next, Object)
10267
10268 DECLARE_CAST(JSArrayBufferView) 10264 DECLARE_CAST(JSArrayBufferView)
10269 10265
10270 DECLARE_VERIFIER(JSArrayBufferView) 10266 DECLARE_VERIFIER(JSArrayBufferView)
10271 10267
10272 static const int kBufferOffset = JSObject::kHeaderSize; 10268 static const int kBufferOffset = JSObject::kHeaderSize;
10273 static const int kByteOffsetOffset = kBufferOffset + kPointerSize; 10269 static const int kByteOffsetOffset = kBufferOffset + kPointerSize;
10274 static const int kByteLengthOffset = kByteOffsetOffset + kPointerSize; 10270 static const int kByteLengthOffset = kByteOffsetOffset + kPointerSize;
10275 static const int kWeakNextOffset = kByteLengthOffset + kPointerSize; 10271 static const int kViewSize = kByteLengthOffset + kPointerSize;
10276 static const int kViewSize = kWeakNextOffset + kPointerSize;
10277
10278 protected:
10279 void NeuterView();
10280 10272
10281 private: 10273 private:
10282 DISALLOW_IMPLICIT_CONSTRUCTORS(JSArrayBufferView); 10274 DISALLOW_IMPLICIT_CONSTRUCTORS(JSArrayBufferView);
10283 }; 10275 };
10284 10276
10285 10277
10286 class JSTypedArray: public JSArrayBufferView { 10278 class JSTypedArray: public JSArrayBufferView {
10287 public: 10279 public:
10288 // [length]: length of typed array in elements. 10280 // [length]: length of typed array in elements.
10289 DECL_ACCESSORS(length, Object) 10281 DECL_ACCESSORS(length, Object)
10290 10282
10291 // Neutering. Only neuters this typed array.
10292 void Neuter();
10293
10294 DECLARE_CAST(JSTypedArray) 10283 DECLARE_CAST(JSTypedArray)
10295 10284
10296 ExternalArrayType type(); 10285 ExternalArrayType type();
10297 size_t element_size(); 10286 size_t element_size();
10298 10287
10299 Handle<JSArrayBuffer> GetBuffer(); 10288 Handle<JSArrayBuffer> GetBuffer();
10300 10289
10301 // Dispatched behavior. 10290 // Dispatched behavior.
10302 DECLARE_PRINTER(JSTypedArray) 10291 DECLARE_PRINTER(JSTypedArray)
10303 DECLARE_VERIFIER(JSTypedArray) 10292 DECLARE_VERIFIER(JSTypedArray)
10304 10293
10305 static const int kLengthOffset = kViewSize + kPointerSize; 10294 static const int kLengthOffset = kViewSize + kPointerSize;
10306 static const int kSize = kLengthOffset + kPointerSize; 10295 static const int kSize = kLengthOffset + kPointerSize;
10307 10296
10308 static const int kSizeWithInternalFields = 10297 static const int kSizeWithInternalFields =
10309 kSize + v8::ArrayBufferView::kInternalFieldCount * kPointerSize; 10298 kSize + v8::ArrayBufferView::kInternalFieldCount * kPointerSize;
10310 10299
10311 private: 10300 private:
10312 static Handle<JSArrayBuffer> MaterializeArrayBuffer( 10301 static Handle<JSArrayBuffer> MaterializeArrayBuffer(
10313 Handle<JSTypedArray> typed_array); 10302 Handle<JSTypedArray> typed_array);
10314 10303
10315 DISALLOW_IMPLICIT_CONSTRUCTORS(JSTypedArray); 10304 DISALLOW_IMPLICIT_CONSTRUCTORS(JSTypedArray);
10316 }; 10305 };
10317 10306
10318 10307
10319 class JSDataView: public JSArrayBufferView { 10308 class JSDataView: public JSArrayBufferView {
10320 public: 10309 public:
10321 // Only neuters this DataView
10322 void Neuter();
10323
10324 DECLARE_CAST(JSDataView) 10310 DECLARE_CAST(JSDataView)
10325 10311
10326 // Dispatched behavior. 10312 // Dispatched behavior.
10327 DECLARE_PRINTER(JSDataView) 10313 DECLARE_PRINTER(JSDataView)
10328 DECLARE_VERIFIER(JSDataView) 10314 DECLARE_VERIFIER(JSDataView)
10329 10315
10330 static const int kSize = kViewSize; 10316 static const int kSize = kViewSize;
10331 10317
10332 static const int kSizeWithInternalFields = 10318 static const int kSizeWithInternalFields =
10333 kSize + v8::ArrayBufferView::kInternalFieldCount * kPointerSize; 10319 kSize + v8::ArrayBufferView::kInternalFieldCount * kPointerSize;
(...skipping 735 matching lines...) Expand 10 before | Expand all | Expand 10 after
11069 } else { 11055 } else {
11070 value &= ~(1 << bit_position); 11056 value &= ~(1 << bit_position);
11071 } 11057 }
11072 return value; 11058 return value;
11073 } 11059 }
11074 }; 11060 };
11075 11061
11076 } } // namespace v8::internal 11062 } } // namespace v8::internal
11077 11063
11078 #endif // V8_OBJECTS_H_ 11064 #endif // V8_OBJECTS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698