| Index: src/full-codegen.h
|
| diff --git a/src/full-codegen.h b/src/full-codegen.h
|
| index ef4bf1f15f6cec7e6aaeff9552d3a2edaba7d673..ecab4f9bc0060c3553064bed70f3f9eb72aa8e04 100644
|
| --- a/src/full-codegen.h
|
| +++ b/src/full-codegen.h
|
| @@ -77,6 +77,7 @@ class FullCodeGenerator: public AstVisitor {
|
| : 0,
|
| info->zone()),
|
| back_edges_(2, info->zone()),
|
| + handler_table_(info->zone()),
|
| ic_total_count_(0) {
|
| DCHECK(!info->IsStub());
|
| Initialize();
|
| @@ -750,13 +751,14 @@ class FullCodeGenerator: public AstVisitor {
|
| void Generate();
|
| void PopulateDeoptimizationData(Handle<Code> code);
|
| void PopulateTypeFeedbackInfo(Handle<Code> code);
|
| + void PopulateHandlerTable(Handle<Code> code);
|
|
|
| bool MustCreateObjectLiteralWithRuntime(ObjectLiteral* expr) const;
|
| bool MustCreateArrayLiteralWithRuntime(ArrayLiteral* expr) const;
|
|
|
| void EmitLoadStoreICSlot(FeedbackVectorICSlot slot);
|
|
|
| - Handle<HandlerTable> handler_table() { return handler_table_; }
|
| + int NewHandlerTableEntry();
|
|
|
| struct BailoutEntry {
|
| BailoutId id;
|
| @@ -769,6 +771,14 @@ class FullCodeGenerator: public AstVisitor {
|
| uint32_t loop_depth;
|
| };
|
|
|
| + struct HandlerTableEntry {
|
| + unsigned range_start;
|
| + unsigned range_end;
|
| + unsigned handler_offset;
|
| + int stack_depth;
|
| + int try_catch_depth;
|
| + };
|
| +
|
| class ExpressionContext BASE_EMBEDDED {
|
| public:
|
| explicit ExpressionContext(FullCodeGenerator* codegen)
|
| @@ -974,8 +984,8 @@ class FullCodeGenerator: public AstVisitor {
|
| const ExpressionContext* context_;
|
| ZoneList<BailoutEntry> bailout_entries_;
|
| ZoneList<BackEdgeEntry> back_edges_;
|
| + ZoneVector<HandlerTableEntry> handler_table_;
|
| int ic_total_count_;
|
| - Handle<HandlerTable> handler_table_;
|
| Handle<Cell> profiling_counter_;
|
| bool generate_debug_code_;
|
|
|
|
|