Index: runtime/vm/runtime_entry_x64.cc |
=================================================================== |
--- runtime/vm/runtime_entry_x64.cc (revision 26825) |
+++ runtime/vm/runtime_entry_x64.cc (working copy) |
@@ -20,14 +20,17 @@ |
// RSP : points to the arguments and return value array. |
// RBX : address of the runtime function to call. |
// R10 : number of arguments to the call. |
-void RuntimeEntry::Call(Assembler* assembler) const { |
- if (!is_leaf()) { |
+void RuntimeEntry::Call(Assembler* assembler, intptr_t argument_count) const { |
+ if (is_leaf()) { |
+ ASSERT(argument_count == this->argument_count()); |
+ ExternalLabel label(name(), GetEntryPoint()); |
+ __ call(&label); |
+ } else { |
+ // Argument count is not checked here, but in the runtime entry for a more |
+ // informative error message. |
__ movq(RBX, Immediate(GetEntryPoint())); |
- __ movq(R10, Immediate(argument_count())); |
+ __ movq(R10, Immediate(argument_count)); |
__ call(&StubCode::CallToRuntimeLabel()); |
- } else { |
- ExternalLabel label(name(), GetEntryPoint()); |
- __ call(&label); |
} |
} |