Commit 33ed71d
docs: separate what side tables fix from what they do not
I had been treating "move it to a side table" as the answer to
everything in the union section, and attributing costs to it that belong
elsewhere. Two claims were wrong.
The identifier patching in the generators does not come from where the
view is stored. generate.h:469 maps a union field's ident to
(*prefix.name()), a dereference of what a generated getter returns,
because the field may be absent; code needing the bare name strips the
wrapper. A generator emits that for as long as unions exist.
And the invariant and the null padding go away because the duplication
goes away - branches become the single source - not because the view
moved off the node. Those are separable: you could stop duplicating and
still keep the view on the node.
The section now splits the three symptoms by cause: duplication, doing
the derivation in the parser, and unions themselves. Storing analysis
results in a side table is a consequence of the first two, not a cause of
any of them, and reading it the other way makes it look like it solves
the third as well.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>1 parent 81a2c91 commit 33ed71d
1 file changed
Lines changed: 24 additions & 6 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
350 | 350 | | |
351 | 351 | | |
352 | 352 | | |
353 | | - | |
354 | | - | |
355 | | - | |
356 | | - | |
| 353 | + | |
357 | 354 | | |
358 | | - | |
359 | | - | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
360 | 378 | | |
361 | 379 | | |
362 | 380 | | |
| |||
0 commit comments