mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-30 15:21:12 +00:00
Have Env store TargetData instead of pointer_bytes
This commit is contained in:
parent
ee4227ba52
commit
eed9fb0e69
2 changed files with 6 additions and 8 deletions
|
@ -3,6 +3,7 @@ use bumpalo::Bump;
|
||||||
use inkwell::builder::Builder;
|
use inkwell::builder::Builder;
|
||||||
use inkwell::context::Context;
|
use inkwell::context::Context;
|
||||||
use inkwell::module::{Linkage, Module};
|
use inkwell::module::{Linkage, Module};
|
||||||
|
use inkwell::targets::TargetData;
|
||||||
use inkwell::types::BasicTypeEnum;
|
use inkwell::types::BasicTypeEnum;
|
||||||
use inkwell::values::BasicValueEnum::{self, *};
|
use inkwell::values::BasicValueEnum::{self, *};
|
||||||
use inkwell::values::{FunctionValue, IntValue, PointerValue};
|
use inkwell::values::{FunctionValue, IntValue, PointerValue};
|
||||||
|
@ -32,7 +33,7 @@ pub struct Env<'a, 'ctx, 'env> {
|
||||||
pub builder: &'env Builder<'ctx>,
|
pub builder: &'env Builder<'ctx>,
|
||||||
pub module: &'ctx Module<'ctx>,
|
pub module: &'ctx Module<'ctx>,
|
||||||
pub interns: Interns,
|
pub interns: Interns,
|
||||||
pub pointer_bytes: u32,
|
pub target_data: &'env TargetData,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn build_expr<'a, 'ctx, 'env>(
|
pub fn build_expr<'a, 'ctx, 'env>(
|
||||||
|
@ -230,7 +231,8 @@ pub fn build_expr<'a, 'ctx, 'env>(
|
||||||
BasicValueEnum::StructValue(struct_val.into_struct_value())
|
BasicValueEnum::StructValue(struct_val.into_struct_value())
|
||||||
} else {
|
} else {
|
||||||
let len_u64 = elems.len() as u64;
|
let len_u64 = elems.len() as u64;
|
||||||
let elem_bytes = elem_layout.stack_size(env.pointer_bytes) as u64;
|
let pointer_bytes = env.target_data.get_pointer_byte_size(None);
|
||||||
|
let elem_bytes = elem_layout.stack_size(pointer_bytes) as u64;
|
||||||
|
|
||||||
let ptr = {
|
let ptr = {
|
||||||
let bytes_len = elem_bytes * len_u64;
|
let bytes_len = elem_bytes * len_u64;
|
||||||
|
|
|
@ -210,8 +210,6 @@ mod test_gen {
|
||||||
.create_jit_execution_engine(OptimizationLevel::None)
|
.create_jit_execution_engine(OptimizationLevel::None)
|
||||||
.expect("Error creating JIT execution engine for test");
|
.expect("Error creating JIT execution engine for test");
|
||||||
|
|
||||||
let pointer_bytes = execution_engine.get_target_data().get_pointer_byte_size(None);
|
|
||||||
|
|
||||||
// Compile and add all the Procs before adding main
|
// Compile and add all the Procs before adding main
|
||||||
let mut env = roc_gen::llvm::build::Env {
|
let mut env = roc_gen::llvm::build::Env {
|
||||||
arena: &arena,
|
arena: &arena,
|
||||||
|
@ -219,7 +217,7 @@ mod test_gen {
|
||||||
context: &context,
|
context: &context,
|
||||||
interns,
|
interns,
|
||||||
module: arena.alloc(module),
|
module: arena.alloc(module),
|
||||||
pointer_bytes
|
target_data: execution_engine.get_target_data()
|
||||||
};
|
};
|
||||||
let mut procs = Procs::default();
|
let mut procs = Procs::default();
|
||||||
let mut ident_ids = env.interns.all_ident_ids.remove(&home).unwrap();
|
let mut ident_ids = env.interns.all_ident_ids.remove(&home).unwrap();
|
||||||
|
@ -347,8 +345,6 @@ mod test_gen {
|
||||||
.create_jit_execution_engine(OptimizationLevel::None)
|
.create_jit_execution_engine(OptimizationLevel::None)
|
||||||
.expect("Error creating JIT execution engine for test");
|
.expect("Error creating JIT execution engine for test");
|
||||||
|
|
||||||
let pointer_bytes = execution_engine.get_target_data().get_pointer_byte_size(None);
|
|
||||||
|
|
||||||
// Compile and add all the Procs before adding main
|
// Compile and add all the Procs before adding main
|
||||||
let mut env = roc_gen::llvm::build::Env {
|
let mut env = roc_gen::llvm::build::Env {
|
||||||
arena: &arena,
|
arena: &arena,
|
||||||
|
@ -356,7 +352,7 @@ mod test_gen {
|
||||||
context: &context,
|
context: &context,
|
||||||
interns,
|
interns,
|
||||||
module: arena.alloc(module),
|
module: arena.alloc(module),
|
||||||
pointer_bytes
|
target_data: execution_engine.get_target_data()
|
||||||
};
|
};
|
||||||
let mut procs = Procs::default();
|
let mut procs = Procs::default();
|
||||||
let mut ident_ids = env.interns.all_ident_ids.remove(&home).unwrap();
|
let mut ident_ids = env.interns.all_ident_ids.remove(&home).unwrap();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue