Skip to content

Commit

Permalink
fix(es/minifier): Fix minifier (#2551)
Browse files Browse the repository at this point in the history
swc_ecma_minifier:
 - `hoist_props`: Check for infection. (#2506)
  • Loading branch information
kdy1 authored Oct 27, 2021
1 parent 2febd77 commit f81b60f
Show file tree
Hide file tree
Showing 36 changed files with 143 additions and 98 deletions.
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion ecmascript/minifier/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ include = ["Cargo.toml", "src/**/*.rs", "src/lists/*.json"]
license = "Apache-2.0/MIT"
name = "swc_ecma_minifier"
repository = "https://github.com/swc-project/swc.git"
version = "0.46.3"
version = "0.46.4"

[features]
debug = ["backtrace"]
Expand Down
4 changes: 4 additions & 0 deletions ecmascript/minifier/src/analyzer/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,10 @@ impl VarUsageInfo {
pub fn is_mutated_only_by_one_call(&self) -> bool {
self.assign_count == 0 && self.mutation_by_call_count == 1
}

pub fn is_infected(&self) -> bool {
!self.infects.is_empty()
}
}

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
Expand Down
6 changes: 5 additions & 1 deletion ecmascript/minifier/src/compress/optimize/hoist_props.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,11 @@ where
if !self
.data
.as_ref()
.and_then(|data| data.vars.get(&name.to_id()).map(|v| !v.mutated))
.and_then(|data| {
data.vars
.get(&name.to_id())
.map(|v| !v.mutated && !v.reassigned && !v.is_infected())
})
.unwrap_or(false)
{
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4755,7 +4755,7 @@
};
},
88986: function(module, __unused_webpack_exports, __webpack_require__) {
var setGlobal = __webpack_require__(65933), store = __webpack_require__(19514)["__core-js_shared__"] || setGlobal("__core-js_shared__", {
var global = __webpack_require__(19514), setGlobal = __webpack_require__(65933), store = global["__core-js_shared__"] || setGlobal("__core-js_shared__", {
});
module.exports = store;
},
Expand Down Expand Up @@ -5197,7 +5197,7 @@
},
39803: function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(35437), setSpecies = __webpack_require__(53988), ArrayBuffer = __webpack_require__(44757).ArrayBuffer, NativeArrayBuffer = __webpack_require__(19514).ArrayBuffer;
var $ = __webpack_require__(35437), global = __webpack_require__(19514), arrayBufferModule = __webpack_require__(44757), setSpecies = __webpack_require__(53988), ArrayBuffer = arrayBufferModule.ArrayBuffer, NativeArrayBuffer = global.ArrayBuffer;
$({
global: !0,
forced: NativeArrayBuffer !== ArrayBuffer
Expand Down Expand Up @@ -11431,6 +11431,11 @@
var b = a.textContent;
b === a._wrapperState.initialValue && "" !== b && null !== b && (a.value = b);
}
var kb = {
html: "http://www.w3.org/1999/xhtml",
mathml: "http://www.w3.org/1998/Math/MathML",
svg: "http://www.w3.org/2000/svg"
};
function lb(a) {
switch(a){
case "svg":
Expand All @@ -11451,7 +11456,7 @@
});
} : a;
}(function(a, b) {
if ("http://www.w3.org/2000/svg" !== a.namespaceURI || "innerHTML" in a) a.innerHTML = b;
if (a.namespaceURI !== kb.svg || "innerHTML" in a) a.innerHTML = b;
else {
for((nb = nb || document.createElement("div")).innerHTML = "<svg>" + b.valueOf().toString() + "</svg>", b = nb.firstChild; a.firstChild;)a.removeChild(a.firstChild);
for(; b.firstChild;)a.appendChild(b.firstChild);
Expand Down Expand Up @@ -14353,7 +14358,7 @@
}
d = a, b.updateQueue = d, null !== d && (b.flags |= 4);
} else {
switch(g = 9 === e.nodeType ? e : e.ownerDocument, "http://www.w3.org/1999/xhtml" === a && (a = lb(c)), "http://www.w3.org/1999/xhtml" === a ? "script" === c ? ((a = g.createElement("div")).innerHTML = "<script></script>", a = a.removeChild(a.firstChild)) : "string" == typeof d.is ? a = g.createElement(c, {
switch(g = 9 === e.nodeType ? e : e.ownerDocument, a === kb.html && (a = lb(c)), a === kb.html ? "script" === c ? ((a = g.createElement("div")).innerHTML = "<script></script>", a = a.removeChild(a.firstChild)) : "string" == typeof d.is ? a = g.createElement(c, {
is: d.is
}) : (a = g.createElement(c), "select" === c && (g = a, d.multiple ? g.multiple = !0 : d.size && (g.size = d.size))) : a = g.createElementNS(a, c), a[wf] = b, a[xf] = d, Bi(a, b, !1, !1), b.stateNode = a, g = wb(c, d), c){
case "dialog":
Expand Down Expand Up @@ -16913,7 +16918,9 @@
}, D.prototype = C.prototype;
var F = E.prototype = new D;
F.constructor = E, l(F, C.prototype), F.isPureReactComponent = !0;
var H = Object.prototype.hasOwnProperty, I = {
var G = {
current: null
}, H = Object.prototype.hasOwnProperty, I = {
key: !0,
ref: !0,
__self: !0,
Expand All @@ -16936,7 +16943,7 @@
key: k,
ref: h,
props: d,
_owner: null
_owner: G.current
};
}
function L(a) {
Expand Down Expand Up @@ -17006,9 +17013,13 @@
if (1 === a._status) return a._result;
throw a._result;
}
var R = {
current: null
};
function S() {
throw Error(z(321));
return null;
var a = R.current;
if (null === a) throw Error(z(321));
return a;
}
exports.Children = {
map: P,
Expand All @@ -17033,15 +17044,11 @@
return a;
}
}, exports.Component = C, exports.PureComponent = E, exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = {
ReactCurrentDispatcher: {
current: null
},
ReactCurrentDispatcher: R,
ReactCurrentBatchConfig: {
transition: 0
},
ReactCurrentOwner: {
current: null
},
ReactCurrentOwner: G,
IsSomeRendererActing: {
current: !1
},
Expand All @@ -17051,7 +17058,7 @@
var e = l({
}, a.props), d = a.key, k = a.ref, h = a._owner;
if (null != b) {
if (void 0 !== b.ref && (k = b.ref, h = null), void 0 !== b.key && (d = "" + b.key), a.type && a.type.defaultProps) var g = a.type.defaultProps;
if (void 0 !== b.ref && (k = b.ref, h = G.current), void 0 !== b.key && (d = "" + b.key), a.type && a.type.defaultProps) var g = a.type.defaultProps;
for(f in b)H.call(b, f) && !I.hasOwnProperty(f) && (e[f] = void 0 === b[f] && void 0 !== g ? g[f] : b[f]);
}
var f = arguments.length - 2;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1579,8 +1579,8 @@
});
var proto$1 = Locale.prototype;
function get$1(format, index, field, setter) {
var utc = createUTC().set(setter, index);
return getLocale()[field](utc, format);
var locale = getLocale(), utc = createUTC().set(setter, index);
return locale[field](utc, format);
}
function listMonthsImpl(format, index, field) {
if (isNumber(format) && (index = format, format = void 0), format = format || "", null != index) return get$1(format, index, field, "month");
Expand Down
17 changes: 11 additions & 6 deletions ecmascript/minifier/tests/projects/output/react-dom-17.0.2.js
Original file line number Diff line number Diff line change
Expand Up @@ -851,6 +851,11 @@
var node = element, textContent = node.textContent;
textContent === node._wrapperState.initialValue && "" !== textContent && null !== textContent && (node.value = textContent);
}
var Namespaces = {
html: "http://www.w3.org/1999/xhtml",
mathml: "http://www.w3.org/1998/Math/MathML",
svg: "http://www.w3.org/2000/svg"
};
function getIntrinsicNamespace(type) {
switch(type){
case "svg":
Expand All @@ -871,7 +876,7 @@
});
} : func;
}(function(node, html) {
if ("http://www.w3.org/2000/svg" === node.namespaceURI && !("innerHTML" in node)) {
if (node.namespaceURI === Namespaces.svg && !("innerHTML" in node)) {
(reusableSVGContainer = reusableSVGContainer || document.createElement("div")).innerHTML = "<svg>" + html.valueOf().toString() + "</svg>";
for(var svgNode = reusableSVGContainer.firstChild; node.firstChild;)node.removeChild(node.firstChild);
for(; svgNode.firstChild;)node.appendChild(svgNode.firstChild);
Expand Down Expand Up @@ -3670,7 +3675,7 @@
function getListenerSetKey(domEventName, capture) {
return domEventName + "__" + (capture ? "capture" : "bubble");
}
var didWarnInvalidHydration = !1;
var didWarnInvalidHydration = !1, HTML_NAMESPACE$1 = Namespaces.html;
warnedUnknownTags = {
dialog: !0,
webview: !0
Expand Down Expand Up @@ -3739,7 +3744,7 @@
}, warnForInvalidEventListener = function(registrationName, listener) {
!1 === listener ? error1("Expected `%s` listener to be a function, instead got `false`.\n\nIf you used to conditionally omit it with %s={condition && value}, pass %s={condition ? value : undefined} instead.", registrationName, registrationName, registrationName) : error1("Expected `%s` listener to be a function, instead got a value of `%s` type.", registrationName, typeof listener);
}, normalizeHTML = function(parent, html) {
var testElement = "http://www.w3.org/1999/xhtml" === parent.namespaceURI ? parent.ownerDocument.createElement(parent.tagName) : parent.ownerDocument.createElementNS(parent.namespaceURI, parent.tagName);
var testElement = parent.namespaceURI === HTML_NAMESPACE$1 ? parent.ownerDocument.createElement(parent.tagName) : parent.ownerDocument.createElementNS(parent.namespaceURI, parent.tagName);
return testElement.innerHTML = html, testElement.innerHTML;
};
var validateDOMNesting = function() {
Expand Down Expand Up @@ -7172,7 +7177,7 @@
if (null !== propertyInfo) extraAttributeNames.delete(propertyInfo.attributeName), serverValue = getValueForProperty(domElement, propKey, nextProp, propertyInfo);
else {
var ownNamespace = parentNamespace;
if ("http://www.w3.org/1999/xhtml" === ownNamespace && (ownNamespace = getIntrinsicNamespace(tag)), "http://www.w3.org/1999/xhtml" === ownNamespace) extraAttributeNames.delete(propKey.toLowerCase());
if (ownNamespace === HTML_NAMESPACE$1 && (ownNamespace = getIntrinsicNamespace(tag)), ownNamespace === HTML_NAMESPACE$1) extraAttributeNames.delete(propKey.toLowerCase());
else {
var standardName = getPossibleStandardName(propKey);
null !== standardName && standardName !== propKey && (isMismatchDueToBadCasing = !0, extraAttributeNames.delete(standardName)), extraAttributeNames.delete(propKey);
Expand Down Expand Up @@ -7202,7 +7207,7 @@
else {
var type8, props9, rootContainerInstance1, hostContext, internalInstanceHandle, hostContextDev, domElement1, fiber, hostContext1, instance, type9, props7, hostContext2, internalInstanceHandle1, updatePayload1, type10, props8, instance7 = (type8 = type11, props9 = newProps, rootContainerInstance1 = rootContainerInstance, hostContext = currentHostContext, internalInstanceHandle = workInProgress, validateDOMNesting(type8, null, (hostContextDev = hostContext).ancestorInfo), ("string" == typeof props9.children || "number" == typeof props9.children) && validateDOMNesting(null, "" + props9.children, updatedAncestorInfo(hostContextDev.ancestorInfo, type8)), hostContextDev.namespace, precacheFiberNode(internalInstanceHandle, domElement1 = function(type, props, rootContainerElement, parentNamespace) {
var isCustomComponentTag, domElement, ownerDocument = getOwnerDocumentFromRootContainer(rootContainerElement), namespaceURI = parentNamespace;
if ("http://www.w3.org/1999/xhtml" === namespaceURI && (namespaceURI = getIntrinsicNamespace(type)), "http://www.w3.org/1999/xhtml" === namespaceURI) {
if (namespaceURI === HTML_NAMESPACE$1 && (namespaceURI = getIntrinsicNamespace(type)), namespaceURI === HTML_NAMESPACE$1) {
if ((isCustomComponentTag = isCustomComponent(type, props)) || type === type.toLowerCase() || error1("<%s /> is using incorrect casing. Use PascalCase for React components, or lowercase for HTML elements.", type), "script" === type) {
var div = ownerDocument.createElement("div");
div.innerHTML = "<script></script>";
Expand All @@ -7216,7 +7221,7 @@
props.multiple ? node.multiple = !0 : props.size && (node.size = props.size);
}
} else domElement = ownerDocument.createElementNS(namespaceURI, type);
return "http://www.w3.org/1999/xhtml" !== namespaceURI || isCustomComponentTag || "[object HTMLUnknownElement]" !== Object.prototype.toString.call(domElement) || Object.prototype.hasOwnProperty.call(warnedUnknownTags, type) || (warnedUnknownTags[type] = !0, error1("The tag <%s> is unrecognized in this browser. If you meant to render a React component, start its name with an uppercase letter.", type)), domElement;
return namespaceURI !== HTML_NAMESPACE$1 || isCustomComponentTag || "[object HTMLUnknownElement]" !== Object.prototype.toString.call(domElement) || Object.prototype.hasOwnProperty.call(warnedUnknownTags, type) || (warnedUnknownTags[type] = !0, error1("The tag <%s> is unrecognized in this browser. If you meant to render a React component, start its name with an uppercase letter.", type)), domElement;
}(type8, props9, rootContainerInstance1, hostContextDev.namespace)), updateFiberProps(domElement1, props9), domElement1);
appendAllChildren(instance7, workInProgress, !1, !1), workInProgress.stateNode = instance7, (function(domElement2, tag1, rawProps, rootContainerElement) {
var element, props, element1, props10, node, value, props11, isCustomComponentTag1 = isCustomComponent(tag1, rawProps);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
let getX;
var tmp = (getX = (a)=>a.#x
, "_");
, "_"), _x = new WeakMap();
console.log(getX(new class {
[tmp]() {
}
constructor(){
new WeakMap().set(this, {
_x.set(this, {
writable: !0,
value: 100
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ var obj1 = {
b: 26,
9671406556917009000000000: !1
};
obj1[26], obj1[26], obj1["26"], obj1["0b11010"], obj1.Infinity, obj2[26], obj2[26], obj2["26"], obj2["0B11010"], obj2[9671406556917009000000000], obj2["9.671406556917009e+24"], obj2.Infinity;
obj1[26], obj1[26], obj1["26"], obj1["0b11010"], obj1.a, obj1.b, obj1.bin1, obj1.Infinity, obj2[26], obj2[26], obj2["26"], obj2["0B11010"], obj2.a, obj2.b, obj2.bin2, obj2[9671406556917009000000000], obj2["9.671406556917009e+24"], obj2.Infinity;
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ var obj1 = {
b: 26,
9671406556917009000000000: !1
};
obj1[26], obj1[26], obj1["26"], obj1["0b11010"], obj1.Infinity, obj2[26], obj2[26], obj2["26"], obj2["0B11010"], obj2[9671406556917009000000000], obj2["9.671406556917009e+24"], obj2.Infinity;
obj1[26], obj1[26], obj1["26"], obj1["0b11010"], obj1.a, obj1.b, obj1.bin1, obj1.Infinity, obj2[26], obj2[26], obj2["26"], obj2["0B11010"], obj2.a, obj2.b, obj2.bin2, obj2[9671406556917009000000000], obj2["9.671406556917009e+24"], obj2.Infinity;
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ var obj1 = {
b: 26,
9671406556917009000000000: !1
};
obj1[26], obj1[26], obj1["26"], obj1["0b11010"], obj1.Infinity, obj2[26], obj2[26], obj2["26"], obj2["0B11010"], obj2[9671406556917009000000000], obj2["9.671406556917009e+24"], obj2.Infinity;
obj1[26], obj1[26], obj1["26"], obj1["0b11010"], obj1.a, obj1.b, obj1.bin1, obj1.Infinity, obj2[26], obj2[26], obj2["26"], obj2["0B11010"], obj2.a, obj2.b, obj2.bin2, obj2[9671406556917009000000000], obj2["9.671406556917009e+24"], obj2.Infinity;
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ var obj1 = {
b: 26,
9671406556917009000000000: !1
};
obj1[26], obj1[26], obj1["26"], obj1["0b11010"], obj1.Infinity, obj2[26], obj2[26], obj2["26"], obj2["0B11010"], obj2[9671406556917009000000000], obj2["9.671406556917009e+24"], obj2.Infinity;
obj1[26], obj1[26], obj1["26"], obj1["0b11010"], obj1.a, obj1.b, obj1.bin1, obj1.Infinity, obj2[26], obj2[26], obj2["26"], obj2["0B11010"], obj2.a, obj2.b, obj2.bin2, obj2[9671406556917009000000000], obj2["9.671406556917009e+24"], obj2.Infinity;
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ var obj1 = {
oct2: 19230,
54624374234151770000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000: !1
};
obj1[19230], obj1["0o45436"], obj1["19230"], obj1[19230], obj1.Infinity, obj2[19230], obj2["0O45436"], obj2["19230"], obj2[19230], obj2[54624374234151770000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000], obj2["5.462437423415177e+244"], obj2.Infinity;
obj1[19230], obj1["0o45436"], obj1["19230"], obj1[19230], obj1.a, obj1.b, obj1.oct1, obj1.Infinity, obj2[19230], obj2["0O45436"], obj2["19230"], obj2[19230], obj2.a, obj2.b, obj2.oct2, obj2[54624374234151770000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000], obj2["5.462437423415177e+244"], obj2.Infinity;
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ var obj1 = {
oct2: 19230,
54624374234151770000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000: !1
};
obj1[19230], obj1["0o45436"], obj1["19230"], obj1[19230], obj1.Infinity, obj2[19230], obj2["0O45436"], obj2["19230"], obj2[19230], obj2[54624374234151770000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000], obj2["5.462437423415177e+244"], obj2.Infinity;
obj1[19230], obj1["0o45436"], obj1["19230"], obj1[19230], obj1.a, obj1.b, obj1.oct1, obj1.Infinity, obj2[19230], obj2["0O45436"], obj2["19230"], obj2[19230], obj2.a, obj2.b, obj2.oct2, obj2[54624374234151770000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000], obj2["5.462437423415177e+244"], obj2.Infinity;
Loading

1 comment on commit f81b60f

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark

Benchmark suite Current: f81b60f Previous: 2febd77 Ratio
base_tr_fixer 23536 ns/iter (± 293) 25663 ns/iter (± 2219) 0.92
base_tr_resolver_and_hygiene 129373 ns/iter (± 24250) 152194 ns/iter (± 10828) 0.85
codegen_es2015 51770 ns/iter (± 297) 60027 ns/iter (± 5346) 0.86
codegen_es2016 51826 ns/iter (± 276) 56971 ns/iter (± 4069) 0.91
codegen_es2017 51882 ns/iter (± 309) 57982 ns/iter (± 3850) 0.89
codegen_es2018 52236 ns/iter (± 256) 58090 ns/iter (± 4721) 0.90
codegen_es2019 51655 ns/iter (± 365) 58356 ns/iter (± 5696) 0.89
codegen_es2020 52149 ns/iter (± 440) 56986 ns/iter (± 6841) 0.92
codegen_es3 52102 ns/iter (± 368) 57909 ns/iter (± 3982) 0.90
codegen_es5 51877 ns/iter (± 288) 56931 ns/iter (± 7413) 0.91
config_for_file 12775 ns/iter (± 5561) 15732 ns/iter (± 2031) 0.81
full_es2015 179501622 ns/iter (± 5228893) 205092349 ns/iter (± 9642977) 0.88
full_es2016 142526635 ns/iter (± 5283518) 158349091 ns/iter (± 8316796) 0.90
full_es2017 146698940 ns/iter (± 12553355) 162482466 ns/iter (± 11346444) 0.90
full_es2018 146103374 ns/iter (± 6828276) 163817466 ns/iter (± 16351472) 0.89
full_es2019 144980741 ns/iter (± 9231692) 163677221 ns/iter (± 18392461) 0.89
full_es2020 144380117 ns/iter (± 5767071) 161220389 ns/iter (± 8899514) 0.90
full_es3 209344027 ns/iter (± 17314544) 235099282 ns/iter (± 22791213) 0.89
full_es5 197336259 ns/iter (± 14381731) 222221534 ns/iter (± 14635001) 0.89
parser 626696 ns/iter (± 15689) 694938 ns/iter (± 67209) 0.90
transforms_es2015 989363 ns/iter (± 35788) 1147227 ns/iter (± 184510) 0.86
transforms_es2016 588852 ns/iter (± 26412) 742980 ns/iter (± 49219) 0.79
transforms_es2017 574587 ns/iter (± 55109) 647348 ns/iter (± 91649) 0.89
transforms_es2018 564706 ns/iter (± 12614) 625498 ns/iter (± 50441) 0.90
transforms_es2019 553561 ns/iter (± 18432) 626770 ns/iter (± 94407) 0.88
transforms_es2020 544136 ns/iter (± 49185) 599681 ns/iter (± 62840) 0.91
transforms_es3 1139813 ns/iter (± 49006) 1323136 ns/iter (± 94250) 0.86
transforms_es5 989612 ns/iter (± 31630) 1206767 ns/iter (± 227181) 0.82
ser_ast_node 149 ns/iter (± 4) 169 ns/iter (± 10) 0.88
ser_serde 158 ns/iter (± 2) 180 ns/iter (± 13) 0.88
emit_colors 16294262 ns/iter (± 20757894) 15158810 ns/iter (± 20423217) 1.07
emit_large 98286719 ns/iter (± 145814817) 85292930 ns/iter (± 133003229) 1.15
base_clone 2326649 ns/iter (± 19490) 2614049 ns/iter (± 147924) 0.89
fold_span 3867120 ns/iter (± 57507) 4369366 ns/iter (± 376564) 0.89
fold_span_panic 4137613 ns/iter (± 30344) 4530956 ns/iter (± 361179) 0.91
visit_mut_span 2844666 ns/iter (± 42313) 3108773 ns/iter (± 223877) 0.92
visit_mut_span_panic 2898957 ns/iter (± 78664) 3191343 ns/iter (± 181991) 0.91
boxing_boxed 143 ns/iter (± 0) 164 ns/iter (± 24) 0.87
boxing_boxed_clone 67 ns/iter (± 0) 76 ns/iter (± 9) 0.88
boxing_unboxed 130 ns/iter (± 0) 147 ns/iter (± 10) 0.88
boxing_unboxed_clone 64 ns/iter (± 0) 71 ns/iter (± 6) 0.90

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

Please sign in to comment.