Chromium Code Reviews| Index: src/x64/lithium-codegen-x64.cc |
| diff --git a/src/x64/lithium-codegen-x64.cc b/src/x64/lithium-codegen-x64.cc |
| index 5849cf4ef910d6573c75dd7b4858a964e75192b9..5e7cc617bd93ca40149134baed86fa1456a3806f 100644 |
| --- a/src/x64/lithium-codegen-x64.cc |
| +++ b/src/x64/lithium-codegen-x64.cc |
| @@ -2918,9 +2918,14 @@ void LCodeGen::DoAccessArgumentsAt(LAccessArgumentsAt* instr) { |
| instr->index()->IsConstantOperand()) { |
| int32_t const_index = ToInteger32(LConstantOperand::cast(instr->index())); |
| int32_t const_length = ToInteger32(LConstantOperand::cast(instr->length())); |
| - StackArgumentsAccessor args(arguments, const_length, |
| - ARGUMENTS_DONT_CONTAIN_RECEIVER); |
| - __ movp(result, args.GetArgumentOperand(const_index)); |
| + if (const_index < const_length) { |
| + StackArgumentsAccessor args(arguments, const_length, |
| + ARGUMENTS_DONT_CONTAIN_RECEIVER); |
| + __ movp(result, args.GetArgumentOperand(const_index)); |
| + } else { |
| + // This code should never be executed; just emit an abort here. |
| + __ Abort(kInvalidArgumentIndex); |
|
Igor Sheludko
2014/03/24 15:23:28
Abort() calls runtime which requires context to be
Jarin
2014/03/24 16:36:05
Done.
|
| + } |
| } else { |
| Register length = ToRegister(instr->length()); |
| // There are two words between the frame pointer and the last argument. |