File tree Expand file tree Collapse file tree 5 files changed +47
-1
lines changed
Expand file tree Collapse file tree 5 files changed +47
-1
lines changed Original file line number Diff line number Diff line change @@ -431,6 +431,7 @@ jobs:
431431 -p wasmtime-wizer --no-default-features --features wasmtime
432432 -p wasmtime-wizer --no-default-features --features wasmprinter
433433 -p wasmtime-wizer --no-default-features --features component-model
434+ -p wasmtime-wizer --no-default-features --features rayon
434435 -p wasmtime-wizer --no-default-features --all-features
435436 runs-on : ubuntu-latest
436437 steps :
Original file line number Diff line number Diff line change @@ -26,7 +26,7 @@ harness = false
2626
2727[dependencies ]
2828log = { workspace = true }
29- rayon = { workspace = true }
29+ rayon = { workspace = true , optional = true }
3030clap = { workspace = true , optional = true }
3131wasm-encoder = { workspace = true , features = [' wasmparser' ] }
3232wasmparser = { workspace = true , features = [' validate' , ' features' ] }
@@ -43,6 +43,10 @@ wasmtime-wasi = { workspace = true, features = ["p1"] }
4343tokio = { workspace = true , features = [' macros' ] }
4444
4545[features ]
46+ default = [" rayon" ]
47+ # Enables parallel snapshotting.
48+ # Needs to be disabled if compiling wizer to single-threaded targets like wasm32-unknown-unknown
49+ rayon = [" dep:rayon" ]
4650# Enable this dependency to get messages with WAT disassemblies when certain
4751# internal panics occur.
4852wasmprinter = [' dep:wasmprinter' ]
Original file line number Diff line number Diff line change @@ -19,6 +19,8 @@ pub use wasmtime::*;
1919mod component;
2020#[ cfg( feature = "component-model" ) ]
2121pub use component:: * ;
22+ #[ cfg( not( feature = "rayon" ) ) ]
23+ mod rayoff;
2224
2325pub use crate :: info:: ModuleContext ;
2426pub use crate :: snapshot:: SnapshotVal ;
Original file line number Diff line number Diff line change 1+ use std:: ops:: Range ;
2+
3+ pub trait ParallelIterator : Iterator { }
4+
5+ impl < T : Iterator > ParallelIterator for T { }
6+
7+ pub trait IntoParallelIterator {
8+ type Item ;
9+ type Iter : Iterator < Item = Self :: Item > + ParallelIterator ;
10+
11+ fn into_par_iter ( self ) -> Self :: Iter ;
12+ }
13+
14+ impl IntoParallelIterator for Range < usize > {
15+ type Item = usize ;
16+ type Iter = Range < usize > ;
17+
18+ fn into_par_iter ( self ) -> Self :: Iter {
19+ self
20+ }
21+ }
22+
23+ pub trait ParallelExtend < T > {
24+ fn par_extend < I > ( & mut self , par_iter : I )
25+ where
26+ I : IntoIterator < Item = T > ;
27+ }
28+
29+ impl < T > ParallelExtend < T > for Vec < T > {
30+ fn par_extend < I > ( & mut self , par_iter : I )
31+ where
32+ I : IntoIterator < Item = T > ,
33+ {
34+ self . extend ( par_iter) ;
35+ }
36+ }
Original file line number Diff line number Diff line change 11use crate :: InstanceState ;
22use crate :: info:: ModuleContext ;
3+ #[ cfg( not( feature = "rayon" ) ) ]
4+ use crate :: rayoff:: { IntoParallelIterator , ParallelExtend } ;
5+ #[ cfg( feature = "rayon" ) ]
36use rayon:: iter:: { IntoParallelIterator , ParallelExtend , ParallelIterator } ;
47use std:: convert:: TryFrom ;
58use std:: ops:: Range ;
You can’t perform that action at this time.
0 commit comments