| Index: src/x64/codegen-x64.cc
|
| diff --git a/src/x64/codegen-x64.cc b/src/x64/codegen-x64.cc
|
| index 9e6ef3b524067cd68e31fd7e26e1c6bc4c32e480..23f030a23e58123b15f9de9f538733e7e4b5bfeb 100644
|
| --- a/src/x64/codegen-x64.cc
|
| +++ b/src/x64/codegen-x64.cc
|
| @@ -6913,6 +6913,13 @@ void CodeGenerator::GenerateSwapElements(ZoneList<Expression*>* args) {
|
| Condition both_smi = masm()->CheckBothSmi(index1.reg(), index2.reg());
|
| deferred->Branch(NegateCondition(both_smi));
|
|
|
| + // Check that both indices are valid.
|
| + __ movq(tmp2.reg(), FieldOperand(object.reg(), JSArray::kLengthOffset));
|
| + __ cmpl(tmp2.reg(), index1.reg());
|
| + deferred->Branch(below_equal);
|
| + __ cmpl(tmp2.reg(), index2.reg());
|
| + deferred->Branch(below_equal);
|
| +
|
| // Bring addresses into index1 and index2.
|
| __ SmiToInteger32(index1.reg(), index1.reg());
|
| __ lea(index1.reg(), FieldOperand(tmp1.reg(),
|
|
|