let rec sizeof_object = function
 | C_int i -> Int64.of_int (i_sizeof i)
 | C_float f -> Int64.of_int (f_sizeof f)
 | C_pointer _ty -> Int64.of_int (i_sizeof (c_ptr()))
 | C_comp cinfo ->
     let merge = if cinfo.cstruct then Int64.add else int64_max in
     List.fold_left
       (fun sz f -> merge sz (sizeof_object (object_of f.ftype)))
       Int64.zero cinfo.cfields
 | C_array ainfo ->
     begin
       match ainfo.arr_flat with
         | Some a -> Int64.mul
             (sizeof_object(object_of a.arr_cell))  a.arr_cell_nbr
         | None -> WpLog.not_yet_implemented "Sizeof unknown-size array"
     end