| Index: src/compiler/code-stub-assembler.cc
|
| diff --git a/src/compiler/code-stub-assembler.cc b/src/compiler/code-stub-assembler.cc
|
| index 702b12ad127776cfd0b59cd6ecaf2e5a1e74b580..6bc9c5a1ed46163a1f32c0e18a991d1e2dc2a46e 100644
|
| --- a/src/compiler/code-stub-assembler.cc
|
| +++ b/src/compiler/code-stub-assembler.cc
|
| @@ -78,11 +78,51 @@ Node* CodeStubAssembler::BooleanConstant(bool value) {
|
| }
|
|
|
|
|
| +Node* CodeStubAssembler::Load(MachineType type, Node* base) {
|
| + return raw_assembler_->Load(type, base);
|
| +}
|
| +
|
| +
|
| +Node* CodeStubAssembler::Load(MachineType type, Node* base, Node* index) {
|
| + return raw_assembler_->Load(type, base, index);
|
| +}
|
| +
|
| +
|
| Node* CodeStubAssembler::Parameter(int value) {
|
| return raw_assembler_->Parameter(value);
|
| }
|
|
|
|
|
| +Node* CodeStubAssembler::StackArg(Node* num_args, int value) {
|
| + // N = num_args
|
| + // Arg 0: [sp + (N + 1) * kPointerSize]
|
| + // Arg 1: [sp + N * kPointerSize]
|
| + // ...
|
| + // Arg N-1: [sp + kPointerSize]
|
| + RawMachineAssembler* rma = raw_assembler_.get();
|
| + return rma->Load(
|
| + MachineType::AnyTagged(), rma->LoadStackPointer(),
|
| + rma->Word32Shl(rma->Int32Sub(num_args, rma->Int32Constant(value - 1)),
|
| + rma->Int32Constant(kPointerSizeLog2)));
|
| +}
|
| +
|
| +
|
| +Node* CodeStubAssembler::StackArgOrUndefined(Node* num_args, int value) {
|
| + RawMachineAssembler* rma = raw_assembler_.get();
|
| + RawMachineLabel ok, not_ok, done;
|
| + rma->Branch(rma->Int32LessThan(rma->Int32Constant(value - 1), num_args), &ok,
|
| + ¬_ok);
|
| + rma->Bind(&ok);
|
| + Node* arg = StackArg(num_args, value);
|
| + rma->Goto(&done);
|
| + rma->Bind(¬_ok);
|
| + Node* undefined = rma->UndefinedConstant();
|
| + rma->Goto(&done);
|
| + rma->Bind(&done);
|
| + return rma->Phi(MachineRepresentation::kTagged, arg, undefined);
|
| +}
|
| +
|
| +
|
| void CodeStubAssembler::Return(Node* value) {
|
| return raw_assembler_->Return(value);
|
| }
|
|
|