src/share/vm/oops/objArrayKlass.cpp

changeset 1526
6aa7255741f3
parent 1314
494244ae0171
child 1577
4ce7240d622c
equal deleted inserted replaced
1525:fa357420e7d2 1526:6aa7255741f3
125 // We must do a barrier to cover the partial copy. 125 // We must do a barrier to cover the partial copy.
126 const size_t pd = pointer_delta(p, dst, (size_t)heapOopSize); 126 const size_t pd = pointer_delta(p, dst, (size_t)heapOopSize);
127 // pointer delta is scaled to number of elements (length field in 127 // pointer delta is scaled to number of elements (length field in
128 // objArrayOop) which we assume is 32 bit. 128 // objArrayOop) which we assume is 32 bit.
129 assert(pd == (size_t)(int)pd, "length field overflow"); 129 assert(pd == (size_t)(int)pd, "length field overflow");
130 const size_t done_word_len = objArrayOopDesc::array_size((int)pd); 130 bs->write_ref_array((HeapWord*)dst, pd);
131 bs->write_ref_array(MemRegion((HeapWord*)dst, done_word_len));
132 THROW(vmSymbols::java_lang_ArrayStoreException()); 131 THROW(vmSymbols::java_lang_ArrayStoreException());
133 return; 132 return;
134 } 133 }
135 } 134 }
136 } 135 }
137 } 136 }
138 const size_t word_len = objArrayOopDesc::array_size(length); 137 bs->write_ref_array((HeapWord*)dst, length);
139 bs->write_ref_array(MemRegion((HeapWord*)dst, word_len));
140 } 138 }
141 139
142 void objArrayKlass::copy_array(arrayOop s, int src_pos, arrayOop d, 140 void objArrayKlass::copy_array(arrayOop s, int src_pos, arrayOop d,
143 int dst_pos, int length, TRAPS) { 141 int dst_pos, int length, TRAPS) {
144 assert(s->is_objArray(), "must be obj array"); 142 assert(s->is_objArray(), "must be obj array");

mercurial