[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
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
648 changed files with 19641 additions and 20364 deletions

View file

@ -4,7 +4,7 @@ expression: parsed.expr()
---
Name(
ExprName {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 0..5,
id: Name("first"),
ctx: Load,

View file

@ -4,20 +4,20 @@ expression: parsed.syntax()
---
Module(
ModModule {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 0..929,
body: [
Expr(
StmtExpr {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 21..42,
value: BinOp(
ExprBinOp {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 27..40,
left: Name(
ExprName {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 27..28,
id: Name("a"),
ctx: Load,
@ -26,7 +26,7 @@ Module(
op: Mod,
right: Name(
ExprName {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 39..40,
id: Name("b"),
ctx: Load,
@ -38,7 +38,7 @@ Module(
),
IpyEscapeCommand(
StmtIpyEscapeCommand {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 66..73,
kind: Help2,
value: "a.foo",
@ -46,7 +46,7 @@ Module(
),
IpyEscapeCommand(
StmtIpyEscapeCommand {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 74..80,
kind: Help,
value: "a.foo",
@ -54,7 +54,7 @@ Module(
),
IpyEscapeCommand(
StmtIpyEscapeCommand {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 81..88,
kind: Help,
value: "a.foo",
@ -62,7 +62,7 @@ Module(
),
IpyEscapeCommand(
StmtIpyEscapeCommand {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 89..100,
kind: Help2,
value: "a.foo()",
@ -70,7 +70,7 @@ Module(
),
IpyEscapeCommand(
StmtIpyEscapeCommand {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 115..128,
kind: Magic,
value: "timeit a = b",
@ -78,7 +78,7 @@ Module(
),
IpyEscapeCommand(
StmtIpyEscapeCommand {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 129..147,
kind: Magic,
value: "timeit foo(b) % 3",
@ -86,7 +86,7 @@ Module(
),
IpyEscapeCommand(
StmtIpyEscapeCommand {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 148..176,
kind: Magic,
value: "alias showPath pwd && ls -a",
@ -94,7 +94,7 @@ Module(
),
IpyEscapeCommand(
StmtIpyEscapeCommand {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 177..205,
kind: Magic,
value: "timeit a = foo(b); b = 2",
@ -102,7 +102,7 @@ Module(
),
IpyEscapeCommand(
StmtIpyEscapeCommand {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 206..226,
kind: Magic,
value: "matplotlib --inline",
@ -110,7 +110,7 @@ Module(
),
IpyEscapeCommand(
StmtIpyEscapeCommand {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 227..253,
kind: Magic,
value: "matplotlib --inline",
@ -118,7 +118,7 @@ Module(
),
IpyEscapeCommand(
StmtIpyEscapeCommand {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 277..309,
kind: Shell,
value: "pwd && ls -a | sed 's/^/\\ /'",
@ -126,7 +126,7 @@ Module(
),
IpyEscapeCommand(
StmtIpyEscapeCommand {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 310..347,
kind: Shell,
value: "pwd && ls -a | sed 's/^/\\\\ /'",
@ -134,7 +134,7 @@ Module(
),
IpyEscapeCommand(
StmtIpyEscapeCommand {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 348..393,
kind: ShCap,
value: "cd /Users/foo/Library/Application\\ Support/",
@ -142,21 +142,19 @@ Module(
),
FunctionDef(
StmtFunctionDef {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 566..626,
is_async: false,
decorator_list: [],
name: Identifier {
id: Name("foo"),
range: 570..573,
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
},
type_params: None,
parameters: Parameters {
range: 573..575,
node_index: AtomicNodeIndex(
0,
),
node_index: NodeIndex(None),
posonlyargs: [],
args: [],
vararg: None,
@ -167,16 +165,16 @@ Module(
body: [
Return(
StmtReturn {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 581..626,
value: Some(
Compare(
ExprCompare {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 598..620,
left: Name(
ExprName {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 598..599,
id: Name("a"),
ctx: Load,
@ -188,7 +186,7 @@ Module(
comparators: [
Name(
ExprName {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 619..620,
id: Name("b"),
ctx: Load,
@ -205,7 +203,7 @@ Module(
),
IpyEscapeCommand(
StmtIpyEscapeCommand {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 656..664,
kind: Paren,
value: "foo 1 2",
@ -213,7 +211,7 @@ Module(
),
IpyEscapeCommand(
StmtIpyEscapeCommand {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 665..673,
kind: Quote2,
value: "foo 1 2",
@ -221,7 +219,7 @@ Module(
),
IpyEscapeCommand(
StmtIpyEscapeCommand {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 674..682,
kind: Quote,
value: "foo 1 2",
@ -229,12 +227,12 @@ Module(
),
For(
StmtFor {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 711..737,
is_async: false,
target: Name(
ExprName {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 715..716,
id: Name("a"),
ctx: Store,
@ -242,11 +240,11 @@ Module(
),
iter: Call(
ExprCall {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 720..728,
func: Name(
ExprName {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 720..725,
id: Name("range"),
ctx: Load,
@ -254,11 +252,11 @@ Module(
),
arguments: Arguments {
range: 725..728,
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
args: [
NumberLiteral(
ExprNumberLiteral {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 726..727,
value: Int(
5,
@ -273,7 +271,7 @@ Module(
body: [
IpyEscapeCommand(
StmtIpyEscapeCommand {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 734..737,
kind: Shell,
value: "ls",
@ -285,12 +283,12 @@ Module(
),
Assign(
StmtAssign {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 739..748,
targets: [
Name(
ExprName {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 739..741,
id: Name("p1"),
ctx: Store,
@ -299,7 +297,7 @@ Module(
],
value: IpyEscapeCommand(
ExprIpyEscapeCommand {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 744..748,
kind: Shell,
value: "pwd",
@ -309,11 +307,11 @@ Module(
),
AnnAssign(
StmtAnnAssign {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 749..763,
target: Name(
ExprName {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 749..751,
id: Name("p2"),
ctx: Store,
@ -321,7 +319,7 @@ Module(
),
annotation: Name(
ExprName {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 753..756,
id: Name("str"),
ctx: Load,
@ -330,7 +328,7 @@ Module(
value: Some(
IpyEscapeCommand(
ExprIpyEscapeCommand {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 759..763,
kind: Shell,
value: "pwd",
@ -342,12 +340,12 @@ Module(
),
Assign(
StmtAssign {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 764..784,
targets: [
Name(
ExprName {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 764..767,
id: Name("foo"),
ctx: Store,
@ -356,7 +354,7 @@ Module(
],
value: IpyEscapeCommand(
ExprIpyEscapeCommand {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 770..784,
kind: Magic,
value: "foo bar",
@ -366,7 +364,7 @@ Module(
),
IpyEscapeCommand(
StmtIpyEscapeCommand {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 786..791,
kind: Magic,
value: " foo",
@ -374,12 +372,12 @@ Module(
),
Assign(
StmtAssign {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 792..813,
targets: [
Name(
ExprName {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 792..795,
id: Name("foo"),
ctx: Store,
@ -388,7 +386,7 @@ Module(
],
value: IpyEscapeCommand(
ExprIpyEscapeCommand {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 798..813,
kind: Magic,
value: "foo # comment",
@ -398,7 +396,7 @@ Module(
),
IpyEscapeCommand(
StmtIpyEscapeCommand {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 838..842,
kind: Help,
value: "foo",
@ -406,7 +404,7 @@ Module(
),
IpyEscapeCommand(
StmtIpyEscapeCommand {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 843..852,
kind: Help2,
value: "foo.bar",
@ -414,7 +412,7 @@ Module(
),
IpyEscapeCommand(
StmtIpyEscapeCommand {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 853..865,
kind: Help,
value: "foo.bar.baz",
@ -422,7 +420,7 @@ Module(
),
IpyEscapeCommand(
StmtIpyEscapeCommand {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 866..874,
kind: Help2,
value: "foo[0]",
@ -430,7 +428,7 @@ Module(
),
IpyEscapeCommand(
StmtIpyEscapeCommand {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 875..885,
kind: Help,
value: "foo[0][1]",
@ -438,7 +436,7 @@ Module(
),
IpyEscapeCommand(
StmtIpyEscapeCommand {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 886..905,
kind: Help2,
value: "foo.bar[0].baz[1]",
@ -446,7 +444,7 @@ Module(
),
IpyEscapeCommand(
StmtIpyEscapeCommand {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 906..929,
kind: Help2,
value: "foo.bar[0].baz[2].egg",

View file

@ -5,12 +5,12 @@ expression: suite
[
Assign(
StmtAssign {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 0..37,
targets: [
Name(
ExprName {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 0..1,
id: Name("x"),
ctx: Store,
@ -19,13 +19,13 @@ expression: suite
],
value: StringLiteral(
ExprStringLiteral {
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
range: 4..37,
value: StringLiteralValue {
inner: Single(
StringLiteral {
range: 4..37,
node_index: AtomicNodeIndex(..),
node_index: NodeIndex(None),
value: "\u{8}another cool trick",
flags: StringLiteralFlags {
quote_style: Double,