Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1558)

Unified Diff: test/unittests/interpreter/interpreter-assembler-unittest.cc

Issue 2142273003: [interpreter] Inline Star on dispatch for some bytecodes (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: remove 100% dispatching bytecodes again Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 1bc80c0e4a7eeb635cd881c1a87eb9fdfdb77bfa..b42b21fd3c6b7f9c7c6b61b84c4dc4e159ab6fc5 100644
--- a/test/unittests/interpreter/interpreter-assembler-unittest.cc
+++ b/test/unittests/interpreter/interpreter-assembler-unittest.cc
@@ -316,6 +316,9 @@ TARGET_TEST_F(InterpreterAssemblerTest, Dispatch) {
Node* tail_call_node = m.Dispatch();
OperandScale operand_scale = OperandScale::kSingle;
+ bool hasStarLookahead =
rmcilroy 2016/07/19 10:03:56 underscore style for local variables (has_star_loo
klaasb 2016/07/19 14:24:13 Done.
+ interpreter::Bytecodes::IsStarLookahead(bytecode, operand_scale);
+
Matcher<Node*> next_bytecode_offset_matcher = IsIntPtrAdd(
IsParameter(InterpreterDispatchDescriptor::kBytecodeOffsetParameter),
IsIntPtrConstant(
@@ -324,7 +327,7 @@ TARGET_TEST_F(InterpreterAssemblerTest, Dispatch) {
MachineType::Uint8(),
IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter),
next_bytecode_offset_matcher);
- if (kPointerSize == 8) {
+ if (!hasStarLookahead && kPointerSize == 8) {
target_bytecode_matcher = IsChangeUint32ToUint64(target_bytecode_matcher);
}
Matcher<Node*> code_target_matcher = m.IsLoad(
@@ -332,6 +335,32 @@ TARGET_TEST_F(InterpreterAssemblerTest, Dispatch) {
IsParameter(InterpreterDispatchDescriptor::kDispatchTableParameter),
IsWordShl(target_bytecode_matcher, IsIntPtrConstant(kPointerSizeLog2)));
+ if (hasStarLookahead) {
+ Matcher<Node*> after_lookahead_offset =
+ IsIntPtrAdd(next_bytecode_offset_matcher,
+ IsIntPtrConstant(interpreter::Bytecodes::Size(
+ Bytecode::kStar, operand_scale)));
+ next_bytecode_offset_matcher =
+ IsPhi(MachineType::PointerRepresentation(),
+ next_bytecode_offset_matcher, after_lookahead_offset, _);
+ Matcher<Node*> after_lookahead_bytecode = m.IsLoad(
+ MachineType::Uint8(),
+ IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter),
+ after_lookahead_offset);
+ target_bytecode_matcher =
+ IsPhi(MachineRepresentation::kWord8, target_bytecode_matcher,
+ after_lookahead_bytecode, _);
+ if (kPointerSize == 8) {
+ target_bytecode_matcher =
+ IsChangeUint32ToUint64(target_bytecode_matcher);
+ }
+ code_target_matcher = m.IsLoad(
+ MachineType::Pointer(),
+ IsParameter(InterpreterDispatchDescriptor::kDispatchTableParameter),
+ IsWordShl(target_bytecode_matcher,
+ IsIntPtrConstant(kPointerSizeLog2)));
+ }
+
EXPECT_THAT(
tail_call_node,
IsTailCall(
« src/interpreter/interpreter-assembler.cc ('K') | « src/interpreter/interpreter-assembler.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698