mirror of
https://github.com/openjdk/jdk.git
synced 2026-02-25 01:30:10 +00:00
8378353: [PPC64] StringCoding.countPositives causes errors when the length is not a proper 32 bit int
Reviewed-by: mbaesken, dbriemann
This commit is contained in:
parent
9ea62c258c
commit
aee4b02ecd
@ -600,19 +600,21 @@ void C2_MacroAssembler::count_positives(Register src, Register cnt, Register res
|
||||
orr(tmp0, tmp2, tmp0);
|
||||
|
||||
and_(tmp0, tmp0, tmp1);
|
||||
bne(CR0, Lslow); // Found negative byte.
|
||||
bne(CR0, Lslow); // Found negative byte.
|
||||
addi(result, result, 16);
|
||||
bdnz(Lfastloop);
|
||||
|
||||
bind(Lslow); // Fallback to slow version.
|
||||
subf(tmp0, src, result); // Bytes known positive.
|
||||
subf_(tmp0, tmp0, cnt); // Remaining Bytes.
|
||||
clrldi(tmp1, cnt, 32); // Clear garbage from upper 32 bits.
|
||||
subf_(tmp0, tmp0, tmp1); // Remaining Bytes.
|
||||
beq(CR0, Ldone);
|
||||
mtctr(tmp0);
|
||||
|
||||
bind(Lloop);
|
||||
lbz(tmp0, 0, result);
|
||||
andi_(tmp0, tmp0, 0x80);
|
||||
bne(CR0, Ldone); // Found negative byte.
|
||||
bne(CR0, Ldone); // Found negative byte.
|
||||
addi(result, result, 1);
|
||||
bdnz(Lloop);
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user