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

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

Issue 10831261: Build and use stack maps in the SSA compiler. (Closed) Base URL: https://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 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 Register temp, 76 Register temp,
77 Label* not_double_or_smi); 77 Label* not_double_or_smi);
78 78
79 // Returns 'true' if code generation for this function is complete, i.e., 79 // Returns 'true' if code generation for this function is complete, i.e.,
80 // no fall-through to regular code is needed. 80 // no fall-through to regular code is needed.
81 bool TryIntrinsify(); 81 bool TryIntrinsify();
82 82
83 void GenerateCallRuntime(intptr_t deopt_id, 83 void GenerateCallRuntime(intptr_t deopt_id,
84 intptr_t token_pos, 84 intptr_t token_pos,
85 intptr_t try_index, 85 intptr_t try_index,
86 const RuntimeEntry& entry); 86 const RuntimeEntry& entry,
87 BitmapBuilder* stack_bitmap);
87 88
88 void GenerateCall(intptr_t token_pos, 89 void GenerateCall(intptr_t token_pos,
89 intptr_t try_index, 90 intptr_t try_index,
90 const ExternalLabel* label, 91 const ExternalLabel* label,
91 PcDescriptors::Kind kind); 92 PcDescriptors::Kind kind,
93 BitmapBuilder* stack_bitmap);
92 94
93 void GenerateAssertAssignable(intptr_t deopt_id, 95 void GenerateAssertAssignable(intptr_t deopt_id,
94 intptr_t token_pos, 96 intptr_t token_pos,
95 intptr_t try_index, 97 intptr_t try_index,
96 const AbstractType& dst_type, 98 const AbstractType& dst_type,
97 const String& dst_name); 99 const String& dst_name,
100 BitmapBuilder* stack_bitmap);
98 101
99 void GenerateInstanceOf(intptr_t deopt_id, 102 void GenerateInstanceOf(intptr_t deopt_id,
100 intptr_t token_pos, 103 intptr_t token_pos,
101 intptr_t try_index, 104 intptr_t try_index,
102 const AbstractType& type, 105 const AbstractType& type,
103 bool negate_result); 106 bool negate_result,
107 BitmapBuilder* stack_bitmap);
104 108
105 void GenerateInstanceCall(intptr_t deopt_id, 109 void GenerateInstanceCall(intptr_t deopt_id,
106 intptr_t token_pos, 110 intptr_t token_pos,
107 intptr_t try_index, 111 intptr_t try_index,
108 const String& function_name, 112 const String& function_name,
109 intptr_t argument_count, 113 intptr_t argument_count,
110 const Array& argument_names, 114 const Array& argument_names,
111 intptr_t checked_argument_count); 115 intptr_t checked_argument_count,
116 BitmapBuilder* stack_bitmap);
112 117
113 void GenerateStaticCall(intptr_t deopt_id, 118 void GenerateStaticCall(intptr_t deopt_id,
114 intptr_t token_pos, 119 intptr_t token_pos,
115 intptr_t try_index, 120 intptr_t try_index,
116 const Function& function, 121 const Function& function,
117 intptr_t argument_count, 122 intptr_t argument_count,
118 const Array& argument_names); 123 const Array& argument_names,
124 BitmapBuilder* stack_bitmap);
119 125
120 void GenerateInlinedMathSqrt(Label* done); 126 void GenerateInlinedMathSqrt(Label* done);
121 127
122 void GenerateNumberTypeCheck(Register kClassIdReg, 128 void GenerateNumberTypeCheck(Register kClassIdReg,
123 const AbstractType& type, 129 const AbstractType& type,
124 Label* is_instance_lbl, 130 Label* is_instance_lbl,
125 Label* is_not_instance_lbl); 131 Label* is_not_instance_lbl);
126 void GenerateStringTypeCheck(Register kClassIdReg, 132 void GenerateStringTypeCheck(Register kClassIdReg,
127 Label* is_instance_lbl, 133 Label* is_instance_lbl,
128 Label* is_not_instance_lbl); 134 Label* is_not_instance_lbl);
(...skipping 16 matching lines...) Expand all
145 151
146 void EmitLoadIndexedGeneric(LoadIndexedComp* comp); 152 void EmitLoadIndexedGeneric(LoadIndexedComp* comp);
147 void EmitTestAndCall(const ICData& ic_data, 153 void EmitTestAndCall(const ICData& ic_data,
148 Register class_id_reg, 154 Register class_id_reg,
149 intptr_t arg_count, 155 intptr_t arg_count,
150 const Array& arg_names, 156 const Array& arg_names,
151 Label* deopt, 157 Label* deopt,
152 Label* done, // Can be NULL, which means fallthrough. 158 Label* done, // Can be NULL, which means fallthrough.
153 intptr_t deopt_id, 159 intptr_t deopt_id,
154 intptr_t token_index, 160 intptr_t token_index,
155 intptr_t try_index); 161 intptr_t try_index,
162 BitmapBuilder* stack_bitmap);
156 163
157 void EmitDoubleCompareBranch(Condition true_condition, 164 void EmitDoubleCompareBranch(Condition true_condition,
158 XmmRegister left, 165 XmmRegister left,
159 XmmRegister right, 166 XmmRegister right,
160 BranchInstr* branch); 167 BranchInstr* branch);
161 void EmitDoubleCompareBool(Condition true_condition, 168 void EmitDoubleCompareBool(Condition true_condition,
162 XmmRegister left, 169 XmmRegister left,
163 XmmRegister right, 170 XmmRegister right,
164 Register result); 171 Register result);
165 172
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 // that should be used when deoptimizing we store it in this variable. 322 // that should be used when deoptimizing we store it in this variable.
316 // In future AddDeoptStub should be moved out of the instruction template. 323 // In future AddDeoptStub should be moved out of the instruction template.
317 Environment* pending_deoptimization_env_; 324 Environment* pending_deoptimization_env_;
318 325
319 DISALLOW_COPY_AND_ASSIGN(FlowGraphCompiler); 326 DISALLOW_COPY_AND_ASSIGN(FlowGraphCompiler);
320 }; 327 };
321 328
322 } // namespace dart 329 } // namespace dart
323 330
324 #endif // VM_FLOW_GRAPH_COMPILER_IA32_H_ 331 #endif // VM_FLOW_GRAPH_COMPILER_IA32_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698