Index: runtime/vm/unit_test.h |
diff --git a/runtime/vm/unit_test.h b/runtime/vm/unit_test.h |
index d4853e4ca1e3f5f17f0db309d32bcab46b141eb4..6e1ca5c04dcb0e500327897dbb102fc8a0982a38 100644 |
--- a/runtime/vm/unit_test.h |
+++ b/runtime/vm/unit_test.h |
@@ -360,34 +360,36 @@ class AssemblerTest { |
uword entry() const { return code_.EntryPoint(); } |
- // Invoke is used to call assembler test functions using the ABI calling |
- // convention. |
+ // Invoke/InvokeWithCode is used to call assembler test functions using the |
+ // ABI calling convention. |
// ResultType is the return type of the assembler test function. |
// ArgNType is the type of the Nth argument. |
#if defined(USING_SIMULATOR) |
#if defined(ARCH_IS_64_BIT) |
- // TODO(fschneider): Make Invoke<> more general and work on 32-bit platforms. |
+ // TODO(fschneider): Make InvokeWithCode<> more general and work on 32-bit. |
// Since Simulator::Call always return a int64_t, bit_cast does not work |
// on 32-bit platforms when returning an int32_t. Since template functions |
// don't support partial specialization, we'd need to introduce a helper |
// class to support 32-bit return types. |
- template<typename ResultType> ResultType Invoke() { |
+ template<typename ResultType> ResultType InvokeWithCode() { |
const bool fp_return = is_double<ResultType>::value; |
const bool fp_args = false; |
return bit_cast<ResultType, int64_t>(Simulator::Current()->Call( |
- bit_cast<intptr_t, uword>(entry()), 0, 0, 0, 0, fp_return, fp_args)); |
+ bit_cast<intptr_t, uword>(entry()), |
+ reinterpret_cast<intptr_t>(&code_), 0, 0, 0, fp_return, fp_args)); |
} |
template<typename ResultType, typename Arg1Type> |
- ResultType Invoke(Arg1Type arg1) { |
+ ResultType InvokeWithCode(Arg1Type arg1) { |
const bool fp_return = is_double<ResultType>::value; |
const bool fp_args = is_double<Arg1Type>::value; |
// TODO(fschneider): Support double arguments for simulator calls. |
COMPILE_ASSERT(!fp_args); |
return bit_cast<ResultType, int64_t>(Simulator::Current()->Call( |
bit_cast<intptr_t, uword>(entry()), |
+ reinterpret_cast<intptr_t>(&code_), |
reinterpret_cast<intptr_t>(arg1), |
- 0, 0, 0, fp_return, fp_args)); |
+ 0, 0, fp_return, fp_args)); |
} |
#endif // ARCH_IS_64_BIT |
@@ -411,15 +413,15 @@ class AssemblerTest { |
0, fp_return, fp_args); |
} |
#else |
- template<typename ResultType> ResultType Invoke() { |
- typedef ResultType (*FunctionType) (); |
- return reinterpret_cast<FunctionType>(entry())(); |
+ template<typename ResultType> ResultType InvokeWithCode() { |
+ typedef ResultType (*FunctionType) (const Code&); |
+ return reinterpret_cast<FunctionType>(entry())(code_); |
} |
template<typename ResultType, typename Arg1Type> |
- ResultType Invoke(Arg1Type arg1) { |
- typedef ResultType (*FunctionType) (Arg1Type); |
- return reinterpret_cast<FunctionType>(entry())(arg1); |
+ ResultType InvokeWithCode(Arg1Type arg1) { |
+ typedef ResultType (*FunctionType) (const Code&, Arg1Type); |
+ return reinterpret_cast<FunctionType>(entry())(code_, arg1); |
} |
template<typename ResultType, |