File tree 4 files changed +360
-167
lines changed
4 files changed +360
-167
lines changed Original file line number Diff line number Diff line change @@ -225,23 +225,25 @@ let blitUnsafe ~src:a1 ~srcOffset:srcofs1 ~dst:a2 ~dstOffset:srcofs2 ~len:blitL
225
225
setUnsafe a2 (j + srcofs2) (getUnsafe a1 (j + srcofs1))
226
226
done
227
227
228
- let blit ~src :a1 ~srcOffset :ofs1 ~dst :a2 ~dstOffset :ofs2 ~len =
229
- if len > 0 then
228
+ (* We don't need check [blitLength] since when [blitLength < 0] the
229
+ for loop will be nop
230
+ *)
231
+ let blit ~src :a1 ~srcOffset :ofs1 ~dst :a2 ~dstOffset :ofs2 ~len =
230
232
let lena1 = length a1 in
231
233
let lena2 = length a2 in
232
234
let srcofs1 = if ofs1 < 0 then max (lena1 + ofs1) 0 else ofs1 in
233
235
let srcofs2 = if ofs2 < 0 then max (lena2 + ofs2) 0 else ofs2 in
234
236
let blitLength =
235
237
min len (min (lena1 - srcofs1) (lena2 - srcofs2)) in
236
238
(* blitUnsafe a1 srcofs1 a2 srcofs2 blitLength *)
237
- if srcofs2 < = srcofs1 then
239
+ ( if srcofs2 < = srcofs1 then
238
240
for j = 0 to blitLength - 1 do
239
241
setUnsafe a2 (j + srcofs2) (getUnsafe a1 (j + srcofs1))
240
242
done
241
243
else
242
244
for j = blitLength - 1 downto 0 do
243
245
setUnsafe a2 (j + srcofs2) (getUnsafe a1 (j + srcofs1))
244
- done
246
+ done )
245
247
246
248
let forEachU a f =
247
249
for i = 0 to length a - 1 do f(getUnsafe a i) [@ bs] done
You can’t perform that action at this time.
0 commit comments