mirror of
https://github.com/fluencelabs/wasmer
synced 2025-06-25 06:31:32 +00:00
Keep WashHash::generate function the same
This commit is contained in:
@ -51,6 +51,12 @@ impl Backend {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Default for Backend {
|
||||||
|
fn default() -> Self {
|
||||||
|
Backend::Cranelift
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl std::str::FromStr for Backend {
|
impl std::str::FromStr for Backend {
|
||||||
type Err = String;
|
type Err = String;
|
||||||
fn from_str(s: &str) -> Result<Backend, String> {
|
fn from_str(s: &str) -> Result<Backend, String> {
|
||||||
|
@ -37,12 +37,25 @@ impl From<io::Error> for Error {
|
|||||||
pub struct WasmHash([u8; 32], [u8; 32]);
|
pub struct WasmHash([u8; 32], [u8; 32]);
|
||||||
|
|
||||||
impl WasmHash {
|
impl WasmHash {
|
||||||
/// Hash a wasm module.
|
/// Hash a wasm module for the default compiler backend.
|
||||||
|
///
|
||||||
|
/// See also: `WasmHash::generate_for_backend`.
|
||||||
///
|
///
|
||||||
/// # Note:
|
/// # Note:
|
||||||
/// This does no verification that the supplied data
|
/// This does no verification that the supplied data
|
||||||
/// is, in fact, a wasm module.
|
/// is, in fact, a wasm module.
|
||||||
pub fn generate(wasm: &[u8], backend: Backend) -> Self {
|
pub fn generate(wasm: &[u8]) -> Self {
|
||||||
|
WasmHash::generate_for_backend(wasm, Backend::default())
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Hash a wasm module for a specific compiler backend.
|
||||||
|
/// This allows multiple cache entries containing the same compiled
|
||||||
|
/// module with different compiler backends.
|
||||||
|
///
|
||||||
|
/// # Note:
|
||||||
|
/// This function also does no verification that the supplied data
|
||||||
|
/// is a wasm module
|
||||||
|
pub fn generate_for_backend(wasm: &[u8], backend: Backend) -> Self {
|
||||||
let mut first_part = [0u8; 32];
|
let mut first_part = [0u8; 32];
|
||||||
let mut second_part = [0u8; 32];
|
let mut second_part = [0u8; 32];
|
||||||
|
|
||||||
|
@ -6,7 +6,6 @@ use wasmer_runtime::{
|
|||||||
cache::{Cache, FileSystemCache, WasmHash},
|
cache::{Cache, FileSystemCache, WasmHash},
|
||||||
compile, validate,
|
compile, validate,
|
||||||
};
|
};
|
||||||
use wasmer_runtime_core::backend::Backend;
|
|
||||||
|
|
||||||
static NGINX_WASM: &'static [u8] = include_bytes!("../../../examples/nginx/nginx.wasm");
|
static NGINX_WASM: &'static [u8] = include_bytes!("../../../examples/nginx/nginx.wasm");
|
||||||
|
|
||||||
@ -19,9 +18,7 @@ fn load_module(hash: WasmHash, cache: &impl Cache) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn hashing_benchmark(c: &mut Criterion) {
|
fn hashing_benchmark(c: &mut Criterion) {
|
||||||
c.bench_function("nginx HASH", |b| {
|
c.bench_function("nginx HASH", |b| b.iter(|| WasmHash::generate(NGINX_WASM)));
|
||||||
b.iter(|| WasmHash::generate(NGINX_WASM, Backend::Cranelift))
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn validate_benchmark(c: &mut Criterion) {
|
fn validate_benchmark(c: &mut Criterion) {
|
||||||
@ -39,7 +36,7 @@ fn load_benchmark(c: &mut Criterion) {
|
|||||||
FileSystemCache::new(tempdir.path()).expect("unable to create file system cache")
|
FileSystemCache::new(tempdir.path()).expect("unable to create file system cache")
|
||||||
};
|
};
|
||||||
let module = compile(NGINX_WASM).unwrap();
|
let module = compile(NGINX_WASM).unwrap();
|
||||||
let wasm_hash = WasmHash::generate(NGINX_WASM, Backend::Cranelift);
|
let wasm_hash = WasmHash::generate(NGINX_WASM);
|
||||||
cache
|
cache
|
||||||
.store(wasm_hash, module)
|
.store(wasm_hash, module)
|
||||||
.expect("unable to store into cache");
|
.expect("unable to store into cache");
|
||||||
|
@ -352,7 +352,7 @@ fn execute_wasm(options: &Run) -> Result<(), String> {
|
|||||||
|
|
||||||
// We generate a hash for the given binary, so we can use it as key
|
// We generate a hash for the given binary, so we can use it as key
|
||||||
// for the Filesystem cache
|
// for the Filesystem cache
|
||||||
let hash = WasmHash::generate(&wasm_binary, options.backend);
|
let hash = WasmHash::generate_for_backend(&wasm_binary, options.backend);
|
||||||
|
|
||||||
let wasmer_cache_dir = get_cache_dir();
|
let wasmer_cache_dir = get_cache_dir();
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user