Mercurial > hg > truffle
comparison src/cpu/sparc/vm/stubGenerator_sparc.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 | c565834fb592 |
children | 04b9a2566eec dca455dea3a7 069ab3f976d3 |
comparison
equal
deleted
inserted
replaced
3960:f08d439fab8c | 3961:a92cdbac8b9e |
---|---|
2357 __ align(OptoLoopAlignment); | 2357 __ align(OptoLoopAlignment); |
2358 __ BIND(L_loop); | 2358 __ BIND(L_loop); |
2359 for (int off = 0; off < 64; off += 16) { | 2359 for (int off = 0; off < 64; off += 16) { |
2360 if (use_prefetch && (off & 31) == 0) { | 2360 if (use_prefetch && (off & 31) == 0) { |
2361 if (ArraycopySrcPrefetchDistance > 0) { | 2361 if (ArraycopySrcPrefetchDistance > 0) { |
2362 __ prefetch(from, ArraycopySrcPrefetchDistance, Assembler::severalReads); | 2362 __ prefetch(from, ArraycopySrcPrefetchDistance+off, Assembler::severalReads); |
2363 } | 2363 } |
2364 if (ArraycopyDstPrefetchDistance > 0) { | 2364 if (ArraycopyDstPrefetchDistance > 0) { |
2365 __ prefetch(to, ArraycopyDstPrefetchDistance, Assembler::severalWritesAndPossiblyReads); | 2365 __ prefetch(to, ArraycopyDstPrefetchDistance+off, Assembler::severalWritesAndPossiblyReads); |
2366 } | 2366 } |
2367 } | 2367 } |
2368 __ ldx(from, off+0, O4); | 2368 __ ldx(from, off+0, O4); |
2369 __ ldx(from, off+8, O5); | 2369 __ ldx(from, off+8, O5); |
2370 if (use_bis) { | 2370 if (use_bis) { |