mirror of
https://github.com/fluencelabs/wasmer
synced 2025-05-12 10:37:11 +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