Skip to content

Commit 56ac9eb

Browse files
authoredMay 30, 2023
feat(common): Enable bytecheck for missing structs (#7465)
1 parent a29ef90 commit 56ac9eb

File tree

9 files changed

+52
-42
lines changed

9 files changed

+52
-42
lines changed
 

‎crates/swc_common/src/comments.rs

+3
Original file line numberDiff line numberDiff line change
@@ -546,6 +546,8 @@ impl SingleThreadedComments {
546546
any(feature = "rkyv-impl"),
547547
derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)
548548
)]
549+
#[cfg_attr(feature = "rkyv-impl", archive(check_bytes))]
550+
#[cfg_attr(feature = "rkyv-impl", archive_attr(repr(C)))]
549551
pub struct Comment {
550552
pub kind: CommentKind,
551553
pub span: Span,
@@ -564,6 +566,7 @@ impl Spanned for Comment {
564566
any(feature = "rkyv-impl"),
565567
derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)
566568
)]
569+
#[cfg_attr(feature = "rkyv-impl", archive(check_bytes))]
567570
pub enum CommentKind {
568571
Line,
569572
Block,

‎crates/swc_common/src/plugin/serialized.rs

+1-22
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ impl PluginSerializedBytes {
8080
* Internal fn to constructs an instance from raw bytes ptr.
8181
*/
8282
#[tracing::instrument(level = "info", skip_all)]
83-
fn from_raw_ptr(
83+
pub fn from_raw_ptr(
8484
raw_allocated_ptr: *const u8,
8585
raw_allocated_ptr_len: usize,
8686
) -> PluginSerializedBytes {
@@ -114,27 +114,6 @@ impl PluginSerializedBytes {
114114
}
115115
}
116116

117-
/// Simple wrapper around constructing PluginSerializedBytes from raw
118-
/// ptr to call deserialize to support common workflow on both of runtime
119-
/// (host / plugin) to instantiate a struct from allocated / copied ptr.
120-
///
121-
/// # Safety
122-
/// This is naturally unsafe by constructing bytes slice from raw ptr.
123-
#[tracing::instrument(level = "info", skip_all)]
124-
pub unsafe fn deserialize_from_ptr<W>(
125-
raw_allocated_ptr: *const u8,
126-
raw_allocated_ptr_len: u32,
127-
) -> Result<VersionedSerializable<W>, Error>
128-
where
129-
W: rkyv::Archive,
130-
W::Archived: rkyv::Deserialize<W, rkyv::de::deserializers::SharedDeserializeMap>,
131-
{
132-
let serialized =
133-
PluginSerializedBytes::from_raw_ptr(raw_allocated_ptr, raw_allocated_ptr_len as usize);
134-
135-
serialized.deserialize()
136-
}
137-
138117
/// A wrapper type for the structures to be passed into plugins
139118
/// serializes the contained value out-of-line so that newer
140119
/// versions can be viewed as the older version.

‎crates/swc_common/src/syntax_pos/hygiene.rs

+13-12
Original file line numberDiff line numberDiff line change
@@ -196,14 +196,15 @@ impl Mark {
196196
}
197197

198198
// Deserialize result, assign / return values as needed.
199-
let context: MutableMarkContext = unsafe {
200-
crate::plugin::serialized::deserialize_from_ptr(
199+
let context: MutableMarkContext =
200+
crate::plugin::serialized::PluginSerializedBytes::from_raw_ptr(
201201
ptr,
202202
len.try_into().expect("Should able to convert ptr length"),
203203
)
204+
.deserialize()
204205
.expect("Should able to deserialize")
205-
.into_inner()
206-
};
206+
.into_inner();
207+
207208
self = Mark::from_u32(context.0);
208209

209210
return context.2 != 0;
@@ -237,14 +238,14 @@ impl Mark {
237238
__mark_least_ancestor(a.0, b.0, ptr as _);
238239
}
239240

240-
let context: MutableMarkContext = unsafe {
241-
crate::plugin::serialized::deserialize_from_ptr(
241+
let context: MutableMarkContext =
242+
crate::plugin::serialized::PluginSerializedBytes::from_raw_ptr(
242243
ptr,
243244
len.try_into().expect("Should able to convert ptr length"),
244245
)
246+
.deserialize()
245247
.expect("Should able to deserialize")
246-
.into_inner()
247-
};
248+
.into_inner();
248249
a = Mark::from_u32(context.0);
249250
b = Mark::from_u32(context.1);
250251

@@ -435,14 +436,14 @@ impl SyntaxContext {
435436
__syntax_context_remove_mark_proxy(self.0, ptr as _);
436437
}
437438

438-
let context: MutableMarkContext = unsafe {
439-
crate::plugin::serialized::deserialize_from_ptr(
439+
let context: MutableMarkContext =
440+
crate::plugin::serialized::PluginSerializedBytes::from_raw_ptr(
440441
ptr,
441442
len.try_into().expect("Should able to convert ptr length"),
442443
)
444+
.deserialize()
443445
.expect("Should able to deserialize")
444-
.into_inner()
445-
};
446+
.into_inner();
446447

447448
*self = SyntaxContext(context.0);
448449

‎crates/swc_css_ast/src/at_rule.rs

+4
Original file line numberDiff line numberDiff line change
@@ -436,6 +436,8 @@ pub struct MediaFeatureBoolean {
436436
feature = "rkyv",
437437
derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)
438438
)]
439+
#[cfg_attr(feature = "rkyv", archive(check_bytes))]
440+
#[cfg_attr(feature = "rkyv", archive_attr(repr(u32)))]
439441
#[cfg_attr(
440442
feature = "rkyv",
441443
archive(bound(
@@ -764,6 +766,8 @@ pub struct SizeFeatureBoolean {
764766
feature = "rkyv",
765767
derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)
766768
)]
769+
#[cfg_attr(feature = "rkyv", archive(check_bytes))]
770+
#[cfg_attr(feature = "rkyv", archive_attr(repr(u32)))]
767771
#[cfg_attr(
768772
feature = "rkyv",
769773
archive(bound(

‎crates/swc_css_ast/src/selector.rs

+4
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,8 @@ pub struct Combinator {
131131
deserialize = "__D: rkyv::de::SharedDeserializeRegistry"
132132
))
133133
)]
134+
#[cfg_attr(feature = "rkyv", archive(check_bytes))]
135+
#[cfg_attr(feature = "rkyv", archive_attr(repr(u32)))]
134136
pub enum CombinatorValue {
135137
/// ` `
136138
Descendant,
@@ -264,6 +266,8 @@ pub struct AttributeSelector {
264266
feature = "rkyv",
265267
derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)
266268
)]
269+
#[cfg_attr(feature = "rkyv", archive(check_bytes))]
270+
#[cfg_attr(feature = "rkyv", archive_attr(repr(u32)))]
267271
#[cfg_attr(
268272
feature = "rkyv",
269273
archive(bound(

‎crates/swc_css_ast/src/token.rs

+8
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,17 @@ impl Take for TokenAndSpan {
3131
any(feature = "rkyv-impl"),
3232
derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)
3333
)]
34+
#[cfg_attr(feature = "rkyv-impl", archive(check_bytes))]
35+
#[cfg_attr(feature = "rkyv-impl", archive_attr(repr(C)))]
3436
pub struct UrlKeyValue(pub Atom, pub Atom);
3537

3638
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Is, EqIgnoreSpan)]
3739
#[cfg_attr(
3840
feature = "rkyv",
3941
derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)
4042
)]
43+
#[cfg_attr(feature = "rkyv", archive(check_bytes))]
44+
#[cfg_attr(feature = "rkyv", archive_attr(repr(u32)))]
4145
#[cfg_attr(
4246
feature = "rkyv",
4347
archive(bound(
@@ -59,6 +63,8 @@ pub enum NumberType {
5963
feature = "rkyv",
6064
derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)
6165
)]
66+
#[cfg_attr(feature = "rkyv", archive(check_bytes))]
67+
#[cfg_attr(feature = "rkyv", archive_attr(repr(C)))]
6268
#[cfg_attr(feature = "serde-impl", derive(Serialize, Deserialize))]
6369
pub struct DimensionToken {
6470
pub value: f64,
@@ -76,6 +82,8 @@ pub struct DimensionToken {
7682
feature = "rkyv",
7783
derive(rkyv::Archive, rkyv::Serialize, rkyv::Deserialize)
7884
)]
85+
#[cfg_attr(feature = "rkyv", archive(check_bytes))]
86+
#[cfg_attr(feature = "rkyv", archive_attr(repr(u32)))]
7987
#[cfg_attr(
8088
feature = "rkyv",
8189
archive(bound(

‎crates/swc_css_ast/src/value.rs

+6
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,8 @@ impl EqIgnoreSpan for Str {
127127
deserialize = "__D: rkyv::de::SharedDeserializeRegistry"
128128
))
129129
)]
130+
#[cfg_attr(feature = "rkyv", archive(check_bytes))]
131+
#[cfg_attr(feature = "rkyv", archive_attr(repr(u32)))]
130132
pub enum DelimiterValue {
131133
/// `,`
132134
Comma,
@@ -406,6 +408,8 @@ pub struct Ratio {
406408
deserialize = "__D: rkyv::de::SharedDeserializeRegistry"
407409
))
408410
)]
411+
#[cfg_attr(feature = "rkyv", archive(check_bytes))]
412+
#[cfg_attr(feature = "rkyv", archive_attr(repr(u32)))]
409413
pub enum BinOp {
410414
/// `+`
411415
Add,
@@ -514,6 +518,8 @@ pub struct CalcOperator {
514518
deserialize = "__D: rkyv::de::SharedDeserializeRegistry"
515519
))
516520
)]
521+
#[cfg_attr(feature = "rkyv-impl", archive(check_bytes))]
522+
#[cfg_attr(feature = "rkyv-impl", archive_attr(repr(u32)))]
517523
pub enum CalcOperatorType {
518524
/// `+`
519525
Add,

‎crates/swc_plugin_macro/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ fn handle_func(func: ItemFn, ast_type: Ident) -> TokenStream {
130130
unresolved_mark: u32, should_enable_comments_proxy: i32) -> u32 {
131131
// Reconstruct `Program` & config string from serialized program
132132
// Host (SWC) should allocate memory, copy bytes and pass ptr to plugin.
133-
let program = unsafe { swc_core::common::plugin::serialized::deserialize_from_ptr(ast_ptr, ast_ptr_len) };
133+
let program = swc_core::common::plugin::serialized::PluginSerializedBytes::from_raw_ptr(ast_ptr, ast_ptr_len.try_into().expect("Should able to convert ptr length")).deserialize();
134134
if program.is_err() {
135135
let err = swc_core::common::plugin::serialized::PluginError::Deserialize("Failed to deserialize program received from host".to_string());
136136
return construct_error_ptr(err);

‎crates/swc_plugin_proxy/src/memory_interop/read_returned_result_from_host.rs

+12-7
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#[cfg_attr(not(target_arch = "wasm32"), allow(unused))]
22
#[cfg(any(feature = "__plugin_rt", feature = "__plugin_mode"))]
3-
use swc_common::plugin::serialized::{deserialize_from_ptr, PluginSerializedBytes};
3+
use swc_common::plugin::serialized::PluginSerializedBytes;
44

55
/// A struct to exchange allocated data between memory spaces.
66
#[cfg_attr(
@@ -62,16 +62,17 @@ where
6262
}
6363

6464
// Return reconstructted AllocatedBytesPtr to reveal ptr to the allocated bytes
65-
Some(unsafe {
66-
deserialize_from_ptr(
65+
Some(
66+
PluginSerializedBytes::from_raw_ptr(
6767
serialized_allocated_bytes_raw_ptr,
6868
serialized_allocated_bytes_raw_ptr_size
6969
.try_into()
7070
.expect("Should able to convert ptr length"),
7171
)
72+
.deserialize()
7273
.expect("Should able to deserialize AllocatedBytesPtr")
73-
.into_inner()
74-
})
74+
.into_inner(),
75+
)
7576
}
7677

7778
#[cfg(not(feature = "__rkyv"))]
@@ -95,10 +96,14 @@ where
9596

9697
// Using AllocatedBytesPtr's value, reconstruct actual return value
9798
allocated_returned_value_ptr.map(|allocated_returned_value_ptr| unsafe {
98-
deserialize_from_ptr(
99+
PluginSerializedBytes::from_raw_ptr(
99100
allocated_returned_value_ptr.0 as _,
100-
allocated_returned_value_ptr.1,
101+
allocated_returned_value_ptr
102+
.1
103+
.try_into()
104+
.expect("Should able to convert ptr length"),
101105
)
106+
.deserialize()
102107
.expect("Returned value should be serializable")
103108
.into_inner()
104109
})

1 commit comments

Comments
 (1)

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

@github-actions[bot]

Benchmark

Benchmark suite Current: 56ac9eb Previous: 8274cce Ratio
es/full/bugs-1 319295 ns/iter (± 8772) 300435 ns/iter (± 10390) 1.06
es/full/minify/libraries/antd 1695727293 ns/iter (± 28414416) 1481894130 ns/iter (± 20167987) 1.14
es/full/minify/libraries/d3 310715191 ns/iter (± 7372177) 285096561 ns/iter (± 11171379) 1.09
es/full/minify/libraries/echarts 1298928363 ns/iter (± 11999072) 1169003362 ns/iter (± 15995173) 1.11
es/full/minify/libraries/jquery 93101975 ns/iter (± 1033456) 87843807 ns/iter (± 625655) 1.06
es/full/minify/libraries/lodash 110110918 ns/iter (± 2175991) 102532208 ns/iter (± 853462) 1.07
es/full/minify/libraries/moment 54556089 ns/iter (± 333704) 50788073 ns/iter (± 479218) 1.07
es/full/minify/libraries/react 19542697 ns/iter (± 299661) 18834695 ns/iter (± 101585) 1.04
es/full/minify/libraries/terser 254654003 ns/iter (± 4700111) 232605452 ns/iter (± 1835642) 1.09
es/full/minify/libraries/three 463997689 ns/iter (± 7097490) 400091218 ns/iter (± 10821754) 1.16
es/full/minify/libraries/typescript 3171902754 ns/iter (± 19436856) 2902939090 ns/iter (± 20792380) 1.09
es/full/minify/libraries/victory 702017032 ns/iter (± 7652880) 620892971 ns/iter (± 5322579) 1.13
es/full/minify/libraries/vue 135952648 ns/iter (± 1148723) 127029323 ns/iter (± 1561247) 1.07
es/full/codegen/es3 34058 ns/iter (± 52) 33461 ns/iter (± 794) 1.02
es/full/codegen/es5 34141 ns/iter (± 44) 33323 ns/iter (± 306) 1.02
es/full/codegen/es2015 34132 ns/iter (± 83) 32818 ns/iter (± 200) 1.04
es/full/codegen/es2016 34127 ns/iter (± 86) 32648 ns/iter (± 234) 1.05
es/full/codegen/es2017 34092 ns/iter (± 56) 32609 ns/iter (± 204) 1.05
es/full/codegen/es2018 34128 ns/iter (± 55) 32831 ns/iter (± 240) 1.04
es/full/codegen/es2019 34175 ns/iter (± 55) 33162 ns/iter (± 268) 1.03
es/full/codegen/es2020 34172 ns/iter (± 56) 32741 ns/iter (± 176) 1.04
es/full/all/es3 181038447 ns/iter (± 4201868) 180029982 ns/iter (± 3657975) 1.01
es/full/all/es5 176378767 ns/iter (± 3250613) 174953760 ns/iter (± 3418339) 1.01
es/full/all/es2015 137773056 ns/iter (± 2797772) 135017842 ns/iter (± 1971070) 1.02
es/full/all/es2016 136277430 ns/iter (± 2628750) 132332294 ns/iter (± 1863309) 1.03
es/full/all/es2017 134578910 ns/iter (± 3708327) 131309708 ns/iter (± 1821332) 1.02
es/full/all/es2018 129340945 ns/iter (± 2338670) 125235070 ns/iter (± 1580567) 1.03
es/full/all/es2019 128224354 ns/iter (± 2607354) 124691375 ns/iter (± 1337046) 1.03
es/full/all/es2020 122972533 ns/iter (± 2638062) 116812038 ns/iter (± 1134185) 1.05
es/full/parser 520206 ns/iter (± 9529) 499360 ns/iter (± 11588) 1.04
es/full/base/fixer 22574 ns/iter (± 34) 22372 ns/iter (± 163) 1.01
es/full/base/resolver_and_hygiene 85222 ns/iter (± 62) 82659 ns/iter (± 374) 1.03
serialization of serde 121 ns/iter (± 0) 117 ns/iter (± 1) 1.03
css/minify/libraries/bootstrap 27463067 ns/iter (± 94376) 26398235 ns/iter (± 274934) 1.04
css/visitor/compare/clone 2080210 ns/iter (± 18790) 2060059 ns/iter (± 28451) 1.01
css/visitor/compare/visit_mut_span 2296401 ns/iter (± 7884) 2220002 ns/iter (± 13263) 1.03
css/visitor/compare/visit_mut_span_panic 2342364 ns/iter (± 6657) 2266797 ns/iter (± 8870) 1.03
css/visitor/compare/fold_span 3038815 ns/iter (± 25997) 2965017 ns/iter (± 16041) 1.02
css/visitor/compare/fold_span_panic 3213668 ns/iter (± 14706) 3201627 ns/iter (± 28034) 1.00
css/lexer/bootstrap_5_1_3 5190164 ns/iter (± 21069) 5067070 ns/iter (± 67034) 1.02
css/lexer/foundation_6_7_4 4381311 ns/iter (± 1476) 4217063 ns/iter (± 49131) 1.04
css/lexer/tailwind_3_1_1 831708 ns/iter (± 311) 797149 ns/iter (± 3558) 1.04
css/parser/bootstrap_5_1_3 21396315 ns/iter (± 83438) 20536212 ns/iter (± 180857) 1.04
css/parser/foundation_6_7_4 17041823 ns/iter (± 58850) 16263528 ns/iter (± 60802) 1.05
css/parser/tailwind_3_1_1 3262056 ns/iter (± 2985) 3169459 ns/iter (± 27963) 1.03
es/codegen/colors 735915 ns/iter (± 395661) 740233 ns/iter (± 398917) 0.99
es/codegen/large 3212379 ns/iter (± 1684143) 3154124 ns/iter (± 1616309) 1.02
es/codegen/with-parser/colors 48722 ns/iter (± 292) 47142 ns/iter (± 705) 1.03
es/codegen/with-parser/large 508682 ns/iter (± 2110) 493582 ns/iter (± 3094) 1.03
es/minify/libraries/antd 1514710092 ns/iter (± 19540228) 1344045201 ns/iter (± 27344824) 1.13
es/minify/libraries/d3 287398341 ns/iter (± 5873694) 244859532 ns/iter (± 1656074) 1.17
es/minify/libraries/echarts 1166831251 ns/iter (± 16628693) 995906600 ns/iter (± 14329997) 1.17
es/minify/libraries/jquery 84524308 ns/iter (± 1452931) 78410783 ns/iter (± 1020199) 1.08
es/minify/libraries/lodash 101152986 ns/iter (± 1174375) 93770077 ns/iter (± 699916) 1.08
es/minify/libraries/moment 49496693 ns/iter (± 2319219) 45692121 ns/iter (± 513311) 1.08
es/minify/libraries/react 18290812 ns/iter (± 371466) 17082287 ns/iter (± 94368) 1.07
es/minify/libraries/terser 231915939 ns/iter (± 3866892) 203599530 ns/iter (± 1372364) 1.14
es/minify/libraries/three 406221950 ns/iter (± 7982043) 341629583 ns/iter (± 8102448) 1.19
es/minify/libraries/typescript 2748663555 ns/iter (± 17838295) 2521029404 ns/iter (± 17291605) 1.09
es/minify/libraries/victory 617911868 ns/iter (± 20158781) 519670216 ns/iter (± 7197098) 1.19
es/minify/libraries/vue 126060663 ns/iter (± 1869239) 114321883 ns/iter (± 779549) 1.10
es/visitor/compare/clone 2353866 ns/iter (± 27138) 2249477 ns/iter (± 37126) 1.05
es/visitor/compare/visit_mut_span 2683706 ns/iter (± 17881) 2599738 ns/iter (± 16980) 1.03
es/visitor/compare/visit_mut_span_panic 2780418 ns/iter (± 13920) 2623050 ns/iter (± 17738) 1.06
es/visitor/compare/fold_span 3876684 ns/iter (± 29915) 3673768 ns/iter (± 26048) 1.06
es/visitor/compare/fold_span_panic 3995244 ns/iter (± 14354) 3927383 ns/iter (± 19053) 1.02
es/lexer/colors 13340 ns/iter (± 23) 12788 ns/iter (± 268) 1.04
es/lexer/angular 6474705 ns/iter (± 10535) 6236842 ns/iter (± 55157) 1.04
es/lexer/backbone 801306 ns/iter (± 1680) 773200 ns/iter (± 3268) 1.04
es/lexer/jquery 4512778 ns/iter (± 1738) 4341895 ns/iter (± 35081) 1.04
es/lexer/jquery mobile 6999539 ns/iter (± 2906) 6754172 ns/iter (± 36951) 1.04
es/lexer/mootools 3513842 ns/iter (± 1998) 3393603 ns/iter (± 14117) 1.04
es/lexer/underscore 659908 ns/iter (± 327) 640512 ns/iter (± 2729) 1.03
es/lexer/three 21219815 ns/iter (± 29881) 20686645 ns/iter (± 235149) 1.03
es/lexer/yui 3907617 ns/iter (± 1605) 3765840 ns/iter (± 16597) 1.04
es/parser/colors 29044 ns/iter (± 28) 28209 ns/iter (± 442) 1.03
es/parser/angular 15684088 ns/iter (± 248022) 14429624 ns/iter (± 160571) 1.09
es/parser/backbone 2192660 ns/iter (± 12777) 2098558 ns/iter (± 18600) 1.04
es/parser/jquery 12164074 ns/iter (± 159918) 11431433 ns/iter (± 108076) 1.06
es/parser/jquery mobile 19052597 ns/iter (± 304932) 17495551 ns/iter (± 139507) 1.09
es/parser/mootools 9116910 ns/iter (± 30270) 8732703 ns/iter (± 119472) 1.04
es/parser/underscore 1854901 ns/iter (± 12778) 1769854 ns/iter (± 17786) 1.05
es/parser/three 56492159 ns/iter (± 416448) 49077994 ns/iter (± 1325941) 1.15
es/parser/yui 9225935 ns/iter (± 62521) 8733235 ns/iter (± 68117) 1.06
es/preset-env/usage/builtin_type 137795 ns/iter (± 33920) 135059 ns/iter (± 34721) 1.02
es/preset-env/usage/property 19873 ns/iter (± 64) 19265 ns/iter (± 124) 1.03
es/resolver/typescript 124334454 ns/iter (± 4145025) 114133627 ns/iter (± 1181776) 1.09
es/fixer/typescript 88182319 ns/iter (± 707992) 81167543 ns/iter (± 1006021) 1.09
es/hygiene/typescript 190776201 ns/iter (± 1274072) 171513579 ns/iter (± 2082664) 1.11
es/resolver_with_hygiene/typescript 341338763 ns/iter (± 2453198) 305165049 ns/iter (± 3188651) 1.12
es/visitor/base-perf/module_clone 81071 ns/iter (± 589) 79188 ns/iter (± 1042) 1.02
es/visitor/base-perf/fold_empty 91024 ns/iter (± 509) 87092 ns/iter (± 1018) 1.05
es/visitor/base-perf/fold_noop_impl_all 90989 ns/iter (± 354) 88086 ns/iter (± 539) 1.03
es/visitor/base-perf/fold_noop_impl_vec 91149 ns/iter (± 295) 87575 ns/iter (± 910) 1.04
es/visitor/base-perf/boxing_boxed_clone 56 ns/iter (± 0) 54 ns/iter (± 0) 1.04
es/visitor/base-perf/boxing_unboxed_clone 41 ns/iter (± 0) 39 ns/iter (± 0) 1.05
es/visitor/base-perf/boxing_boxed 101 ns/iter (± 0) 98 ns/iter (± 0) 1.03
es/visitor/base-perf/boxing_unboxed 78 ns/iter (± 0) 75 ns/iter (± 0) 1.04
es/visitor/base-perf/visit_contains_this 3458 ns/iter (± 45) 3433 ns/iter (± 85) 1.01
es/base/parallel/resolver/typescript 5851147258 ns/iter (± 595861326) 6314695872 ns/iter (± 590724946) 0.93
es/base/parallel/hygiene/typescript 2230704690 ns/iter (± 31943289) 2179078285 ns/iter (± 28656680) 1.02
misc/visitors/time-complexity/time 5 98 ns/iter (± 0) 96 ns/iter (± 0) 1.02
misc/visitors/time-complexity/time 10 311 ns/iter (± 0) 306 ns/iter (± 3) 1.02
misc/visitors/time-complexity/time 15 647 ns/iter (± 0) 625 ns/iter (± 8) 1.04
misc/visitors/time-complexity/time 20 1210 ns/iter (± 10) 1159 ns/iter (± 7) 1.04
misc/visitors/time-complexity/time 40 6186 ns/iter (± 35) 5972 ns/iter (± 39) 1.04
misc/visitors/time-complexity/time 60 15533 ns/iter (± 34) 15179 ns/iter (± 119) 1.02
es/full-target/es2016 259856 ns/iter (± 410) 244157 ns/iter (± 1949) 1.06
es/full-target/es2017 252014 ns/iter (± 390) 239548 ns/iter (± 1028) 1.05
es/full-target/es2018 240866 ns/iter (± 495) 227189 ns/iter (± 1175) 1.06
es2020_nullish_coalescing 98142 ns/iter (± 262) 89385 ns/iter (± 777) 1.10
es2020_optional_chaining 130459 ns/iter (± 311) 120271 ns/iter (± 1033) 1.08
es2022_class_properties 154741 ns/iter (± 235) 145171 ns/iter (± 1266) 1.07
es2018_object_rest_spread 100732 ns/iter (± 206) 94024 ns/iter (± 940) 1.07
es2019_optional_catch_binding 90053 ns/iter (± 289) 82466 ns/iter (± 409) 1.09
es2017_async_to_generator 90386 ns/iter (± 381) 82861 ns/iter (± 617) 1.09
es2016_exponentiation 94904 ns/iter (± 303) 87167 ns/iter (± 851) 1.09
es2015_arrow 98776 ns/iter (± 207) 92546 ns/iter (± 535) 1.07
es2015_block_scoped_fn 96894 ns/iter (± 208) 91001 ns/iter (± 382) 1.06
es2015_block_scoping 175001 ns/iter (± 287) 169348 ns/iter (± 468) 1.03

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

Please sign in to comment.