| Index: src/full-codegen.h
|
| diff --git a/src/full-codegen.h b/src/full-codegen.h
|
| index c4f3fcc722b3252ce6970c87abb02b3a8a4423f7..b9647c2ea398524fc4485e7bb1d6ea34180b08bd 100644
|
| --- a/src/full-codegen.h
|
| +++ b/src/full-codegen.h
|
| @@ -92,7 +92,7 @@ class FullCodeGenerator: public AstVisitor {
|
| bailout_entries_(info->HasDeoptimizationSupport()
|
| ? info->function()->ast_node_count() : 0,
|
| info->zone()),
|
| - stack_checks_(2, info->zone()), // There's always at least one.
|
| + back_edges_(2, info->zone()),
|
| type_feedback_cells_(info->HasDeoptimizationSupport()
|
| ? info->function()->ast_node_count() : 0,
|
| info->zone()),
|
| @@ -135,6 +135,7 @@ class FullCodeGenerator: public AstVisitor {
|
| #error Unsupported target architecture.
|
| #endif
|
|
|
| + static const int kBackEdgeEntrySize = 2 * kIntSize + kOneByteSize;
|
|
|
| private:
|
| class Breakable;
|
| @@ -459,9 +460,9 @@ class FullCodeGenerator: public AstVisitor {
|
| Label* back_edge_target);
|
| // Record the OSR AST id corresponding to a back edge in the code.
|
| void RecordBackEdge(BailoutId osr_ast_id);
|
| - // Emit a table of stack check ids and pcs into the code stream. Return
|
| - // the offset of the start of the table.
|
| - unsigned EmitStackCheckTable();
|
| + // Emit a table of back edge ids, pcs and loop depths into the code stream.
|
| + // Return the offset of the start of the table.
|
| + unsigned EmitBackEdgeTable();
|
|
|
| void EmitProfilingCounterDecrement(int delta);
|
| void EmitProfilingCounterReset();
|
| @@ -624,6 +625,12 @@ class FullCodeGenerator: public AstVisitor {
|
| unsigned pc_and_state;
|
| };
|
|
|
| + struct BackEdgeEntry {
|
| + BailoutId id;
|
| + unsigned pc;
|
| + uint8_t loop_depth;
|
| + };
|
| +
|
| struct TypeFeedbackCellEntry {
|
| TypeFeedbackId ast_id;
|
| Handle<JSGlobalPropertyCell> cell;
|
| @@ -818,9 +825,7 @@ class FullCodeGenerator: public AstVisitor {
|
| const ExpressionContext* context_;
|
| ZoneList<BailoutEntry> bailout_entries_;
|
| GrowableBitVector prepared_bailout_ids_;
|
| - // TODO(svenpanne) Rename this to something like back_edges_ and rename
|
| - // related functions accordingly.
|
| - ZoneList<BailoutEntry> stack_checks_;
|
| + ZoneList<BackEdgeEntry> back_edges_;
|
| ZoneList<TypeFeedbackCellEntry> type_feedback_cells_;
|
| int ic_total_count_;
|
| Handle<FixedArray> handler_table_;
|
|
|