From 80e8a753cab2a21c00e50935641bba8ac8bd210f Mon Sep 17 00:00:00 2001 From: Dan Harris Date: Sat, 5 Mar 2022 09:19:39 -0500 Subject: [PATCH 1/2] Fix JIT configs for aarch64 --- datafusion-jit/src/jit.rs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/datafusion-jit/src/jit.rs b/datafusion-jit/src/jit.rs index 225366b4be7a..e4450ada9811 100644 --- a/datafusion-jit/src/jit.rs +++ b/datafusion-jit/src/jit.rs @@ -42,6 +42,7 @@ pub struct JIT { } impl Default for JIT { + #[cfg(target_arch = "x86_64")] fn default() -> Self { let builder = JITBuilder::new(cranelift_module::default_libcall_names()); let module = JITModule::new(builder); @@ -51,6 +52,28 @@ impl Default for JIT { module, } } + + #[cfg(target_arch = "aarch64")] + fn default() -> Self { + let mut flag_builder = settings::builder(); + // On at least AArch64, "colocated" calls use shorter-range relocations, + // which might not reach all definitions; we can't handle that here, so + // we require long-range relocation types. + flag_builder.set("use_colocated_libcalls", "false").unwrap(); + flag_builder.set("is_pic", "false").unwrap(); + let isa_builder = cranelift_native::builder().unwrap_or_else(|msg| { + panic!("host machine is not supported: {}", msg); + }); + let isa = isa_builder.finish(settings::Flags::new(flag_builder)); + let builder = + JITBuilder::with_isa(isa, cranelift_module::default_libcall_names()); + let module = JITModule::new(builder); + Self { + builder_context: FunctionBuilderContext::new(), + ctx: module.make_context(), + module, + } + } } impl JIT { @@ -62,7 +85,13 @@ impl JIT { { let mut flag_builder = settings::builder(); flag_builder.set("use_colocated_libcalls", "false").unwrap(); + + #[cfg(target_arch = "x86_64")] flag_builder.set("is_pic", "true").unwrap(); + + #[cfg(target_arch = "aarch64")] + flag_builder.set("is_pic", "false").unwrap(); + flag_builder.set("opt_level", "speed").unwrap(); flag_builder.set("enable_simd", "true").unwrap(); let isa_builder = cranelift_native::builder().unwrap_or_else(|msg| { From 372890369c0d25e73166bf8245cdb4d33594f430 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 5 Mar 2022 14:21:59 +0000 Subject: [PATCH 2/2] Update pyo3 requirement from 0.15 to 0.16 Updates the requirements on [pyo3](https://github.com/pyo3/pyo3) to permit the latest version. - [Release notes](https://github.com/pyo3/pyo3/releases) - [Changelog](https://github.com/PyO3/pyo3/blob/main/CHANGELOG.md) - [Commits](https://github.com/pyo3/pyo3/compare/v0.15.0...v0.15.1) --- updated-dependencies: - dependency-name: pyo3 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- datafusion-common/Cargo.toml | 2 +- datafusion/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/datafusion-common/Cargo.toml b/datafusion-common/Cargo.toml index ff4edccbd880..19768cc0f642 100644 --- a/datafusion-common/Cargo.toml +++ b/datafusion-common/Cargo.toml @@ -41,7 +41,7 @@ jit = ["cranelift-module"] arrow = { version = "9.1", features = ["prettyprint"] } parquet = { version = "9.1", features = ["arrow"], optional = true } avro-rs = { version = "0.13", features = ["snappy"], optional = true } -pyo3 = { version = "0.15", optional = true } +pyo3 = { version = "0.16", optional = true } sqlparser = "0.14" ordered-float = "2.10" cranelift-module = { version = "0.81.1", optional = true } diff --git a/datafusion/Cargo.toml b/datafusion/Cargo.toml index 2628c82db0bb..6547db6b33c0 100644 --- a/datafusion/Cargo.toml +++ b/datafusion/Cargo.toml @@ -78,7 +78,7 @@ smallvec = { version = "1.6", features = ["union"] } rand = "0.8" avro-rs = { version = "0.13", features = ["snappy"], optional = true } num-traits = { version = "0.2", optional = true } -pyo3 = { version = "0.15", optional = true } +pyo3 = { version = "0.16", optional = true } tempfile = "3" parking_lot = "0.12"