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 5039 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5050 | 5050 |
5051 // [next_code_link]: Link for lists of optimized or deoptimized code. | 5051 // [next_code_link]: Link for lists of optimized or deoptimized code. |
5052 // Note that storage for this field is overlapped with typefeedback_info. | 5052 // Note that storage for this field is overlapped with typefeedback_info. |
5053 DECL_ACCESSORS(next_code_link, Object) | 5053 DECL_ACCESSORS(next_code_link, Object) |
5054 | 5054 |
5055 // [gc_metadata]: Field used to hold GC related metadata. The contents of this | 5055 // [gc_metadata]: Field used to hold GC related metadata. The contents of this |
5056 // field does not have to be traced during garbage collection since | 5056 // field does not have to be traced during garbage collection since |
5057 // it is only used by the garbage collector itself. | 5057 // it is only used by the garbage collector itself. |
5058 DECL_ACCESSORS(gc_metadata, Object) | 5058 DECL_ACCESSORS(gc_metadata, Object) |
5059 | 5059 |
| 5060 // [ic_age]: Inline caching age: the value of the Heap::global_ic_age |
| 5061 // at the moment when this object was created. |
| 5062 inline void set_ic_age(int count); |
| 5063 inline int ic_age() const; |
| 5064 |
5060 // [prologue_offset]: Offset of the function prologue, used for aging | 5065 // [prologue_offset]: Offset of the function prologue, used for aging |
5061 // FUNCTIONs and OPTIMIZED_FUNCTIONs. | 5066 // FUNCTIONs and OPTIMIZED_FUNCTIONs. |
5062 inline int prologue_offset() const; | 5067 inline int prologue_offset() const; |
5063 inline void set_prologue_offset(int offset); | 5068 inline void set_prologue_offset(int offset); |
5064 | 5069 |
5065 // Unchecked accessors to be used during GC. | 5070 // Unchecked accessors to be used during GC. |
5066 inline ByteArray* unchecked_relocation_info(); | 5071 inline ByteArray* unchecked_relocation_info(); |
5067 | 5072 |
5068 inline int relocation_size(); | 5073 inline int relocation_size(); |
5069 | 5074 |
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5405 // Layout description. | 5410 // Layout description. |
5406 static const int kRelocationInfoOffset = HeapObject::kHeaderSize; | 5411 static const int kRelocationInfoOffset = HeapObject::kHeaderSize; |
5407 static const int kHandlerTableOffset = kRelocationInfoOffset + kPointerSize; | 5412 static const int kHandlerTableOffset = kRelocationInfoOffset + kPointerSize; |
5408 static const int kDeoptimizationDataOffset = | 5413 static const int kDeoptimizationDataOffset = |
5409 kHandlerTableOffset + kPointerSize; | 5414 kHandlerTableOffset + kPointerSize; |
5410 // For FUNCTION kind, we store the type feedback info here. | 5415 // For FUNCTION kind, we store the type feedback info here. |
5411 static const int kTypeFeedbackInfoOffset = | 5416 static const int kTypeFeedbackInfoOffset = |
5412 kDeoptimizationDataOffset + kPointerSize; | 5417 kDeoptimizationDataOffset + kPointerSize; |
5413 static const int kNextCodeLinkOffset = kTypeFeedbackInfoOffset + kPointerSize; | 5418 static const int kNextCodeLinkOffset = kTypeFeedbackInfoOffset + kPointerSize; |
5414 static const int kGCMetadataOffset = kNextCodeLinkOffset + kPointerSize; | 5419 static const int kGCMetadataOffset = kNextCodeLinkOffset + kPointerSize; |
5415 static const int kConstantPoolOffset = kGCMetadataOffset + kPointerSize; | 5420 static const int kInstructionSizeOffset = kGCMetadataOffset + kPointerSize; |
5416 static const int kInstructionSizeOffset = kConstantPoolOffset + kPointerSize; | 5421 static const int kICAgeOffset = kInstructionSizeOffset + kIntSize; |
5417 static const int kFlagsOffset = kInstructionSizeOffset + kIntSize; | 5422 static const int kFlagsOffset = kICAgeOffset + kIntSize; |
5418 static const int kKindSpecificFlags1Offset = kFlagsOffset + kIntSize; | 5423 static const int kKindSpecificFlags1Offset = kFlagsOffset + kIntSize; |
5419 static const int kKindSpecificFlags2Offset = | 5424 static const int kKindSpecificFlags2Offset = |
5420 kKindSpecificFlags1Offset + kIntSize; | 5425 kKindSpecificFlags1Offset + kIntSize; |
5421 // Note: We might be able to squeeze this into the flags above. | 5426 // Note: We might be able to squeeze this into the flags above. |
5422 static const int kPrologueOffset = kKindSpecificFlags2Offset + kIntSize; | 5427 static const int kPrologueOffset = kKindSpecificFlags2Offset + kIntSize; |
5423 static const int kHeaderPaddingStart = kPrologueOffset + kIntSize; | 5428 static const int kConstantPoolOffset = kPrologueOffset + kIntSize; |
| 5429 |
| 5430 static const int kHeaderPaddingStart = kConstantPoolOffset + kPointerSize; |
5424 | 5431 |
5425 // Add padding to align the instruction start following right after | 5432 // Add padding to align the instruction start following right after |
5426 // the Code object header. | 5433 // the Code object header. |
5427 static const int kHeaderSize = | 5434 static const int kHeaderSize = |
5428 (kHeaderPaddingStart + kCodeAlignmentMask) & ~kCodeAlignmentMask; | 5435 (kHeaderPaddingStart + kCodeAlignmentMask) & ~kCodeAlignmentMask; |
5429 // Ensure that the slot for the constant pool pointer is aligned. | 5436 // Ensure that the slot for the constant pool pointer is aligned. |
5430 STATIC_ASSERT((kConstantPoolOffset & kPointerAlignmentMask) == 0); | 5437 STATIC_ASSERT((kConstantPoolOffset & kPointerAlignmentMask) == 0); |
5431 | 5438 |
5432 // Byte offsets within kKindSpecificFlags1Offset. | 5439 // Byte offsets within kKindSpecificFlags1Offset. |
5433 static const int kOptimizableOffset = kKindSpecificFlags1Offset; | 5440 static const int kOptimizableOffset = kKindSpecificFlags1Offset; |
(...skipping 5547 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10981 } else { | 10988 } else { |
10982 value &= ~(1 << bit_position); | 10989 value &= ~(1 << bit_position); |
10983 } | 10990 } |
10984 return value; | 10991 return value; |
10985 } | 10992 } |
10986 }; | 10993 }; |
10987 | 10994 |
10988 } } // namespace v8::internal | 10995 } } // namespace v8::internal |
10989 | 10996 |
10990 #endif // V8_OBJECTS_H_ | 10997 #endif // V8_OBJECTS_H_ |
OLD | NEW |