Request for review: 6896617: Optimize sun.nio.cs.ISO_8859_1$Encode.encodeArrayLoop() on x86
Ulf Zibis
Ulf.Zibis at CoSoCo.de
Sat Jan 26 01:06:28 UTC 2013
Am 18.01.2013 19:26, schrieb Vladimir Kozlov:
> Here are Hotspot changes with new jtreg test:
>
> http://cr.openjdk.java.net/~kvn/6896617/webrev
Hi Vladimir,
now I've tried to understand your hotspot code :-)
I tried to do some optimization with less jumps for small strings:
jmp(len >= 8) --> L_check_16_chars
L_check_1_char:
jmp(len = 0) --> L_done
L_init_1_mask:
init_1_mask();
L_copy_1_char:
jmp(*src | mask) --> L_unmappable
copy_1_char(len++);
jmp(len != 0) --> copy_1_char
L_done:
return(result)
L_check_16_chars:
jmp(len >= 16) --> L_check_32_chars
L_init_8_masks:
init_8_masks();
jmp(*src | mask) --> L_init_1_mask
copy_8_chars(len++8);
jmp(len != 0) --> L_init_1_mask
jmp() --> L_done
L_check_32_chars:
jmp(len >= 32) --> L_init_32_masks:
L_init_16_masks:
init_16_masks();
jmp(*src | mask) --> L_init_8_masks
copy_16_chars(len++16);
jmp(len >= 8) --> L_init_8_masks
jmp() --> L_check_1_char
L_init_32_masks:
init_32_masks();
L_copy_32_chars:
jmp(*src | mask) --> L_init_16_masks
copy_32_chars(len++32);
jmp(len >= 32) --> copy_32_chars
jmp() --> L_check_16_chars
L_unmappable:
result += len;
jmp() --> L_done
-Ulf
More information about the core-libs-dev
mailing list