Chromium Code Reviews| 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 426 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 437 V(JS_CONTEXT_EXTENSION_OBJECT_TYPE) \ | 437 V(JS_CONTEXT_EXTENSION_OBJECT_TYPE) \ |
| 438 V(JS_GENERATOR_OBJECT_TYPE) \ | 438 V(JS_GENERATOR_OBJECT_TYPE) \ |
| 439 V(JS_MODULE_TYPE) \ | 439 V(JS_MODULE_TYPE) \ |
| 440 V(JS_GLOBAL_OBJECT_TYPE) \ | 440 V(JS_GLOBAL_OBJECT_TYPE) \ |
| 441 V(JS_BUILTINS_OBJECT_TYPE) \ | 441 V(JS_BUILTINS_OBJECT_TYPE) \ |
| 442 V(JS_GLOBAL_PROXY_TYPE) \ | 442 V(JS_GLOBAL_PROXY_TYPE) \ |
| 443 V(JS_ARRAY_TYPE) \ | 443 V(JS_ARRAY_TYPE) \ |
| 444 V(JS_ARRAY_BUFFER_TYPE) \ | 444 V(JS_ARRAY_BUFFER_TYPE) \ |
| 445 V(JS_TYPED_ARRAY_TYPE) \ | 445 V(JS_TYPED_ARRAY_TYPE) \ |
| 446 V(JS_DATA_VIEW_TYPE) \ | 446 V(JS_DATA_VIEW_TYPE) \ |
| 447 V(JS_SHARED_ARRAY_BUFFER_TYPE) \ | |
| 448 V(JS_SHARED_TYPED_ARRAY_TYPE) \ | |
| 447 V(JS_PROXY_TYPE) \ | 449 V(JS_PROXY_TYPE) \ |
| 448 V(JS_SET_TYPE) \ | 450 V(JS_SET_TYPE) \ |
| 449 V(JS_MAP_TYPE) \ | 451 V(JS_MAP_TYPE) \ |
| 450 V(JS_SET_ITERATOR_TYPE) \ | 452 V(JS_SET_ITERATOR_TYPE) \ |
| 451 V(JS_MAP_ITERATOR_TYPE) \ | 453 V(JS_MAP_ITERATOR_TYPE) \ |
| 452 V(JS_WEAK_MAP_TYPE) \ | 454 V(JS_WEAK_MAP_TYPE) \ |
| 453 V(JS_WEAK_SET_TYPE) \ | 455 V(JS_WEAK_SET_TYPE) \ |
| 454 V(JS_REGEXP_TYPE) \ | 456 V(JS_REGEXP_TYPE) \ |
| 455 \ | 457 \ |
| 456 V(JS_FUNCTION_TYPE) \ | 458 V(JS_FUNCTION_TYPE) \ |
| (...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 738 JS_CONTEXT_EXTENSION_OBJECT_TYPE, | 740 JS_CONTEXT_EXTENSION_OBJECT_TYPE, |
| 739 JS_GENERATOR_OBJECT_TYPE, | 741 JS_GENERATOR_OBJECT_TYPE, |
| 740 JS_MODULE_TYPE, | 742 JS_MODULE_TYPE, |
| 741 JS_GLOBAL_OBJECT_TYPE, | 743 JS_GLOBAL_OBJECT_TYPE, |
| 742 JS_BUILTINS_OBJECT_TYPE, | 744 JS_BUILTINS_OBJECT_TYPE, |
| 743 JS_GLOBAL_PROXY_TYPE, | 745 JS_GLOBAL_PROXY_TYPE, |
| 744 JS_ARRAY_TYPE, | 746 JS_ARRAY_TYPE, |
| 745 JS_ARRAY_BUFFER_TYPE, | 747 JS_ARRAY_BUFFER_TYPE, |
| 746 JS_TYPED_ARRAY_TYPE, | 748 JS_TYPED_ARRAY_TYPE, |
| 747 JS_DATA_VIEW_TYPE, | 749 JS_DATA_VIEW_TYPE, |
| 750 JS_SHARED_ARRAY_BUFFER_TYPE, | |
| 751 JS_SHARED_TYPED_ARRAY_TYPE, | |
| 748 JS_SET_TYPE, | 752 JS_SET_TYPE, |
| 749 JS_MAP_TYPE, | 753 JS_MAP_TYPE, |
| 750 JS_SET_ITERATOR_TYPE, | 754 JS_SET_ITERATOR_TYPE, |
| 751 JS_MAP_ITERATOR_TYPE, | 755 JS_MAP_ITERATOR_TYPE, |
| 752 JS_WEAK_MAP_TYPE, | 756 JS_WEAK_MAP_TYPE, |
| 753 JS_WEAK_SET_TYPE, | 757 JS_WEAK_SET_TYPE, |
| 754 JS_REGEXP_TYPE, | 758 JS_REGEXP_TYPE, |
| 755 JS_FUNCTION_TYPE, // LAST_JS_OBJECT_TYPE, LAST_JS_RECEIVER_TYPE | 759 JS_FUNCTION_TYPE, // LAST_JS_OBJECT_TYPE, LAST_JS_RECEIVER_TYPE |
| 756 | 760 |
| 757 // Pseudo-types | 761 // Pseudo-types |
| (...skipping 9460 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 10218 | 10222 |
| 10219 inline bool is_external(); | 10223 inline bool is_external(); |
| 10220 inline void set_is_external(bool value); | 10224 inline void set_is_external(bool value); |
| 10221 | 10225 |
| 10222 inline bool should_be_freed(); | 10226 inline bool should_be_freed(); |
| 10223 inline void set_should_be_freed(bool value); | 10227 inline void set_should_be_freed(bool value); |
| 10224 | 10228 |
| 10225 inline bool is_neuterable(); | 10229 inline bool is_neuterable(); |
| 10226 inline void set_is_neuterable(bool value); | 10230 inline void set_is_neuterable(bool value); |
| 10227 | 10231 |
| 10232 inline bool is_shared(); | |
| 10233 inline void set_is_shared(bool value); | |
| 10234 | |
| 10228 // [weak_next]: linked list of array buffers. | 10235 // [weak_next]: linked list of array buffers. |
| 10229 DECL_ACCESSORS(weak_next, Object) | 10236 DECL_ACCESSORS(weak_next, Object) |
| 10230 | 10237 |
| 10231 // [weak_first_array]: weak linked list of views. | 10238 // [weak_first_array]: weak linked list of views. |
| 10232 DECL_ACCESSORS(weak_first_view, Object) | 10239 DECL_ACCESSORS(weak_first_view, Object) |
| 10233 | 10240 |
| 10234 DECLARE_CAST(JSArrayBuffer) | 10241 DECLARE_CAST(JSArrayBuffer) |
| 10235 | 10242 |
| 10236 // Neutering. Only neuters the buffer, not associated typed arrays. | 10243 // Neutering. Only neuters the buffer, not associated typed arrays. |
| 10237 void Neuter(); | 10244 void Neuter(); |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 10248 static const int kSize = kWeakFirstViewOffset + kPointerSize; | 10255 static const int kSize = kWeakFirstViewOffset + kPointerSize; |
| 10249 | 10256 |
| 10250 static const int kSizeWithInternalFields = | 10257 static const int kSizeWithInternalFields = |
| 10251 kSize + v8::ArrayBuffer::kInternalFieldCount * kPointerSize; | 10258 kSize + v8::ArrayBuffer::kInternalFieldCount * kPointerSize; |
| 10252 | 10259 |
| 10253 private: | 10260 private: |
| 10254 // Bit position in a flag | 10261 // Bit position in a flag |
| 10255 static const int kIsExternalBit = 0; | 10262 static const int kIsExternalBit = 0; |
| 10256 static const int kShouldBeFreed = 1; | 10263 static const int kShouldBeFreed = 1; |
| 10257 static const int kIsNeuterableBit = 2; | 10264 static const int kIsNeuterableBit = 2; |
| 10265 static const int kIsSharedBit = 3; | |
|
Jarin
2015/04/16 14:55:28
Why do you need the bit? Cannot you get the shared
binji
2015/04/16 21:00:34
Do you mean from the ExternalArrayType? I currentl
Jarin
2015/04/17 07:49:27
I was just wondering why you could not define is_s
binji
2015/04/17 09:06:44
Thanks, that works. I knew I was missing something
| |
| 10258 | 10266 |
| 10259 DISALLOW_IMPLICIT_CONSTRUCTORS(JSArrayBuffer); | 10267 DISALLOW_IMPLICIT_CONSTRUCTORS(JSArrayBuffer); |
| 10260 }; | 10268 }; |
| 10261 | 10269 |
| 10262 | 10270 |
| 10263 class JSArrayBufferView: public JSObject { | 10271 class JSArrayBufferView: public JSObject { |
| 10264 public: | 10272 public: |
| 10265 // [buffer]: ArrayBuffer that this typed array views. | 10273 // [buffer]: ArrayBuffer that this typed array views. |
| 10266 DECL_ACCESSORS(buffer, Object) | 10274 DECL_ACCESSORS(buffer, Object) |
| 10267 | 10275 |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 10290 private: | 10298 private: |
| 10291 DISALLOW_IMPLICIT_CONSTRUCTORS(JSArrayBufferView); | 10299 DISALLOW_IMPLICIT_CONSTRUCTORS(JSArrayBufferView); |
| 10292 }; | 10300 }; |
| 10293 | 10301 |
| 10294 | 10302 |
| 10295 class JSTypedArray: public JSArrayBufferView { | 10303 class JSTypedArray: public JSArrayBufferView { |
| 10296 public: | 10304 public: |
| 10297 // [length]: length of typed array in elements. | 10305 // [length]: length of typed array in elements. |
| 10298 DECL_ACCESSORS(length, Object) | 10306 DECL_ACCESSORS(length, Object) |
| 10299 | 10307 |
| 10308 // TODO(binji): How to make this a flags array and access it via hydrogen? | |
| 10309 // See hydrogen.cc:HOptimizedGraphBuilder::GenerateTypedArrayInitialize | |
| 10310 // [is_shared] | |
| 10311 DECL_BOOLEAN_ACCESSORS(is_shared) | |
| 10312 | |
| 10300 // Neutering. Only neuters this typed array. | 10313 // Neutering. Only neuters this typed array. |
| 10301 void Neuter(); | 10314 void Neuter(); |
| 10302 | 10315 |
| 10303 DECLARE_CAST(JSTypedArray) | 10316 DECLARE_CAST(JSTypedArray) |
| 10304 | 10317 |
| 10305 ExternalArrayType type(); | 10318 ExternalArrayType type(); |
| 10306 size_t element_size(); | 10319 size_t element_size(); |
| 10307 | 10320 |
| 10308 Handle<JSArrayBuffer> GetBuffer(); | 10321 Handle<JSArrayBuffer> GetBuffer(); |
| 10309 | 10322 |
| 10310 // Dispatched behavior. | 10323 // Dispatched behavior. |
| 10311 DECLARE_PRINTER(JSTypedArray) | 10324 DECLARE_PRINTER(JSTypedArray) |
| 10312 DECLARE_VERIFIER(JSTypedArray) | 10325 DECLARE_VERIFIER(JSTypedArray) |
| 10313 | 10326 |
| 10314 static const int kLengthOffset = kViewSize + kPointerSize; | 10327 static const int kLengthOffset = kViewSize + kPointerSize; |
| 10315 static const int kSize = kLengthOffset + kPointerSize; | 10328 static const int kIsSharedOffset = kLengthOffset + kPointerSize; |
|
Jarin
2015/04/16 14:55:28
Again, why do you need the shared flag? Don't you
binji
2015/04/16 21:00:34
see above
| |
| 10329 static const int kSize = kIsSharedOffset + kPointerSize; | |
| 10316 | 10330 |
| 10317 static const int kSizeWithInternalFields = | 10331 static const int kSizeWithInternalFields = |
| 10318 kSize + v8::ArrayBufferView::kInternalFieldCount * kPointerSize; | 10332 kSize + v8::ArrayBufferView::kInternalFieldCount * kPointerSize; |
| 10319 | 10333 |
| 10320 private: | 10334 private: |
| 10321 static Handle<JSArrayBuffer> MaterializeArrayBuffer( | 10335 static Handle<JSArrayBuffer> MaterializeArrayBuffer( |
| 10322 Handle<JSTypedArray> typed_array); | 10336 Handle<JSTypedArray> typed_array); |
| 10323 | 10337 |
| 10324 DISALLOW_IMPLICIT_CONSTRUCTORS(JSTypedArray); | 10338 DISALLOW_IMPLICIT_CONSTRUCTORS(JSTypedArray); |
| 10325 }; | 10339 }; |
| (...skipping 747 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 11073 } else { | 11087 } else { |
| 11074 value &= ~(1 << bit_position); | 11088 value &= ~(1 << bit_position); |
| 11075 } | 11089 } |
| 11076 return value; | 11090 return value; |
| 11077 } | 11091 } |
| 11078 }; | 11092 }; |
| 11079 | 11093 |
| 11080 } } // namespace v8::internal | 11094 } } // namespace v8::internal |
| 11081 | 11095 |
| 11082 #endif // V8_OBJECTS_H_ | 11096 #endif // V8_OBJECTS_H_ |
| OLD | NEW |