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

Reply via email to