[aarch64-port-dev ] C1: Fix overrun in object initialization.

Andrew Haley aph at redhat.com
Mon Dec 2 04:44:21 PST 2013


In a couple of places object initialization writes beyond the end of
an object.  Fixed thusly.

Andrew.


# HG changeset patch
# User aph
# Date 1385984660 0
# Node ID ba11701840f75b9a6d27cc2076c59c8b6cfa1733
# Parent  c730cfab0d9a387c0f16512ab8b863a9fa9c6364
C1: Fix overrun in object initialization.

diff -r c730cfab0d9a -r ba11701840f7 src/cpu/aarch64/vm/c1_MacroAssembler_aarch64.cpp
--- a/src/cpu/aarch64/vm/c1_MacroAssembler_aarch64.cpp	Thu Nov 28 18:46:18 2013 +0000
+++ b/src/cpu/aarch64/vm/c1_MacroAssembler_aarch64.cpp	Mon Dec 02 11:44:20 2013 +0000
@@ -319,7 +319,7 @@
   } else if (con_size_in_bytes <= threshold) {
     // use explicit null stores
     int i = hdr_size_in_bytes;
-    if (i < con_size_in_bytes && i % (2 * BytesPerWord)) {
+    if (i < con_size_in_bytes && (con_size_in_bytes % (2 * BytesPerWord))) {
       str(zr, Address(obj, i));
       i += BytesPerWord;
     }
diff -r c730cfab0d9a -r ba11701840f7 src/cpu/aarch64/vm/macroAssembler_aarch64.cpp
--- a/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp	Thu Nov 28 18:46:18 2013 +0000
+++ b/src/cpu/aarch64/vm/macroAssembler_aarch64.cpp	Mon Dec 02 11:44:20 2013 +0000
@@ -1941,7 +1941,7 @@
 void MacroAssembler::store_klass_gap(Register dst, Register src) {
   if (UseCompressedClassPointers) {
     // Store to klass gap in destination
-    str(src, Address(dst, oopDesc::klass_gap_offset_in_bytes()));
+    strw(src, Address(dst, oopDesc::klass_gap_offset_in_bytes()));
   }
 }




More information about the aarch64-port-dev mailing list