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_; |