Index: runtime/vm/runtime_entry.cc |
diff --git a/runtime/vm/runtime_entry.cc b/runtime/vm/runtime_entry.cc |
index c9008b0478dc3513af0dff9b607bc107dbc93a85..3504e78830f6893a95ed14df30445eecf325dced 100644 |
--- a/runtime/vm/runtime_entry.cc |
+++ b/runtime/vm/runtime_entry.cc |
@@ -2341,4 +2341,88 @@ DEFINE_RUNTIME_ENTRY(InitStaticField, 1) { |
field.EvaluateInitializer(); |
} |
+// Use expected function signatures to help MSVC compiler resolve overloading. |
+typedef double (*UnaryMathCFunction)(double x); |
+typedef double (*BinaryMathCFunction)(double x, double y); |
+ |
+DEFINE_RAW_LEAF_RUNTIME_ENTRY( |
+ LibcPow, |
+ 2, |
+ true /* is_float */, |
+ reinterpret_cast<RuntimeFunction>(static_cast<BinaryMathCFunction>(&pow))); |
+ |
+DEFINE_RAW_LEAF_RUNTIME_ENTRY( |
+ DartModulo, |
+ 2, |
+ true /* is_float */, |
+ reinterpret_cast<RuntimeFunction>( |
+ static_cast<BinaryMathCFunction>(&DartModulo))); |
+ |
+DEFINE_RAW_LEAF_RUNTIME_ENTRY( |
+ LibcAtan2, |
+ 2, |
+ true /* is_float */, |
+ reinterpret_cast<RuntimeFunction>( |
+ static_cast<BinaryMathCFunction>(&atan2_ieee))); |
+ |
+DEFINE_RAW_LEAF_RUNTIME_ENTRY( |
+ LibcFloor, |
+ 1, |
+ true /* is_float */, |
+ reinterpret_cast<RuntimeFunction>(static_cast<UnaryMathCFunction>(&floor))); |
+ |
+DEFINE_RAW_LEAF_RUNTIME_ENTRY( |
+ LibcCeil, |
+ 1, |
+ true /* is_float */, |
+ reinterpret_cast<RuntimeFunction>(static_cast<UnaryMathCFunction>(&ceil))); |
+ |
+DEFINE_RAW_LEAF_RUNTIME_ENTRY( |
+ LibcTrunc, |
+ 1, |
+ true /* is_float */, |
+ reinterpret_cast<RuntimeFunction>(static_cast<UnaryMathCFunction>(&trunc))); |
+ |
+DEFINE_RAW_LEAF_RUNTIME_ENTRY( |
+ LibcRound, |
+ 1, |
+ true /* is_float */, |
+ reinterpret_cast<RuntimeFunction>(static_cast<UnaryMathCFunction>(&round))); |
+ |
+DEFINE_RAW_LEAF_RUNTIME_ENTRY( |
+ LibcCos, |
+ 1, |
+ true /* is_float */, |
+ reinterpret_cast<RuntimeFunction>(static_cast<UnaryMathCFunction>(&cos))); |
+ |
+DEFINE_RAW_LEAF_RUNTIME_ENTRY( |
+ LibcSin, |
+ 1, |
+ true /* is_float */, |
+ reinterpret_cast<RuntimeFunction>(static_cast<UnaryMathCFunction>(&sin))); |
+ |
+DEFINE_RAW_LEAF_RUNTIME_ENTRY( |
+ LibcAsin, |
+ 1, |
+ true /* is_float */, |
+ reinterpret_cast<RuntimeFunction>(static_cast<UnaryMathCFunction>(&asin))); |
+ |
+DEFINE_RAW_LEAF_RUNTIME_ENTRY( |
+ LibcAcos, |
+ 1, |
+ true /* is_float */, |
+ reinterpret_cast<RuntimeFunction>(static_cast<UnaryMathCFunction>(&acos))); |
+ |
+DEFINE_RAW_LEAF_RUNTIME_ENTRY( |
+ LibcTan, |
+ 1, |
+ true /* is_float */, |
+ reinterpret_cast<RuntimeFunction>(static_cast<UnaryMathCFunction>(&tan))); |
+ |
+DEFINE_RAW_LEAF_RUNTIME_ENTRY( |
+ LibcAtan, |
+ 1, |
+ true /* is_float */, |
+ reinterpret_cast<RuntimeFunction>(static_cast<UnaryMathCFunction>(&atan))); |
+ |
} // namespace dart |