let unsafe_blit v1 ofs1 v2 ofs2 len =
  let (bi,bj) = pos ofs1 in
  let (ei,ej) = pos (ofs1 + len - 1) in
  if bi == ei then
    blit_bits (Array.unsafe_get v1 bi) bj len v2 ofs2
  else begin
    blit_bits (Array.unsafe_get v1 bi) bj (bpi - bj) v2 ofs2;
    let n = ref (ofs2 + bpi - bj) in
    for i = succ bi to pred ei do
      blit_int (Array.unsafe_get v1 i) v2 !n;
      n := !n + bpi
    done;
    blit_bits (Array.unsafe_get v1 ei) 0 (succ ej) v2 !n
  end