From 61da4398ba69fd8ea0971263a5a9559a0dbd58d5 Mon Sep 17 00:00:00 2001 From: Zeke Medley Date: Tue, 11 May 2021 20:48:43 -0700 Subject: [PATCH] Upgrade cranelift to version 0.69 --- lustc/Cargo.lock | 81 +++++++++++++++++++++-------------------- lustc/Cargo.toml | 8 ++-- lustc/src/compiler.rs | 12 +++--- lustc/src/lib.rs | 15 -------- lustc/src/primitives.rs | 2 +- 5 files changed, 53 insertions(+), 65 deletions(-) diff --git a/lustc/Cargo.lock b/lustc/Cargo.lock index b93e60f..9d923f3 100644 --- a/lustc/Cargo.lock +++ b/lustc/Cargo.lock @@ -1,5 +1,7 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. +version = 3 + [[package]] name = "ansi_term" version = "0.9.0" @@ -87,9 +89,9 @@ dependencies = [ [[package]] name = "cranelift" -version = "0.68.0" +version = "0.69.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60686f89c5145bc9a961dabbb83954baa429bde4c5977a0a5d3f8552f2990273" +checksum = "910322bd748b9b2450947659a48a928f35b8ba7212d80d719ff85e4b7cde62b7" dependencies = [ "cranelift-codegen", "cranelift-frontend", @@ -97,18 +99,18 @@ dependencies = [ [[package]] name = "cranelift-bforest" -version = "0.68.0" +version = "0.69.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9221545c0507dc08a62b2d8b5ffe8e17ac580b0a74d1813b496b8d70b070fbd0" +checksum = "4066fd63b502d73eb8c5fa6bcab9c7962b05cd580f6b149ee83a8e730d8ce7fb" dependencies = [ "cranelift-entity", ] [[package]] name = "cranelift-codegen" -version = "0.68.0" +version = "0.69.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e9936ea608b6cd176f107037f6adbb4deac933466fc7231154f96598b2d3ab1" +checksum = "1a54e4beb833a3c873a18a8fe735d73d732044004c7539a072c8faa35ccb0c60" dependencies = [ "byteorder", "cranelift-bforest", @@ -125,9 +127,9 @@ dependencies = [ [[package]] name = "cranelift-codegen-meta" -version = "0.68.0" +version = "0.69.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ef2b2768568306540f4c8db3acce9105534d34c4a1e440529c1e702d7f8c8d7" +checksum = "c54cac7cacb443658d8f0ff36a3545822613fa202c946c0891897843bc933810" dependencies = [ "cranelift-codegen-shared", "cranelift-entity", @@ -135,21 +137,21 @@ dependencies = [ [[package]] name = "cranelift-codegen-shared" -version = "0.68.0" +version = "0.69.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6759012d6d19c4caec95793f052613e9d4113e925e7f14154defbac0f1d4c938" +checksum = "a109760aff76788b2cdaeefad6875a73c2b450be13906524f6c2a81e05b8d83c" [[package]] name = "cranelift-entity" -version = "0.68.0" +version = "0.69.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86badbce14e15f52a45b666b38abe47b204969dd7f8fb7488cb55dd46b361fa6" +checksum = "3b044234aa32531f89a08b487630ddc6744696ec04c8123a1ad388de837f5de3" [[package]] name = "cranelift-frontend" -version = "0.68.0" +version = "0.69.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b608bb7656c554d0a4cf8f50c7a10b857e80306f6ff829ad6d468a7e2323c8d8" +checksum = "5452b3e4e97538ee5ef2cc071301c69a86c7adf2770916b9d04e9727096abd93" dependencies = [ "cranelift-codegen", "log", @@ -158,45 +160,46 @@ dependencies = [ ] [[package]] -name = "cranelift-module" -version = "0.68.0" +name = "cranelift-jit" +version = "0.69.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdaf0b5c93a610ff988fe5e2adbb7f6afa89cf702ca41acc3479dc35638d3a8d" +checksum = "3ffd9b060436974c7e777630ad459f3609ff1b868f43419ad63297be6bbf61ad" dependencies = [ "anyhow", "cranelift-codegen", "cranelift-entity", + "cranelift-module", + "cranelift-native", + "errno", + "libc", "log", - "thiserror", + "region", + "target-lexicon", + "winapi", ] [[package]] -name = "cranelift-native" -version = "0.68.0" +name = "cranelift-module" +version = "0.69.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5246a1af14b7812ee4d94a3f0c4b295ec02c370c08b0ecc3dec512890fdad175" +checksum = "b17bc01cb9f176156d5cbd47ece19292e04e05a91a837dcf0ef69cc1e0e97a5a" dependencies = [ + "anyhow", "cranelift-codegen", - "raw-cpuid", - "target-lexicon", + "cranelift-entity", + "log", + "thiserror", ] [[package]] -name = "cranelift-simplejit" -version = "0.68.0" +name = "cranelift-native" +version = "0.69.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2522ebdff6ba637c0b5e75bc3d40cc990ac1128e13547b740f10fc7b16d3991" +checksum = "f68035c10b2e80f26cc29c32fa824380877f38483504c2a47b54e7da311caaf3" dependencies = [ "cranelift-codegen", - "cranelift-entity", - "cranelift-module", - "cranelift-native", - "errno", - "libc", - "log", - "region", + "raw-cpuid", "target-lexicon", - "winapi", ] [[package]] @@ -228,9 +231,9 @@ checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" [[package]] name = "gimli" -version = "0.22.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaf91faf136cb47367fa430cd46e37a788775e7fa104f8b4bcb3861dc389b724" +checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" dependencies = [ "indexmap", ] @@ -289,8 +292,8 @@ dependencies = [ "colored", "cranelift", "cranelift-codegen", + "cranelift-jit", "cranelift-module", - "cranelift-simplejit", ] [[package]] @@ -322,9 +325,9 @@ dependencies = [ [[package]] name = "raw-cpuid" -version = "7.0.3" +version = "8.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4a349ca83373cfa5d6dbb66fd76e58b2cca08da71a5f6400de0a0a6a9bceeaf" +checksum = "1fdf7d9dbd43f3d81d94a49c1c3df73cc2b3827995147e6cf7f89d4ec5483e73" dependencies = [ "bitflags 1.2.1", "cc", diff --git a/lustc/Cargo.toml b/lustc/Cargo.toml index c6a516c..cd7bffa 100644 --- a/lustc/Cargo.toml +++ b/lustc/Cargo.toml @@ -8,8 +8,8 @@ edition = "2018" [dependencies] colored = "2" -cranelift = "0.68.0" -cranelift-module = "0.68.0" -cranelift-simplejit = "0.68.0" -cranelift-codegen = "0.68.0" +cranelift = "0.69.0" +cranelift-module = "0.69.0" +cranelift-jit = "0.69.0" +cranelift-codegen = "0.69.0" clap = "~2.27.0" diff --git a/lustc/src/compiler.rs b/lustc/src/compiler.rs index 8afb80b..d448dfd 100644 --- a/lustc/src/compiler.rs +++ b/lustc/src/compiler.rs @@ -24,9 +24,9 @@ use crate::renamer; use crate::Expr; use cranelift::frontend::FunctionBuilder; use cranelift::prelude::*; +use cranelift_jit::{JITBuilder, JITModule}; use cranelift_module::DataContext; use cranelift_module::{Linkage, Module}; -use cranelift_simplejit::{SimpleJITBuilder, SimpleJITModule}; use primitives::define_contiguous_to_list; use primitives::string_is_primitive; use procedures::emit_procedure; @@ -44,7 +44,7 @@ pub struct JIT { pub context: codegen::Context, /// Used to emit code directly into memory for execution. - pub module: SimpleJITModule, + pub module: JITModule, // Stores information about data objects that the JIT owns. pub data_ctx: DataContext, @@ -53,7 +53,7 @@ pub struct JIT { /// Manages the state needed for compilation of a function by lustc. pub(crate) struct Context<'a> { pub builder: FunctionBuilder<'a>, - pub module: &'a mut SimpleJITModule, + pub module: &'a mut JITModule, pub word: types::Type, pub env: HashMap, pub fnmap: HashMap, @@ -65,8 +65,8 @@ pub(crate) struct Context<'a> { impl Default for JIT { fn default() -> Self { - let builder = SimpleJITBuilder::new(cranelift_module::default_libcall_names()); - let module = SimpleJITModule::new(builder); + let builder = JITBuilder::new(cranelift_module::default_libcall_names()); + let module = JITModule::new(builder); let mut jit = Self { builder_context: FunctionBuilderContext::new(), context: module.make_context(), @@ -83,7 +83,7 @@ impl Default for JIT { impl<'a> Context<'a> { pub fn new( builder: FunctionBuilder<'a>, - module: &'a mut SimpleJITModule, + module: &'a mut JITModule, word: types::Type, env: HashMap, fnmap: HashMap, diff --git a/lustc/src/lib.rs b/lustc/src/lib.rs index c70f0c6..1069e4f 100644 --- a/lustc/src/lib.rs +++ b/lustc/src/lib.rs @@ -75,21 +75,6 @@ pub(crate) enum PreorderStatus { impl Expr { /// Performs a postorder traversal of the expr calling F on each /// item it encounters. - pub(crate) fn postorder_traverse(&self, f: &mut F) - where - F: FnMut(&Expr), - { - match self { - Expr::List(v) => { - for e in v { - e.postorder_traverse(f); - } - f(self); - } - _ => f(self), - } - } - pub(crate) fn postorder_traverse_res(&self, f: &mut F) -> Result<(), E> where F: FnMut(&Expr) -> Result<(), E>, diff --git a/lustc/src/primitives.rs b/lustc/src/primitives.rs index 345b890..086df99 100644 --- a/lustc/src/primitives.rs +++ b/lustc/src/primitives.rs @@ -880,7 +880,7 @@ pub(crate) fn emit_contigous_to_list( Ok(res) } -// Defined the function contiguous-to-list which converts a contiguous +// Defines the function contiguous-to-list which converts a contiguous // vec of values into a list. pub(crate) fn define_contiguous_to_list(jit: &mut JIT) -> Result<(), String> { let word = jit.module.target_config().pointer_type();