Skip to content

Commit 64f4938

Browse files
committed
Four byte optimized memcpy.
JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg [email protected]
1 parent 1726bba commit 64f4938

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

jerry-libc/jerry-libc.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,24 @@ memcpy (void *s1, /**< destination */
103103
const void *s2, /**< source */
104104
size_t n) /**< bytes number */
105105
{
106+
/* Aligned fast case. */
107+
if (n >= 4 && !(((uintptr_t) s1) & 0x3) && !(((uintptr_t) s2) & 0x3))
108+
{
109+
size_t chunks = (n >> 2);
110+
uint32_t *area1_p = (uint32_t *) s1;
111+
const uint32_t *area2_p = (const uint32_t *) s2;
112+
113+
do
114+
{
115+
*area1_p++ = *area2_p++;
116+
}
117+
while (--chunks);
118+
119+
n &= 0x3;
120+
s1 = area1_p;
121+
s2 = area2_p;
122+
}
123+
106124
uint8_t *area1_p = (uint8_t *) s1;
107125
const uint8_t *area2_p = (const uint8_t *) s2;
108126

0 commit comments

Comments
 (0)