@@ -35,18 +35,26 @@ compile_error!(
35
35
/// however it is not gauranteed to be compatible across wasmer's
36
36
/// internal changes.
37
37
/// https://github.com/wasmerio/wasmer/issues/2781
38
- const MODULE_SERIALIZATION_VERSION : & str = "v6 " ;
38
+ const MODULE_SERIALIZATION_VERSION : & str = "v5 " ;
39
39
40
40
/// A shared instance to plugin's module bytecode cache.
41
41
pub static PLUGIN_MODULE_CACHE : Lazy < PluginModuleCache > = Lazy :: new ( Default :: default) ;
42
42
43
+ #[ cfg( feature = "filesystem_cache" ) ]
43
44
#[ derive( Default ) ]
44
45
pub struct CacheInner {
45
- #[ cfg( feature = "filesystem_cache" ) ]
46
46
fs_cache : Option < FileSystemCache > ,
47
47
// A naive hashmap to the compiled plugin modules.
48
48
// Current it doesn't have any invalidation or expiration logics like lru,
49
49
// having a lot of plugins may create some memory pressure.
50
+ loaded_module_bytes : AHashMap < PathBuf , Module > ,
51
+ }
52
+
53
+ #[ cfg( feature = "memory_cache" ) ]
54
+ #[ derive( Default ) ]
55
+ pub struct CacheInner {
56
+ // Unlike sys::Module, we'll keep raw bytes from the module instead of js::Module which
57
+ // implies bindgen's JsValue
50
58
loaded_module_bytes : AHashMap < PathBuf , Vec < u8 > > ,
51
59
}
52
60
@@ -73,11 +81,9 @@ fn create_filesystem_cache(filesystem_cache_root: &Option<String>) -> Option<Fil
73
81
if let Some ( root_path) = & mut root_path {
74
82
root_path. push ( "plugins" ) ;
75
83
root_path. push ( format ! (
76
- "{}_{}_{}_{} " ,
84
+ "{}_{}" ,
77
85
MODULE_SERIALIZATION_VERSION ,
78
- std:: env:: consts:: OS ,
79
- std:: env:: consts:: ARCH ,
80
- option_env!( "CARGO_PKG_VERSION" ) . unwrap_or( "plugin_runner_unknown" )
86
+ option_env!( "CARGO_PKG_RUST_VERSION" ) . unwrap_or( "default" )
81
87
) ) ;
82
88
83
89
return FileSystemCache :: new ( & root_path) . ok ( ) ;
@@ -140,18 +146,21 @@ impl PluginModuleCache {
140
146
let binary_path = binary_path. to_path_buf ( ) ;
141
147
let mut inner_cache = self . inner . get ( ) . expect ( "Cache should be available" ) . lock ( ) ;
142
148
143
- // if constructed module bytes for the given plugin path is available in-memory,
144
- // directly return it. Note we do not invalidate in-memory cache
145
- // currently: if wasm binary is replaced in-process lifecycle (i.e
146
- // devserver) it won't be reflected.
149
+ // if constructed Module is available in-memory, directly return it.
150
+ // Note we do not invalidate in-memory cache currently: if wasm binary is
151
+ // replaced in-process lifecycle (i.e devserver) it won't be reflected.
152
+
147
153
/*
148
- [NOTE]: Unlike wasmer@2, in wasmer@3 subsequent plugin load via in memory module causes intermittent heap_get_oob when
154
+ [TODO]: This is currently disabled, since on the latest wasmer@3 subsequent
155
+ plugin load via in memory module causes intermittent heap_get_oob when
149
156
host tries to allocate memory inside of the guest.
150
- */
157
+
158
+ Current guess is memory instance is being corrupted by the previous run, but
159
+ until figure out root cause & fix will only use fs_cache directly.
151
160
let in_memory_module = inner_cache.loaded_module_bytes.get(&binary_path);
152
- if let Some ( module_bytes ) = in_memory_module {
153
- return Module :: new ( wasmer_store , module_bytes ) . context ( "Cannot compile plugin binary" ) ;
154
- }
161
+ if let Some(module ) = in_memory_module {
162
+ return Ok(module.clone() );
163
+ }*/
155
164
156
165
let module_bytes =
157
166
std:: fs:: read ( & binary_path) . context ( "Cannot read plugin from specified path" ) ?;
@@ -165,8 +174,8 @@ impl PluginModuleCache {
165
174
) ;
166
175
let span_guard = span. enter ( ) ;
167
176
let _lock = self . instantiation_lock . lock ( ) ;
168
- let ret = Module :: new ( wasmer_store , module_bytes . clone ( ) )
169
- . context ( "Cannot compile plugin binary" ) ;
177
+ let ret =
178
+ Module :: new ( wasmer_store , module_bytes ) . context ( "Cannot compile plugin binary" ) ;
170
179
drop ( span_guard) ;
171
180
ret
172
181
} ;
@@ -188,7 +197,7 @@ impl PluginModuleCache {
188
197
189
198
inner_cache
190
199
. loaded_module_bytes
191
- . insert ( binary_path, module_bytes ) ;
200
+ . insert ( binary_path, module . clone ( ) ) ;
192
201
193
202
Ok ( module)
194
203
}
1 commit comments
github-actions[bot] commentedon Apr 29, 2023
Benchmark
es/full/bugs-1
316389
ns/iter (± 5780
)310103
ns/iter (± 11444
)1.02
es/full/minify/libraries/antd
1704885067
ns/iter (± 26001291
)1646399252
ns/iter (± 29100294
)1.04
es/full/minify/libraries/d3
324982645
ns/iter (± 5913173
)300887880
ns/iter (± 7950457
)1.08
es/full/minify/libraries/echarts
1295721446
ns/iter (± 16201335
)1263891673
ns/iter (± 19628587
)1.03
es/full/minify/libraries/jquery
92554463
ns/iter (± 1432359
)91183684
ns/iter (± 810394
)1.02
es/full/minify/libraries/lodash
107132776
ns/iter (± 786595
)105688558
ns/iter (± 828096
)1.01
es/full/minify/libraries/moment
52885098
ns/iter (± 441972
)52620321
ns/iter (± 395972
)1.01
es/full/minify/libraries/react
19457833
ns/iter (± 219008
)19167535
ns/iter (± 127342
)1.02
es/full/minify/libraries/terser
257819514
ns/iter (± 6422488
)254587125
ns/iter (± 2816961
)1.01
es/full/minify/libraries/three
468373202
ns/iter (± 10892594
)445068093
ns/iter (± 4069788
)1.05
es/full/minify/libraries/typescript
3137869150
ns/iter (± 34701667
)3119948708
ns/iter (± 22398317
)1.01
es/full/minify/libraries/victory
699327938
ns/iter (± 22239937
)699016954
ns/iter (± 10143566
)1.00
es/full/minify/libraries/vue
133699586
ns/iter (± 2518690
)131672281
ns/iter (± 1399875
)1.02
es/full/codegen/es3
28744
ns/iter (± 321
)28077
ns/iter (± 47
)1.02
es/full/codegen/es5
28883
ns/iter (± 61
)28154
ns/iter (± 87
)1.03
es/full/codegen/es2015
28806
ns/iter (± 51
)28152
ns/iter (± 44
)1.02
es/full/codegen/es2016
28807
ns/iter (± 55
)28169
ns/iter (± 64
)1.02
es/full/codegen/es2017
28840
ns/iter (± 61
)28122
ns/iter (± 63
)1.03
es/full/codegen/es2018
28828
ns/iter (± 63
)28216
ns/iter (± 44
)1.02
es/full/codegen/es2019
28844
ns/iter (± 22
)28175
ns/iter (± 47
)1.02
es/full/codegen/es2020
28839
ns/iter (± 51
)28179
ns/iter (± 64
)1.02
es/full/all/es3
179514646
ns/iter (± 2816185
)181165986
ns/iter (± 2684849
)0.99
es/full/all/es5
171491479
ns/iter (± 3257673
)174521393
ns/iter (± 1577440
)0.98
es/full/all/es2015
135821412
ns/iter (± 2131973
)137268539
ns/iter (± 3660590
)0.99
es/full/all/es2016
133920688
ns/iter (± 1119953
)134553676
ns/iter (± 1810802
)1.00
es/full/all/es2017
131599294
ns/iter (± 1218080
)132704403
ns/iter (± 1574724
)0.99
es/full/all/es2018
127370781
ns/iter (± 1358835
)128028842
ns/iter (± 2202081
)0.99
es/full/all/es2019
126116442
ns/iter (± 1091852
)129108473
ns/iter (± 1725288
)0.98
es/full/all/es2020
119108675
ns/iter (± 1185203
)119856623
ns/iter (± 1755672
)0.99
es/full/parser
519528
ns/iter (± 7959
)510240
ns/iter (± 7870
)1.02
es/full/base/fixer
22642
ns/iter (± 50
)22506
ns/iter (± 22
)1.01
es/full/base/resolver_and_hygiene
85483
ns/iter (± 77
)86087
ns/iter (± 56
)0.99
serialization of serde
122
ns/iter (± 0
)121
ns/iter (± 1
)1.01
css/minify/libraries/bootstrap
27882567
ns/iter (± 179369
)27701945
ns/iter (± 89946
)1.01
css/visitor/compare/clone
2127321
ns/iter (± 18562
)2099977
ns/iter (± 24464
)1.01
css/visitor/compare/visit_mut_span
2300681
ns/iter (± 14850
)2324171
ns/iter (± 5633
)0.99
css/visitor/compare/visit_mut_span_panic
2354526
ns/iter (± 13361
)2378493
ns/iter (± 7265
)0.99
css/visitor/compare/fold_span
3071831
ns/iter (± 20626
)3084058
ns/iter (± 15607
)1.00
css/visitor/compare/fold_span_panic
3236761
ns/iter (± 48374
)3229204
ns/iter (± 9224
)1.00
css/lexer/bootstrap_5_1_3
5211714
ns/iter (± 65391
)5171464
ns/iter (± 10565
)1.01
css/lexer/foundation_6_7_4
4364090
ns/iter (± 1772
)4341703
ns/iter (± 2255
)1.01
css/lexer/tailwind_3_1_1
824146
ns/iter (± 365
)830003
ns/iter (± 254
)0.99
css/parser/bootstrap_5_1_3
21312420
ns/iter (± 173640
)21211606
ns/iter (± 92073
)1.00
css/parser/foundation_6_7_4
16942648
ns/iter (± 81615
)16832998
ns/iter (± 98800
)1.01
css/parser/tailwind_3_1_1
3229576
ns/iter (± 5824
)3231229
ns/iter (± 2342
)1.00
es/codegen/colors
327665
ns/iter (± 185570
)327523
ns/iter (± 185009
)1.00
es/codegen/large
1282978
ns/iter (± 655223
)1248309
ns/iter (± 642144
)1.03
es/codegen/with-parser/colors
47468
ns/iter (± 361
)47542
ns/iter (± 629
)1.00
es/codegen/with-parser/large
513921
ns/iter (± 1173
)514544
ns/iter (± 1505
)1.00
es/minify/libraries/antd
1465606205
ns/iter (± 20270224
)1439761707
ns/iter (± 18848500
)1.02
es/minify/libraries/d3
265213580
ns/iter (± 4046003
)257993432
ns/iter (± 2209931
)1.03
es/minify/libraries/echarts
1113557227
ns/iter (± 13241023
)1096503882
ns/iter (± 5823742
)1.02
es/minify/libraries/jquery
80835367
ns/iter (± 727647
)79688218
ns/iter (± 598520
)1.01
es/minify/libraries/lodash
96642643
ns/iter (± 831777
)95121719
ns/iter (± 912872
)1.02
es/minify/libraries/moment
46545036
ns/iter (± 776391
)46037744
ns/iter (± 308838
)1.01
es/minify/libraries/react
17425541
ns/iter (± 207001
)17192488
ns/iter (± 161087
)1.01
es/minify/libraries/terser
222328247
ns/iter (± 4129450
)210451658
ns/iter (± 939310
)1.06
es/minify/libraries/three
383249421
ns/iter (± 5942123
)384237684
ns/iter (± 7678752
)1.00
es/minify/libraries/typescript
2664650268
ns/iter (± 17715725
)2686926342
ns/iter (± 15027011
)0.99
es/minify/libraries/victory
609534090
ns/iter (± 12098742
)598567604
ns/iter (± 10975213
)1.02
es/minify/libraries/vue
119809849
ns/iter (± 2066263
)116614379
ns/iter (± 800894
)1.03
es/visitor/compare/clone
2342302
ns/iter (± 22174
)2336926
ns/iter (± 11417
)1.00
es/visitor/compare/visit_mut_span
2704568
ns/iter (± 5284
)2713419
ns/iter (± 10085
)1.00
es/visitor/compare/visit_mut_span_panic
2748064
ns/iter (± 7151
)2747834
ns/iter (± 7100
)1.00
es/visitor/compare/fold_span
3818585
ns/iter (± 12859
)3828896
ns/iter (± 5230
)1.00
es/visitor/compare/fold_span_panic
3945395
ns/iter (± 7244
)3958351
ns/iter (± 6524
)1.00
es/lexer/colors
13252
ns/iter (± 7
)13076
ns/iter (± 11
)1.01
es/lexer/angular
6421144
ns/iter (± 13279
)6409893
ns/iter (± 6095
)1.00
es/lexer/backbone
793090
ns/iter (± 357
)788965
ns/iter (± 197
)1.01
es/lexer/jquery
4437193
ns/iter (± 2742
)4426596
ns/iter (± 2535
)1.00
es/lexer/jquery mobile
6947858
ns/iter (± 4314
)6926380
ns/iter (± 3327
)1.00
es/lexer/mootools
3482153
ns/iter (± 1508
)3477663
ns/iter (± 1736
)1.00
es/lexer/underscore
652441
ns/iter (± 466
)651146
ns/iter (± 258
)1.00
es/lexer/three
21006511
ns/iter (± 109626
)20981739
ns/iter (± 10025
)1.00
es/lexer/yui
3877458
ns/iter (± 1920
)3871491
ns/iter (± 1512
)1.00
es/parser/colors
29099
ns/iter (± 78
)29391
ns/iter (± 58
)0.99
es/parser/angular
15171205
ns/iter (± 259052
)15075433
ns/iter (± 123449
)1.01
es/parser/backbone
2153605
ns/iter (± 10204
)2152638
ns/iter (± 10296
)1.00
es/parser/jquery
11917373
ns/iter (± 159213
)11751667
ns/iter (± 124189
)1.01
es/parser/jquery mobile
19038358
ns/iter (± 227946
)18434636
ns/iter (± 227585
)1.03
es/parser/mootools
8934532
ns/iter (± 34467
)8949994
ns/iter (± 24638
)1.00
es/parser/underscore
1818301
ns/iter (± 9877
)1816924
ns/iter (± 11822
)1.00
es/parser/three
55946427
ns/iter (± 217197
)54835465
ns/iter (± 477180
)1.02
es/parser/yui
9099577
ns/iter (± 66153
)9145797
ns/iter (± 79527
)0.99
es/preset-env/usage/builtin_type
140854
ns/iter (± 33904
)140528
ns/iter (± 33824
)1.00
es/preset-env/usage/property
20468
ns/iter (± 100
)20185
ns/iter (± 46
)1.01
es/resolver/typescript
121851707
ns/iter (± 2022229
)120221707
ns/iter (± 2027795
)1.01
es/fixer/typescript
87422755
ns/iter (± 1146722
)89444306
ns/iter (± 900566
)0.98
es/hygiene/typescript
189700655
ns/iter (± 4110668
)194937558
ns/iter (± 1748634
)0.97
es/resolver_with_hygiene/typescript
329692125
ns/iter (± 3133422
)336629299
ns/iter (± 2092917
)0.98
es/visitor/base-perf/module_clone
80400
ns/iter (± 444
)80409
ns/iter (± 368
)1.00
es/visitor/base-perf/fold_empty
90588
ns/iter (± 157
)90696
ns/iter (± 429
)1.00
es/visitor/base-perf/fold_noop_impl_all
91004
ns/iter (± 479
)90892
ns/iter (± 196
)1.00
es/visitor/base-perf/fold_noop_impl_vec
91846
ns/iter (± 387
)91577
ns/iter (± 546
)1.00
es/visitor/base-perf/boxing_boxed_clone
57
ns/iter (± 0
)56
ns/iter (± 0
)1.02
es/visitor/base-perf/boxing_unboxed_clone
45
ns/iter (± 0
)42
ns/iter (± 0
)1.07
es/visitor/base-perf/boxing_boxed
104
ns/iter (± 0
)105
ns/iter (± 0
)0.99
es/visitor/base-perf/boxing_unboxed
78
ns/iter (± 0
)78
ns/iter (± 0
)1
es/visitor/base-perf/visit_empty
0
ns/iter (± 0
)es/visitor/base-perf/visit_contains_this
3486
ns/iter (± 72
)3420
ns/iter (± 44
)1.02
es/base/parallel/resolver/typescript
6544827355
ns/iter (± 607789625
)6161216154
ns/iter (± 498526189
)1.06
es/base/parallel/hygiene/typescript
2217463085
ns/iter (± 18452064
)2189448050
ns/iter (± 15204389
)1.01
misc/visitors/time-complexity/time 5
98
ns/iter (± 0
)98
ns/iter (± 0
)1
misc/visitors/time-complexity/time 10
331
ns/iter (± 6
)330
ns/iter (± 1
)1.00
misc/visitors/time-complexity/time 15
652
ns/iter (± 6
)647
ns/iter (± 9
)1.01
misc/visitors/time-complexity/time 20
1205
ns/iter (± 7
)1201
ns/iter (± 1
)1.00
misc/visitors/time-complexity/time 40
6180
ns/iter (± 5
)6167
ns/iter (± 1
)1.00
misc/visitors/time-complexity/time 60
15541
ns/iter (± 12
)15554
ns/iter (± 47
)1.00
es/full-target/es2016
254216
ns/iter (± 649
)252584
ns/iter (± 387
)1.01
es/full-target/es2017
245933
ns/iter (± 348
)245811
ns/iter (± 279
)1.00
es/full-target/es2018
235388
ns/iter (± 554
)235017
ns/iter (± 170
)1.00
es2020_nullish_coalescing
92907
ns/iter (± 375
)92966
ns/iter (± 316
)1.00
es2020_optional_chaining
124415
ns/iter (± 415
)124438
ns/iter (± 376
)1.00
es2022_class_properties
149153
ns/iter (± 215
)149224
ns/iter (± 292
)1.00
es2018_object_rest_spread
96067
ns/iter (± 225
)96328
ns/iter (± 196
)1.00
es2019_optional_catch_binding
85219
ns/iter (± 225
)85603
ns/iter (± 354
)1.00
es2017_async_to_generator
85851
ns/iter (± 229
)86252
ns/iter (± 181
)1.00
es2016_exponentiation
90345
ns/iter (± 214
)90238
ns/iter (± 180
)1.00
es2015_arrow
93803
ns/iter (± 245
)94029
ns/iter (± 313
)1.00
es2015_block_scoped_fn
92387
ns/iter (± 318
)92044
ns/iter (± 198
)1.00
es2015_block_scoping
169864
ns/iter (± 247
)170208
ns/iter (± 346
)1.00
This comment was automatically generated by workflow using github-action-benchmark.