Auto merge of #82422 - petrochenkov:allunst, r=oli-obk
expand: Do not allocate `Lrc` for `allow_internal_unstable` list unless necessary This allocation is done for any macro defined in the current crate, or used from a different crate. EDIT: This also removes an `Lrc` increment from each *use* of such macro, which may be more significant. Noticed when reviewing https://github.com/rust-lang/rust/pull/82367. This probably doesn't matter, but let's do a perf run.
This commit is contained in:
commit
338647db73
1 changed files with 3 additions and 2 deletions
|
@ -775,7 +775,7 @@ impl SyntaxExtension {
|
||||||
attrs: &[ast::Attribute],
|
attrs: &[ast::Attribute],
|
||||||
) -> SyntaxExtension {
|
) -> SyntaxExtension {
|
||||||
let allow_internal_unstable =
|
let allow_internal_unstable =
|
||||||
Some(attr::allow_internal_unstable(sess, &attrs).collect::<Vec<Symbol>>().into());
|
attr::allow_internal_unstable(sess, &attrs).collect::<Vec<Symbol>>();
|
||||||
|
|
||||||
let mut local_inner_macros = false;
|
let mut local_inner_macros = false;
|
||||||
if let Some(macro_export) = sess.find_by_name(attrs, sym::macro_export) {
|
if let Some(macro_export) = sess.find_by_name(attrs, sym::macro_export) {
|
||||||
|
@ -803,7 +803,8 @@ impl SyntaxExtension {
|
||||||
SyntaxExtension {
|
SyntaxExtension {
|
||||||
kind,
|
kind,
|
||||||
span,
|
span,
|
||||||
allow_internal_unstable,
|
allow_internal_unstable: (!allow_internal_unstable.is_empty())
|
||||||
|
.then(|| allow_internal_unstable.into()),
|
||||||
allow_internal_unsafe: sess.contains_name(attrs, sym::allow_internal_unsafe),
|
allow_internal_unsafe: sess.contains_name(attrs, sym::allow_internal_unsafe),
|
||||||
local_inner_macros,
|
local_inner_macros,
|
||||||
stability: stability.map(|(s, _)| s),
|
stability: stability.map(|(s, _)| s),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue