Index: runtime/vm/code_generator.cc |
diff --git a/runtime/vm/code_generator.cc b/runtime/vm/code_generator.cc |
index f8e7c377ae0c60b0eaefc59960cbf9c545ddb222..b182fb948ccc1c76187049a02ee3fc2908f81487 100644 |
--- a/runtime/vm/code_generator.cc |
+++ b/runtime/vm/code_generator.cc |
@@ -1612,7 +1612,7 @@ DEFINE_LEAF_RUNTIME_ENTRY(intptr_t, DeoptimizeCopyFrame, |
const intptr_t num_args = |
function.HasOptionalParameters() ? 0 : function.num_fixed_parameters(); |
intptr_t unoptimized_stack_size = |
- + deopt_info.Length() - num_args |
+ + deopt_info.TranslationLength() - num_args |
- 2; // Subtract caller FP and PC. |
return unoptimized_stack_size * kWordSize; |
} |
@@ -1623,12 +1623,11 @@ END_LEAF_RUNTIME_ENTRY |
static intptr_t DeoptimizeWithDeoptInfo(const Code& code, |
const DeoptInfo& deopt_info, |
const StackFrame& caller_frame) { |
- const intptr_t len = deopt_info.Length(); |
+ const intptr_t len = deopt_info.TranslationLength(); |
GrowableArray<DeoptInstr*> deopt_instructions(len); |
- for (intptr_t i = 0; i < len; i++) { |
- deopt_instructions.Add(DeoptInstr::Create(deopt_info.Instruction(i), |
- deopt_info.FromIndex(i))); |
- } |
+ const Array& deopt_table = Array::Handle(code.deopt_info_array()); |
+ ASSERT(!deopt_table.IsNull()); |
+ deopt_info.ToInstructions(deopt_table, &deopt_instructions); |
intptr_t* start = reinterpret_cast<intptr_t*>(caller_frame.sp() - kWordSize); |
const Function& function = Function::Handle(code.function()); |