Skip to content

Commit d6999ba

Browse files
authoredApr 29, 2023
fix(plugin/runner): Revert #7341 (#7344)
**Description:** This reverts commit 245163a.
1 parent 2c7f94f commit d6999ba

File tree

1 file changed

+27
-18
lines changed

1 file changed

+27
-18
lines changed
 

‎crates/swc_plugin_runner/src/cache.rs

+27-18
Original file line numberDiff line numberDiff line change
@@ -35,18 +35,26 @@ compile_error!(
3535
/// however it is not gauranteed to be compatible across wasmer's
3636
/// internal changes.
3737
/// https://github.com/wasmerio/wasmer/issues/2781
38-
const MODULE_SERIALIZATION_VERSION: &str = "v6";
38+
const MODULE_SERIALIZATION_VERSION: &str = "v5";
3939

4040
/// A shared instance to plugin's module bytecode cache.
4141
pub static PLUGIN_MODULE_CACHE: Lazy<PluginModuleCache> = Lazy::new(Default::default);
4242

43+
#[cfg(feature = "filesystem_cache")]
4344
#[derive(Default)]
4445
pub struct CacheInner {
45-
#[cfg(feature = "filesystem_cache")]
4646
fs_cache: Option<FileSystemCache>,
4747
// A naive hashmap to the compiled plugin modules.
4848
// Current it doesn't have any invalidation or expiration logics like lru,
4949
// 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
5058
loaded_module_bytes: AHashMap<PathBuf, Vec<u8>>,
5159
}
5260

@@ -73,11 +81,9 @@ fn create_filesystem_cache(filesystem_cache_root: &Option<String>) -> Option<Fil
7381
if let Some(root_path) = &mut root_path {
7482
root_path.push("plugins");
7583
root_path.push(format!(
76-
"{}_{}_{}_{}",
84+
"{}_{}",
7785
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")
8187
));
8288

8389
return FileSystemCache::new(&root_path).ok();
@@ -140,18 +146,21 @@ impl PluginModuleCache {
140146
let binary_path = binary_path.to_path_buf();
141147
let mut inner_cache = self.inner.get().expect("Cache should be available").lock();
142148

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+
147153
/*
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
149156
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.
151160
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+
}*/
155164

156165
let module_bytes =
157166
std::fs::read(&binary_path).context("Cannot read plugin from specified path")?;
@@ -165,8 +174,8 @@ impl PluginModuleCache {
165174
);
166175
let span_guard = span.enter();
167176
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");
170179
drop(span_guard);
171180
ret
172181
};
@@ -188,7 +197,7 @@ impl PluginModuleCache {
188197

189198
inner_cache
190199
.loaded_module_bytes
191-
.insert(binary_path, module_bytes);
200+
.insert(binary_path, module.clone());
192201

193202
Ok(module)
194203
}

1 commit comments

Comments
 (1)

github-actions[bot] commented on Apr 29, 2023

@github-actions[bot]

Benchmark

Benchmark suite Current: d6999ba Previous: 245163a Ratio
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.

Please sign in to comment.