Index: runtime/vm/disassembler.cc |
diff --git a/runtime/vm/disassembler.cc b/runtime/vm/disassembler.cc |
index de385cf2f6096d065f9e25c6369477bdaf34602c..d47919a13d3f4075bd56a0746b0151998d84bf6d 100644 |
--- a/runtime/vm/disassembler.cc |
+++ b/runtime/vm/disassembler.cc |
@@ -163,7 +163,8 @@ void Disassembler::Disassemble(uword start, |
void Disassembler::DisassembleCodeHelper(const char* function_fullname, |
const Code& code, |
bool optimized) { |
- LocalVarDescriptors& var_descriptors = LocalVarDescriptors::Handle(); |
+ Zone* zone = Thread::Current()->zone(); |
+ LocalVarDescriptors& var_descriptors = LocalVarDescriptors::Handle(zone); |
if (FLAG_print_variable_descriptors) { |
var_descriptors = code.GetLocalVarDescriptors(); |
} |
@@ -175,7 +176,7 @@ void Disassembler::DisassembleCodeHelper(const char* function_fullname, |
#if defined(TARGET_ARCH_IA32) |
THR_Print("Pointer offsets for function: {\n"); |
// Pointer offsets are stored in descending order. |
- Object& obj = Object::Handle(); |
+ Object& obj = Object::Handle(zone); |
for (intptr_t i = code.pointer_offsets_length() - 1; i >= 0; i--) { |
const uword addr = code.GetPointerOffsetAt(i) + code.PayloadStart(); |
obj = *reinterpret_cast<RawObject**>(addr); |
@@ -187,23 +188,24 @@ void Disassembler::DisassembleCodeHelper(const char* function_fullname, |
ASSERT(code.pointer_offsets_length() == 0); |
#endif |
- const ObjectPool& object_pool = ObjectPool::Handle(code.GetObjectPool()); |
+ const ObjectPool& object_pool = |
+ ObjectPool::Handle(zone, code.GetObjectPool()); |
object_pool.DebugPrint(); |
THR_Print("PC Descriptors for function '%s' {\n", function_fullname); |
PcDescriptors::PrintHeaderString(); |
const PcDescriptors& descriptors = |
- PcDescriptors::Handle(code.pc_descriptors()); |
+ PcDescriptors::Handle(zone, code.pc_descriptors()); |
THR_Print("%s}\n", descriptors.ToCString()); |
- uword start = Instructions::Handle(code.instructions()).PayloadStart(); |
- const Array& deopt_table = Array::Handle(code.deopt_info_array()); |
+ uword start = Instructions::Handle(zone, code.instructions()).PayloadStart(); |
+ const Array& deopt_table = Array::Handle(zone, code.deopt_info_array()); |
intptr_t deopt_table_length = DeoptTable::GetLength(deopt_table); |
if (deopt_table_length > 0) { |
THR_Print("DeoptInfo: {\n"); |
- Smi& offset = Smi::Handle(); |
- TypedData& info = TypedData::Handle(); |
- Smi& reason_and_flags = Smi::Handle(); |
+ Smi& offset = Smi::Handle(zone); |
+ TypedData& info = TypedData::Handle(zone); |
+ Smi& reason_and_flags = Smi::Handle(zone); |
for (intptr_t i = 0; i < deopt_table_length; ++i) { |
DeoptTable::GetEntry(deopt_table, i, &offset, &info, &reason_and_flags); |
const intptr_t reason = |
@@ -219,8 +221,8 @@ void Disassembler::DisassembleCodeHelper(const char* function_fullname, |
THR_Print("StackMaps for function '%s' {\n", function_fullname); |
if (code.stackmaps() != Array::null()) { |
- const Array& stackmap_table = Array::Handle(code.stackmaps()); |
- StackMap& map = StackMap::Handle(); |
+ const Array& stackmap_table = Array::Handle(zone, code.stackmaps()); |
+ StackMap& map = StackMap::Handle(zone); |
for (intptr_t i = 0; i < stackmap_table.Length(); ++i) { |
map ^= stackmap_table.At(i); |
THR_Print("%s\n", map.ToCString()); |
@@ -232,7 +234,7 @@ void Disassembler::DisassembleCodeHelper(const char* function_fullname, |
THR_Print("Variable Descriptors for function '%s' {\n", function_fullname); |
intptr_t var_desc_length = |
var_descriptors.IsNull() ? 0 : var_descriptors.Length(); |
- String& var_name = String::Handle(); |
+ String& var_name = String::Handle(zone); |
for (intptr_t i = 0; i < var_desc_length; i++) { |
var_name = var_descriptors.GetName(i); |
RawLocalVarDescriptors::VarInfo var_info; |
@@ -261,26 +263,26 @@ void Disassembler::DisassembleCodeHelper(const char* function_fullname, |
THR_Print("Exception Handlers for function '%s' {\n", function_fullname); |
const ExceptionHandlers& handlers = |
- ExceptionHandlers::Handle(code.exception_handlers()); |
+ ExceptionHandlers::Handle(zone, code.exception_handlers()); |
THR_Print("%s}\n", handlers.ToCString()); |
{ |
THR_Print("Static call target functions {\n"); |
- const Array& table = Array::Handle(code.static_calls_target_table()); |
- Smi& offset = Smi::Handle(); |
- Function& function = Function::Handle(); |
- Code& code = Code::Handle(); |
+ const Array& table = Array::Handle(zone, code.static_calls_target_table()); |
+ Smi& offset = Smi::Handle(zone); |
+ Function& function = Function::Handle(zone); |
+ Code& code = Code::Handle(zone); |
for (intptr_t i = 0; i < table.Length(); |
i += Code::kSCallTableEntryLength) { |
offset ^= table.At(i + Code::kSCallTableOffsetEntry); |
function ^= table.At(i + Code::kSCallTableFunctionEntry); |
code ^= table.At(i + Code::kSCallTableCodeEntry); |
if (function.IsNull()) { |
- Class& cls = Class::Handle(); |
+ Class& cls = Class::Handle(zone); |
cls ^= code.owner(); |
if (cls.IsNull()) { |
THR_Print(" 0x%" Px ": %s, %p\n", start + offset.Value(), |
- code.Name(), code.raw()); |
+ code.QualifiedName(), code.raw()); |
} else { |
THR_Print(" 0x%" Px ": allocation stub for %s, %p\n", |
start + offset.Value(), cls.ToCString(), code.raw()); |