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

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

Issue 10823131: Add deopt info to code object and print it (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years, 4 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 | Annotate | Revision Log
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_FLOW_GRAPH_COMPILER_IA32_H_ 5 #ifndef VM_FLOW_GRAPH_COMPILER_IA32_H_
6 #define VM_FLOW_GRAPH_COMPILER_IA32_H_ 6 #define VM_FLOW_GRAPH_COMPILER_IA32_H_
7 7
8 #ifndef VM_FLOW_GRAPH_COMPILER_H_ 8 #ifndef VM_FLOW_GRAPH_COMPILER_H_
9 #error Include flow_graph_compiler.h instead of flow_graph_compiler_ia32.h. 9 #error Include flow_graph_compiler.h instead of flow_graph_compiler_ia32.h.
10 #endif 10 #endif
(...skipping 25 matching lines...) Expand all
36 36
37 // Accessors. 37 // Accessors.
38 Assembler* assembler() const { return assembler_; } 38 Assembler* assembler() const { return assembler_; }
39 const ParsedFunction& parsed_function() const { return parsed_function_; } 39 const ParsedFunction& parsed_function() const { return parsed_function_; }
40 const GrowableArray<BlockEntryInstr*>& block_order() const { 40 const GrowableArray<BlockEntryInstr*>& block_order() const {
41 return block_order_; 41 return block_order_;
42 } 42 }
43 DescriptorList* pc_descriptors_list() const { 43 DescriptorList* pc_descriptors_list() const {
44 return pc_descriptors_list_; 44 return pc_descriptors_list_;
45 } 45 }
46 const GrowableObjectArray& object_table() {
47 return object_table_;
48 }
46 BlockEntryInstr* current_block() const { return current_block_; } 49 BlockEntryInstr* current_block() const { return current_block_; }
47 void set_current_block(BlockEntryInstr* value) { 50 void set_current_block(BlockEntryInstr* value) {
48 current_block_ = value; 51 current_block_ = value;
49 } 52 }
50 static bool CanOptimize(); 53 static bool CanOptimize();
51 bool is_optimizing() const { return is_optimizing_; } 54 bool is_optimizing() const { return is_optimizing_; }
52 55
53 bool is_ssa() const { return is_ssa_; } 56 bool is_ssa() const { return is_ssa_; }
54 57
55 const GrowableArray<BlockInfo*>& block_info() const { return block_info_; } 58 const GrowableArray<BlockInfo*>& block_info() const { return block_info_; }
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 Label* AddDeoptStub(intptr_t deopt_id, 180 Label* AddDeoptStub(intptr_t deopt_id,
178 intptr_t deopt_token_pos, 181 intptr_t deopt_token_pos,
179 intptr_t try_index_, 182 intptr_t try_index_,
180 DeoptReasonId reason, 183 DeoptReasonId reason,
181 Register reg1 = kNoRegister, 184 Register reg1 = kNoRegister,
182 Register reg2 = kNoRegister, 185 Register reg2 = kNoRegister,
183 Register reg3 = kNoRegister); 186 Register reg3 = kNoRegister);
184 187
185 void FinalizeExceptionHandlers(const Code& code); 188 void FinalizeExceptionHandlers(const Code& code);
186 void FinalizePcDescriptors(const Code& code); 189 void FinalizePcDescriptors(const Code& code);
190 void FinalizeDeoptInfo(const Code& code);
187 void FinalizeStackmaps(const Code& code); 191 void FinalizeStackmaps(const Code& code);
188 void FinalizeVarDescriptors(const Code& code); 192 void FinalizeVarDescriptors(const Code& code);
189 void FinalizeComments(const Code& code); 193 void FinalizeComments(const Code& code);
190 194
191 const Bool& bool_true() const { return bool_true_; } 195 const Bool& bool_true() const { return bool_true_; }
192 const Bool& bool_false() const { return bool_false_; } 196 const Bool& bool_false() const { return bool_false_; }
193 const Class& double_class() const { return double_class_; } 197 const Class& double_class() const { return double_class_; }
194 198
195 FrameRegisterAllocator* frame_register_allocator() { 199 FrameRegisterAllocator* frame_register_allocator() {
196 return &frame_register_allocator_; 200 return &frame_register_allocator_;
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 294
291 // Compiler specific per-block state. Indexed by postorder block number 295 // Compiler specific per-block state. Indexed by postorder block number
292 // for convenience. This is not the block's index in the block order, 296 // for convenience. This is not the block's index in the block order,
293 // which is reverse postorder. 297 // which is reverse postorder.
294 BlockEntryInstr* current_block_; 298 BlockEntryInstr* current_block_;
295 ExceptionHandlerList* exception_handlers_list_; 299 ExceptionHandlerList* exception_handlers_list_;
296 DescriptorList* pc_descriptors_list_; 300 DescriptorList* pc_descriptors_list_;
297 StackmapTableBuilder* stackmap_table_builder_; 301 StackmapTableBuilder* stackmap_table_builder_;
298 GrowableArray<BlockInfo*> block_info_; 302 GrowableArray<BlockInfo*> block_info_;
299 GrowableArray<DeoptimizationStub*> deopt_stubs_; 303 GrowableArray<DeoptimizationStub*> deopt_stubs_;
304 const GrowableObjectArray& object_table_;
300 const bool is_optimizing_; 305 const bool is_optimizing_;
301 const bool is_ssa_; 306 const bool is_ssa_;
302 const bool is_dart_leaf_; 307 const bool is_dart_leaf_;
303 308
304 const Bool& bool_true_; 309 const Bool& bool_true_;
305 const Bool& bool_false_; 310 const Bool& bool_false_;
306 const Class& double_class_; 311 const Class& double_class_;
307 312
308 FrameRegisterAllocator frame_register_allocator_; 313 FrameRegisterAllocator frame_register_allocator_;
309 ParallelMoveResolver parallel_move_resolver_; 314 ParallelMoveResolver parallel_move_resolver_;
310 315
311 // Currently instructions generate deopt stubs internally by 316 // Currently instructions generate deopt stubs internally by
312 // calling AddDeoptStub. To communicate deoptimization environment 317 // calling AddDeoptStub. To communicate deoptimization environment
313 // that should be used when deoptimizing we store it in this variable. 318 // that should be used when deoptimizing we store it in this variable.
314 // In future AddDeoptStub should be moved out of the instruction template. 319 // In future AddDeoptStub should be moved out of the instruction template.
315 Environment* pending_deoptimization_env_; 320 Environment* pending_deoptimization_env_;
316 321
317 DISALLOW_COPY_AND_ASSIGN(FlowGraphCompiler); 322 DISALLOW_COPY_AND_ASSIGN(FlowGraphCompiler);
318 }; 323 };
319 324
320 } // namespace dart 325 } // namespace dart
321 326
322 #endif // VM_FLOW_GRAPH_COMPILER_IA32_H_ 327 #endif // VM_FLOW_GRAPH_COMPILER_IA32_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698