Index: test/cctest/compiler/call-tester.h |
diff --git a/test/cctest/compiler/call-tester.h b/test/cctest/compiler/call-tester.h |
index 10f98db9ffd315d900760772ebf96893f936b79b..e60f7172fae24690f19a4402d4ccbafbf82fb4b2 100644 |
--- a/test/cctest/compiler/call-tester.h |
+++ b/test/cctest/compiler/call-tester.h |
@@ -159,6 +159,13 @@ class CallHelper { |
return DoCall(FUNCTION_CAST<FType*>(Generate()), p1, p2, p3, p4); |
} |
+ template <typename P1, typename P2, typename P3, typename P4, typename P5> |
+ R Call(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5) { |
+ typedef R V8_CDECL FType(P1, P2, P3, P4, P5); |
+ csig_->VerifyParams<P1, P2, P3, P4, P5>(); |
+ return DoCall(FUNCTION_CAST<FType*>(Generate()), p1, p2, p3, p4, p5); |
+ } |
+ |
protected: |
CSignature* csig_; |
@@ -204,11 +211,20 @@ class CallHelper { |
Simulator::CallArgument::End()}; |
return CastReturnValue<R>(CallSimulator(FUNCTION_ADDR(f), args)); |
} |
+ template <typename F, typename P1, typename P2, typename P3, typename P4, |
+ typename P5> |
+ R DoCall(F* f, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5) { |
+ Simulator::CallArgument args[] = { |
+ Simulator::CallArgument(p1), Simulator::CallArgument(p2), |
+ Simulator::CallArgument(p3), Simulator::CallArgument(p4), |
+ Simulator::CallArgument(p5), Simulator::CallArgument::End()}; |
+ return CastReturnValue<R>(CallSimulator(FUNCTION_ADDR(f), args)); |
+ } |
#elif USE_SIMULATOR && (V8_TARGET_ARCH_MIPS64 || V8_TARGET_ARCH_PPC64) |
uintptr_t CallSimulator(byte* f, int64_t p1 = 0, int64_t p2 = 0, |
- int64_t p3 = 0, int64_t p4 = 0) { |
+ int64_t p3 = 0, int64_t p4 = 0, int64_t p5 = 0) { |
Simulator* simulator = Simulator::current(isolate_); |
- return static_cast<uintptr_t>(simulator->Call(f, 4, p1, p2, p3, p4)); |
+ return static_cast<uintptr_t>(simulator->Call(f, 5, p1, p2, p3, p4, p5)); |
} |
@@ -240,12 +256,20 @@ class CallHelper { |
ParameterTraits<P2>::Cast(p2), ParameterTraits<P3>::Cast(p3), |
ParameterTraits<P4>::Cast(p4))); |
} |
+ template <typename F, typename P1, typename P2, typename P3, typename P4, |
+ typename P5> |
+ R DoCall(F* f, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5) { |
+ return CastReturnValue<R>(CallSimulator( |
+ FUNCTION_ADDR(f), ParameterTraits<P1>::Cast(p1), |
+ ParameterTraits<P2>::Cast(p2), ParameterTraits<P3>::Cast(p3), |
+ ParameterTraits<P4>::Cast(p4), ParameterTraits<P5>::Cast(p5))); |
+ } |
#elif USE_SIMULATOR && \ |
(V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_MIPS || V8_TARGET_ARCH_PPC) |
uintptr_t CallSimulator(byte* f, int32_t p1 = 0, int32_t p2 = 0, |
- int32_t p3 = 0, int32_t p4 = 0) { |
+ int32_t p3 = 0, int32_t p4 = 0, int32_t p5 = 0) { |
Simulator* simulator = Simulator::current(isolate_); |
- return static_cast<uintptr_t>(simulator->Call(f, 4, p1, p2, p3, p4)); |
+ return static_cast<uintptr_t>(simulator->Call(f, 5, p1, p2, p3, p4, p5)); |
} |
template <typename F> |
R DoCall(F* f) { |
@@ -275,6 +299,14 @@ class CallHelper { |
ParameterTraits<P2>::Cast(p2), ParameterTraits<P3>::Cast(p3), |
ParameterTraits<P4>::Cast(p4))); |
} |
+ template <typename F, typename P1, typename P2, typename P3, typename P4, |
+ typename P5> |
+ R DoCall(F* f, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5) { |
+ return CastReturnValue<R>(CallSimulator( |
+ FUNCTION_ADDR(f), ParameterTraits<P1>::Cast(p1), |
+ ParameterTraits<P2>::Cast(p2), ParameterTraits<P3>::Cast(p3), |
+ ParameterTraits<P4>::Cast(p4), ParameterTraits<P5>::Cast(p5))); |
+ } |
#else |
template <typename F> |
R DoCall(F* f) { |
@@ -296,6 +328,11 @@ class CallHelper { |
R DoCall(F* f, P1 p1, P2 p2, P3 p3, P4 p4) { |
return f(p1, p2, p3, p4); |
} |
+ template <typename F, typename P1, typename P2, typename P3, typename P4, |
+ typename P5> |
+ R DoCall(F* f, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5) { |
+ return f(p1, p2, p3, p4, p5); |
+ } |
#endif |
Isolate* isolate_; |