Skip to content

Commit c03a74c

Browse files
authoredMay 20, 2023
refactor(plugin/runner): Add attributes to the module bytes (#7419)
1 parent 9200135 commit c03a74c

File tree

1 file changed

+31
-7
lines changed

1 file changed

+31
-7
lines changed
 

‎crates/swc_plugin_runner/src/plugin_module_bytes.rs

+31-7
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use anyhow::Error;
2+
use serde::{Deserialize, Serialize};
23
use wasmer::{Module, Store};
34

45
/// Creates an instnace of [Store].
@@ -44,7 +45,7 @@ pub trait PluginModuleBytes {
4445
}
4546

4647
/// A struct for the plugin contains raw bytes can be compiled into Wasm Module.
47-
#[derive(Clone)]
48+
#[derive(Debug, Clone, Eq, Serialize, Deserialize, PartialEq)]
4849
pub struct RawPluginModuleBytes {
4950
plugin_name: String,
5051
bytes: Vec<u8>,
@@ -74,18 +75,29 @@ impl RawPluginModuleBytes {
7475
/// A struct for the plugin contains pre-compiled binary.
7576
/// This is for the cases would like to reuse the compiled module, or either
7677
/// load from FileSystemCache.
78+
#[derive(Debug, Serialize, Deserialize, PartialEq)]
7779
pub struct CompiledPluginModuleBytes {
7880
plugin_name: String,
79-
bytes: wasmer::Module,
80-
store: wasmer::Store,
81+
#[serde(skip)]
82+
bytes: Option<wasmer::Module>,
83+
#[serde(skip)]
84+
store: Option<wasmer::Store>,
8185
}
8286

87+
impl Eq for CompiledPluginModuleBytes {}
88+
8389
impl Clone for CompiledPluginModuleBytes {
8490
fn clone(&self) -> Self {
8591
Self {
8692
plugin_name: self.plugin_name.clone(),
8793
bytes: self.bytes.clone(),
88-
store: Store::new(self.store.engine().clone()),
94+
store: Some(Store::new(
95+
self.store
96+
.as_ref()
97+
.expect("Store should be available")
98+
.engine()
99+
.clone(),
100+
)),
89101
}
90102
}
91103
}
@@ -94,8 +106,8 @@ impl CompiledPluginModuleBytes {
94106
pub fn new(identifier: String, bytes: wasmer::Module, store: wasmer::Store) -> Self {
95107
Self {
96108
plugin_name: identifier,
97-
bytes,
98-
store,
109+
bytes: Some(bytes),
110+
store: Some(store),
99111
}
100112
}
101113
}
@@ -115,6 +127,18 @@ impl PluginModuleBytes for CompiledPluginModuleBytes {
115127
}
116128

117129
fn compile_module(&self) -> Result<(Store, Module), Error> {
118-
Ok((Store::new(self.store.engine().clone()), self.bytes.clone()))
130+
Ok((
131+
Store::new(
132+
self.store
133+
.as_ref()
134+
.expect("Store should be available")
135+
.engine()
136+
.clone(),
137+
),
138+
self.bytes
139+
.as_ref()
140+
.expect("Module should be available")
141+
.clone(),
142+
))
119143
}
120144
}

1 commit comments

Comments
 (1)

github-actions[bot] commented on May 20, 2023

@github-actions[bot]

Benchmark

Benchmark suite Current: c03a74c Previous: f8fe365 Ratio
es/full/bugs-1 296455 ns/iter (± 8964) 302452 ns/iter (± 6309) 0.98
es/full/minify/libraries/antd 1632064062 ns/iter (± 15960821) 1536000724 ns/iter (± 50043402) 1.06
es/full/minify/libraries/d3 306555645 ns/iter (± 8443683) 340052497 ns/iter (± 15358878) 0.90
es/full/minify/libraries/echarts 1265032837 ns/iter (± 13653566) 1308856788 ns/iter (± 48455110) 0.97
es/full/minify/libraries/jquery 92298180 ns/iter (± 599942) 99934621 ns/iter (± 3929112) 0.92
es/full/minify/libraries/lodash 108444778 ns/iter (± 1073311) 106846184 ns/iter (± 4779092) 1.01
es/full/minify/libraries/moment 53455140 ns/iter (± 267660) 53013554 ns/iter (± 305719) 1.01
es/full/minify/libraries/react 19360939 ns/iter (± 116496) 20178562 ns/iter (± 486797) 0.96
es/full/minify/libraries/terser 255298183 ns/iter (± 2190058) 276056052 ns/iter (± 12893247) 0.92
es/full/minify/libraries/three 448550126 ns/iter (± 6735398) 484009078 ns/iter (± 12261810) 0.93
es/full/minify/libraries/typescript 3118573901 ns/iter (± 17503032) 2958529349 ns/iter (± 94405840) 1.05
es/full/minify/libraries/victory 690080601 ns/iter (± 12367938) 720039933 ns/iter (± 28652347) 0.96
es/full/minify/libraries/vue 134682349 ns/iter (± 1699431) 145381148 ns/iter (± 5747170) 0.93
es/full/codegen/es3 33472 ns/iter (± 20) 33422 ns/iter (± 67) 1.00
es/full/codegen/es5 33531 ns/iter (± 64) 33480 ns/iter (± 78) 1.00
es/full/codegen/es2015 33483 ns/iter (± 77) 33490 ns/iter (± 73) 1.00
es/full/codegen/es2016 33495 ns/iter (± 87) 33481 ns/iter (± 56) 1.00
es/full/codegen/es2017 33530 ns/iter (± 47) 33434 ns/iter (± 80) 1.00
es/full/codegen/es2018 33517 ns/iter (± 66) 33502 ns/iter (± 28) 1.00
es/full/codegen/es2019 33505 ns/iter (± 135) 33497 ns/iter (± 55) 1.00
es/full/codegen/es2020 33544 ns/iter (± 76) 33491 ns/iter (± 79) 1.00
es/full/all/es3 178715071 ns/iter (± 2393852) 180073957 ns/iter (± 3620581) 0.99
es/full/all/es5 176198071 ns/iter (± 3063876) 174777212 ns/iter (± 4064080) 1.01
es/full/all/es2015 140607290 ns/iter (± 2115274) 137081118 ns/iter (± 1230994) 1.03
es/full/all/es2016 137694695 ns/iter (± 2077506) 135142243 ns/iter (± 1814260) 1.02
es/full/all/es2017 136737462 ns/iter (± 1495959) 129101587 ns/iter (± 2060725) 1.06
es/full/all/es2018 131943493 ns/iter (± 823368) 125165938 ns/iter (± 1271878) 1.05
es/full/all/es2019 130242144 ns/iter (± 1555470) 127637718 ns/iter (± 2458126) 1.02
es/full/all/es2020 119337424 ns/iter (± 867832) 119762284 ns/iter (± 1515273) 1.00
es/full/parser 521895 ns/iter (± 7476) 521431 ns/iter (± 10700) 1.00
es/full/base/fixer 22473 ns/iter (± 50) 22625 ns/iter (± 24) 0.99
es/full/base/resolver_and_hygiene 85300 ns/iter (± 159) 85159 ns/iter (± 100) 1.00
serialization of serde 123 ns/iter (± 0) 123 ns/iter (± 0) 1
css/minify/libraries/bootstrap 27431705 ns/iter (± 122627) 28664676 ns/iter (± 776003) 0.96
css/visitor/compare/clone 2164539 ns/iter (± 17267) 2224860 ns/iter (± 45202) 0.97
css/visitor/compare/visit_mut_span 2326583 ns/iter (± 9766) 2410560 ns/iter (± 78943) 0.97
css/visitor/compare/visit_mut_span_panic 2411632 ns/iter (± 5071) 2354620 ns/iter (± 34127) 1.02
css/visitor/compare/fold_span 3132107 ns/iter (± 15582) 3093154 ns/iter (± 64692) 1.01
css/visitor/compare/fold_span_panic 3273701 ns/iter (± 9829) 3407013 ns/iter (± 51051) 0.96
css/lexer/bootstrap_5_1_3 5167781 ns/iter (± 9313) 5172480 ns/iter (± 12111) 1.00
css/lexer/foundation_6_7_4 4406970 ns/iter (± 2677) 4358925 ns/iter (± 1592) 1.01
css/lexer/tailwind_3_1_1 837125 ns/iter (± 837) 826191 ns/iter (± 420) 1.01
css/parser/bootstrap_5_1_3 20979863 ns/iter (± 86599) 20901136 ns/iter (± 273158) 1.00
css/parser/foundation_6_7_4 16907052 ns/iter (± 59094) 16685383 ns/iter (± 337865) 1.01
css/parser/tailwind_3_1_1 3232723 ns/iter (± 3771) 3235123 ns/iter (± 6494) 1.00
es/codegen/colors 731872 ns/iter (± 394587) 731473 ns/iter (± 395841) 1.00
es/codegen/large 3136960 ns/iter (± 1662629) 3171646 ns/iter (± 1681715) 0.99
es/codegen/with-parser/colors 48864 ns/iter (± 406) 48427 ns/iter (± 548) 1.01
es/codegen/with-parser/large 513515 ns/iter (± 1720) 510493 ns/iter (± 1815) 1.01
es/minify/libraries/antd 1453957876 ns/iter (± 11683175) 1334695618 ns/iter (± 66590498) 1.09
es/minify/libraries/d3 270335656 ns/iter (± 4950241) 293314767 ns/iter (± 15451895) 0.92
es/minify/libraries/echarts 1125734763 ns/iter (± 13551832) 1137305041 ns/iter (± 54834848) 0.99
es/minify/libraries/jquery 82399846 ns/iter (± 881352) 88108620 ns/iter (± 2358006) 0.94
es/minify/libraries/lodash 98201738 ns/iter (± 949521) 98060902 ns/iter (± 1940991) 1.00
es/minify/libraries/moment 47812242 ns/iter (± 332896) 49212074 ns/iter (± 1589861) 0.97
es/minify/libraries/react 17539281 ns/iter (± 145386) 18457020 ns/iter (± 377183) 0.95
es/minify/libraries/terser 218376395 ns/iter (± 2436349) 243183294 ns/iter (± 7086235) 0.90
es/minify/libraries/three 380175870 ns/iter (± 5302334) 415304771 ns/iter (± 23033517) 0.92
es/minify/libraries/typescript 2725349691 ns/iter (± 12443800) 2533786310 ns/iter (± 79446762) 1.08
es/minify/libraries/victory 586220271 ns/iter (± 6536953) 633710619 ns/iter (± 37326548) 0.93
es/minify/libraries/vue 122405173 ns/iter (± 2296100) 130911879 ns/iter (± 5768125) 0.94
es/visitor/compare/clone 2353643 ns/iter (± 17032) 2430684 ns/iter (± 30130) 0.97
es/visitor/compare/visit_mut_span 2712920 ns/iter (± 3616) 2695064 ns/iter (± 31396) 1.01
es/visitor/compare/visit_mut_span_panic 2759064 ns/iter (± 6941) 2738279 ns/iter (± 61020) 1.01
es/visitor/compare/fold_span 3820675 ns/iter (± 10792) 4012325 ns/iter (± 73698) 0.95
es/visitor/compare/fold_span_panic 3969351 ns/iter (± 13495) 4154050 ns/iter (± 75150) 0.96
es/lexer/colors 13179 ns/iter (± 50) 13102 ns/iter (± 16) 1.01
es/lexer/angular 6436058 ns/iter (± 29868) 6421816 ns/iter (± 7786) 1.00
es/lexer/backbone 798770 ns/iter (± 525) 792089 ns/iter (± 598) 1.01
es/lexer/jquery 4460884 ns/iter (± 1649) 4463784 ns/iter (± 2300) 1.00
es/lexer/jquery mobile 6904383 ns/iter (± 8334) 6939533 ns/iter (± 6448) 0.99
es/lexer/mootools 3504082 ns/iter (± 3534) 3492514 ns/iter (± 1853) 1.00
es/lexer/underscore 657461 ns/iter (± 691) 657295 ns/iter (± 338) 1.00
es/lexer/three 21050041 ns/iter (± 24877) 21042675 ns/iter (± 43255) 1.00
es/lexer/yui 3890464 ns/iter (± 1449) 3879288 ns/iter (± 1603) 1.00
es/parser/colors 29165 ns/iter (± 69) 28709 ns/iter (± 47) 1.02
es/parser/angular 15135065 ns/iter (± 125844) 16158197 ns/iter (± 380695) 0.94
es/parser/backbone 2177660 ns/iter (± 12086) 2177398 ns/iter (± 17779) 1.00
es/parser/jquery 11805144 ns/iter (± 85488) 12547185 ns/iter (± 565148) 0.94
es/parser/jquery mobile 18462527 ns/iter (± 414864) 20297668 ns/iter (± 719086) 0.91
es/parser/mootools 9015640 ns/iter (± 22600) 9064769 ns/iter (± 205076) 0.99
es/parser/underscore 1837548 ns/iter (± 8996) 1827364 ns/iter (± 10726) 1.01
es/parser/three 55001588 ns/iter (± 717023) 56545985 ns/iter (± 858751) 0.97
es/parser/yui 9090771 ns/iter (± 60805) 9580337 ns/iter (± 146446) 0.95
es/preset-env/usage/builtin_type 141125 ns/iter (± 34213) 141323 ns/iter (± 34330) 1.00
es/preset-env/usage/property 19674 ns/iter (± 83) 19748 ns/iter (± 114) 1.00
es/resolver/typescript 125098645 ns/iter (± 3422877) 109306615 ns/iter (± 2492239) 1.14
es/fixer/typescript 88655844 ns/iter (± 558809) 81209751 ns/iter (± 956811) 1.09
es/hygiene/typescript 187269327 ns/iter (± 2161497) 175511208 ns/iter (± 5802369) 1.07
es/resolver_with_hygiene/typescript 335941300 ns/iter (± 4072489) 304502401 ns/iter (± 14257709) 1.10
es/visitor/base-perf/module_clone 81052 ns/iter (± 392) 80919 ns/iter (± 381) 1.00
es/visitor/base-perf/fold_empty 90518 ns/iter (± 349) 90371 ns/iter (± 406) 1.00
es/visitor/base-perf/fold_noop_impl_all 91184 ns/iter (± 454) 91017 ns/iter (± 875) 1.00
es/visitor/base-perf/fold_noop_impl_vec 91014 ns/iter (± 161) 90883 ns/iter (± 298) 1.00
es/visitor/base-perf/boxing_boxed_clone 57 ns/iter (± 0) 58 ns/iter (± 0) 0.98
es/visitor/base-perf/boxing_unboxed_clone 42 ns/iter (± 0) 42 ns/iter (± 0) 1
es/visitor/base-perf/boxing_boxed 104 ns/iter (± 0) 105 ns/iter (± 0) 0.99
es/visitor/base-perf/boxing_unboxed 79 ns/iter (± 0) 79 ns/iter (± 0) 1
es/visitor/base-perf/visit_contains_this 3671 ns/iter (± 78) 3439 ns/iter (± 42) 1.07
es/base/parallel/resolver/typescript 6031800672 ns/iter (± 628447266) 5820947776 ns/iter (± 470268677) 1.04
es/base/parallel/hygiene/typescript 2186966083 ns/iter (± 24883826) 2072425070 ns/iter (± 31196608) 1.06
misc/visitors/time-complexity/time 5 105 ns/iter (± 0) 105 ns/iter (± 0) 1
misc/visitors/time-complexity/time 10 362 ns/iter (± 0) 361 ns/iter (± 2) 1.00
misc/visitors/time-complexity/time 15 710 ns/iter (± 7) 710 ns/iter (± 0) 1
misc/visitors/time-complexity/time 20 1325 ns/iter (± 0) 1326 ns/iter (± 2) 1.00
misc/visitors/time-complexity/time 40 7000 ns/iter (± 25) 7004 ns/iter (± 22) 1.00
misc/visitors/time-complexity/time 60 17817 ns/iter (± 7) 17870 ns/iter (± 25) 1.00
es/full-target/es2016 252726 ns/iter (± 323) 253787 ns/iter (± 1035) 1.00
es/full-target/es2017 245638 ns/iter (± 407) 245641 ns/iter (± 471) 1.00
es/full-target/es2018 235109 ns/iter (± 421) 235445 ns/iter (± 269) 1.00
es2020_nullish_coalescing 93125 ns/iter (± 510) 93401 ns/iter (± 459) 1.00
es2020_optional_chaining 125168 ns/iter (± 295) 124983 ns/iter (± 130) 1.00
es2022_class_properties 149374 ns/iter (± 330) 149632 ns/iter (± 329) 1.00
es2018_object_rest_spread 96182 ns/iter (± 306) 96105 ns/iter (± 189) 1.00
es2019_optional_catch_binding 85228 ns/iter (± 216) 85850 ns/iter (± 154) 0.99
es2017_async_to_generator 85859 ns/iter (± 196) 86326 ns/iter (± 173) 0.99
es2016_exponentiation 90494 ns/iter (± 282) 90853 ns/iter (± 195) 1.00
es2015_arrow 93776 ns/iter (± 70) 94068 ns/iter (± 266) 1.00
es2015_block_scoped_fn 92101 ns/iter (± 267) 92424 ns/iter (± 217) 1.00
es2015_block_scoping 170874 ns/iter (± 294) 170192 ns/iter (± 336) 1.00

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.