[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:
@@ -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,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user