summaryrefslogtreecommitdiff
path: root/Documentation
diff options
context:
space:
mode:
authorAlfred Myers <alfredmyers@users.noreply.github.com>2017-12-22 16:50:16 -0300
committerJan Kotas <jkotas@microsoft.com>2017-12-22 11:50:16 -0800
commit9442717a9455847912a18fd174909a5c8c253334 (patch)
tree32a8d332d12f88d13d9223ee2b07259a4d3f5420 /Documentation
parentc127fa74fde9143e39d1cdf979aee21f31d3d31d (diff)
downloadcoreclr-9442717a9455847912a18fd174909a5c8c253334.tar.gz
coreclr-9442717a9455847912a18fd174909a5c8c253334.tar.bz2
coreclr-9442717a9455847912a18fd174909a5c8c253334.zip
Minor tweaks (#15590)
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/botr/ryujit-overview.md5
1 files changed, 3 insertions, 2 deletions
diff --git a/Documentation/botr/ryujit-overview.md b/Documentation/botr/ryujit-overview.md
index 791f483fae..bf8b2d4890 100644
--- a/Documentation/botr/ryujit-overview.md
+++ b/Documentation/botr/ryujit-overview.md
@@ -38,8 +38,9 @@ Both HIR and LIR blocks are composed of `GenTree` nodes that define the operatio
An HIR block is composed of a doubly-linked list of statement nodes (`GenTreeStmt`), each of which references a single expression tree (`gtStmtExpr`). The `GenTree` nodes in this tree execute in "tree order", which is defined as the order produced by a depth-first, left-to-right traversal of the tree, with two notable exceptions:
- Binary nodes marked with the `GTF_REVERSE_OPS` flag execute their right operand tree (`gtOp2`) before their left operand tree (`gtOp1`)
-- Dynamically-sized block copy nodes where `gtEvalSizeFirst` is `true` execute the `gtDynamicSize` tree before executing their other operand trees
-In addition to tree order, HIR also requires that no SDSU temp is defined in one statement and used in another. In situations where the requirements of tree and statement order prove onerous (e.g. when code must execute at a particular point in a function), HIR provides `GT_COMMA` nodes as an escape valve: these nodes consume and discard the results of their left-hand side while producing a copy of the vaule produced by their right-hand side. This allows the compiler to insert code in the middle of a statement without requiring that the statement be split apart.
+- Dynamically-sized block copy nodes where `gtEvalSizeFirst` is `true` execute the `gtDynamicSize` tree before executing their other operand trees.
+
+In addition to tree order, HIR also requires that no SDSU temp is defined in one statement and used in another. In situations where the requirements of tree and statement order prove onerous (e.g. when code must execute at a particular point in a function), HIR provides `GT_COMMA` nodes as an escape valve: these nodes consume and discard the results of their left-hand side while producing a copy of the value produced by their right-hand side. This allows the compiler to insert code in the middle of a statement without requiring that the statement be split apart.
An LIR block is composed of a doubly-linked list of `GenTree` nodes, each of which describes a single operation in the method. These nodes execute in the order given by the list; there is no relationship between the order in which a node's operands appear and the order in which the operators that produced those operands execute. The only exception to this rule occurs after the register allocator, which may introduce `GT_COPY` and `GT_RELOAD` nodes that execute in "spill order". Spill order is defined as the order in which the register allocator visits a node's operands. For correctness, the code generator must generate code for spills, reloads, and `GT_COPY`/`GT_RELOAD` nodes in this order.