| OLD | NEW |
| 1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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_BODY_DESCRIPTORS_INL_H_ | 5 #ifndef V8_OBJECTS_BODY_DESCRIPTORS_INL_H_ |
| 6 #define V8_OBJECTS_BODY_DESCRIPTORS_INL_H_ | 6 #define V8_OBJECTS_BODY_DESCRIPTORS_INL_H_ |
| 7 | 7 |
| 8 #include "src/assembler-inl.h" | 8 #include "src/assembler-inl.h" |
| 9 #include "src/objects-body-descriptors.h" | 9 #include "src/objects-body-descriptors.h" |
| 10 #include "src/transitions.h" | 10 #include "src/transitions.h" |
| (...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 347 static inline int SizeOf(Map* map, HeapObject* object) { return kSize; } | 347 static inline int SizeOf(Map* map, HeapObject* object) { return kSize; } |
| 348 }; | 348 }; |
| 349 | 349 |
| 350 class ExternalOneByteString::BodyDescriptor final : public BodyDescriptorBase { | 350 class ExternalOneByteString::BodyDescriptor final : public BodyDescriptorBase { |
| 351 public: | 351 public: |
| 352 static bool IsValidSlot(HeapObject* obj, int offset) { return false; } | 352 static bool IsValidSlot(HeapObject* obj, int offset) { return false; } |
| 353 | 353 |
| 354 template <typename ObjectVisitor> | 354 template <typename ObjectVisitor> |
| 355 static inline void IterateBody(HeapObject* obj, int object_size, | 355 static inline void IterateBody(HeapObject* obj, int object_size, |
| 356 ObjectVisitor* v) { | 356 ObjectVisitor* v) { |
| 357 typedef v8::String::ExternalOneByteStringResource Resource; | |
| 358 v->VisitExternalOneByteString(reinterpret_cast<Resource**>( | |
| 359 HeapObject::RawField(obj, kResourceOffset))); | |
| 360 } | 357 } |
| 361 | 358 |
| 362 template <typename StaticVisitor> | 359 template <typename StaticVisitor> |
| 363 static inline void IterateBody(HeapObject* obj, int object_size) { | 360 static inline void IterateBody(HeapObject* obj, int object_size) { |
| 364 typedef v8::String::ExternalOneByteStringResource Resource; | |
| 365 StaticVisitor::VisitExternalOneByteString(reinterpret_cast<Resource**>( | |
| 366 HeapObject::RawField(obj, kResourceOffset))); | |
| 367 } | 361 } |
| 368 | 362 |
| 369 static inline int SizeOf(Map* map, HeapObject* object) { return kSize; } | 363 static inline int SizeOf(Map* map, HeapObject* object) { return kSize; } |
| 370 }; | 364 }; |
| 371 | 365 |
| 372 class ExternalTwoByteString::BodyDescriptor final : public BodyDescriptorBase { | 366 class ExternalTwoByteString::BodyDescriptor final : public BodyDescriptorBase { |
| 373 public: | 367 public: |
| 374 static bool IsValidSlot(HeapObject* obj, int offset) { return false; } | 368 static bool IsValidSlot(HeapObject* obj, int offset) { return false; } |
| 375 | 369 |
| 376 template <typename ObjectVisitor> | 370 template <typename ObjectVisitor> |
| 377 static inline void IterateBody(HeapObject* obj, int object_size, | 371 static inline void IterateBody(HeapObject* obj, int object_size, |
| 378 ObjectVisitor* v) { | 372 ObjectVisitor* v) { |
| 379 typedef v8::String::ExternalStringResource Resource; | |
| 380 v->VisitExternalTwoByteString(reinterpret_cast<Resource**>( | |
| 381 HeapObject::RawField(obj, kResourceOffset))); | |
| 382 } | 373 } |
| 383 | 374 |
| 384 template <typename StaticVisitor> | 375 template <typename StaticVisitor> |
| 385 static inline void IterateBody(HeapObject* obj, int object_size) { | 376 static inline void IterateBody(HeapObject* obj, int object_size) { |
| 386 typedef v8::String::ExternalStringResource Resource; | |
| 387 StaticVisitor::VisitExternalTwoByteString(reinterpret_cast<Resource**>( | |
| 388 HeapObject::RawField(obj, kResourceOffset))); | |
| 389 } | 377 } |
| 390 | 378 |
| 391 static inline int SizeOf(Map* map, HeapObject* object) { return kSize; } | 379 static inline int SizeOf(Map* map, HeapObject* object) { return kSize; } |
| 392 }; | 380 }; |
| 393 | 381 |
| 394 class Code::BodyDescriptor final : public BodyDescriptorBase { | 382 class Code::BodyDescriptor final : public BodyDescriptorBase { |
| 395 public: | 383 public: |
| 396 STATIC_ASSERT(kRelocationInfoOffset + kPointerSize == kHandlerTableOffset); | 384 STATIC_ASSERT(kRelocationInfoOffset + kPointerSize == kHandlerTableOffset); |
| 397 STATIC_ASSERT(kHandlerTableOffset + kPointerSize == | 385 STATIC_ASSERT(kHandlerTableOffset + kPointerSize == |
| 398 kDeoptimizationDataOffset); | 386 kDeoptimizationDataOffset); |
| (...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 651 | 639 |
| 652 template <typename ObjectVisitor> | 640 template <typename ObjectVisitor> |
| 653 void HeapObject::IterateBodyFast(InstanceType type, int object_size, | 641 void HeapObject::IterateBodyFast(InstanceType type, int object_size, |
| 654 ObjectVisitor* v) { | 642 ObjectVisitor* v) { |
| 655 BodyDescriptorApply<CallIterateBody, void>(type, this, object_size, v); | 643 BodyDescriptorApply<CallIterateBody, void>(type, this, object_size, v); |
| 656 } | 644 } |
| 657 } // namespace internal | 645 } // namespace internal |
| 658 } // namespace v8 | 646 } // namespace v8 |
| 659 | 647 |
| 660 #endif // V8_OBJECTS_BODY_DESCRIPTORS_INL_H_ | 648 #endif // V8_OBJECTS_BODY_DESCRIPTORS_INL_H_ |
| OLD | NEW |