1808 {
1813
1817 const intptr_t deopt_frame_offset = -1;
1818
1819 for (intptr_t i = 0; i < ex_trace.Length(); i++) {
1820 code_object = ex_trace.CodeAtFrame(i);
1821
1822
1823
1824
1825
1826 if (!code_object.IsNull()) {
1827 code ^= code_object.ptr();
1832 uword pc =
code.PayloadStart() + ex_trace.PcOffsetAtFrame(i);
1833 if (
code.is_optimized() && ex_trace.expand_inlined()) {
1834
1835 for (InlinedFunctionsIterator it(code, pc); !it.Done();
1836 it.Advance()) {
1844
1845 ActivationFrame* activation = new ActivationFrame(
1846 pc,
fp, sp, code, deopt_frame, deopt_frame_offset);
1847 stack_trace->AddActivation(activation);
1848 }
1849 } else {
1850 ActivationFrame* activation = new ActivationFrame(
1851 pc,
fp, sp, code, deopt_frame, deopt_frame_offset);
1852 stack_trace->AddActivation(activation);
1853 }
1854 }
1855 }
1856 }
1857 return stack_trace;
1858}