Index: src/x64/macro-assembler-x64.cc |
diff --git a/src/x64/macro-assembler-x64.cc b/src/x64/macro-assembler-x64.cc |
index d3afbe6b141ca95f614ebefaafc4c4b2af0e8113..c90f2d7ceb3ad0a7ddb9ae337e28848d778bcac6 100644 |
--- a/src/x64/macro-assembler-x64.cc |
+++ b/src/x64/macro-assembler-x64.cc |
@@ -5072,6 +5072,23 @@ void MacroAssembler::JumpIfDictionaryInPrototypeChain( |
} |
+void MacroAssembler::AdaptUnoptimizedFrameForOsrEntry( |
+ int unoptimized_slot_count, Register scratch0, Register scratch1) { |
+ if (unoptimized_slot_count > 0) { |
+ Label loop_start; |
+ leap(scratch0, |
+ Operand(rbp, JavaScriptFrameConstants::kFeedbackVectorOffset)); |
+ bind(&loop_start); |
+ movp(scratch1, Operand(scratch0, -1 * kPointerSize)); |
+ movp(Operand(scratch0, 0), scratch1); |
+ subp(scratch0, Immediate(kPointerSize)); |
+ cmpp(scratch0, rsp); |
+ j(greater, &loop_start); |
+ } |
+ addp(rsp, Immediate(kPointerSize)); |
+} |
+ |
+ |
void MacroAssembler::TruncatingDiv(Register dividend, int32_t divisor) { |
DCHECK(!dividend.is(rax)); |
DCHECK(!dividend.is(rdx)); |