From c29c9bc0cdff03a2973f2d86033f64bd78d4f567 Mon Sep 17 00:00:00 2001 From: Dan Field Date: Thu, 15 Aug 2019 20:28:08 -0700 Subject: [PATCH] Make JIT work on iPhone armv7 (#11038) --- runtime/dart_vm.cc | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/runtime/dart_vm.cc b/runtime/dart_vm.cc index 7606bedeae8..72d78c74e80 100644 --- a/runtime/dart_vm.cc +++ b/runtime/dart_vm.cc @@ -74,6 +74,11 @@ static const char* kDartWriteProtectCodeArgs[] = { "--no_write_protect_code", }; +FML_ALLOW_UNUSED_TYPE +static const char* kDartDisableIntegerDivisionArgs[] = { + "--no_use_integer_division", +}; + static const char* kDartAssertArgs[] = { // clang-format off "--enable_asserts", @@ -324,8 +329,16 @@ DartVM::DartVM(std::shared_ptr vm_data, fml::size(kDartWriteProtectCodeArgs)); #else EnsureDebuggedIOS(settings_); -#endif -#endif +#if TARGET_CPU_ARM + // Tell Dart in JIT mode to not use integer division on armv7 + // Ideally, this would be detected at runtime by Dart. + // TODO(dnfield): Remove this code + // https://github.com/dart-lang/sdk/issues/24743 + PushBackAll(&args, kDartDisableIntegerDivisionArgs, + fml::size(kDartDisableIntegerDivisionArgs)); +#endif // TARGET_CPU_ARM +#endif // !OS_IOS || TARGET_OS_SIMULATOR +#endif // (FLUTTER_RUNTIME_MODE == FLUTTER_RUNTIME_MODE_DEBUG) if (enable_asserts) { PushBackAll(&args, kDartAssertArgs, fml::size(kDartAssertArgs));