[ty] Shrink size of AstNodeRef (#20028)

## Summary

Removes the `module_ptr` field from `AstNodeRef` in release mode, and
change `NodeIndex` to a `NonZeroU32` to reduce the size of
`Option<AstNodeRef<_>>` fields.

I believe CI runs in debug mode, so this won't show up in the memory
report, but this reduces memory by ~2% in release mode.
This commit is contained in:
Ibraheem Ahmed
2025-08-22 17:03:22 -04:00
committed by GitHub
parent 886c4e4773
commit 7abc41727b
648 changed files with 19641 additions and 20364 deletions

View File

@@ -112,7 +112,7 @@ impl Parser<'_> {
lhs = Pattern::MatchOr(ast::PatternMatchOr {
range: self.node_range(start),
patterns,
node_index: AtomicNodeIndex::dummy(),
node_index: AtomicNodeIndex::NONE,
});
}
@@ -128,7 +128,7 @@ impl Parser<'_> {
range: self.node_range(start),
name: Some(ident),
pattern: Some(Box::new(lhs)),
node_index: AtomicNodeIndex::dummy(),
node_index: AtomicNodeIndex::NONE,
});
}
@@ -255,7 +255,7 @@ impl Parser<'_> {
keys,
patterns,
rest,
node_index: AtomicNodeIndex::dummy(),
node_index: AtomicNodeIndex::NONE,
}
}
@@ -279,7 +279,7 @@ impl Parser<'_> {
} else {
Some(ident)
},
node_index: AtomicNodeIndex::dummy(),
node_index: AtomicNodeIndex::NONE,
}
}
@@ -319,7 +319,7 @@ impl Parser<'_> {
return Pattern::MatchSequence(ast::PatternMatchSequence {
patterns: vec![],
range: self.node_range(start),
node_index: AtomicNodeIndex::dummy(),
node_index: AtomicNodeIndex::NONE,
});
}
@@ -374,7 +374,7 @@ impl Parser<'_> {
ast::PatternMatchSequence {
range: self.node_range(start),
patterns,
node_index: AtomicNodeIndex::dummy(),
node_index: AtomicNodeIndex::NONE,
}
}
@@ -389,7 +389,7 @@ impl Parser<'_> {
Pattern::MatchSingleton(ast::PatternMatchSingleton {
value: Singleton::None,
range: self.node_range(start),
node_index: AtomicNodeIndex::dummy(),
node_index: AtomicNodeIndex::NONE,
})
}
TokenKind::True => {
@@ -397,7 +397,7 @@ impl Parser<'_> {
Pattern::MatchSingleton(ast::PatternMatchSingleton {
value: Singleton::True,
range: self.node_range(start),
node_index: AtomicNodeIndex::dummy(),
node_index: AtomicNodeIndex::NONE,
})
}
TokenKind::False => {
@@ -405,7 +405,7 @@ impl Parser<'_> {
Pattern::MatchSingleton(ast::PatternMatchSingleton {
value: Singleton::False,
range: self.node_range(start),
node_index: AtomicNodeIndex::dummy(),
node_index: AtomicNodeIndex::NONE,
})
}
TokenKind::String | TokenKind::FStringStart | TokenKind::TStringStart => {
@@ -414,7 +414,7 @@ impl Parser<'_> {
Pattern::MatchValue(ast::PatternMatchValue {
value: Box::new(str),
range: self.node_range(start),
node_index: AtomicNodeIndex::dummy(),
node_index: AtomicNodeIndex::NONE,
})
}
TokenKind::Complex => {
@@ -427,10 +427,10 @@ impl Parser<'_> {
value: Box::new(Expr::NumberLiteral(ast::ExprNumberLiteral {
value: Number::Complex { real, imag },
range,
node_index: AtomicNodeIndex::dummy(),
node_index: AtomicNodeIndex::NONE,
})),
range,
node_index: AtomicNodeIndex::dummy(),
node_index: AtomicNodeIndex::NONE,
})
}
TokenKind::Int => {
@@ -443,10 +443,10 @@ impl Parser<'_> {
value: Box::new(Expr::NumberLiteral(ast::ExprNumberLiteral {
value: Number::Int(value),
range,
node_index: AtomicNodeIndex::dummy(),
node_index: AtomicNodeIndex::NONE,
})),
range,
node_index: AtomicNodeIndex::dummy(),
node_index: AtomicNodeIndex::NONE,
})
}
TokenKind::Float => {
@@ -459,10 +459,10 @@ impl Parser<'_> {
value: Box::new(Expr::NumberLiteral(ast::ExprNumberLiteral {
value: Number::Float(value),
range,
node_index: AtomicNodeIndex::dummy(),
node_index: AtomicNodeIndex::NONE,
})),
range,
node_index: AtomicNodeIndex::dummy(),
node_index: AtomicNodeIndex::NONE,
})
}
kind => {
@@ -489,7 +489,7 @@ impl Parser<'_> {
return Pattern::MatchValue(ast::PatternMatchValue {
value: Box::new(Expr::UnaryOp(unary_expr)),
range: self.node_range(start),
node_index: AtomicNodeIndex::dummy(),
node_index: AtomicNodeIndex::NONE,
});
}
}
@@ -509,7 +509,7 @@ impl Parser<'_> {
Pattern::MatchValue(ast::PatternMatchValue {
value: Box::new(attribute),
range: self.node_range(start),
node_index: AtomicNodeIndex::dummy(),
node_index: AtomicNodeIndex::NONE,
})
} else {
// test_ok match_as_pattern_soft_keyword
@@ -530,7 +530,7 @@ impl Parser<'_> {
range: ident.range,
pattern: None,
name: if &ident == "_" { None } else { Some(ident) },
node_index: AtomicNodeIndex::dummy(),
node_index: AtomicNodeIndex::NONE,
})
}
} else {
@@ -544,12 +544,12 @@ impl Parser<'_> {
range: self.missing_node_range(),
id: Name::empty(),
ctx: ExprContext::Invalid,
node_index: AtomicNodeIndex::dummy(),
node_index: AtomicNodeIndex::NONE,
});
Pattern::MatchValue(ast::PatternMatchValue {
range: invalid_node.range(),
value: Box::new(invalid_node),
node_index: AtomicNodeIndex::dummy(),
node_index: AtomicNodeIndex::NONE,
})
}
}
@@ -605,10 +605,10 @@ impl Parser<'_> {
op: operator,
right: rhs_value,
range,
node_index: AtomicNodeIndex::dummy(),
node_index: AtomicNodeIndex::NONE,
})),
range,
node_index: AtomicNodeIndex::dummy(),
node_index: AtomicNodeIndex::NONE,
}
}
@@ -648,14 +648,14 @@ impl Parser<'_> {
range: ident.range(),
id: ident.id,
ctx: ExprContext::Load,
node_index: AtomicNodeIndex::dummy(),
node_index: AtomicNodeIndex::NONE,
}))
} else {
Box::new(Expr::Name(ast::ExprName {
range: ident.range(),
id: Name::empty(),
ctx: ExprContext::Invalid,
node_index: AtomicNodeIndex::dummy(),
node_index: AtomicNodeIndex::NONE,
}))
}
}
@@ -707,7 +707,7 @@ impl Parser<'_> {
ast::Identifier {
id: Name::empty(),
range: parser.missing_node_range(),
node_index: AtomicNodeIndex::dummy(),
node_index: AtomicNodeIndex::NONE,
}
};
@@ -717,7 +717,7 @@ impl Parser<'_> {
attr: key,
pattern: value_pattern,
range: parser.node_range(pattern_start),
node_index: AtomicNodeIndex::dummy(),
node_index: AtomicNodeIndex::NONE,
});
} else {
has_seen_pattern = true;
@@ -743,10 +743,10 @@ impl Parser<'_> {
patterns,
keywords,
range: self.node_range(arguments_start),
node_index: AtomicNodeIndex::dummy(),
node_index: AtomicNodeIndex::NONE,
},
range: self.node_range(start),
node_index: AtomicNodeIndex::dummy(),
node_index: AtomicNodeIndex::NONE,
}
}
}