| OLD | NEW |
| 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 1875 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1886 static const int kHeaderSize = kMapOffset + kPointerSize; | 1886 static const int kHeaderSize = kMapOffset + kPointerSize; |
| 1887 | 1887 |
| 1888 STATIC_CHECK(kMapOffset == Internals::kHeapObjectMapOffset); | 1888 STATIC_CHECK(kMapOffset == Internals::kHeapObjectMapOffset); |
| 1889 | 1889 |
| 1890 protected: | 1890 protected: |
| 1891 // helpers for calling an ObjectVisitor to iterate over pointers in the | 1891 // helpers for calling an ObjectVisitor to iterate over pointers in the |
| 1892 // half-open range [start, end) specified as integer offsets | 1892 // half-open range [start, end) specified as integer offsets |
| 1893 inline void IteratePointers(ObjectVisitor* v, int start, int end); | 1893 inline void IteratePointers(ObjectVisitor* v, int start, int end); |
| 1894 // as above, for the single element at "offset" | 1894 // as above, for the single element at "offset" |
| 1895 inline void IteratePointer(ObjectVisitor* v, int offset); | 1895 inline void IteratePointer(ObjectVisitor* v, int offset); |
| 1896 // as above, for the next code link of a code object. | |
| 1897 inline void IterateNextCodeLink(ObjectVisitor* v, int offset); | |
| 1898 | 1896 |
| 1899 private: | 1897 private: |
| 1900 DISALLOW_IMPLICIT_CONSTRUCTORS(HeapObject); | 1898 DISALLOW_IMPLICIT_CONSTRUCTORS(HeapObject); |
| 1901 }; | 1899 }; |
| 1902 | 1900 |
| 1903 | 1901 |
| 1904 // This class describes a body of an object of a fixed size | 1902 // This class describes a body of an object of a fixed size |
| 1905 // in which all pointer fields are located in the [start_offset, end_offset) | 1903 // in which all pointer fields are located in the [start_offset, end_offset) |
| 1906 // interval. | 1904 // interval. |
| 1907 template<int start_offset, int end_offset, int size> | 1905 template<int start_offset, int end_offset, int size> |
| (...skipping 3316 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5224 // [handler_table]: Fixed array containing offsets of exception handlers. | 5222 // [handler_table]: Fixed array containing offsets of exception handlers. |
| 5225 DECL_ACCESSORS(handler_table, FixedArray) | 5223 DECL_ACCESSORS(handler_table, FixedArray) |
| 5226 | 5224 |
| 5227 // [deoptimization_data]: Array containing data for deopt. | 5225 // [deoptimization_data]: Array containing data for deopt. |
| 5228 DECL_ACCESSORS(deoptimization_data, FixedArray) | 5226 DECL_ACCESSORS(deoptimization_data, FixedArray) |
| 5229 | 5227 |
| 5230 // [raw_type_feedback_info]: This field stores various things, depending on | 5228 // [raw_type_feedback_info]: This field stores various things, depending on |
| 5231 // the kind of the code object. | 5229 // the kind of the code object. |
| 5232 // FUNCTION => type feedback information. | 5230 // FUNCTION => type feedback information. |
| 5233 // STUB => various things, e.g. a SMI | 5231 // STUB => various things, e.g. a SMI |
| 5232 // OPTIMIZED_FUNCTION => the next_code_link for optimized code list. |
| 5234 DECL_ACCESSORS(raw_type_feedback_info, Object) | 5233 DECL_ACCESSORS(raw_type_feedback_info, Object) |
| 5235 inline Object* type_feedback_info(); | 5234 inline Object* type_feedback_info(); |
| 5236 inline void set_type_feedback_info( | 5235 inline void set_type_feedback_info( |
| 5237 Object* value, WriteBarrierMode mode = UPDATE_WRITE_BARRIER); | 5236 Object* value, WriteBarrierMode mode = UPDATE_WRITE_BARRIER); |
| 5238 inline int stub_info(); | 5237 inline int stub_info(); |
| 5239 inline void set_stub_info(int info); | 5238 inline void set_stub_info(int info); |
| 5240 | 5239 |
| 5241 // [next_code_link]: Link for lists of optimized or deoptimized code. | 5240 // [next_code_link]: Link for lists of optimized or deoptimized code. |
| 5242 // Note that storage for this field is overlapped with typefeedback_info. | 5241 // Note that storage for this field is overlapped with typefeedback_info. |
| 5243 DECL_ACCESSORS(next_code_link, Object) | 5242 DECL_ACCESSORS(next_code_link, Object) |
| (...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5551 static const int kMaxLoopNestingMarker = 6; | 5550 static const int kMaxLoopNestingMarker = 6; |
| 5552 | 5551 |
| 5553 // Layout description. | 5552 // Layout description. |
| 5554 static const int kInstructionSizeOffset = HeapObject::kHeaderSize; | 5553 static const int kInstructionSizeOffset = HeapObject::kHeaderSize; |
| 5555 static const int kRelocationInfoOffset = kInstructionSizeOffset + kIntSize; | 5554 static const int kRelocationInfoOffset = kInstructionSizeOffset + kIntSize; |
| 5556 static const int kHandlerTableOffset = kRelocationInfoOffset + kPointerSize; | 5555 static const int kHandlerTableOffset = kRelocationInfoOffset + kPointerSize; |
| 5557 static const int kDeoptimizationDataOffset = | 5556 static const int kDeoptimizationDataOffset = |
| 5558 kHandlerTableOffset + kPointerSize; | 5557 kHandlerTableOffset + kPointerSize; |
| 5559 static const int kTypeFeedbackInfoOffset = | 5558 static const int kTypeFeedbackInfoOffset = |
| 5560 kDeoptimizationDataOffset + kPointerSize; | 5559 kDeoptimizationDataOffset + kPointerSize; |
| 5561 static const int kNextCodeLinkOffset = kTypeFeedbackInfoOffset + kPointerSize; | 5560 static const int kNextCodeLinkOffset = kTypeFeedbackInfoOffset; // Shared. |
| 5562 static const int kGCMetadataOffset = kNextCodeLinkOffset + kPointerSize; | 5561 static const int kGCMetadataOffset = kTypeFeedbackInfoOffset + kPointerSize; |
| 5563 static const int kICAgeOffset = | 5562 static const int kICAgeOffset = |
| 5564 kGCMetadataOffset + kPointerSize; | 5563 kGCMetadataOffset + kPointerSize; |
| 5565 static const int kFlagsOffset = kICAgeOffset + kIntSize; | 5564 static const int kFlagsOffset = kICAgeOffset + kIntSize; |
| 5566 static const int kKindSpecificFlags1Offset = kFlagsOffset + kIntSize; | 5565 static const int kKindSpecificFlags1Offset = kFlagsOffset + kIntSize; |
| 5567 static const int kKindSpecificFlags2Offset = | 5566 static const int kKindSpecificFlags2Offset = |
| 5568 kKindSpecificFlags1Offset + kIntSize; | 5567 kKindSpecificFlags1Offset + kIntSize; |
| 5569 // Note: We might be able to squeeze this into the flags above. | 5568 // Note: We might be able to squeeze this into the flags above. |
| 5570 static const int kPrologueOffset = kKindSpecificFlags2Offset + kIntSize; | 5569 static const int kPrologueOffset = kKindSpecificFlags2Offset + kIntSize; |
| 5571 static const int kConstantPoolOffset = kPrologueOffset + kPointerSize; | 5570 static const int kConstantPoolOffset = kPrologueOffset + kPointerSize; |
| 5572 | 5571 |
| (...skipping 5124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10697 public: | 10696 public: |
| 10698 virtual ~ObjectVisitor() {} | 10697 virtual ~ObjectVisitor() {} |
| 10699 | 10698 |
| 10700 // Visits a contiguous arrays of pointers in the half-open range | 10699 // Visits a contiguous arrays of pointers in the half-open range |
| 10701 // [start, end). Any or all of the values may be modified on return. | 10700 // [start, end). Any or all of the values may be modified on return. |
| 10702 virtual void VisitPointers(Object** start, Object** end) = 0; | 10701 virtual void VisitPointers(Object** start, Object** end) = 0; |
| 10703 | 10702 |
| 10704 // Handy shorthand for visiting a single pointer. | 10703 // Handy shorthand for visiting a single pointer. |
| 10705 virtual void VisitPointer(Object** p) { VisitPointers(p, p + 1); } | 10704 virtual void VisitPointer(Object** p) { VisitPointers(p, p + 1); } |
| 10706 | 10705 |
| 10707 // Visit weak next_code_link in Code object. | |
| 10708 virtual void VisitNextCodeLink(Object** p) { VisitPointers(p, p + 1); } | |
| 10709 | |
| 10710 // To allow lazy clearing of inline caches the visitor has | 10706 // To allow lazy clearing of inline caches the visitor has |
| 10711 // a rich interface for iterating over Code objects.. | 10707 // a rich interface for iterating over Code objects.. |
| 10712 | 10708 |
| 10713 // Visits a code target in the instruction stream. | 10709 // Visits a code target in the instruction stream. |
| 10714 virtual void VisitCodeTarget(RelocInfo* rinfo); | 10710 virtual void VisitCodeTarget(RelocInfo* rinfo); |
| 10715 | 10711 |
| 10716 // Visits a code entry in a JS function. | 10712 // Visits a code entry in a JS function. |
| 10717 virtual void VisitCodeEntry(Address entry_address); | 10713 virtual void VisitCodeEntry(Address entry_address); |
| 10718 | 10714 |
| 10719 // Visits a global property cell reference in the instruction stream. | 10715 // Visits a global property cell reference in the instruction stream. |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10785 } else { | 10781 } else { |
| 10786 value &= ~(1 << bit_position); | 10782 value &= ~(1 << bit_position); |
| 10787 } | 10783 } |
| 10788 return value; | 10784 return value; |
| 10789 } | 10785 } |
| 10790 }; | 10786 }; |
| 10791 | 10787 |
| 10792 } } // namespace v8::internal | 10788 } } // namespace v8::internal |
| 10793 | 10789 |
| 10794 #endif // V8_OBJECTS_H_ | 10790 #endif // V8_OBJECTS_H_ |
| OLD | NEW |