Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(377)

Side by Side Diff: runtime/vm/raw_object.h

Issue 1634863002: Introduce CodeSourceMap object to hold pc -> token position mappings (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « runtime/vm/object.cc ('k') | runtime/vm/raw_object.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #ifndef VM_RAW_OBJECT_H_ 5 #ifndef VM_RAW_OBJECT_H_
6 #define VM_RAW_OBJECT_H_ 6 #define VM_RAW_OBJECT_H_
7 7
8 #include "platform/assert.h" 8 #include "platform/assert.h"
9 #include "vm/atomic.h" 9 #include "vm/atomic.h"
10 #include "vm/globals.h" 10 #include "vm/globals.h"
(...skipping 15 matching lines...) Expand all
26 V(Field) \ 26 V(Field) \
27 V(LiteralToken) \ 27 V(LiteralToken) \
28 V(TokenStream) \ 28 V(TokenStream) \
29 V(Script) \ 29 V(Script) \
30 V(Library) \ 30 V(Library) \
31 V(Namespace) \ 31 V(Namespace) \
32 V(Code) \ 32 V(Code) \
33 V(Instructions) \ 33 V(Instructions) \
34 V(ObjectPool) \ 34 V(ObjectPool) \
35 V(PcDescriptors) \ 35 V(PcDescriptors) \
36 V(CodeSourceMap) \
36 V(Stackmap) \ 37 V(Stackmap) \
37 V(LocalVarDescriptors) \ 38 V(LocalVarDescriptors) \
38 V(ExceptionHandlers) \ 39 V(ExceptionHandlers) \
39 V(Context) \ 40 V(Context) \
40 V(ContextScope) \ 41 V(ContextScope) \
41 V(ICData) \ 42 V(ICData) \
42 V(MegamorphicCache) \ 43 V(MegamorphicCache) \
43 V(SubtypeTestCache) \ 44 V(SubtypeTestCache) \
44 V(Error) \ 45 V(Error) \
45 V(ApiError) \ 46 V(ApiError) \
(...skipping 1002 matching lines...) Expand 10 before | Expand all | Expand 10 after
1048 } 1049 }
1049 RawInstructions* active_instructions_; 1050 RawInstructions* active_instructions_;
1050 RawInstructions* instructions_; 1051 RawInstructions* instructions_;
1051 RawObjectPool* object_pool_; 1052 RawObjectPool* object_pool_;
1052 // If owner_ is Function::null() the owner is a regular stub. 1053 // If owner_ is Function::null() the owner is a regular stub.
1053 // If owner_ is a Class the owner is the allocation stub for that class. 1054 // If owner_ is a Class the owner is the allocation stub for that class.
1054 // Else, owner_ is a regular Dart Function. 1055 // Else, owner_ is a regular Dart Function.
1055 RawObject* owner_; // Function, Null, or a Class. 1056 RawObject* owner_; // Function, Null, or a Class.
1056 RawExceptionHandlers* exception_handlers_; 1057 RawExceptionHandlers* exception_handlers_;
1057 RawPcDescriptors* pc_descriptors_; 1058 RawPcDescriptors* pc_descriptors_;
1059 RawCodeSourceMap* code_source_map_;
1058 RawArray* stackmaps_; 1060 RawArray* stackmaps_;
1059 RawObject** to_snapshot() { 1061 RawObject** to_snapshot() {
1060 return reinterpret_cast<RawObject**>(&ptr()->stackmaps_); 1062 return reinterpret_cast<RawObject**>(&ptr()->stackmaps_);
1061 } 1063 }
1062 RawArray* deopt_info_array_; 1064 RawArray* deopt_info_array_;
1063 RawArray* static_calls_target_table_; // (code-offset, function, code). 1065 RawArray* static_calls_target_table_; // (code-offset, function, code).
1064 RawLocalVarDescriptors* var_descriptors_; 1066 RawLocalVarDescriptors* var_descriptors_;
1065 RawArray* inlined_metadata_; 1067 RawArray* inlined_metadata_;
1066 RawArray* comments_; 1068 RawArray* comments_;
1067 // If return_address_metadata_ is a Smi, it is the offset to the prologue. 1069 // If return_address_metadata_ is a Smi, it is the offset to the prologue.
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
1195 1197
1196 // Variable length data follows here. 1198 // Variable length data follows here.
1197 uint8_t* data() { OPEN_ARRAY_START(uint8_t, intptr_t); } 1199 uint8_t* data() { OPEN_ARRAY_START(uint8_t, intptr_t); }
1198 const uint8_t* data() const { OPEN_ARRAY_START(uint8_t, intptr_t); } 1200 const uint8_t* data() const { OPEN_ARRAY_START(uint8_t, intptr_t); }
1199 1201
1200 friend class Object; 1202 friend class Object;
1201 friend class SnapshotReader; 1203 friend class SnapshotReader;
1202 }; 1204 };
1203 1205
1204 1206
1207 // CodeSourceMap stores a mapping between code PC ranges and source token
1208 // positions.
1209 class RawCodeSourceMap : public RawObject {
1210 private:
1211 RAW_HEAP_OBJECT_IMPLEMENTATION(CodeSourceMap);
1212
1213 int32_t length_; // Number of entries.
1214
1215 // Variable length data follows here.
1216 uint8_t* data() { OPEN_ARRAY_START(uint8_t, intptr_t); }
1217 const uint8_t* data() const { OPEN_ARRAY_START(uint8_t, intptr_t); }
1218
1219 friend class Object;
1220 friend class SnapshotReader;
1221 };
1222
1223
1205 // Stackmap is an immutable representation of the layout of the stack at a 1224 // Stackmap is an immutable representation of the layout of the stack at a
1206 // PC. The stack map representation consists of a bit map which marks each 1225 // PC. The stack map representation consists of a bit map which marks each
1207 // live object index starting from the base of the frame. 1226 // live object index starting from the base of the frame.
1208 // 1227 //
1209 // The bit map representation is optimized for dense and small bit maps, without 1228 // The bit map representation is optimized for dense and small bit maps, without
1210 // any upper bound. 1229 // any upper bound.
1211 class RawStackmap : public RawObject { 1230 class RawStackmap : public RawObject {
1212 RAW_HEAP_OBJECT_IMPLEMENTATION(Stackmap); 1231 RAW_HEAP_OBJECT_IMPLEMENTATION(Stackmap);
1213 1232
1214 // Regarding changing this to a bitfield: ARM64 requires register_bit_count_ 1233 // Regarding changing this to a bitfield: ARM64 requires register_bit_count_
(...skipping 1064 matching lines...) Expand 10 before | Expand all | Expand 10 after
2279 return (index == kArrayCid) || 2298 return (index == kArrayCid) ||
2280 (index == kImmutableArrayCid) || 2299 (index == kImmutableArrayCid) ||
2281 RawObject::IsOneByteStringClassId(index) || 2300 RawObject::IsOneByteStringClassId(index) ||
2282 RawObject::IsTwoByteStringClassId(index) || 2301 RawObject::IsTwoByteStringClassId(index) ||
2283 RawObject::IsTypedDataClassId(index) || 2302 RawObject::IsTypedDataClassId(index) ||
2284 (index == kContextCid) || 2303 (index == kContextCid) ||
2285 (index == kTypeArgumentsCid) || 2304 (index == kTypeArgumentsCid) ||
2286 (index == kInstructionsCid) || 2305 (index == kInstructionsCid) ||
2287 (index == kObjectPoolCid) || 2306 (index == kObjectPoolCid) ||
2288 (index == kPcDescriptorsCid) || 2307 (index == kPcDescriptorsCid) ||
2308 (index == kCodeSourceMapCid) ||
2289 (index == kStackmapCid) || 2309 (index == kStackmapCid) ||
2290 (index == kLocalVarDescriptorsCid) || 2310 (index == kLocalVarDescriptorsCid) ||
2291 (index == kExceptionHandlersCid) || 2311 (index == kExceptionHandlersCid) ||
2292 (index == kCodeCid) || 2312 (index == kCodeCid) ||
2293 (index == kContextScopeCid) || 2313 (index == kContextScopeCid) ||
2294 (index == kInstanceCid) || 2314 (index == kInstanceCid) ||
2295 (index == kJSRegExpCid); 2315 (index == kJSRegExpCid);
2296 } 2316 }
2297 2317
2298 2318
(...skipping 11 matching lines...) Expand all
2310 COMPILE_ASSERT(kExternalTypedDataInt8ArrayCid == 2330 COMPILE_ASSERT(kExternalTypedDataInt8ArrayCid ==
2311 kTypedDataInt8ArrayViewCid + 15); 2331 kTypedDataInt8ArrayViewCid + 15);
2312 COMPILE_ASSERT(kByteBufferCid == kExternalTypedDataInt8ArrayCid + 14); 2332 COMPILE_ASSERT(kByteBufferCid == kExternalTypedDataInt8ArrayCid + 14);
2313 COMPILE_ASSERT(kNullCid == kByteBufferCid + 1); 2333 COMPILE_ASSERT(kNullCid == kByteBufferCid + 1);
2314 return (kNullCid - kTypedDataInt8ArrayCid); 2334 return (kNullCid - kTypedDataInt8ArrayCid);
2315 } 2335 }
2316 2336
2317 } // namespace dart 2337 } // namespace dart
2318 2338
2319 #endif // VM_RAW_OBJECT_H_ 2339 #endif // VM_RAW_OBJECT_H_
OLDNEW
« no previous file with comments | « runtime/vm/object.cc ('k') | runtime/vm/raw_object.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698