MIPS64: Fix [KeyedLoadIC] Support Smi "handlers" for element loads
Fix 2cf2eef77b
Fix test failures with tests working on external Uint32 arrays. Problem
started to appear because Uint32 value was compared using Int32 compare
operators in ChangeUint32ToTagged. On MIPS64. Uint32 value is not sign-
extended, so upper 32 bits of this value are zero. MIPS64 doesn't have
Word32Compare instructions but uses Word64Compare instructions in
combination with properly sign-extended Int32 values.
BUG=cctest/test-api/Uint32Array,cctest/test-api/SharedUint32Array,
cctest/test-api/FixedUint32Array,mjsunit/compiler/uint32
Review-Url: https://codereview.chromium.org/2231053002
Cr-Commit-Position: refs/heads/master@{#38680}
This commit is contained in:
parent
e78a52788f
commit
3b7fbafe72
@ -1827,8 +1827,9 @@ Node* CodeStubAssembler::ChangeUint32ToTagged(Node* value) {
|
||||
if_join(this);
|
||||
Variable var_result(this, MachineRepresentation::kTagged);
|
||||
// If {value} > 2^31 - 1, we need to store it in a HeapNumber.
|
||||
Branch(Int32LessThan(value, Int32Constant(0)), &if_overflow,
|
||||
Branch(Uint32LessThan(Int32Constant(Smi::kMaxValue), value), &if_overflow,
|
||||
&if_not_overflow);
|
||||
|
||||
Bind(&if_not_overflow);
|
||||
{
|
||||
if (Is64()) {
|
||||
|
Loading…
Reference in New Issue
Block a user