| Index: src/code-stub-assembler.cc
|
| diff --git a/src/code-stub-assembler.cc b/src/code-stub-assembler.cc
|
| index 5d4531f6937674a04926f75000ba95da6ce8385c..f62089cea4dfc4e2c607d727cd8a773eb11dfc01 100644
|
| --- a/src/code-stub-assembler.cc
|
| +++ b/src/code-stub-assembler.cc
|
| @@ -8499,6 +8499,28 @@ Node* CodeStubArguments::AtIndex(int index) const {
|
| return AtIndex(assembler_->IntPtrConstant(index));
|
| }
|
|
|
| +Node* CodeStubArguments::GetOptionalArgumentValue(int index,
|
| + Node* default_value) {
|
| + typedef CodeStubAssembler::Variable Variable;
|
| + Variable result(assembler_, MachineRepresentation::kTagged);
|
| + CodeStubAssembler::Label argument_missing(assembler_),
|
| + argument_done(assembler_, &result);
|
| +
|
| + assembler_->GotoIf(assembler_->UintPtrOrSmiGreaterThanOrEqual(
|
| + assembler_->IntPtrOrSmiConstant(index, argc_mode_),
|
| + argc_, argc_mode_),
|
| + &argument_missing);
|
| + result.Bind(AtIndex(index));
|
| + assembler_->Goto(&argument_done);
|
| +
|
| + assembler_->BIND(&argument_missing);
|
| + result.Bind(default_value);
|
| + assembler_->Goto(&argument_done);
|
| +
|
| + assembler_->BIND(&argument_done);
|
| + return result.value();
|
| +}
|
| +
|
| void CodeStubArguments::ForEach(
|
| const CodeStubAssembler::VariableList& vars,
|
| const CodeStubArguments::ForEachBodyFunction& body, Node* first, Node* last,
|
|
|