Add links for arena and interning. (#1868)

Co-authored-by: Yuki Okushi <jtitor@2k36.org>
This commit is contained in:
Arthur Milchior 2024-01-29 20:55:16 +01:00 committed by GitHub
parent e73ca04574
commit e8c0bb0557
2 changed files with 13 additions and 7 deletions

View File

@ -4,7 +4,10 @@ Rustc tries to be pretty careful how it manages memory. The compiler allocates
_a lot_ of data structures throughout compilation, and if we are not careful, _a lot_ of data structures throughout compilation, and if we are not careful,
it will take a lot of time and space to do so. it will take a lot of time and space to do so.
One of the main way the compiler manages this is using arenas and interning. One of the main way the compiler manages this is using [arena]s and [interning].
[arena]: https://en.wikipedia.org/wiki/Region-based_memory_management
[interning]: https://en.wikipedia.org/wiki/String_interning
## Arenas and Interning ## Arenas and Interning

View File

@ -246,12 +246,15 @@ for different purposes:
optimizations on it. optimizations on it.
One other thing to note is that many values in the compiler are _interned_. One other thing to note is that many values in the compiler are _interned_.
This is a performance and memory optimization in which we allocate the values This is a performance and memory optimization in which we allocate the values in
in a special allocator called an _arena_. Then, we pass around references to a special allocator called an
the values allocated in the arena. This allows us to make sure that identical _[arena]_. Then, we pass
values (e.g. types in your program) are only allocated once and can be compared around references to the values allocated in the arena. This allows us to make
cheaply by comparing pointers. Many of the intermediate representations are sure that identical values (e.g. types in your program) are only allocated once
interned. and can be compared cheaply by comparing pointers. Many of the intermediate
representations are interned.
[arena]: https://en.wikipedia.org/wiki/Region-based_memory_management
### Queries ### Queries