Index: src/x64/macro-assembler-x64.cc |
diff --git a/src/x64/macro-assembler-x64.cc b/src/x64/macro-assembler-x64.cc |
index a1172262b06cc82bd8034f5e909f7158c611abcd..7afd0f0c0b151b5613f9f1fb0827f2235aba604a 100644 |
--- a/src/x64/macro-assembler-x64.cc |
+++ b/src/x64/macro-assembler-x64.cc |
@@ -5183,6 +5183,24 @@ void MacroAssembler::JumpIfDictionaryInPrototypeChain( |
} |
+void MacroAssembler::OSRDropVectorFromStack(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)); |