OLD | NEW |
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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/disassembler.h" | 5 #include "vm/disassembler.h" |
6 | 6 |
7 #include "vm/assembler.h" | 7 #include "vm/assembler.h" |
8 #include "vm/deopt_instructions.h" | 8 #include "vm/deopt_instructions.h" |
9 #include "vm/globals.h" | 9 #include "vm/globals.h" |
10 #include "vm/il_printer.h" | 10 #include "vm/il_printer.h" |
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 THR_Print("Pointer offsets for function: {\n"); | 198 THR_Print("Pointer offsets for function: {\n"); |
199 // Pointer offsets are stored in descending order. | 199 // Pointer offsets are stored in descending order. |
200 Object& obj = Object::Handle(); | 200 Object& obj = Object::Handle(); |
201 for (intptr_t i = code.pointer_offsets_length() - 1; i >= 0; i--) { | 201 for (intptr_t i = code.pointer_offsets_length() - 1; i >= 0; i--) { |
202 const uword addr = code.GetPointerOffsetAt(i) + code.EntryPoint(); | 202 const uword addr = code.GetPointerOffsetAt(i) + code.EntryPoint(); |
203 obj = *reinterpret_cast<RawObject**>(addr); | 203 obj = *reinterpret_cast<RawObject**>(addr); |
204 THR_Print(" %d : %#" Px " '%s'\n", | 204 THR_Print(" %d : %#" Px " '%s'\n", |
205 code.GetPointerOffsetAt(i), addr, obj.ToCString()); | 205 code.GetPointerOffsetAt(i), addr, obj.ToCString()); |
206 } | 206 } |
207 THR_Print("}\n"); | 207 THR_Print("}\n"); |
208 | |
209 ASSERT(ObjectPool::Handle(code.GetObjectPool()).Length() == 0); | |
210 #else | 208 #else |
211 ASSERT(code.pointer_offsets_length() == 0); | 209 ASSERT(code.pointer_offsets_length() == 0); |
| 210 #endif |
212 | 211 |
213 const ObjectPool& object_pool = ObjectPool::Handle(code.GetObjectPool()); | 212 const ObjectPool& object_pool = ObjectPool::Handle(code.GetObjectPool()); |
214 object_pool.DebugPrint(); | 213 object_pool.DebugPrint(); |
215 #endif | |
216 | 214 |
217 THR_Print("PC Descriptors for function '%s' {\n", function_fullname); | 215 THR_Print("PC Descriptors for function '%s' {\n", function_fullname); |
218 PcDescriptors::PrintHeaderString(); | 216 PcDescriptors::PrintHeaderString(); |
219 const PcDescriptors& descriptors = | 217 const PcDescriptors& descriptors = |
220 PcDescriptors::Handle(code.pc_descriptors()); | 218 PcDescriptors::Handle(code.pc_descriptors()); |
221 THR_Print("%s}\n", descriptors.ToCString()); | 219 THR_Print("%s}\n", descriptors.ToCString()); |
222 | 220 |
223 uword start = Instructions::Handle(code.instructions()).EntryPoint(); | 221 uword start = Instructions::Handle(code.instructions()).EntryPoint(); |
224 const Array& deopt_table = Array::Handle(code.deopt_info_array()); | 222 const Array& deopt_table = Array::Handle(code.deopt_info_array()); |
225 intptr_t deopt_table_length = DeoptTable::GetLength(deopt_table); | 223 intptr_t deopt_table_length = DeoptTable::GetLength(deopt_table); |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
327 THR_Print("}\n"); | 325 THR_Print("}\n"); |
328 } | 326 } |
329 if (optimized && FLAG_trace_inlining_intervals) { | 327 if (optimized && FLAG_trace_inlining_intervals) { |
330 code.DumpInlinedIntervals(); | 328 code.DumpInlinedIntervals(); |
331 } | 329 } |
332 } | 330 } |
333 | 331 |
334 #endif // !PRODUCT | 332 #endif // !PRODUCT |
335 | 333 |
336 } // namespace dart | 334 } // namespace dart |
OLD | NEW |