| Index: src/ast/ast-numbering.h
|
| diff --git a/src/ast/ast-numbering.h b/src/ast/ast-numbering.h
|
| index 9c178b4c517743a218a3b4524e98bb8c99ea6a2c..a1d31373e7300dbbcc57ec949e10e5f5ba826038 100644
|
| --- a/src/ast/ast-numbering.h
|
| +++ b/src/ast/ast-numbering.h
|
| @@ -14,12 +14,27 @@ 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.
|
| +// Ignition relies on the following properties:
|
| +// - For each loop l and each yield y of l:
|
| +// l.first_yield_id <= y.yield_id < l.first_yield_id + l.yield_count
|
| +// - For the generator function f itself and each yield y of f:
|
| +// 0 <= y.yield_id < f.yield_count
|
| +
|
| } // namespace internal
|
| } // namespace v8
|
|
|
|
|