mirror of
https://github.com/fluencelabs/wasmer
synced 2025-03-16 08:10:49 +00:00
Start work on generating trampolines
This commit is contained in:
parent
6a20676fa9
commit
51c9091fc5
38
lib/llvm-backend/src/trampolines.rs
Normal file
38
lib/llvm-backend/src/trampolines.rs
Normal file
@ -0,0 +1,38 @@
|
||||
use inkwell::{
|
||||
builder::Builder,
|
||||
context::Context,
|
||||
module::{Linkage, Module},
|
||||
passes::PassManager,
|
||||
types::{BasicType, BasicTypeEnum, FunctionType, PointerType},
|
||||
values::{BasicValue, FunctionValue, PhiValue, PointerValue},
|
||||
AddressSpace, FloatPredicate, IntPredicate,
|
||||
};
|
||||
use wasmer_runtime_core::{
|
||||
module::ModuleInfo,
|
||||
types::{SigIndex, FuncSig},
|
||||
structures::{TypedIndex, SliceMap},
|
||||
};
|
||||
use crate::intrinsics::Intrinsics;
|
||||
|
||||
pub fn generate_trampolines(info: &ModuleInfo, signatures: &SliceMap<SigIndex, FunctionType>, module: &Module, builder: &Builder, intrinsics: &Intrinsics) -> Result<(), String> {
|
||||
let trampoline_sig = intrinsics.void_ty.fn_type(&[
|
||||
intrinsics.ctx_ptr_ty, // vmctx ptr
|
||||
intrinsics.i64_ptr_ty, // func ptr
|
||||
intrinsics.i64_ptr_ty,
|
||||
intrinsics.i64_ptr_ty,
|
||||
], false);
|
||||
|
||||
for (sig_index, sig) in info.signatures.iter() {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
pub fn generate_trampoline(sig_index: usize, trampoline_sig: FunctionType, sig: &FuncSig, builder: &Builder, intrinsics: &Intrinsics) {
|
||||
let function = module.add_function(
|
||||
&format!("tramp{}", sig_index.index()),
|
||||
signatures[sig_index],
|
||||
Some(Linkage::External),
|
||||
);
|
||||
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user