Index: src/x64/macro-assembler-x64.cc |
diff --git a/src/x64/macro-assembler-x64.cc b/src/x64/macro-assembler-x64.cc |
index d58f94386e4ef0bc3d7359e60b1c4ef9adba8656..c3ea925034e74349c34f8a7ec6aa1eecc77bfe70 100644 |
--- a/src/x64/macro-assembler-x64.cc |
+++ b/src/x64/macro-assembler-x64.cc |
@@ -1345,6 +1345,13 @@ void MacroAssembler::Push(Smi* source) { |
} |
+void MacroAssembler::Drop(int stack_elements) { |
+ if (stack_elements > 0) { |
+ addq(rsp, Immediate(stack_elements * kPointerSize)); |
+ } |
+} |
+ |
+ |
void MacroAssembler::Test(const Operand& src, Smi* source) { |
intptr_t smi = reinterpret_cast<intptr_t>(source); |
if (is_int32(smi)) { |
@@ -1431,6 +1438,14 @@ void MacroAssembler::PushTryHandler(CodeLocation try_location, |
} |
+void MacroAssembler::PopTryHandler() { |
+ ASSERT_EQ(0, StackHandlerConstants::kNextOffset); |
+ movq(kScratchRegister, ExternalReference(Top::k_handler_address)); |
+ pop(Operand(kScratchRegister, 0)); |
+ addq(rsp, Immediate(StackHandlerConstants::kSize - kPointerSize)); |
+} |
+ |
+ |
void MacroAssembler::Ret() { |
ret(0); |
} |