Index: src/ast/ast-numbering.h |
diff --git a/src/ast/ast-numbering.h b/src/ast/ast-numbering.h |
index 9c178b4c517743a218a3b4524e98bb8c99ea6a2c..c9c003c9501a3560846c0125289343babc1b87e8 100644 |
--- a/src/ast/ast-numbering.h |
+++ b/src/ast/ast-numbering.h |
@@ -14,12 +14,25 @@ class Isolate; |
class Zone; |
namespace AstNumbering { |
-// Assign type feedback IDs and bailout IDs to an AST node tree. For a |
-// generator function, also annotate the function itself and any loops therein |
-// with the number of contained yields. |
+// Assign type feedback IDs, bailout IDs, and generator yield IDs to an AST node |
+// tree. |
bool Renumber(Isolate* isolate, Zone* zone, FunctionLiteral* function); |
} |
+// Some details on yield IDs |
+// ------------------------- |
+// |
+// In order to assist Ignition in generating bytecode for a generator function, |
+// we assign a unique number (the yield ID) to each Yield node in its AST. We |
+// also annotate loops with the number of yields they contain |
+// (loop->yield_count()) and the smallest ID of those (loop->first_yield_id()), |
+// and we annotate the function itself with the number of yields it contains |
+// (function->yield_count()). |
+// |
+// The way in which we choose the IDs is simply by enumerating the Yield nodes, |
+// starting with 0. While Ignition does not completely depend on this particular |
+// scheme, it does rely on some of its properties. |
+ |
} // namespace internal |
} // namespace v8 |