Add links for arena and interning. (#1868)
Co-authored-by: Yuki Okushi <jtitor@2k36.org>
This commit is contained in:
parent
e73ca04574
commit
e8c0bb0557
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue