From 32fdc2550397017086c0599312d2358c709443fb Mon Sep 17 00:00:00 2001 From: Jean Privat Date: Tue, 1 Dec 2015 15:15:01 -0500 Subject: [PATCH] core/array: use `copy_to` to factorize some code Signed-off-by: Jean Privat --- lib/core/collection/array.nit | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/lib/core/collection/array.nit b/lib/core/collection/array.nit index b65f282..0896bab 100644 --- a/lib/core/collection/array.nit +++ b/lib/core/collection/array.nit @@ -220,22 +220,18 @@ abstract class AbstractArray[E] do assert not_empty: not is_empty var r = first - var i = 1 - var l = length - while i < l do - self[i-1] = self[i] - i += 1 - end - _length = l - 1 + var l = length-1 + copy_to(1, l, self, 0) + _length = l return r end redef fun unshift(item) do - var i = length - 1 - while i >= 0 do - self[i+1] = self[i] - i -= 1 + var l = length + if l > 0 then + enlarge(l + 1) + copy_to(0, l, self, 1) end self[0] = item end -- 1.7.9.5