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

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

Issue 2768153002: When generating CodeSourceMaps, reassign function ids once per function instead of once per inlinin… (Closed)
Patch Set: Created 3 years, 9 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 | « no previous file | runtime/vm/code_descriptors.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 RUNTIME_VM_CODE_DESCRIPTORS_H_ 5 #ifndef RUNTIME_VM_CODE_DESCRIPTORS_H_
6 #define RUNTIME_VM_CODE_DESCRIPTORS_H_ 6 #define RUNTIME_VM_CODE_DESCRIPTORS_H_
7 7
8 #include "vm/ast.h" 8 #include "vm/ast.h"
9 #include "vm/code_generator.h" 9 #include "vm/code_generator.h"
10 #include "vm/datastream.h" 10 #include "vm/datastream.h"
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 void BeginCodeSourceRange(int32_t pc_offset); 234 void BeginCodeSourceRange(int32_t pc_offset);
235 void EndCodeSourceRange(int32_t pc_offset, TokenPosition pos); 235 void EndCodeSourceRange(int32_t pc_offset, TokenPosition pos);
236 void NoteDescriptor(RawPcDescriptors::Kind kind, 236 void NoteDescriptor(RawPcDescriptors::Kind kind,
237 int32_t pc_offset, 237 int32_t pc_offset,
238 TokenPosition pos); 238 TokenPosition pos);
239 239
240 RawArray* InliningIdToFunction(); 240 RawArray* InliningIdToFunction();
241 RawCodeSourceMap* Finalize(); 241 RawCodeSourceMap* Finalize();
242 242
243 private: 243 private:
244 intptr_t GetFunctionId(intptr_t inline_id);
245
244 void BufferChangePosition(TokenPosition pos) { 246 void BufferChangePosition(TokenPosition pos) {
245 buffered_token_pos_stack_.Last() = pos; 247 buffered_token_pos_stack_.Last() = pos;
246 } 248 }
247 void WriteChangePosition(TokenPosition pos); 249 void WriteChangePosition(TokenPosition pos);
248 void BufferAdvancePC(int32_t distance) { buffered_pc_offset_ += distance; } 250 void BufferAdvancePC(int32_t distance) { buffered_pc_offset_ += distance; }
249 void WriteAdvancePC(int32_t distance) { 251 void WriteAdvancePC(int32_t distance) {
250 stream_.Write<uint8_t>(kAdvancePC); 252 stream_.Write<uint8_t>(kAdvancePC);
251 stream_.Write<int32_t>(distance); 253 stream_.Write<int32_t>(distance);
252 written_pc_offset_ += distance; 254 written_pc_offset_ += distance;
253 } 255 }
254 void BufferPush(intptr_t inline_id) { 256 void BufferPush(intptr_t inline_id) {
255 buffered_inline_id_stack_.Add(inline_id); 257 buffered_inline_id_stack_.Add(inline_id);
256 buffered_token_pos_stack_.Add(kInitialPosition); 258 buffered_token_pos_stack_.Add(kInitialPosition);
257 } 259 }
258 void WritePush(intptr_t inline_id) { 260 void WritePush(intptr_t inline_id) {
259 stream_.Write<uint8_t>(kPushFunction); 261 stream_.Write<uint8_t>(kPushFunction);
260 stream_.Write<int32_t>(inline_id); 262 stream_.Write<int32_t>(GetFunctionId(inline_id));
261 written_inline_id_stack_.Add(inline_id); 263 written_inline_id_stack_.Add(inline_id);
262 written_token_pos_stack_.Add(kInitialPosition); 264 written_token_pos_stack_.Add(kInitialPosition);
263 } 265 }
264 void BufferPop() { 266 void BufferPop() {
265 buffered_inline_id_stack_.RemoveLast(); 267 buffered_inline_id_stack_.RemoveLast();
266 buffered_token_pos_stack_.RemoveLast(); 268 buffered_token_pos_stack_.RemoveLast();
267 } 269 }
268 void WritePop() { 270 void WritePop() {
269 stream_.Write<uint8_t>(kPopFunction); 271 stream_.Write<uint8_t>(kPopFunction);
270 written_inline_id_stack_.RemoveLast(); 272 written_inline_id_stack_.RemoveLast();
(...skipping 17 matching lines...) Expand all
288 GrowableArray<TokenPosition> buffered_token_pos_stack_; 290 GrowableArray<TokenPosition> buffered_token_pos_stack_;
289 291
290 intptr_t written_pc_offset_; 292 intptr_t written_pc_offset_;
291 GrowableArray<intptr_t> written_inline_id_stack_; 293 GrowableArray<intptr_t> written_inline_id_stack_;
292 GrowableArray<TokenPosition> written_token_pos_stack_; 294 GrowableArray<TokenPosition> written_token_pos_stack_;
293 295
294 const GrowableArray<intptr_t>& caller_inline_id_; 296 const GrowableArray<intptr_t>& caller_inline_id_;
295 const GrowableArray<TokenPosition>& inline_id_to_token_pos_; 297 const GrowableArray<TokenPosition>& inline_id_to_token_pos_;
296 const GrowableArray<const Function*>& inline_id_to_function_; 298 const GrowableArray<const Function*>& inline_id_to_function_;
297 299
300 const GrowableObjectArray& inlined_functions_;
301
298 uint8_t* buffer_; 302 uint8_t* buffer_;
299 WriteStream stream_; 303 WriteStream stream_;
300 304
301 const bool stack_traces_only_; 305 const bool stack_traces_only_;
302 306
303 DISALLOW_COPY_AND_ASSIGN(CodeSourceMapBuilder); 307 DISALLOW_COPY_AND_ASSIGN(CodeSourceMapBuilder);
304 }; 308 };
305 309
306 310
307 class CodeSourceMapReader : public ValueObject { 311 class CodeSourceMapReader : public ValueObject {
(...skipping 14 matching lines...) Expand all
322 const CodeSourceMap& map_; 326 const CodeSourceMap& map_;
323 const Array& functions_; 327 const Array& functions_;
324 const Function& root_; 328 const Function& root_;
325 329
326 DISALLOW_COPY_AND_ASSIGN(CodeSourceMapReader); 330 DISALLOW_COPY_AND_ASSIGN(CodeSourceMapReader);
327 }; 331 };
328 332
329 } // namespace dart 333 } // namespace dart
330 334
331 #endif // RUNTIME_VM_CODE_DESCRIPTORS_H_ 335 #endif // RUNTIME_VM_CODE_DESCRIPTORS_H_
OLDNEW
« no previous file with comments | « no previous file | runtime/vm/code_descriptors.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698