Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
xsmith
WebAssembly Sandbox
Commits
eac68b21
Commit
eac68b21
authored
Dec 07, 2021
by
Guy Watson
Browse files
Add support for wasmtime
parent
1851bbcc
Changes
3
Hide whitespace changes
Inline
Side-by-side
wasmer/load-wasmer/Cargo.toml
View file @
eac68b21
...
@@ -17,19 +17,19 @@ lazy_static = "1.4.0"
...
@@ -17,19 +17,19 @@ lazy_static = "1.4.0"
structopt
=
"0.3.21"
structopt
=
"0.3.21"
### Enable these for use on the testing machines (for fresh-built from source)
### Enable these for use on the testing machines (for fresh-built from source)
wasmer
=
{
path
=
"/local/work/wasmer/lib/api"
}
#
wasmer = { path = "/local/work/wasmer/lib/api" }
wasmer-compiler-singlepass
=
{
path
=
"/local/work/wasmer/lib/compiler-singlepass"
}
#
wasmer-compiler-singlepass = { path = "/local/work/wasmer/lib/compiler-singlepass" }
wasmer-compiler-cranelift
=
{
path
=
"/local/work/wasmer/lib/compiler-cranelift"
}
#
wasmer-compiler-cranelift = { path = "/local/work/wasmer/lib/compiler-cranelift" }
wasmer-compiler-llvm
=
{
path
=
"/local/work/wasmer/lib/compiler-llvm"
}
#
wasmer-compiler-llvm = { path = "/local/work/wasmer/lib/compiler-llvm" }
wasmer-engine-universal
=
{
path
=
"/local/work/wasmer/lib/engine-universal"
,
features
=
["compiler"]
}
#
wasmer-engine-universal = { path = "/local/work/wasmer/lib/engine-universal", features = ["compiler"] }
wasmer-engine-dylib
=
{
path
=
"/local/work/wasmer/lib/engine-dylib"
,
features
=
["compiler"]
}
#
wasmer-engine-dylib = { path = "/local/work/wasmer/lib/engine-dylib", features = ["compiler"] }
wasmer-engine-staticlib
=
{
path
=
"/local/work/wasmer/lib/engine-staticlib"
,
features
=
["compiler"]
}
#
wasmer-engine-staticlib = { path = "/local/work/wasmer/lib/engine-staticlib", features = ["compiler"] }
### Enable these for local development with an already set up rust environment
### Enable these for local development with an already set up rust environment
#
wasmer = { version = "2.0.0" }
wasmer
=
{
version
=
"2.0.0"
}
#
wasmer-compiler-singlepass = { version = "2.0.0" }
wasmer-compiler-singlepass
=
{
version
=
"2.0.0"
}
#
wasmer-compiler-cranelift = { version = "2.0.0" }
wasmer-compiler-cranelift
=
{
version
=
"2.0.0"
}
#
wasmer-compiler-llvm = { version = "2.0.0" }
wasmer-compiler-llvm
=
{
version
=
"2.0.0"
}
#
wasmer-engine-universal = { version = "2.0.0", features = ["compiler"] }
wasmer-engine-universal
=
{
version
=
"2.0.0"
,
features
=
["compiler"]
}
#
wasmer-engine-dylib = { version = "2.0.0", features = ["compiler"] }
wasmer-engine-dylib
=
{
version
=
"2.0.0"
,
features
=
["compiler"]
}
#
wasmer-engine-staticlib = { version = "2.0.0", features = ["compiler"] }
wasmer-engine-staticlib
=
{
version
=
"2.0.0"
,
features
=
["compiler"]
}
wasmtime/load-wasmtime/Cargo.toml
View file @
eac68b21
...
@@ -8,3 +8,5 @@ edition = "2021"
...
@@ -8,3 +8,5 @@ edition = "2021"
[dependencies]
[dependencies]
wasmtime
=
"0.31.0"
wasmtime
=
"0.31.0"
structopt
=
"0.3.25"
structopt
=
"0.3.25"
crc
=
"2.1.0"
anyhow
=
"1.0.51"
wasmtime/load-wasmtime/src/main.rs
View file @
eac68b21
use
std
::
convert
::
TryInto
;
use
std
::
fs
;
use
std
::
fs
;
use
structopt
::
StructOpt
;
use
structopt
::
StructOpt
;
use
crc
::{
Crc
,
CRC_32_ISO_HDLC
};
use
crc
::{
Crc
,
CRC_32_ISO_HDLC
};
...
@@ -141,7 +140,7 @@ fn main() -> anyhow::Result<()> {
...
@@ -141,7 +140,7 @@ fn main() -> anyhow::Result<()> {
// Env { digest: shared_digest.clone() }, // These clones clone the Arc, not the underlying data
// Env { digest: shared_digest.clone() }, // These clones clone the Arc, not the underlying data
// add_to_crc
// add_to_crc
// );
// );
let
add_to_crc_func
=
Func
::
wrap
(
&
store
,
|
mut
caller
:
Caller
<
'_
,
Env
>
,
val
:
u32
|
{
let
add_to_crc_func
=
Func
::
wrap
(
&
mut
store
,
|
caller
:
Caller
<
'_
,
Env
>
,
val
:
u32
|
{
add_to_crc
(
caller
.data
(),
val
);
add_to_crc
(
caller
.data
(),
val
);
});
});
...
@@ -162,16 +161,16 @@ fn main() -> anyhow::Result<()> {
...
@@ -162,16 +161,16 @@ fn main() -> anyhow::Result<()> {
// let main_func: NativeFunc<(), i32> = instance.exports.get_native_function("_main")?;
// let main_func: NativeFunc<(), i32> = instance.exports.get_native_function("_main")?;
// let crc_globals_func: NativeFunc<(), ()> = instance.exports.get_native_function("_crc_globals")?;
// let crc_globals_func: NativeFunc<(), ()> = instance.exports.get_native_function("_crc_globals")?;
// let memory = instance.exports.get_memory("_memory")?;
// let memory = instance.exports.get_memory("_memory")?;
let
main_func
=
instance
.get_typed_func
::
<
(),
i32
,
_
>
(
&
store
,
"_main"
)
?
;
let
main_func
=
instance
.get_typed_func
::
<
(),
i32
,
_
>
(
&
mut
store
,
"_main"
)
?
;
let
crc_globals_func
=
instance
.get_typed_func
::
<
(),
(),
_
>
(
&
store
,
"_crc_globals"
)
?
;
let
crc_globals_func
=
instance
.get_typed_func
::
<
(),
(),
_
>
(
&
mut
store
,
"_crc_globals"
)
?
;
let
memory
=
instance
.get_memory
(
&
store
,
"_memory"
)
?
;
let
memory
=
instance
.get_memory
(
&
mut
store
,
"_memory"
)
.unwrap
()
;
// Call main and add the result to the crc
// Call main and add the result to the crc
let
main_result
:
i32
=
main_func
.call
(
&
mut
store
,
())
?
;
let
main_result
:
i32
=
main_func
.call
(
&
mut
store
,
())
?
;
add_to_crc
(
&
Env
{
digest
:
shared_digest
.clone
()
},
main_result
.into
()
);
add_to_crc
(
&
Env
{
digest
:
shared_digest
.clone
()
},
main_result
as
u32
);
// Call the crc globals function to have wasm add all of it's globals to the crc
// Call the crc globals function to have wasm add all of it's globals to the crc
crc_globals_func
.call
(
&
store
,
())
?
;
crc_globals_func
.call
(
&
mut
store
,
())
?
;
// Add the contents of memory to the crc
// Add the contents of memory to the crc
// Get the pointer and size in bytes
// Get the pointer and size in bytes
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment