comparison src/share/vm/opto/memnode.cpp @ 7474:00af3a3a8df4

8005522: use fast-string instructions on x86 for zeroing Summary: use 'rep stosb' instead of 'rep stosq' when fast-string operations are available. Reviewed-by: twisti, roland
author kvn
date Thu, 03 Jan 2013 15:09:55 -0800
parents d804e148cff8
children b30b3c2a0cf2
comparison
equal deleted inserted replaced
7473:d092d1b31229 7474:00af3a3a8df4
2723 Node* shift = phase->intcon(exact_log2(unit)); 2723 Node* shift = phase->intcon(exact_log2(unit));
2724 zbase = phase->transform( new(C) URShiftXNode(zbase, shift) ); 2724 zbase = phase->transform( new(C) URShiftXNode(zbase, shift) );
2725 zend = phase->transform( new(C) URShiftXNode(zend, shift) ); 2725 zend = phase->transform( new(C) URShiftXNode(zend, shift) );
2726 } 2726 }
2727 2727
2728 // Bulk clear double-words
2728 Node* zsize = phase->transform( new(C) SubXNode(zend, zbase) ); 2729 Node* zsize = phase->transform( new(C) SubXNode(zend, zbase) );
2729 Node* zinit = phase->zerocon((unit == BytesPerLong) ? T_LONG : T_INT);
2730
2731 // Bulk clear double-words
2732 Node* adr = phase->transform( new(C) AddPNode(dest, dest, start_offset) ); 2730 Node* adr = phase->transform( new(C) AddPNode(dest, dest, start_offset) );
2733 mem = new (C) ClearArrayNode(ctl, mem, zsize, adr); 2731 mem = new (C) ClearArrayNode(ctl, mem, zsize, adr);
2734 return phase->transform(mem); 2732 return phase->transform(mem);
2735 } 2733 }
2736 2734