Index: src/interpreter/interpreter.cc |
diff --git a/src/interpreter/interpreter.cc b/src/interpreter/interpreter.cc |
index 15c0ce8a09b24cf151d19d44e9fd86a291b32486..dc9af07be843d5bafde4196341610d6ce6aad82c 100644 |
--- a/src/interpreter/interpreter.cc |
+++ b/src/interpreter/interpreter.cc |
@@ -1809,6 +1809,22 @@ void Interpreter::DoCreateBlockContext(InterpreterAssembler* assembler) { |
__ Dispatch(); |
} |
+// CreateCatchContext <exception> <index> |
+// |
+// Creates a new context for a catch block with the |exception| in a register, |
+// the variable name at |index| and the closure in the accumulator. |
+void Interpreter::DoCreateCatchContext(InterpreterAssembler* assembler) { |
+ Node* exception_reg = __ BytecodeOperandReg(0); |
+ Node* exception = __ LoadRegister(exception_reg); |
+ Node* index = __ BytecodeOperandIdx(1); |
+ Node* name = __ LoadConstantPoolEntry(index); |
+ Node* closure = __ GetAccumulator(); |
+ Node* context = __ GetContext(); |
+ __ SetAccumulator(__ CallRuntime(Runtime::kPushCatchContext, context, name, |
+ exception, closure)); |
+ __ Dispatch(); |
+} |
+ |
// CreateFunctionContext <slots> |
// |
// Creates a new context with number of |slots| for the function closure. |