Chromium Code Reviews| Index: src/code-stub-assembler.cc |
| diff --git a/src/code-stub-assembler.cc b/src/code-stub-assembler.cc |
| index 5d4531f6937674a04926f75000ba95da6ce8385c..e87797d42e158690aa16b4f5aa496b0666ce7ade 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_->IntPtrOrSmiGreaterThanOrEqual( |
|
Igor Sheludko
2017/04/27 10:38:05
s/IntPtr/UintPtr/ to be in sync with AtIndex.
danno
2017/04/28 06:58:10
Done.
|
| + 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, |