OpenJDK / amber / amber
changeset 54512:e422b21ca556
8217629: RegMask::find_lowest_bit can reuse count_trailing_zeros utility
Reviewed-by: thartmann, neliasso
author | redestad |
---|---|
date | Wed, 23 Jan 2019 17:25:25 +0100 |
parents | edba42d2370f |
children | ea002b56e2f3 |
files | src/hotspot/share/opto/regmask.cpp src/hotspot/share/opto/regmask.hpp |
diffstat | 2 files changed, 5 insertions(+), 31 deletions(-) [+] |
line wrap: on
line diff
--- a/src/hotspot/share/opto/regmask.cpp Wed Jan 23 10:50:27 2019 -0500 +++ b/src/hotspot/share/opto/regmask.cpp Wed Jan 23 17:25:25 2019 +0100 @@ -33,35 +33,6 @@ #define RM_SIZE _RM_SIZE /* a constant private to the class RegMask */ //-------------Non-zero bit search methods used by RegMask--------------------- -// Find lowest 1, or return 32 if empty -int find_lowest_bit( uint32_t mask ) { - int n = 0; - if( (mask & 0xffff) == 0 ) { - mask >>= 16; - n += 16; - } - if( (mask & 0xff) == 0 ) { - mask >>= 8; - n += 8; - } - if( (mask & 0xf) == 0 ) { - mask >>= 4; - n += 4; - } - if( (mask & 0x3) == 0 ) { - mask >>= 2; - n += 2; - } - if( (mask & 0x1) == 0 ) { - mask >>= 1; - n += 1; - } - if( mask == 0 ) { - n = 32; - } - return n; -} - // Find highest 1, or return 32 if empty int find_highest_bit( uint32_t mask ) { int n = 0;
--- a/src/hotspot/share/opto/regmask.hpp Wed Jan 23 10:50:27 2019 -0500 +++ b/src/hotspot/share/opto/regmask.hpp Wed Jan 23 17:25:25 2019 +0100 @@ -27,6 +27,7 @@ #include "code/vmreg.hpp" #include "opto/optoreg.hpp" +#include "utilities/count_trailing_zeros.hpp" // Some fun naming (textual) substitutions: // @@ -45,8 +46,10 @@ // numregs in chaitin ==> proper degree in chaitin //-------------Non-zero bit search methods used by RegMask--------------------- -// Find lowest 1, or return 32 if empty -int find_lowest_bit( uint32_t mask ); +// Find lowest 1, undefined if empty/0 +static int find_lowest_bit(uint32_t mask) { + return count_trailing_zeros(mask); +} // Find highest 1, or return 32 if empty int find_highest_bit( uint32_t mask );