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 |