| 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.
|
|
|