OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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_ |
OLD | NEW |