Skip to content

Commit 4433b65

Browse files
rtjoamshinwell
authored andcommitted
Test %arrayblit at all layouts
(cherry picked from commit 5e13a68)
1 parent 57574ee commit 4433b65

File tree

2 files changed

+1925
-959
lines changed

2 files changed

+1925
-959
lines changed

testsuite/tests/typing-layouts-arrays/generate_makearray_dynamic_tests.ml

+40-46
Original file line numberDiff line numberDiff line change
@@ -531,57 +531,51 @@ let test_makearray_dynamic ~uninit ~local ty =
531531
);
532532
(* Blits currently only work for GC ignorable values *)
533533
line "(* 7. Overlapping blits *)";
534-
(if ty.Ty.is_gc_ignorable then
535-
iter "blit_offsets size" "ofs1" ~debug_exprs (fun ~debug_exprs ->
536-
iter "blit_offsets size" "ofs2" ~debug_exprs (fun ~debug_exprs ->
537-
let lens = "blit_lens ~ofs1 ~ofs2 ~size1:size ~size2:size" in
538-
iter lens "len" ~debug_exprs (fun ~debug_exprs ->
539-
line "unsafe_blit a ofs1 a ofs2 len;";
540-
for_i_below_size ~debug_exprs (fun ~debug_exprs ->
541-
line "let expected_src_i =";
542-
with_indent (fun () ->
543-
line "if i >= ofs2 && i < ofs2 + len then i - ofs2 + ofs1 else i"
544-
);
545-
line "in";
546-
seq_assert ~debug_exprs "eq (get a i) (mk_value expected_src_i)"
547-
);
548-
line "(* Reset array *)";
549-
for_i_below_size ~debug_exprs (fun ~debug_exprs ->
550-
line "set a i (mk_value i);"
551-
)
552-
);
553-
);
554-
)
555-
else
556-
line "(* Test omitted because type is not GC-ignorable *)");
534+
iter "blit_offsets size" "ofs1" ~debug_exprs (fun ~debug_exprs ->
535+
iter "blit_offsets size" "ofs2" ~debug_exprs (fun ~debug_exprs ->
536+
let lens = "blit_lens ~ofs1 ~ofs2 ~size1:size ~size2:size" in
537+
iter lens "len" ~debug_exprs (fun ~debug_exprs ->
538+
line "unsafe_blit a ofs1 a ofs2 len;";
539+
for_i_below_size ~debug_exprs (fun ~debug_exprs ->
540+
line "let expected_src_i =";
541+
with_indent (fun () ->
542+
line "if i >= ofs2 && i < ofs2 + len then i - ofs2 + ofs1 else i"
543+
);
544+
line "in";
545+
seq_assert ~debug_exprs "eq (get a i) (mk_value expected_src_i)"
546+
);
547+
line "(* Reset array *)";
548+
for_i_below_size ~debug_exprs (fun ~debug_exprs ->
549+
line "set a i (mk_value i);"
550+
)
551+
);
552+
);
553+
);
557554
line "Gc.compact ();";
558555
let test_blit_to ~to_local =
559-
if ty.Ty.is_gc_ignorable then (
560-
iter "sizes" "size2" ~debug_exprs (fun ~debug_exprs ->
561-
iter "blit_offsets size" "ofs1" ~debug_exprs (fun ~debug_exprs ->
562-
iter "blit_offsets size2" "ofs2" ~debug_exprs (fun ~debug_exprs ->
563-
let lens = "blit_lens ~ofs1 ~ofs2 ~size1:size ~size2" in
564-
iter lens "len" ~debug_exprs (fun ~debug_exprs ->
565-
(if to_local then
566-
line "let local_ a2 = makearray_dynamic_local size2 %s in" (ty.Ty.value_code 0)
567-
else
568-
line "let a2 = makearray_dynamic size2 %s in" (ty.Ty.value_code 0));
569-
line "unsafe_blit a ofs1 a2 ofs2 len;";
570-
for_ "i" ~from:"0" ~to_:"size2 - 1" ~debug_exprs (fun ~debug_exprs ->
571-
line "let expected_src_i =";
572-
with_indent (fun () ->
573-
line "if i >= ofs2 && i < ofs2 + len then i - ofs2 + ofs1 else 0"
574-
);
575-
line "in";
576-
seq_assert ~debug_exprs "eq (get a2 i) (mk_value expected_src_i)"
577-
)
556+
iter "sizes" "size2" ~debug_exprs (fun ~debug_exprs ->
557+
iter "blit_offsets size" "ofs1" ~debug_exprs (fun ~debug_exprs ->
558+
iter "blit_offsets size2" "ofs2" ~debug_exprs (fun ~debug_exprs ->
559+
let lens = "blit_lens ~ofs1 ~ofs2 ~size1:size ~size2" in
560+
iter lens "len" ~debug_exprs (fun ~debug_exprs ->
561+
(if to_local then
562+
line "let local_ a2 = makearray_dynamic_local size2 %s in" (ty.Ty.value_code 0)
563+
else
564+
line "let a2 = makearray_dynamic size2 %s in" (ty.Ty.value_code 0));
565+
line "unsafe_blit a ofs1 a2 ofs2 len;";
566+
for_ "i" ~from:"0" ~to_:"size2 - 1" ~debug_exprs (fun ~debug_exprs ->
567+
line "let expected_src_i =";
568+
with_indent (fun () ->
569+
line "if i >= ofs2 && i < ofs2 + len then i - ofs2 + ofs1 else 0"
570+
);
571+
line "in";
572+
seq_assert ~debug_exprs "eq (get a2 i) (mk_value expected_src_i)"
578573
)
579574
)
580575
)
581-
);
582-
line "Gc.compact ();"
583-
) else
584-
line "(* Test omitted because type is not GC-ignorable *)"
576+
)
577+
);
578+
line "Gc.compact ();"
585579
in
586580
line "(* 8. Blits to heap arrays *)";
587581
test_blit_to ~to_local:false;

0 commit comments

Comments
 (0)