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

Side by Side Diff: vm/disassembler_ia32.cc

Issue 9791048: - Wire the stack frame iterator to use stack maps for traversing objects if there are stack maps in… (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: Created 8 years, 8 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
« no previous file with comments | « vm/debugger.cc ('k') | vm/heap.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #include "vm/disassembler.h" 5 #include "vm/disassembler.h"
6 6
7 #include "vm/globals.h" // Needed here to get TARGET_ARCH_IA32. 7 #include "vm/globals.h" // Needed here to get TARGET_ARCH_IA32.
8 #if defined(TARGET_ARCH_IA32) 8 #if defined(TARGET_ARCH_IA32)
9 #include "platform/utils.h" 9 #include "platform/utils.h"
10 #include "vm/allocation.h" 10 #include "vm/allocation.h"
11 #include "vm/code_index_table.h" 11 #include "vm/code_index_table.h"
12 #include "vm/heap.h" 12 #include "vm/heap.h"
13 #include "vm/os.h" 13 #include "vm/os.h"
14 #include "vm/stack_frame.h"
14 #include "vm/stub_code.h" 15 #include "vm/stub_code.h"
15 16
16 namespace dart { 17 namespace dart {
17 18
18 // Tables used for decoding of x86 instructions. 19 // Tables used for decoding of x86 instructions.
19 enum OperandOrder { 20 enum OperandOrder {
20 UNSET_OP_ORDER = 0, 21 UNSET_OP_ORDER = 0,
21 REG_OPER_OP_ORDER, 22 REG_OPER_OP_ORDER,
22 OPER_REG_OP_ORDER 23 OPER_REG_OP_ORDER
23 }; 24 };
(...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after
419 Print(obj.ToCString()); 420 Print(obj.ToCString());
420 Print("'"); 421 Print("'");
421 } else { 422 } else {
422 // 'addr' is not an object, but probably a code address. 423 // 'addr' is not an object, but probably a code address.
423 const char* name_of_stub = StubCode::NameOfStub(addr); 424 const char* name_of_stub = StubCode::NameOfStub(addr);
424 if (name_of_stub != NULL) { 425 if (name_of_stub != NULL) {
425 Print(" [stub: "); 426 Print(" [stub: ");
426 Print(name_of_stub); 427 Print(name_of_stub);
427 Print("]"); 428 Print("]");
428 } else { 429 } else {
429 CodeIndexTable* code_index_table = Isolate::Current()->code_index_table(); 430 // Print only if jumping to entry point.
430 if (code_index_table != NULL) { 431 const Code& code = Code::Handle(
431 // Print only if jumping to entry point. 432 StackFrame::LookupCode(Isolate::Current(), addr));
432 const Code& code = Code::Handle( 433 if (!code.IsNull() && (code.EntryPoint() == addr)) {
433 code_index_table->LookupCode(addr)); 434 const Function& function = Function::Handle(code.function());
434 if (!code.IsNull() && (code.EntryPoint() == addr)) { 435 const char* name_of_function = function.ToFullyQualifiedCString();
435 const Function& function = Function::Handle(code.function()); 436 Print(" [");
436 const char* name_of_function = function.ToFullyQualifiedCString(); 437 Print(name_of_function);
437 Print(" ["); 438 Print("]");
438 Print(name_of_function);
439 Print("]");
440 }
441 } 439 }
442 } 440 }
443 } 441 }
444 } 442 }
445 443
446 444
447 int X86Decoder::PrintRightOperandHelper(uint8_t* modrmp, 445 int X86Decoder::PrintRightOperandHelper(uint8_t* modrmp,
448 RegisterNamePrinter register_printer) { 446 RegisterNamePrinter register_printer) {
449 int mod, regop, rm; 447 int mod, regop, rm;
450 GetModRm(*modrmp, &mod, &regop, &rm); 448 GetModRm(*modrmp, &mod, &regop, &rm);
(...skipping 1145 matching lines...) Expand 10 before | Expand all | Expand 10 after
1596 human_buffer, 1594 human_buffer,
1597 sizeof(human_buffer), 1595 sizeof(human_buffer),
1598 pc); 1596 pc);
1599 pc += instruction_length; 1597 pc += instruction_length;
1600 } 1598 }
1601 } 1599 }
1602 1600
1603 } // namespace dart 1601 } // namespace dart
1604 1602
1605 #endif // defined TARGET_ARCH_IA32 1603 #endif // defined TARGET_ARCH_IA32
OLDNEW
« no previous file with comments | « vm/debugger.cc ('k') | vm/heap.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698