[aarch64-port-dev ] Fix off-by-one error in array initialization
Andrew Haley
aph at redhat.com
Thu Nov 14 04:57:19 PST 2013
This bug writes one word of zeros beyond the end of an array when it
is initialized. This causes odd random memory corruption.
Fixed thusly.
Andrew.
changeset: 6081:31cacf78a35a
tag: tip
user: aph
date: Thu Nov 14 07:54:51 2013 -0500
summary: Fix off-by-one error in array initialization
diff -r feef9250f2fe -r 31cacf78a35a src/cpu/aarch64/vm/aarch64.ad
--- a/src/cpu/aarch64/vm/aarch64.ad Tue Nov 12 14:13:18 2013 -0500
+++ b/src/cpu/aarch64/vm/aarch64.ad Thu Nov 14 07:54:51 2013 -0500
@@ -2552,12 +2552,11 @@
// for now we just write cnt zeros
Label loop;
Label done;
+ __ cbz(cnt_reg, done);
__ bind(loop);
- __ cmp(cnt_reg, zr);
- __ br(Assembler::LT, done);
+ __ sub(cnt_reg, cnt_reg, 1);
__ str(zr, __ post(base_reg, wordSize));
- __ sub(cnt_reg, cnt_reg, 1);
- __ b(loop);
+ __ cbnz(cnt_reg, loop);
__ bind(done);
%}
More information about the aarch64-port-dev
mailing list