let new_frame kf ~m_here ~m_pre ~m_post res_opt =
    let add mm l m = match m with None -> mm | Some m -> (l, m)::mm in
    let mm = [] in
    let mm = add mm Clabels.Post m_post in
    let mm = add mm Clabels.Pre  m_pre  in
    let mm = add mm Clabels.Here m_here in
    {
      memories = mm;
      return = Some(Kernel_function.get_return_type kf);
      result = res_opt;
      exit_status = None;
    }