Mercurial > hg > graal-compiler
diff src/share/vm/oops/typeArrayKlass.cpp @ 3961:a92cdbac8b9e
7081933: Use zeroing elimination optimization for large array
Summary: Don't zero new typeArray during runtime call if the allocation is followed by arraycopy into it.
Reviewed-by: twisti
author | kvn |
---|---|
date | Mon, 26 Sep 2011 10:24:05 -0700 |
parents | c9ca3f51cf41 |
children | a735aec54ea4 |
line wrap: on
line diff
--- a/src/share/vm/oops/typeArrayKlass.cpp Sun Sep 25 16:03:29 2011 -0700 +++ b/src/share/vm/oops/typeArrayKlass.cpp Mon Sep 26 10:24:05 2011 -0700 @@ -76,7 +76,7 @@ return k(); } -typeArrayOop typeArrayKlass::allocate(int length, TRAPS) { +typeArrayOop typeArrayKlass::allocate_common(int length, bool do_zero, TRAPS) { assert(log2_element_size() >= 0, "bad scale"); if (length >= 0) { if (length <= max_length()) { @@ -84,7 +84,11 @@ KlassHandle h_k(THREAD, as_klassOop()); typeArrayOop t; CollectedHeap* ch = Universe::heap(); - t = (typeArrayOop)CollectedHeap::array_allocate(h_k, (int)size, length, CHECK_NULL); + if (do_zero) { + t = (typeArrayOop)CollectedHeap::array_allocate(h_k, (int)size, length, CHECK_NULL); + } else { + t = (typeArrayOop)CollectedHeap::array_allocate_nozero(h_k, (int)size, length, CHECK_NULL); + } assert(t->is_parsable(), "Don't publish unless parsable"); return t; } else {