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 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
138 // - AccessCheckInfo | 138 // - AccessCheckInfo |
139 // - InterceptorInfo | 139 // - InterceptorInfo |
140 // - CallHandlerInfo | 140 // - CallHandlerInfo |
141 // - TemplateInfo | 141 // - TemplateInfo |
142 // - FunctionTemplateInfo | 142 // - FunctionTemplateInfo |
143 // - ObjectTemplateInfo | 143 // - ObjectTemplateInfo |
144 // - Script | 144 // - Script |
145 // - DebugInfo | 145 // - DebugInfo |
146 // - BreakPointInfo | 146 // - BreakPointInfo |
147 // - StackFrameInfo | 147 // - StackFrameInfo |
| 148 // - SourcePositionTableWithFrameCache |
148 // - CodeCache | 149 // - CodeCache |
149 // - PrototypeInfo | 150 // - PrototypeInfo |
150 // - Module | 151 // - Module |
151 // - ModuleInfoEntry | 152 // - ModuleInfoEntry |
152 // - WeakCell | 153 // - WeakCell |
153 // | 154 // |
154 // Formats of Object*: | 155 // Formats of Object*: |
155 // Smi: [31 bit signed int] 0 | 156 // Smi: [31 bit signed int] 0 |
156 // HeapObject: [32 bit direct pointer] (4 byte aligned) | 01 | 157 // HeapObject: [32 bit direct pointer] (4 byte aligned) | 01 |
157 | 158 |
(...skipping 933 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1091 V(External) \ | 1092 V(External) \ |
1092 V(Struct) \ | 1093 V(Struct) \ |
1093 V(Cell) \ | 1094 V(Cell) \ |
1094 V(TemplateList) \ | 1095 V(TemplateList) \ |
1095 V(PropertyCell) \ | 1096 V(PropertyCell) \ |
1096 V(WeakCell) \ | 1097 V(WeakCell) \ |
1097 V(ObjectHashTable) \ | 1098 V(ObjectHashTable) \ |
1098 V(ObjectHashSet) \ | 1099 V(ObjectHashSet) \ |
1099 V(WeakHashTable) \ | 1100 V(WeakHashTable) \ |
1100 V(OrderedHashTable) \ | 1101 V(OrderedHashTable) \ |
1101 V(SloppyArgumentsElements) | 1102 V(SloppyArgumentsElements) \ |
| 1103 V(SourcePositionTableWithFrameCache) |
1102 | 1104 |
1103 #define ODDBALL_LIST(V) \ | 1105 #define ODDBALL_LIST(V) \ |
1104 V(Undefined, undefined_value) \ | 1106 V(Undefined, undefined_value) \ |
1105 V(Null, null_value) \ | 1107 V(Null, null_value) \ |
1106 V(TheHole, the_hole_value) \ | 1108 V(TheHole, the_hole_value) \ |
1107 V(Exception, exception) \ | 1109 V(Exception, exception) \ |
1108 V(Uninitialized, uninitialized_value) \ | 1110 V(Uninitialized, uninitialized_value) \ |
1109 V(True, true_value) \ | 1111 V(True, true_value) \ |
1110 V(False, false_value) \ | 1112 V(False, false_value) \ |
1111 V(ArgumentsMarker, arguments_marker) \ | 1113 V(ArgumentsMarker, arguments_marker) \ |
(...skipping 2175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3287 inline Age bytecode_age() const; | 3289 inline Age bytecode_age() const; |
3288 inline void set_bytecode_age(Age age); | 3290 inline void set_bytecode_age(Age age); |
3289 | 3291 |
3290 // Accessors for the constant pool. | 3292 // Accessors for the constant pool. |
3291 DECL_ACCESSORS(constant_pool, FixedArray) | 3293 DECL_ACCESSORS(constant_pool, FixedArray) |
3292 | 3294 |
3293 // Accessors for handler table containing offsets of exception handlers. | 3295 // Accessors for handler table containing offsets of exception handlers. |
3294 DECL_ACCESSORS(handler_table, FixedArray) | 3296 DECL_ACCESSORS(handler_table, FixedArray) |
3295 | 3297 |
3296 // Accessors for source position table containing mappings between byte code | 3298 // Accessors for source position table containing mappings between byte code |
3297 // offset and source position. | 3299 // offset and source position or SourcePositionTableWithFrameCache. |
3298 DECL_ACCESSORS(source_position_table, ByteArray) | 3300 DECL_ACCESSORS(source_position_table, Object) |
| 3301 |
| 3302 inline ByteArray* SourcePositionTable(); |
3299 | 3303 |
3300 DECLARE_CAST(BytecodeArray) | 3304 DECLARE_CAST(BytecodeArray) |
3301 | 3305 |
3302 // Dispatched behavior. | 3306 // Dispatched behavior. |
3303 inline int BytecodeArraySize(); | 3307 inline int BytecodeArraySize(); |
3304 | 3308 |
3305 inline int instruction_size(); | 3309 inline int instruction_size(); |
3306 | 3310 |
3307 // Returns the size of bytecode and its metadata. This includes the size of | 3311 // Returns the size of bytecode and its metadata. This includes the size of |
3308 // bytecode, constant pool, source position table, and handler table. | 3312 // bytecode, constant pool, source position table, and handler table. |
(...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3700 DECL_ACCESSORS(relocation_info, ByteArray) | 3704 DECL_ACCESSORS(relocation_info, ByteArray) |
3701 void InvalidateRelocation(); | 3705 void InvalidateRelocation(); |
3702 void InvalidateEmbeddedObjects(); | 3706 void InvalidateEmbeddedObjects(); |
3703 | 3707 |
3704 // [handler_table]: Fixed array containing offsets of exception handlers. | 3708 // [handler_table]: Fixed array containing offsets of exception handlers. |
3705 DECL_ACCESSORS(handler_table, FixedArray) | 3709 DECL_ACCESSORS(handler_table, FixedArray) |
3706 | 3710 |
3707 // [deoptimization_data]: Array containing data for deopt. | 3711 // [deoptimization_data]: Array containing data for deopt. |
3708 DECL_ACCESSORS(deoptimization_data, FixedArray) | 3712 DECL_ACCESSORS(deoptimization_data, FixedArray) |
3709 | 3713 |
3710 // [source_position_table]: ByteArray for the source positions table. | 3714 // [source_position_table]: ByteArray for the source positions table or |
3711 DECL_ACCESSORS(source_position_table, ByteArray) | 3715 // SourcePositionTableWithFrameCache. |
| 3716 DECL_ACCESSORS(source_position_table, Object) |
| 3717 |
| 3718 inline ByteArray* SourcePositionTable(); |
3712 | 3719 |
3713 // [trap_handler_index]: An index into the trap handler's master list of code | 3720 // [trap_handler_index]: An index into the trap handler's master list of code |
3714 // objects. | 3721 // objects. |
3715 DECL_ACCESSORS(trap_handler_index, Smi) | 3722 DECL_ACCESSORS(trap_handler_index, Smi) |
3716 | 3723 |
3717 // [raw_type_feedback_info]: This field stores various things, depending on | 3724 // [raw_type_feedback_info]: This field stores various things, depending on |
3718 // the kind of the code object. | 3725 // the kind of the code object. |
3719 // FUNCTION => type feedback information. | 3726 // FUNCTION => type feedback information. |
3720 // STUB and ICs => major/minor key as Smi. | 3727 // STUB and ICs => major/minor key as Smi. |
3721 DECL_ACCESSORS(raw_type_feedback_info, Object) | 3728 DECL_ACCESSORS(raw_type_feedback_info, Object) |
(...skipping 511 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4233 | 4240 |
4234 // Returns the size of the code instructions. | 4241 // Returns the size of the code instructions. |
4235 inline int instruction_size(); | 4242 inline int instruction_size(); |
4236 | 4243 |
4237 // Return the source position table. | 4244 // Return the source position table. |
4238 inline ByteArray* source_position_table(); | 4245 inline ByteArray* source_position_table(); |
4239 | 4246 |
4240 // Set the source position table. | 4247 // Set the source position table. |
4241 inline void set_source_position_table(ByteArray* source_position_table); | 4248 inline void set_source_position_table(ByteArray* source_position_table); |
4242 | 4249 |
| 4250 inline Object* stack_frame_cache(); |
| 4251 static void SetStackFrameCache(Handle<AbstractCode> abstract_code, |
| 4252 Handle<UnseededNumberDictionary> cache); |
| 4253 void DropStackFrameCache(); |
| 4254 |
4243 // Returns the size of instructions and the metadata. | 4255 // Returns the size of instructions and the metadata. |
4244 inline int SizeIncludingMetadata(); | 4256 inline int SizeIncludingMetadata(); |
4245 | 4257 |
4246 // Returns true if pc is inside this object's instructions. | 4258 // Returns true if pc is inside this object's instructions. |
4247 inline bool contains(byte* pc); | 4259 inline bool contains(byte* pc); |
4248 | 4260 |
4249 // Returns the AbstractCode::Kind of the code. | 4261 // Returns the AbstractCode::Kind of the code. |
4250 inline Kind kind(); | 4262 inline Kind kind(); |
4251 | 4263 |
4252 // Calculate the size of the code object to report for log events. This takes | 4264 // Calculate the size of the code object to report for log events. This takes |
(...skipping 5887 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10140 | 10152 |
10141 private: | 10153 private: |
10142 // Bit position in the flag, from least significant bit position. | 10154 // Bit position in the flag, from least significant bit position. |
10143 static const int kIsEvalBit = 0; | 10155 static const int kIsEvalBit = 0; |
10144 static const int kIsConstructorBit = 1; | 10156 static const int kIsConstructorBit = 1; |
10145 static const int kIsWasmBit = 2; | 10157 static const int kIsWasmBit = 2; |
10146 | 10158 |
10147 DISALLOW_IMPLICIT_CONSTRUCTORS(StackFrameInfo); | 10159 DISALLOW_IMPLICIT_CONSTRUCTORS(StackFrameInfo); |
10148 }; | 10160 }; |
10149 | 10161 |
| 10162 class SourcePositionTableWithFrameCache : public Tuple2 { |
| 10163 public: |
| 10164 DECL_ACCESSORS(source_position_table, ByteArray) |
| 10165 DECL_ACCESSORS(stack_frame_cache, UnseededNumberDictionary) |
| 10166 |
| 10167 DECLARE_CAST(SourcePositionTableWithFrameCache) |
| 10168 |
| 10169 static const int kSourcePositionTableIndex = Struct::kHeaderSize; |
| 10170 static const int kStackFrameCacheIndex = |
| 10171 kSourcePositionTableIndex + kPointerSize; |
| 10172 static const int kSize = kStackFrameCacheIndex + kPointerSize; |
| 10173 |
| 10174 private: |
| 10175 DISALLOW_IMPLICIT_CONSTRUCTORS(SourcePositionTableWithFrameCache); |
| 10176 }; |
| 10177 |
10150 #define VISITOR_SYNCHRONIZATION_TAGS_LIST(V) \ | 10178 #define VISITOR_SYNCHRONIZATION_TAGS_LIST(V) \ |
10151 V(kStringTable, "string_table", "(Internalized strings)") \ | 10179 V(kStringTable, "string_table", "(Internalized strings)") \ |
10152 V(kExternalStringsTable, "external_strings_table", "(External strings)") \ | 10180 V(kExternalStringsTable, "external_strings_table", "(External strings)") \ |
10153 V(kStrongRootList, "strong_root_list", "(Strong roots)") \ | 10181 V(kStrongRootList, "strong_root_list", "(Strong roots)") \ |
10154 V(kSmiRootList, "smi_root_list", "(Smi roots)") \ | 10182 V(kSmiRootList, "smi_root_list", "(Smi roots)") \ |
10155 V(kBootstrapper, "bootstrapper", "(Bootstrapper)") \ | 10183 V(kBootstrapper, "bootstrapper", "(Bootstrapper)") \ |
10156 V(kTop, "top", "(Isolate)") \ | 10184 V(kTop, "top", "(Isolate)") \ |
10157 V(kRelocatable, "relocatable", "(Relocatable)") \ | 10185 V(kRelocatable, "relocatable", "(Relocatable)") \ |
10158 V(kDebug, "debug", "(Debugger)") \ | 10186 V(kDebug, "debug", "(Debugger)") \ |
10159 V(kCompilationCache, "compilationcache", "(Compilation cache)") \ | 10187 V(kCompilationCache, "compilationcache", "(Compilation cache)") \ |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10253 } | 10281 } |
10254 }; | 10282 }; |
10255 | 10283 |
10256 | 10284 |
10257 } // NOLINT, false-positive due to second-order macros. | 10285 } // NOLINT, false-positive due to second-order macros. |
10258 } // NOLINT, false-positive due to second-order macros. | 10286 } // NOLINT, false-positive due to second-order macros. |
10259 | 10287 |
10260 #include "src/objects/object-macros-undef.h" | 10288 #include "src/objects/object-macros-undef.h" |
10261 | 10289 |
10262 #endif // V8_OBJECTS_H_ | 10290 #endif // V8_OBJECTS_H_ |
OLD | NEW |