OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 #include "vm/globals.h" // Needed here to get TARGET_ARCH_XXX. | 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_XXX. |
6 | 6 |
7 #include "vm/flow_graph_compiler.h" | 7 #include "vm/flow_graph_compiler.h" |
8 | 8 |
9 #include "vm/bit_vector.h" | 9 #include "vm/bit_vector.h" |
10 #include "vm/cha.h" | 10 #include "vm/cha.h" |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 } | 158 } |
159 | 159 |
160 | 160 |
161 FlowGraphCompiler::FlowGraphCompiler( | 161 FlowGraphCompiler::FlowGraphCompiler( |
162 Assembler* assembler, | 162 Assembler* assembler, |
163 FlowGraph* flow_graph, | 163 FlowGraph* flow_graph, |
164 const ParsedFunction& parsed_function, | 164 const ParsedFunction& parsed_function, |
165 bool is_optimizing, | 165 bool is_optimizing, |
166 const GrowableArray<const Function*>& inline_id_to_function, | 166 const GrowableArray<const Function*>& inline_id_to_function, |
167 const GrowableArray<intptr_t>& caller_inline_id) | 167 const GrowableArray<intptr_t>& caller_inline_id) |
168 : isolate_(Isolate::Current()), | 168 : thread_(Thread::Current()), |
| 169 isolate_(Isolate::Current()), |
169 zone_(Thread::Current()->zone()), | 170 zone_(Thread::Current()->zone()), |
170 assembler_(assembler), | 171 assembler_(assembler), |
171 parsed_function_(parsed_function), | 172 parsed_function_(parsed_function), |
172 flow_graph_(*flow_graph), | 173 flow_graph_(*flow_graph), |
173 block_order_(*flow_graph->CodegenBlockOrder(is_optimizing)), | 174 block_order_(*flow_graph->CodegenBlockOrder(is_optimizing)), |
174 current_block_(NULL), | 175 current_block_(NULL), |
175 exception_handlers_list_(NULL), | 176 exception_handlers_list_(NULL), |
176 pc_descriptors_list_(NULL), | 177 pc_descriptors_list_(NULL), |
177 stackmap_table_builder_(NULL), | 178 stackmap_table_builder_(NULL), |
178 block_info_(block_order_.length()), | 179 block_info_(block_order_.length()), |
(...skipping 19 matching lines...) Expand all Loading... |
198 pending_deoptimization_env_(NULL), | 199 pending_deoptimization_env_(NULL), |
199 lazy_deopt_pc_offset_(Code::kInvalidPc), | 200 lazy_deopt_pc_offset_(Code::kInvalidPc), |
200 deopt_id_to_ic_data_(NULL), | 201 deopt_id_to_ic_data_(NULL), |
201 edge_counters_array_(Array::ZoneHandle()), | 202 edge_counters_array_(Array::ZoneHandle()), |
202 inlined_code_intervals_(Array::ZoneHandle(Object::empty_array().raw())), | 203 inlined_code_intervals_(Array::ZoneHandle(Object::empty_array().raw())), |
203 inline_id_to_function_(inline_id_to_function), | 204 inline_id_to_function_(inline_id_to_function), |
204 caller_inline_id_(caller_inline_id) { | 205 caller_inline_id_(caller_inline_id) { |
205 ASSERT(flow_graph->parsed_function().function().raw() == | 206 ASSERT(flow_graph->parsed_function().function().raw() == |
206 parsed_function.function().raw()); | 207 parsed_function.function().raw()); |
207 if (!is_optimizing) { | 208 if (!is_optimizing) { |
208 const intptr_t len = isolate()->deopt_id(); | 209 const intptr_t len = thread()->deopt_id(); |
209 deopt_id_to_ic_data_ = new(zone()) ZoneGrowableArray<const ICData*>(len); | 210 deopt_id_to_ic_data_ = new(zone()) ZoneGrowableArray<const ICData*>(len); |
210 deopt_id_to_ic_data_->SetLength(len); | 211 deopt_id_to_ic_data_->SetLength(len); |
211 for (intptr_t i = 0; i < len; i++) { | 212 for (intptr_t i = 0; i < len; i++) { |
212 (*deopt_id_to_ic_data_)[i] = NULL; | 213 (*deopt_id_to_ic_data_)[i] = NULL; |
213 } | 214 } |
214 // TODO(fschneider): Abstract iteration into ICDataArrayIterator. | 215 // TODO(fschneider): Abstract iteration into ICDataArrayIterator. |
215 const Array& old_saved_ic_data = Array::Handle(zone(), | 216 const Array& old_saved_ic_data = Array::Handle(zone(), |
216 flow_graph->function().ic_data_array()); | 217 flow_graph->function().ic_data_array()); |
217 const intptr_t saved_len = | 218 const intptr_t saved_len = |
218 old_saved_ic_data.IsNull() ? 0 : old_saved_ic_data.Length(); | 219 old_saved_ic_data.IsNull() ? 0 : old_saved_ic_data.Length(); |
(...skipping 1622 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1841 | 1842 |
1842 | 1843 |
1843 void FlowGraphCompiler::FrameStateClear() { | 1844 void FlowGraphCompiler::FrameStateClear() { |
1844 ASSERT(!is_optimizing()); | 1845 ASSERT(!is_optimizing()); |
1845 frame_state_.TruncateTo(0); | 1846 frame_state_.TruncateTo(0); |
1846 } | 1847 } |
1847 #endif | 1848 #endif |
1848 | 1849 |
1849 | 1850 |
1850 } // namespace dart | 1851 } // namespace dart |
OLD | NEW |