Index: test/cctest/compiler/call-tester.h |
diff --git a/test/cctest/compiler/call-tester.h b/test/cctest/compiler/call-tester.h |
index 60b1d25b498f984156dbda5228df272dc5244194..cad171e60c1730f4869abd255cf892d67552ae74 100644 |
--- a/test/cctest/compiler/call-tester.h |
+++ b/test/cctest/compiler/call-tester.h |
@@ -207,6 +207,42 @@ class CallHelper { |
Simulator::CallArgument::End()}; |
return ReturnValueTraits<R>::Cast(CallSimulator(FUNCTION_ADDR(f), args)); |
} |
+#elif USE_SIMULATOR && V8_TARGET_ARCH_MIPS64 |
+ uintptr_t CallSimulator(byte* f, int64_t p1 = 0, int64_t p2 = 0, |
+ int64_t p3 = 0, int64_t p4 = 0) { |
+ Simulator* simulator = Simulator::current(isolate_); |
+ return static_cast<uintptr_t>(simulator->Call(f, 4, p1, p2, p3, p4)); |
+ } |
+ |
+ template <typename R, typename F> |
+ R DoCall(F* f) { |
+ return ReturnValueTraits<R>::Cast(CallSimulator(FUNCTION_ADDR(f))); |
+ } |
+ template <typename R, typename F, typename P1> |
+ R DoCall(F* f, P1 p1) { |
+ return ReturnValueTraits<R>::Cast( |
+ CallSimulator(FUNCTION_ADDR(f), ParameterTraits<P1>::Cast(p1))); |
+ } |
+ template <typename R, typename F, typename P1, typename P2> |
+ R DoCall(F* f, P1 p1, P2 p2) { |
+ return ReturnValueTraits<R>::Cast( |
+ CallSimulator(FUNCTION_ADDR(f), ParameterTraits<P1>::Cast(p1), |
+ ParameterTraits<P2>::Cast(p2))); |
+ } |
+ template <typename R, typename F, typename P1, typename P2, typename P3> |
+ R DoCall(F* f, P1 p1, P2 p2, P3 p3) { |
+ return ReturnValueTraits<R>::Cast(CallSimulator( |
+ FUNCTION_ADDR(f), ParameterTraits<P1>::Cast(p1), |
+ ParameterTraits<P2>::Cast(p2), ParameterTraits<P3>::Cast(p3))); |
+ } |
+ template <typename R, typename F, typename P1, typename P2, typename P3, |
+ typename P4> |
+ R DoCall(F* f, P1 p1, P2 p2, P3 p3, P4 p4) { |
+ return ReturnValueTraits<R>::Cast(CallSimulator( |
+ FUNCTION_ADDR(f), ParameterTraits<P1>::Cast(p1), |
+ ParameterTraits<P2>::Cast(p2), ParameterTraits<P3>::Cast(p3), |
+ ParameterTraits<P4>::Cast(p4))); |
+ } |
#elif USE_SIMULATOR && (V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_MIPS) |
uintptr_t CallSimulator(byte* f, int32_t p1 = 0, int32_t p2 = 0, |
int32_t p3 = 0, int32_t p4 = 0) { |