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

Side by Side Diff: test/cctest/compiler/call-tester.h

Issue 1146173005: [test] Refactor call-tester to use c-signature.h. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 6 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 | « test/cctest/compiler/c-signature.h ('k') | test/cctest/compiler/codegen-tester.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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 #ifndef V8_CCTEST_COMPILER_CALL_TESTER_H_ 5 #ifndef V8_CCTEST_COMPILER_CALL_TESTER_H_
6 #define V8_CCTEST_COMPILER_CALL_TESTER_H_ 6 #define V8_CCTEST_COMPILER_CALL_TESTER_H_
7 7
8 #include "src/v8.h" 8 #include "src/v8.h"
9 9
10 #include "src/simulator.h" 10 #include "src/simulator.h"
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 return static_cast<int64_t>(static_cast<int32_t>(r)); 115 return static_cast<int64_t>(static_cast<int32_t>(r));
116 } 116 }
117 }; 117 };
118 118
119 #endif // !V8_TARGET_ARCH_64_BIT 119 #endif // !V8_TARGET_ARCH_64_BIT
120 120
121 121
122 template <typename R> 122 template <typename R>
123 class CallHelper { 123 class CallHelper {
124 public: 124 public:
125 explicit CallHelper(Isolate* isolate, MachineSignature* machine_sig) 125 explicit CallHelper(Isolate* isolate, CSignature* csig)
126 : machine_sig_(machine_sig), isolate_(isolate) { 126 : csig_(csig), isolate_(isolate) {
127 USE(isolate_); 127 USE(isolate_);
128 } 128 }
129 virtual ~CallHelper() {} 129 virtual ~CallHelper() {}
130 130
131 R Call() { 131 R Call() {
132 typedef R V8_CDECL FType(); 132 typedef R V8_CDECL FType();
133 VerifyParameters0(); 133 csig_->VerifyParams();
134 return DoCall(FUNCTION_CAST<FType*>(Generate())); 134 return DoCall(FUNCTION_CAST<FType*>(Generate()));
135 } 135 }
136 136
137 template <typename P1> 137 template <typename P1>
138 R Call(P1 p1) { 138 R Call(P1 p1) {
139 typedef R V8_CDECL FType(P1); 139 typedef R V8_CDECL FType(P1);
140 VerifyParameters1<P1>(); 140 csig_->VerifyParams<P1>();
141 return DoCall(FUNCTION_CAST<FType*>(Generate()), p1); 141 return DoCall(FUNCTION_CAST<FType*>(Generate()), p1);
142 } 142 }
143 143
144 template <typename P1, typename P2> 144 template <typename P1, typename P2>
145 R Call(P1 p1, P2 p2) { 145 R Call(P1 p1, P2 p2) {
146 typedef R V8_CDECL FType(P1, P2); 146 typedef R V8_CDECL FType(P1, P2);
147 VerifyParameters2<P1, P2>(); 147 csig_->VerifyParams<P1, P2>();
148 return DoCall(FUNCTION_CAST<FType*>(Generate()), p1, p2); 148 return DoCall(FUNCTION_CAST<FType*>(Generate()), p1, p2);
149 } 149 }
150 150
151 template <typename P1, typename P2, typename P3> 151 template <typename P1, typename P2, typename P3>
152 R Call(P1 p1, P2 p2, P3 p3) { 152 R Call(P1 p1, P2 p2, P3 p3) {
153 typedef R V8_CDECL FType(P1, P2, P3); 153 typedef R V8_CDECL FType(P1, P2, P3);
154 VerifyParameters3<P1, P2, P3>(); 154 csig_->VerifyParams<P1, P2, P3>();
155 return DoCall(FUNCTION_CAST<FType*>(Generate()), p1, p2, p3); 155 return DoCall(FUNCTION_CAST<FType*>(Generate()), p1, p2, p3);
156 } 156 }
157 157
158 template <typename P1, typename P2, typename P3, typename P4> 158 template <typename P1, typename P2, typename P3, typename P4>
159 R Call(P1 p1, P2 p2, P3 p3, P4 p4) { 159 R Call(P1 p1, P2 p2, P3 p3, P4 p4) {
160 typedef R V8_CDECL FType(P1, P2, P3, P4); 160 typedef R V8_CDECL FType(P1, P2, P3, P4);
161 VerifyParameters4<P1, P2, P3, P4>(); 161 csig_->VerifyParams<P1, P2, P3, P4>();
162 return DoCall(FUNCTION_CAST<FType*>(Generate()), p1, p2, p3, p4); 162 return DoCall(FUNCTION_CAST<FType*>(Generate()), p1, p2, p3, p4);
163 } 163 }
164 164
165 protected: 165 protected:
166 MachineSignature* machine_sig_; 166 CSignature* csig_;
167
168 void VerifyParameters(size_t parameter_count, MachineType* parameter_types) {
169 CHECK(machine_sig_->parameter_count() == parameter_count);
170 for (size_t i = 0; i < parameter_count; i++) {
171 CHECK_EQ(machine_sig_->GetParam(i), parameter_types[i]);
172 }
173 }
174 167
175 virtual byte* Generate() = 0; 168 virtual byte* Generate() = 0;
176 169
177 private: 170 private:
178 #if USE_SIMULATOR && V8_TARGET_ARCH_ARM64 171 #if USE_SIMULATOR && V8_TARGET_ARCH_ARM64
179 uintptr_t CallSimulator(byte* f, Simulator::CallArgument* args) { 172 uintptr_t CallSimulator(byte* f, Simulator::CallArgument* args) {
180 Simulator* simulator = Simulator::current(isolate_); 173 Simulator* simulator = Simulator::current(isolate_);
181 return static_cast<uintptr_t>(simulator->CallInt64(f, args)); 174 return static_cast<uintptr_t>(simulator->CallInt64(f, args));
182 } 175 }
183 176
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 template <typename F, typename P1, typename P2, typename P3> 294 template <typename F, typename P1, typename P2, typename P3>
302 R DoCall(F* f, P1 p1, P2 p2, P3 p3) { 295 R DoCall(F* f, P1 p1, P2 p2, P3 p3) {
303 return f(p1, p2, p3); 296 return f(p1, p2, p3);
304 } 297 }
305 template <typename F, typename P1, typename P2, typename P3, typename P4> 298 template <typename F, typename P1, typename P2, typename P3, typename P4>
306 R DoCall(F* f, P1 p1, P2 p2, P3 p3, P4 p4) { 299 R DoCall(F* f, P1 p1, P2 p2, P3 p3, P4 p4) {
307 return f(p1, p2, p3, p4); 300 return f(p1, p2, p3, p4);
308 } 301 }
309 #endif 302 #endif
310 303
311 #ifndef DEBUG
312 void VerifyParameters0() {}
313
314 template <typename P1>
315 void VerifyParameters1() {}
316
317 template <typename P1, typename P2>
318 void VerifyParameters2() {}
319
320 template <typename P1, typename P2, typename P3>
321 void VerifyParameters3() {}
322
323 template <typename P1, typename P2, typename P3, typename P4>
324 void VerifyParameters4() {}
325 #else
326 void VerifyParameters0() { VerifyParameters(0, NULL); }
327
328 template <typename P1>
329 void VerifyParameters1() {
330 MachineType parameters[] = {MachineTypeForC<P1>()};
331 VerifyParameters(arraysize(parameters), parameters);
332 }
333
334 template <typename P1, typename P2>
335 void VerifyParameters2() {
336 MachineType parameters[] = {MachineTypeForC<P1>(), MachineTypeForC<P2>()};
337 VerifyParameters(arraysize(parameters), parameters);
338 }
339
340 template <typename P1, typename P2, typename P3>
341 void VerifyParameters3() {
342 MachineType parameters[] = {MachineTypeForC<P1>(), MachineTypeForC<P2>(),
343 MachineTypeForC<P3>()};
344 VerifyParameters(arraysize(parameters), parameters);
345 }
346
347 template <typename P1, typename P2, typename P3, typename P4>
348 void VerifyParameters4() {
349 MachineType parameters[] = {MachineTypeForC<P1>(), MachineTypeForC<P2>(),
350 MachineTypeForC<P3>(), MachineTypeForC<P4>()};
351 VerifyParameters(arraysize(parameters), parameters);
352 }
353 #endif
354
355 Isolate* isolate_; 304 Isolate* isolate_;
356 }; 305 };
357 306
358 } // namespace compiler 307 } // namespace compiler
359 } // namespace internal 308 } // namespace internal
360 } // namespace v8 309 } // namespace v8
361 310
362 #endif // V8_CCTEST_COMPILER_CALL_TESTER_H_ 311 #endif // V8_CCTEST_COMPILER_CALL_TESTER_H_
OLDNEW
« no previous file with comments | « test/cctest/compiler/c-signature.h ('k') | test/cctest/compiler/codegen-tester.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698