mirror of
https://github.com/fluencelabs/wasmer
synced 2024-12-13 06:15:33 +00:00
Refactored libcalls
This commit is contained in:
parent
2c2d21044f
commit
a2bcdb658f
@ -26,7 +26,7 @@ use std::{fmt, mem, slice};
|
|||||||
use super::super::common::slice::{BoundedSlice, UncheckedSlice};
|
use super::super::common::slice::{BoundedSlice, UncheckedSlice};
|
||||||
use super::errors::ErrorKind;
|
use super::errors::ErrorKind;
|
||||||
use super::import_object::{ImportObject, ImportValue};
|
use super::import_object::{ImportObject, ImportValue};
|
||||||
use super::math_intrinsics;
|
use super::libcalls;
|
||||||
use super::memory::LinearMemory;
|
use super::memory::LinearMemory;
|
||||||
use super::module::{Export, ImportableExportable, Module};
|
use super::module::{Export, ImportableExportable, Module};
|
||||||
use super::relocation::{Reloc, RelocSink, RelocationType};
|
use super::relocation::{Reloc, RelocSink, RelocationType};
|
||||||
@ -311,35 +311,21 @@ impl Instance {
|
|||||||
RelocationType::GrowMemory => {
|
RelocationType::GrowMemory => {
|
||||||
grow_memory as isize
|
grow_memory as isize
|
||||||
},
|
},
|
||||||
RelocationType::LibCall(LibCall::CeilF32) => {
|
RelocationType::LibCall(libcall) => {
|
||||||
math_intrinsics::ceilf32 as isize
|
match libcall {
|
||||||
},
|
LibCall::CeilF32 => libcalls::ceilf32 as isize,
|
||||||
RelocationType::LibCall(LibCall::FloorF32) => {
|
LibCall::FloorF32 => libcalls::floorf32 as isize,
|
||||||
math_intrinsics::floorf32 as isize
|
LibCall::TruncF32 => libcalls::truncf32 as isize,
|
||||||
},
|
LibCall::NearestF32 => libcalls::nearbyintf32 as isize,
|
||||||
RelocationType::LibCall(LibCall::TruncF32) => {
|
LibCall::CeilF64 => libcalls::ceilf64 as isize,
|
||||||
math_intrinsics::truncf32 as isize
|
LibCall::FloorF64 => libcalls::floorf64 as isize,
|
||||||
},
|
LibCall::TruncF64 => libcalls::truncf64 as isize,
|
||||||
RelocationType::LibCall(LibCall::NearestF32) => {
|
LibCall::NearestF64 => libcalls::nearbyintf64 as isize,
|
||||||
math_intrinsics::nearbyintf32 as isize
|
LibCall::Probestack => libcalls::__rust_probestack as isize,
|
||||||
},
|
_ => {
|
||||||
RelocationType::LibCall(LibCall::CeilF64) => {
|
panic!("Unexpected libcall {}", libcall);
|
||||||
math_intrinsics::ceilf64 as isize
|
}
|
||||||
},
|
}
|
||||||
RelocationType::LibCall(LibCall::FloorF64) => {
|
|
||||||
math_intrinsics::floorf64 as isize
|
|
||||||
},
|
|
||||||
RelocationType::LibCall(LibCall::TruncF64) => {
|
|
||||||
math_intrinsics::truncf64 as isize
|
|
||||||
},
|
|
||||||
RelocationType::LibCall(LibCall::NearestF64) => {
|
|
||||||
math_intrinsics::nearbyintf64 as isize
|
|
||||||
},
|
|
||||||
RelocationType::LibCall(LibCall::Probestack) => {
|
|
||||||
__rust_probestack as isize
|
|
||||||
},
|
|
||||||
RelocationType::LibCall(call) => {
|
|
||||||
panic!("Unexpected libcall {}", call);
|
|
||||||
},
|
},
|
||||||
RelocationType::Intrinsic(ref name) => {
|
RelocationType::Intrinsic(ref name) => {
|
||||||
panic!("Unexpected intrinsic {}", name);
|
panic!("Unexpected intrinsic {}", name);
|
||||||
@ -690,9 +676,3 @@ extern "C" fn current_memory(memory_index: u32, instance: &mut Instance) -> u32
|
|||||||
let memory = &instance.memories[memory_index as usize];
|
let memory = &instance.memories[memory_index as usize];
|
||||||
memory.current_pages() as u32
|
memory.current_pages() as u32
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A declaration for the stack probe function in Rust's standard library, for
|
|
||||||
/// catching callstack overflow.
|
|
||||||
extern "C" {
|
|
||||||
pub fn __rust_probestack();
|
|
||||||
}
|
|
||||||
|
@ -39,3 +39,10 @@ pub extern "C" fn truncf64(x: f64) -> f64 {
|
|||||||
pub extern "C" fn nearbyintf64(x: f64) -> f64 {
|
pub extern "C" fn nearbyintf64(x: f64) -> f64 {
|
||||||
x.round()
|
x.round()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// A declaration for the stack probe function in Rust's standard library, for
|
||||||
|
/// catching callstack overflow.
|
||||||
|
extern "C" {
|
||||||
|
pub fn __rust_probestack();
|
||||||
|
}
|
@ -1,7 +1,7 @@
|
|||||||
pub mod errors;
|
pub mod errors;
|
||||||
pub mod import_object;
|
pub mod import_object;
|
||||||
pub mod instance;
|
pub mod instance;
|
||||||
pub mod math_intrinsics;
|
pub mod libcalls;
|
||||||
pub mod memory;
|
pub mod memory;
|
||||||
pub mod module;
|
pub mod module;
|
||||||
pub mod relocation;
|
pub mod relocation;
|
||||||
|
Loading…
Reference in New Issue
Block a user