Index: runtime/vm/runtime_entry_mips.cc |
=================================================================== |
--- runtime/vm/runtime_entry_mips.cc (revision 24063) |
+++ runtime/vm/runtime_entry_mips.cc (working copy) |
@@ -28,11 +28,17 @@ |
uword entry = GetEntryPoint(); |
#if defined(USING_SIMULATOR) |
// Redirection to leaf runtime calls supports a maximum of 4 arguments passed |
- // in registers. |
- ASSERT(!is_leaf() || (argument_count() <= 4)); |
+ // in registers (maximum 2 double arguments for leaf float runtime calls). |
+ ASSERT(argument_count() >= 0); |
+ ASSERT(!is_leaf() || |
+ (!is_float() && (argument_count() <= 4)) || |
+ (argument_count() <= 2)); |
Simulator::CallKind call_kind = |
- is_leaf() ? Simulator::kLeafRuntimeCall : Simulator::kRuntimeCall; |
- entry = Simulator::RedirectExternalReference(entry, call_kind); |
+ is_leaf() ? (is_float() ? Simulator::kLeafFloatRuntimeCall |
+ : Simulator::kLeafRuntimeCall) |
+ : Simulator::kRuntimeCall; |
+ entry = |
+ Simulator::RedirectExternalReference(entry, call_kind, argument_count()); |
#endif |
if (is_leaf()) { |
ExternalLabel label(name(), entry); |