Index: runtime/vm/dart_entry.cc |
diff --git a/runtime/vm/dart_entry.cc b/runtime/vm/dart_entry.cc |
index 82055bb7b89f2531f6e63add2ff149d3fee6b3e5..1053404fda494ed42346e4db8766c5160386d7e6 100644 |
--- a/runtime/vm/dart_entry.cc |
+++ b/runtime/vm/dart_entry.cc |
@@ -100,17 +100,27 @@ RawObject* DartEntry::InvokeFunction(const Function& function, |
ScopedIsolateStackLimits stack_limit(isolate); |
SuspendLongJumpScope suspend_long_jump_scope(thread); |
#if defined(USING_SIMULATOR) |
- return bit_copy<RawObject*, int64_t>(Simulator::Current()->Call( |
- reinterpret_cast<intptr_t>(entrypoint), |
- reinterpret_cast<intptr_t>(&code), |
- reinterpret_cast<intptr_t>(&arguments_descriptor), |
- reinterpret_cast<intptr_t>(&arguments), |
- reinterpret_cast<intptr_t>(thread))); |
+#if defined(ARCH_IS_64_BIT) |
+ // TODO(zra): Change to intptr_t so we have only one case. |
+ return bit_copy<RawObject*, int64_t>(Simulator::Current()->Call( |
+ reinterpret_cast<int64_t>(entrypoint), |
+ static_cast<int64_t>(code.EntryPoint()), |
+ reinterpret_cast<int64_t>(&arguments_descriptor), |
+ reinterpret_cast<int64_t>(&arguments), |
+ reinterpret_cast<int64_t>(thread))); |
#else |
- return entrypoint(code, |
- arguments_descriptor, |
- arguments, |
- thread); |
+ return bit_copy<RawObject*, int64_t>(Simulator::Current()->Call( |
+ reinterpret_cast<int32_t>(entrypoint), |
+ static_cast<int32_t>(code.EntryPoint()), |
+ reinterpret_cast<int32_t>(&arguments_descriptor), |
+ reinterpret_cast<int32_t>(&arguments), |
+ reinterpret_cast<int32_t>(thread))); |
+#endif |
+#else |
+ return entrypoint(code.EntryPoint(), |
+ arguments_descriptor, |
+ arguments, |
+ thread); |
#endif |
} |