mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02:00
[DOC] Add ZJIT glossary table
This commit is contained in:
parent
c0b9480bbc
commit
77de6b4eb1
2 changed files with 31 additions and 1 deletions
|
@ -8,7 +8,7 @@ Just a list of acronyms I've run across in the Ruby source code and their meanin
|
|||
| `bop` | Basic Operator. Relates to methods like `Integer` plus and minus which can be optimized as long as they haven't been redefined. |
|
||||
| `cc` | Call Cache. An inline cache structure for the call site. Stored in the `cd` |
|
||||
| `cd` | Call Data. A data structure that points at the `ci` and the `cc`. `iseq` objects points at the `cd`, and access call information and call caches via this structure |
|
||||
| CFG | Control Flow Graph. Graph representation of all paths that might be traversed through a program during execution |
|
||||
| CFG | Control Flow Graph. Representation of the program where all control-flow and data dependencies have been made explicit by unrolling the stack and local variables. |
|
||||
| `cfp`| Control Frame Pointer. Represents a Ruby stack frame. Calling a method pushes a new frame (cfp), returning pops a frame. Points at the `pc`, `sp`, `ep`, and the corresponding `iseq`|
|
||||
| `ci` | Call Information. Refers to an `rb_callinfo` struct. Contains call information about the call site, including number of parameters to be passed, whether it they are keyword arguments or not, etc. Used in conjunction with the `cc` and `cd`. |
|
||||
| `cref` | Class reference. A structure pointing to the class reference where `klass_or_self`, visibility scope, and refinements are stored. It also stores a pointer to the next class in the hierarchy referenced by `rb_cref_struct * next`. The Class reference is lexically scoped. |
|
||||
|
|
30
doc/zjit.md
30
doc/zjit.md
|
@ -91,3 +91,33 @@ You can also run a single test case by matching the method name:
|
|||
```
|
||||
make test-all TESTS="test/ruby/test_zjit.rb -n TestZJIT#test_putobject"
|
||||
```
|
||||
|
||||
## ZJIT Glossary
|
||||
|
||||
This glossary contains terms that are helpful for understanding ZJIT.
|
||||
|
||||
Please note that some terms may appear in CRuby internals too but with different meanings.
|
||||
|
||||
| Term | Definition |
|
||||
| --- | -----------|
|
||||
| HIR | High-level Intermediate Representation. High-level (Ruby semantics) graph representation in static single-assignment (SSA) form |
|
||||
| LIR | Low-level Intermediate Representation. Low-level IR used in the backend for assembly generation |
|
||||
| SSA | Static Single Assignment. A form where each variable is assigned exactly once |
|
||||
| `opnd` | Operand. An operand to an IR instruction (can be register, memory, immediate, etc.) |
|
||||
| `dst` | Destination. The output operand of an instruction where the result is stored |
|
||||
| VReg | Virtual Register. A virtual register that gets lowered to physical register or memory |
|
||||
| `insn_id` | Instruction ID. An index of an instruction in a function |
|
||||
| `block_id` | The index of a basic block, which effectively acts like a pointer |
|
||||
| `branch` | Control flow edge between basic blocks in the compiled code |
|
||||
| `cb` | Code Block. Memory region for generated machine code |
|
||||
| `entry` | The starting address of compiled code for an ISEQ |
|
||||
| Patch Point | Location in generated code that can be modified later in case assumptions get invalidated |
|
||||
| Frame State | Captured state of the Ruby stack frame at a specific point for deoptimization |
|
||||
| Guard | A run-time check that ensures assumptions are still valid |
|
||||
| `invariant` | An assumption that JIT code relies on, requiring invalidation if broken |
|
||||
| Deopt | Deoptimization. Process of falling back from JIT code to interpreter |
|
||||
| Side Exit | Exit from JIT code back to interpreter |
|
||||
| Type Lattice | Hierarchy of types used for type inference and optimization |
|
||||
| Constant Folding | Optimization that evaluates constant expressions at compile time |
|
||||
| RSP | x86-64 stack pointer register used for native stack operations |
|
||||
| Register Spilling | Process of moving register values to memory when running out of physical registers |
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue