for (; from_iter != samples.end(); ++from_iter, ++to_i) { data_root sample(allot_array(6, false_object),this); set_array_nth(sample.untagged(),0,tag_fixnum(from_iter->counts.sample_count)); set_array_nth(sample.untagged(),1,tag_fixnum(from_iter->counts.gc_sample_count)); set_array_nth(sample.untagged(),2,tag_fixnum(from_iter->counts.foreign_sample_count)); set_array_nth(sample.untagged(),3,tag_fixnum(from_iter->counts.foreign_thread_sample_count)); cell ctx = allot_alien((void*)from_iter->ctx); set_array_nth(sample.untagged(),4,ctx); cell callstack_size = from_iter->callstack_end - from_iter->callstack_begin; data_root callstack(allot_array(callstack_size,false_object),this); std::vector::const_iterator callstacks_begin = sample_callstacks.begin(), c_from_iter = callstacks_begin + from_iter->callstack_begin, c_from_iter_end = callstacks_begin + from_iter->callstack_end; cell c_to_i = 0; for (; c_from_iter != c_from_iter_end; ++c_from_iter, ++c_to_i) set_array_nth(callstack.untagged(),c_to_i,(*c_from_iter)->owner); set_array_nth(sample.untagged(),5,callstack.value()); set_array_nth(samples_array.untagged(),to_i,sample.value()); }