Files
zig/src
mlugg a6ca20b9a1 compiler: change representation of closures
This changes the representation of closures in Zir and Sema. Rather than
a pair of instructions `closure_capture` and `closure_get`, the system
now works as follows:

* Each ZIR type declaration (`struct_decl` etc) contains a list of
  captures in the form of ZIR indices (or, for efficiency, direct
  references to parent captures). This is an ordered list; indexes into
  it are used to refer to captured values.
* The `extended(closure_get)` ZIR instruction refers to a value in this
  list via a 16-bit index (limiting this index to 16 bits allows us to
  store this in `extended`).
* `Module.Namespace` has a new field `captures` which contains the list
  of values captured in a given namespace. This is initialized based on
  the ZIR capture list whenever a type declaration is analyzed.

This change eliminates `CaptureScope` from semantic analysis, which is a
nice simplification; but the main motivation here is that this change is
a prerequisite for #18816.
2024-03-06 21:26:37 +00:00
..
2024-02-01 15:22:36 +02:00
2024-02-26 22:26:19 -07:00
2024-02-26 21:51:19 -07:00
2024-02-26 21:35:30 -07:00
2024-01-10 09:30:24 -08:00
2024-02-26 21:35:33 -07:00
2024-02-26 17:03:20 -08:00
2024-03-01 17:42:54 -08:00