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

Side by Side Diff: test/unittests/interpreter/interpreter-assembler-unittest.cc

Issue 2092763002: [Interpreter] Maintain a pointer to the current position in the bytecode Base URL: https://chromium.googlesource.com/v8/v8.git@int_cache_fp_and_bytecode
Patch Set: Rebase 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 unified diff | Download patch
« no previous file with comments | « src/interpreter/interpreter-assembler.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "test/unittests/interpreter/interpreter-assembler-unittest.h" 5 #include "test/unittests/interpreter/interpreter-assembler-unittest.h"
6 6
7 #include "src/code-factory.h" 7 #include "src/code-factory.h"
8 #include "src/compiler/graph.h" 8 #include "src/compiler/graph.h"
9 #include "src/compiler/node.h" 9 #include "src/compiler/node.h"
10 #include "src/interface-descriptors.h" 10 #include "src/interface-descriptors.h"
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 const Matcher<Node*>& value_matcher) { 86 const Matcher<Node*>& value_matcher) {
87 return ::i::compiler::IsStore(rep_matcher, base_matcher, index_matcher, 87 return ::i::compiler::IsStore(rep_matcher, base_matcher, index_matcher,
88 value_matcher, _, _); 88 value_matcher, _, _);
89 } 89 }
90 90
91 Matcher<Node*> 91 Matcher<Node*>
92 InterpreterAssemblerTest::InterpreterAssemblerForTest::IsUnsignedByteOperand( 92 InterpreterAssemblerTest::InterpreterAssemblerForTest::IsUnsignedByteOperand(
93 int offset) { 93 int offset) {
94 return IsLoad( 94 return IsLoad(
95 MachineType::Uint8(), 95 MachineType::Uint8(),
96 IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter),
97 IsIntPtrAdd( 96 IsIntPtrAdd(
98 IsParameter(InterpreterDispatchDescriptor::kBytecodeOffsetParameter), 97 IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter),
99 IsIntPtrConstant(offset))); 98 IsParameter(InterpreterDispatchDescriptor::kBytecodeOffsetParameter)),
99 IsIntPtrConstant(offset));
100 } 100 }
101 101
102 Matcher<Node*> 102 Matcher<Node*>
103 InterpreterAssemblerTest::InterpreterAssemblerForTest::IsSignedByteOperand( 103 InterpreterAssemblerTest::InterpreterAssemblerForTest::IsSignedByteOperand(
104 int offset) { 104 int offset) {
105 Matcher<Node*> load_matcher = IsLoad( 105 Matcher<Node*> load_matcher = IsLoad(
106 MachineType::Int8(), 106 MachineType::Int8(),
107 IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter),
108 IsIntPtrAdd( 107 IsIntPtrAdd(
109 IsParameter(InterpreterDispatchDescriptor::kBytecodeOffsetParameter), 108 IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter),
110 IsIntPtrConstant(offset))); 109 IsParameter(InterpreterDispatchDescriptor::kBytecodeOffsetParameter)),
110 IsIntPtrConstant(offset));
111 if (kPointerSize == 8) { 111 if (kPointerSize == 8) {
112 load_matcher = IsChangeInt32ToInt64(load_matcher); 112 load_matcher = IsChangeInt32ToInt64(load_matcher);
113 } 113 }
114 return load_matcher; 114 return load_matcher;
115 } 115 }
116 116
117 Matcher<Node*> 117 Matcher<Node*>
118 InterpreterAssemblerTest::InterpreterAssemblerForTest::IsUnsignedShortOperand( 118 InterpreterAssemblerTest::InterpreterAssemblerForTest::IsUnsignedShortOperand(
119 int offset) { 119 int offset) {
120 if (TargetSupportsUnalignedAccess()) { 120 if (TargetSupportsUnalignedAccess()) {
121 return IsLoad( 121 return IsLoad(
122 MachineType::Uint16(), 122 MachineType::Uint16(),
123 IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter),
124 IsIntPtrAdd( 123 IsIntPtrAdd(
124 IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter),
125 IsParameter( 125 IsParameter(
126 InterpreterDispatchDescriptor::kBytecodeOffsetParameter), 126 InterpreterDispatchDescriptor::kBytecodeOffsetParameter)),
127 IsIntPtrConstant(offset))); 127 IsIntPtrConstant(offset));
128 } else { 128 } else {
129 #if V8_TARGET_LITTLE_ENDIAN 129 #if V8_TARGET_LITTLE_ENDIAN
130 const int kStep = -1; 130 const int kStep = -1;
131 const int kMsbOffset = 1; 131 const int kMsbOffset = 1;
132 #elif V8_TARGET_BIG_ENDIAN 132 #elif V8_TARGET_BIG_ENDIAN
133 const int kStep = 1; 133 const int kStep = 1;
134 const int kMsbOffset = 0; 134 const int kMsbOffset = 0;
135 #else 135 #else
136 #error "Unknown Architecture" 136 #error "Unknown Architecture"
137 #endif 137 #endif
138 Matcher<Node*> bytes[2]; 138 Matcher<Node*> bytes[2];
139 for (int i = 0; i < static_cast<int>(arraysize(bytes)); i++) { 139 for (int i = 0; i < static_cast<int>(arraysize(bytes)); i++) {
140 bytes[i] = IsLoad( 140 bytes[i] = IsLoad(
141 MachineType::Uint8(), 141 MachineType::Uint8(),
142 IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter),
143 IsIntPtrAdd( 142 IsIntPtrAdd(
144 IsParameter( 143 IsParameter(
145 InterpreterDispatchDescriptor::kBytecodeOffsetParameter), 144 InterpreterDispatchDescriptor::kBytecodeArrayParameter),
146 IsIntPtrConstant(offset + kMsbOffset + kStep * i))); 145 IsParameter(
146 InterpreterDispatchDescriptor::kBytecodeOffsetParameter)),
147 IsIntPtrConstant(offset + kMsbOffset + kStep * i));
147 } 148 }
148 return IsWord32Or(IsWord32Shl(bytes[0], IsInt32Constant(kBitsPerByte)), 149 return IsWord32Or(IsWord32Shl(bytes[0], IsInt32Constant(kBitsPerByte)),
149 bytes[1]); 150 bytes[1]);
150 } 151 }
151 } 152 }
152 153
153 Matcher<Node*> 154 Matcher<Node*>
154 InterpreterAssemblerTest::InterpreterAssemblerForTest::IsSignedShortOperand( 155 InterpreterAssemblerTest::InterpreterAssemblerForTest::IsSignedShortOperand(
155 int offset) { 156 int offset) {
156 Matcher<Node*> load_matcher; 157 Matcher<Node*> load_matcher;
157 if (TargetSupportsUnalignedAccess()) { 158 if (TargetSupportsUnalignedAccess()) {
158 load_matcher = IsLoad( 159 load_matcher = IsLoad(
159 MachineType::Int16(), 160 MachineType::Int16(),
160 IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter),
161 IsIntPtrAdd( 161 IsIntPtrAdd(
162 IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter),
162 IsParameter( 163 IsParameter(
163 InterpreterDispatchDescriptor::kBytecodeOffsetParameter), 164 InterpreterDispatchDescriptor::kBytecodeOffsetParameter)),
164 IsIntPtrConstant(offset))); 165 IsIntPtrConstant(offset));
165 } else { 166 } else {
166 #if V8_TARGET_LITTLE_ENDIAN 167 #if V8_TARGET_LITTLE_ENDIAN
167 const int kStep = -1; 168 const int kStep = -1;
168 const int kMsbOffset = 1; 169 const int kMsbOffset = 1;
169 #elif V8_TARGET_BIG_ENDIAN 170 #elif V8_TARGET_BIG_ENDIAN
170 const int kStep = 1; 171 const int kStep = 1;
171 const int kMsbOffset = 0; 172 const int kMsbOffset = 0;
172 #else 173 #else
173 #error "Unknown Architecture" 174 #error "Unknown Architecture"
174 #endif 175 #endif
(...skipping 16 matching lines...) Expand all
191 } 192 }
192 return load_matcher; 193 return load_matcher;
193 } 194 }
194 195
195 Matcher<Node*> 196 Matcher<Node*>
196 InterpreterAssemblerTest::InterpreterAssemblerForTest::IsUnsignedQuadOperand( 197 InterpreterAssemblerTest::InterpreterAssemblerForTest::IsUnsignedQuadOperand(
197 int offset) { 198 int offset) {
198 if (TargetSupportsUnalignedAccess()) { 199 if (TargetSupportsUnalignedAccess()) {
199 return IsLoad( 200 return IsLoad(
200 MachineType::Uint32(), 201 MachineType::Uint32(),
201 IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter),
202 IsIntPtrAdd( 202 IsIntPtrAdd(
203 IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter),
203 IsParameter( 204 IsParameter(
204 InterpreterDispatchDescriptor::kBytecodeOffsetParameter), 205 InterpreterDispatchDescriptor::kBytecodeOffsetParameter)),
205 IsIntPtrConstant(offset))); 206 IsIntPtrConstant(offset));
206 } else { 207 } else {
207 #if V8_TARGET_LITTLE_ENDIAN 208 #if V8_TARGET_LITTLE_ENDIAN
208 const int kStep = -1; 209 const int kStep = -1;
209 const int kMsbOffset = 3; 210 const int kMsbOffset = 3;
210 #elif V8_TARGET_BIG_ENDIAN 211 #elif V8_TARGET_BIG_ENDIAN
211 const int kStep = 1; 212 const int kStep = 1;
212 const int kMsbOffset = 0; 213 const int kMsbOffset = 0;
213 #else 214 #else
214 #error "Unknown Architecture" 215 #error "Unknown Architecture"
215 #endif 216 #endif
(...skipping 16 matching lines...) Expand all
232 } 233 }
233 } 234 }
234 235
235 Matcher<Node*> 236 Matcher<Node*>
236 InterpreterAssemblerTest::InterpreterAssemblerForTest::IsSignedQuadOperand( 237 InterpreterAssemblerTest::InterpreterAssemblerForTest::IsSignedQuadOperand(
237 int offset) { 238 int offset) {
238 Matcher<Node*> load_matcher; 239 Matcher<Node*> load_matcher;
239 if (TargetSupportsUnalignedAccess()) { 240 if (TargetSupportsUnalignedAccess()) {
240 load_matcher = IsLoad( 241 load_matcher = IsLoad(
241 MachineType::Int32(), 242 MachineType::Int32(),
242 IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter),
243 IsIntPtrAdd( 243 IsIntPtrAdd(
244 IsParameter(InterpreterDispatchDescriptor::kBytecodeArrayParameter),
244 IsParameter( 245 IsParameter(
245 InterpreterDispatchDescriptor::kBytecodeOffsetParameter), 246 InterpreterDispatchDescriptor::kBytecodeOffsetParameter)),
246 IsIntPtrConstant(offset))); 247 IsIntPtrConstant(offset));
247 } else { 248 } else {
248 #if V8_TARGET_LITTLE_ENDIAN 249 #if V8_TARGET_LITTLE_ENDIAN
249 const int kStep = -1; 250 const int kStep = -1;
250 int kMsbOffset = 3; 251 int kMsbOffset = 3;
251 #elif V8_TARGET_BIG_ENDIAN 252 #elif V8_TARGET_BIG_ENDIAN
252 const int kStep = 1; 253 const int kStep = 1;
253 int kMsbOffset = 0; 254 int kMsbOffset = 0;
254 #else 255 #else
255 #error "Unknown Architecture" 256 #error "Unknown Architecture"
256 #endif 257 #endif
(...skipping 446 matching lines...) Expand 10 before | Expand all | Expand 10 after
703 EXPECT_THAT(feedback_vector, 704 EXPECT_THAT(feedback_vector,
704 m.IsLoad(MachineType::AnyTagged(), load_literals_matcher, 705 m.IsLoad(MachineType::AnyTagged(), load_literals_matcher,
705 IsIntPtrConstant(LiteralsArray::kFeedbackVectorOffset - 706 IsIntPtrConstant(LiteralsArray::kFeedbackVectorOffset -
706 kHeapObjectTag))); 707 kHeapObjectTag)));
707 } 708 }
708 } 709 }
709 710
710 } // namespace interpreter 711 } // namespace interpreter
711 } // namespace internal 712 } // namespace internal
712 } // namespace v8 713 } // namespace v8
OLDNEW
« no previous file with comments | « src/interpreter/interpreter-assembler.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698