Speedup x64 disassembler to avoid tests timing out.

Same change as I already did for ia32.

We don't have a lot of raw addresses embedded in code anymore with the new
calling convention, so this part of the disassembler is not useful anymore.

TBR=rmacnak

Review URL: https://codereview.chromium.org//1347363004 .
This commit is contained in:
Florian Schneider 2015-09-21 12:56:27 +02:00
parent 8c6b990305
commit 2bbf0c61ae

View file

@ -790,7 +790,8 @@ static const char* ObjectToCStringNoGC(const Object& obj) {
obj.IsClass() ||
obj.IsFunction() ||
obj.IsICData() ||
obj.IsField()) {
obj.IsField() ||
obj.IsCode()) {
return obj.ToCString();
}
@ -808,6 +809,7 @@ void DisassemblerX64::AppendAddressToBuffer(uint8_t* addr_byte_ptr) {
if (((addr & kSmiTagMask) == kHeapObjectTag) &&
reinterpret_cast<RawObject*>(addr)->IsWellFormed() &&
reinterpret_cast<RawObject*>(addr)->IsOldObject() &&
!Dart::vm_isolate()->heap()->CodeContains(addr) &&
!Isolate::Current()->heap()->CodeContains(addr) &&
Disassembler::CanFindOldObject(addr)) {
NoSafepointScope no_safepoint;
@ -835,14 +837,6 @@ void DisassemblerX64::AppendAddressToBuffer(uint8_t* addr_byte_ptr) {
const char* name_of_stub = StubCode::NameOfStub(addr);
if (name_of_stub != NULL) {
AppendToBuffer(" [stub: %s]", name_of_stub);
} else {
// Print only if jumping to entry point.
const Code& code = Code::Handle(Code::LookupCode(addr));
if (!code.IsNull() && (code.EntryPoint() == addr)) {
const String& name = String::Handle(code.PrettyName());
const char* name_c = name.ToCString();
AppendToBuffer(" [%s]", name_c);
}
}
}
}