| 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_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 #include <memory> | 9 #include <memory> |
| 10 | 10 |
| (...skipping 4239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4250 // Accessors for the constant pool. | 4250 // Accessors for the constant pool. |
| 4251 DECL_ACCESSORS(constant_pool, FixedArray) | 4251 DECL_ACCESSORS(constant_pool, FixedArray) |
| 4252 | 4252 |
| 4253 // Accessors for handler table containing offsets of exception handlers. | 4253 // Accessors for handler table containing offsets of exception handlers. |
| 4254 DECL_ACCESSORS(handler_table, FixedArray) | 4254 DECL_ACCESSORS(handler_table, FixedArray) |
| 4255 | 4255 |
| 4256 // Accessors for source position table containing mappings between byte code | 4256 // Accessors for source position table containing mappings between byte code |
| 4257 // offset and source position. | 4257 // offset and source position. |
| 4258 DECL_ACCESSORS(source_position_table, ByteArray) | 4258 DECL_ACCESSORS(source_position_table, ByteArray) |
| 4259 | 4259 |
| 4260 DECL_ACCESSORS(stack_frame_cache, Object) |
| 4261 |
| 4260 DECLARE_CAST(BytecodeArray) | 4262 DECLARE_CAST(BytecodeArray) |
| 4261 | 4263 |
| 4262 // Dispatched behavior. | 4264 // Dispatched behavior. |
| 4263 inline int BytecodeArraySize(); | 4265 inline int BytecodeArraySize(); |
| 4264 | 4266 |
| 4265 inline int instruction_size(); | 4267 inline int instruction_size(); |
| 4266 | 4268 |
| 4267 // Returns the size of bytecode and its metadata. This includes the size of | 4269 // Returns the size of bytecode and its metadata. This includes the size of |
| 4268 // bytecode, constant pool, source position table, and handler table. | 4270 // bytecode, constant pool, source position table, and handler table. |
| 4269 inline int SizeIncludingMetadata(); | 4271 inline int SizeIncludingMetadata(); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 4280 | 4282 |
| 4281 // Bytecode aging | 4283 // Bytecode aging |
| 4282 bool IsOld() const; | 4284 bool IsOld() const; |
| 4283 void MakeOlder(); | 4285 void MakeOlder(); |
| 4284 | 4286 |
| 4285 // Layout description. | 4287 // Layout description. |
| 4286 static const int kConstantPoolOffset = FixedArrayBase::kHeaderSize; | 4288 static const int kConstantPoolOffset = FixedArrayBase::kHeaderSize; |
| 4287 static const int kHandlerTableOffset = kConstantPoolOffset + kPointerSize; | 4289 static const int kHandlerTableOffset = kConstantPoolOffset + kPointerSize; |
| 4288 static const int kSourcePositionTableOffset = | 4290 static const int kSourcePositionTableOffset = |
| 4289 kHandlerTableOffset + kPointerSize; | 4291 kHandlerTableOffset + kPointerSize; |
| 4290 static const int kFrameSizeOffset = kSourcePositionTableOffset + kPointerSize; | 4292 static const int kStackFrameCacheOffset = |
| 4293 kSourcePositionTableOffset + kPointerSize; |
| 4294 static const int kFrameSizeOffset = kStackFrameCacheOffset + kPointerSize; |
| 4291 static const int kParameterSizeOffset = kFrameSizeOffset + kIntSize; | 4295 static const int kParameterSizeOffset = kFrameSizeOffset + kIntSize; |
| 4292 static const int kInterruptBudgetOffset = kParameterSizeOffset + kIntSize; | 4296 static const int kInterruptBudgetOffset = kParameterSizeOffset + kIntSize; |
| 4293 static const int kOSRNestingLevelOffset = kInterruptBudgetOffset + kIntSize; | 4297 static const int kOSRNestingLevelOffset = kInterruptBudgetOffset + kIntSize; |
| 4294 static const int kBytecodeAgeOffset = kOSRNestingLevelOffset + kCharSize; | 4298 static const int kBytecodeAgeOffset = kOSRNestingLevelOffset + kCharSize; |
| 4295 static const int kHeaderSize = kBytecodeAgeOffset + kCharSize; | 4299 static const int kHeaderSize = kBytecodeAgeOffset + kCharSize; |
| 4296 | 4300 |
| 4297 // Maximal memory consumption for a single BytecodeArray. | 4301 // Maximal memory consumption for a single BytecodeArray. |
| 4298 static const int kMaxSize = 512 * MB; | 4302 static const int kMaxSize = 512 * MB; |
| 4299 // Maximal length of a single BytecodeArray. | 4303 // Maximal length of a single BytecodeArray. |
| 4300 static const int kMaxLength = kMaxSize - kHeaderSize; | 4304 static const int kMaxLength = kMaxSize - kHeaderSize; |
| (...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4663 | 4667 |
| 4664 // [handler_table]: Fixed array containing offsets of exception handlers. | 4668 // [handler_table]: Fixed array containing offsets of exception handlers. |
| 4665 DECL_ACCESSORS(handler_table, FixedArray) | 4669 DECL_ACCESSORS(handler_table, FixedArray) |
| 4666 | 4670 |
| 4667 // [deoptimization_data]: Array containing data for deopt. | 4671 // [deoptimization_data]: Array containing data for deopt. |
| 4668 DECL_ACCESSORS(deoptimization_data, FixedArray) | 4672 DECL_ACCESSORS(deoptimization_data, FixedArray) |
| 4669 | 4673 |
| 4670 // [source_position_table]: ByteArray for the source positions table. | 4674 // [source_position_table]: ByteArray for the source positions table. |
| 4671 DECL_ACCESSORS(source_position_table, ByteArray) | 4675 DECL_ACCESSORS(source_position_table, ByteArray) |
| 4672 | 4676 |
| 4677 DECL_ACCESSORS(stack_frame_cache, Object) |
| 4678 |
| 4673 // [trap_handler_index]: An index into the trap handler's master list of code | 4679 // [trap_handler_index]: An index into the trap handler's master list of code |
| 4674 // objects. | 4680 // objects. |
| 4675 DECL_ACCESSORS(trap_handler_index, Smi) | 4681 DECL_ACCESSORS(trap_handler_index, Smi) |
| 4676 | 4682 |
| 4677 // [raw_type_feedback_info]: This field stores various things, depending on | 4683 // [raw_type_feedback_info]: This field stores various things, depending on |
| 4678 // the kind of the code object. | 4684 // the kind of the code object. |
| 4679 // FUNCTION => type feedback information. | 4685 // FUNCTION => type feedback information. |
| 4680 // STUB and ICs => major/minor key as Smi. | 4686 // STUB and ICs => major/minor key as Smi. |
| 4681 DECL_ACCESSORS(raw_type_feedback_info, Object) | 4687 DECL_ACCESSORS(raw_type_feedback_info, Object) |
| 4682 inline Object* type_feedback_info(); | 4688 inline Object* type_feedback_info(); |
| (...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5039 static const int kConstantPoolSize = | 5045 static const int kConstantPoolSize = |
| 5040 FLAG_enable_embedded_constant_pool ? kIntSize : 0; | 5046 FLAG_enable_embedded_constant_pool ? kIntSize : 0; |
| 5041 | 5047 |
| 5042 // Layout description. | 5048 // Layout description. |
| 5043 static const int kRelocationInfoOffset = HeapObject::kHeaderSize; | 5049 static const int kRelocationInfoOffset = HeapObject::kHeaderSize; |
| 5044 static const int kHandlerTableOffset = kRelocationInfoOffset + kPointerSize; | 5050 static const int kHandlerTableOffset = kRelocationInfoOffset + kPointerSize; |
| 5045 static const int kDeoptimizationDataOffset = | 5051 static const int kDeoptimizationDataOffset = |
| 5046 kHandlerTableOffset + kPointerSize; | 5052 kHandlerTableOffset + kPointerSize; |
| 5047 static const int kSourcePositionTableOffset = | 5053 static const int kSourcePositionTableOffset = |
| 5048 kDeoptimizationDataOffset + kPointerSize; | 5054 kDeoptimizationDataOffset + kPointerSize; |
| 5055 static const int kStackFrameCacheOffset = |
| 5056 kSourcePositionTableOffset + kPointerSize; |
| 5049 // For FUNCTION kind, we store the type feedback info here. | 5057 // For FUNCTION kind, we store the type feedback info here. |
| 5050 static const int kTypeFeedbackInfoOffset = | 5058 static const int kTypeFeedbackInfoOffset = |
| 5051 kSourcePositionTableOffset + kPointerSize; | 5059 kStackFrameCacheOffset + kPointerSize; |
| 5052 static const int kNextCodeLinkOffset = kTypeFeedbackInfoOffset + kPointerSize; | 5060 static const int kNextCodeLinkOffset = kTypeFeedbackInfoOffset + kPointerSize; |
| 5053 static const int kGCMetadataOffset = kNextCodeLinkOffset + kPointerSize; | 5061 static const int kGCMetadataOffset = kNextCodeLinkOffset + kPointerSize; |
| 5054 static const int kInstructionSizeOffset = kGCMetadataOffset + kPointerSize; | 5062 static const int kInstructionSizeOffset = kGCMetadataOffset + kPointerSize; |
| 5055 static const int kICAgeOffset = kInstructionSizeOffset + kIntSize; | 5063 static const int kICAgeOffset = kInstructionSizeOffset + kIntSize; |
| 5056 static const int kFlagsOffset = kICAgeOffset + kIntSize; | 5064 static const int kFlagsOffset = kICAgeOffset + kIntSize; |
| 5057 static const int kKindSpecificFlags1Offset = kFlagsOffset + kIntSize; | 5065 static const int kKindSpecificFlags1Offset = kFlagsOffset + kIntSize; |
| 5058 static const int kKindSpecificFlags2Offset = | 5066 static const int kKindSpecificFlags2Offset = |
| 5059 kKindSpecificFlags1Offset + kIntSize; | 5067 kKindSpecificFlags1Offset + kIntSize; |
| 5060 // Note: We might be able to squeeze this into the flags above. | 5068 // Note: We might be able to squeeze this into the flags above. |
| 5061 static const int kPrologueOffset = kKindSpecificFlags2Offset + kIntSize; | 5069 static const int kPrologueOffset = kKindSpecificFlags2Offset + kIntSize; |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5193 | 5201 |
| 5194 // Returns the size of the code instructions. | 5202 // Returns the size of the code instructions. |
| 5195 inline int instruction_size(); | 5203 inline int instruction_size(); |
| 5196 | 5204 |
| 5197 // Return the source position table. | 5205 // Return the source position table. |
| 5198 inline ByteArray* source_position_table(); | 5206 inline ByteArray* source_position_table(); |
| 5199 | 5207 |
| 5200 // Set the source position table. | 5208 // Set the source position table. |
| 5201 inline void set_source_position_table(ByteArray* source_position_table); | 5209 inline void set_source_position_table(ByteArray* source_position_table); |
| 5202 | 5210 |
| 5211 inline Object* stack_frame_cache(); |
| 5212 inline void set_stack_frame_cache(Object* stack_frame_cache); |
| 5213 |
| 5203 // Returns the size of instructions and the metadata. | 5214 // Returns the size of instructions and the metadata. |
| 5204 inline int SizeIncludingMetadata(); | 5215 inline int SizeIncludingMetadata(); |
| 5205 | 5216 |
| 5206 // Returns true if pc is inside this object's instructions. | 5217 // Returns true if pc is inside this object's instructions. |
| 5207 inline bool contains(byte* pc); | 5218 inline bool contains(byte* pc); |
| 5208 | 5219 |
| 5209 // Returns the AbstractCode::Kind of the code. | 5220 // Returns the AbstractCode::Kind of the code. |
| 5210 inline Kind kind(); | 5221 inline Kind kind(); |
| 5211 | 5222 |
| 5212 // Calculate the size of the code object to report for log events. This takes | 5223 // Calculate the size of the code object to report for log events. This takes |
| (...skipping 6226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11439 } | 11450 } |
| 11440 }; | 11451 }; |
| 11441 | 11452 |
| 11442 | 11453 |
| 11443 } // NOLINT, false-positive due to second-order macros. | 11454 } // NOLINT, false-positive due to second-order macros. |
| 11444 } // NOLINT, false-positive due to second-order macros. | 11455 } // NOLINT, false-positive due to second-order macros. |
| 11445 | 11456 |
| 11446 #include "src/objects/object-macros-undef.h" | 11457 #include "src/objects/object-macros-undef.h" |
| 11447 | 11458 |
| 11448 #endif // V8_OBJECTS_H_ | 11459 #endif // V8_OBJECTS_H_ |
| OLD | NEW |