| Index: src/interpreter/bytecode-array-builder.cc
|
| diff --git a/src/interpreter/bytecode-array-builder.cc b/src/interpreter/bytecode-array-builder.cc
|
| index 8dc4fb98985bddb9e5328b622f7ab808ef3789b1..4e87ba27e378486daa0807a6d847dd57ef366f03 100644
|
| --- a/src/interpreter/bytecode-array-builder.cc
|
| +++ b/src/interpreter/bytecode-array-builder.cc
|
| @@ -555,14 +555,22 @@ void BytecodeArrayBuilder::EnsureReturn() {
|
| DCHECK(return_seen_in_block_);
|
| }
|
|
|
| +BytecodeArrayBuilder& BytecodeArrayBuilder::CallWithFeedback(
|
| + Register callable, Register receiver_args, size_t receiver_args_count,
|
| + int feedback_slot, TailCallMode tail_call_mode) {
|
| + Bytecode bytecode = BytecodeForCallWithFeedback(tail_call_mode);
|
| + Output(bytecode, RegisterOperand(callable), RegisterOperand(receiver_args),
|
| + UnsignedOperand(receiver_args_count), UnsignedOperand(feedback_slot));
|
| + return *this;
|
| +}
|
| +
|
| BytecodeArrayBuilder& BytecodeArrayBuilder::Call(Register callable,
|
| Register receiver_args,
|
| size_t receiver_args_count,
|
| - int feedback_slot,
|
| TailCallMode tail_call_mode) {
|
| Bytecode bytecode = BytecodeForCall(tail_call_mode);
|
| Output(bytecode, RegisterOperand(callable), RegisterOperand(receiver_args),
|
| - UnsignedOperand(receiver_args_count), UnsignedOperand(feedback_slot));
|
| + UnsignedOperand(receiver_args_count));
|
| return *this;
|
| }
|
|
|
| @@ -935,6 +943,20 @@ Bytecode BytecodeArrayBuilder::BytecodeForCall(TailCallMode tail_call_mode) {
|
| return Bytecode::kIllegal;
|
| }
|
|
|
| +// static
|
| +Bytecode BytecodeArrayBuilder::BytecodeForCallWithFeedback(
|
| + TailCallMode tail_call_mode) {
|
| + switch (tail_call_mode) {
|
| + case TailCallMode::kDisallow:
|
| + return Bytecode::kCallWithFeedback;
|
| + case TailCallMode::kAllow:
|
| + return Bytecode::kTailCallWithFeedback;
|
| + default:
|
| + UNREACHABLE();
|
| + }
|
| + return Bytecode::kIllegal;
|
| +}
|
| +
|
| } // namespace interpreter
|
| } // namespace internal
|
| } // namespace v8
|
|
|