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 |