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,
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

View File

@ -246,12 +246,15 @@ for different purposes:
optimizations on it.
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
in a special allocator called an _arena_. Then, we pass around references to
the values allocated in the arena. This allows us to make sure that identical
values (e.g. types in your program) are only allocated once and can be compared
cheaply by comparing pointers. Many of the intermediate representations are
interned.
This is a performance and memory optimization in which we allocate the values in
a special allocator called an
_[arena]_. Then, we pass
around references to the values allocated in the arena. This allows us to make
sure that identical values (e.g. types in your program) are only allocated once
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