| Index: test/unittests/interpreter/interpreter-assembler-unittest.cc
|
| diff --git a/test/unittests/interpreter/interpreter-assembler-unittest.cc b/test/unittests/interpreter/interpreter-assembler-unittest.cc
|
| index 25b306e35924e8bb8d6593698bd791ff5ecb66ce..ebdb16c4b563dd758296d95c82051ecab1cd3bd3 100644
|
| --- a/test/unittests/interpreter/interpreter-assembler-unittest.cc
|
| +++ b/test/unittests/interpreter/interpreter-assembler-unittest.cc
|
| @@ -379,6 +379,32 @@
|
| InterpreterDispatchDescriptor::kDispatchTableParameter),
|
| _, _));
|
| }
|
| + }
|
| +}
|
| +
|
| +TARGET_TEST_F(InterpreterAssemblerTest, InterpreterReturn) {
|
| + // If debug code is enabled we emit extra code in InterpreterReturn.
|
| + if (FLAG_debug_code) return;
|
| +
|
| + TRACED_FOREACH(interpreter::Bytecode, bytecode, kBytecodes) {
|
| + InterpreterAssemblerForTest m(this, bytecode);
|
| + Node* tail_call_node = m.InterpreterReturn();
|
| +
|
| + Handle<HeapObject> exit_trampoline =
|
| + isolate()->builtins()->InterpreterExitTrampoline();
|
| + Matcher<Node*> exit_trampoline_entry_matcher =
|
| + IsIntPtrAdd(IsHeapConstant(exit_trampoline),
|
| + IsIntPtrConstant(Code::kHeaderSize - kHeapObjectTag));
|
| + EXPECT_THAT(
|
| + tail_call_node,
|
| + IsTailCall(
|
| + _, exit_trampoline_entry_matcher,
|
| + IsParameter(InterpreterDispatchDescriptor::kAccumulatorParameter),
|
| + IsParameter(
|
| + InterpreterDispatchDescriptor::kBytecodeOffsetParameter),
|
| + _,
|
| + IsParameter(InterpreterDispatchDescriptor::kDispatchTableParameter),
|
| + _, _));
|
| }
|
| }
|
|
|
|
|