diff options
Diffstat (limited to 'src/3rdparty/v8/src/func-name-inferrer.h')
-rw-r--r-- | src/3rdparty/v8/src/func-name-inferrer.h | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/3rdparty/v8/src/func-name-inferrer.h b/src/3rdparty/v8/src/func-name-inferrer.h index 1a57268..f57e778 100644 --- a/src/3rdparty/v8/src/func-name-inferrer.h +++ b/src/3rdparty/v8/src/func-name-inferrer.h @@ -45,7 +45,7 @@ class Isolate; // a name. class FuncNameInferrer : public ZoneObject { public: - explicit FuncNameInferrer(Isolate* isolate); + FuncNameInferrer(Isolate* isolate, Zone* zone); // Returns whether we have entered name collection state. bool IsOpen() const { return !entries_stack_.is_empty(); } @@ -55,7 +55,7 @@ class FuncNameInferrer : public ZoneObject { // Enters name collection state. void Enter() { - entries_stack_.Add(names_stack_.length()); + entries_stack_.Add(names_stack_.length(), zone()); } // Pushes an encountered name onto names stack when in collection state. @@ -66,7 +66,7 @@ class FuncNameInferrer : public ZoneObject { // Adds a function to infer name for. void AddFunction(FunctionLiteral* func_to_infer) { if (IsOpen()) { - funcs_to_infer_.Add(func_to_infer); + funcs_to_infer_.Add(func_to_infer, zone()); } } @@ -88,6 +88,8 @@ class FuncNameInferrer : public ZoneObject { void Leave() { ASSERT(IsOpen()); names_stack_.Rewind(entries_stack_.RemoveLast()); + if (entries_stack_.is_empty()) + funcs_to_infer_.Clear(); } private: @@ -103,6 +105,7 @@ class FuncNameInferrer : public ZoneObject { }; Isolate* isolate() { return isolate_; } + Zone* zone() const { return zone_; } // Constructs a full name in dotted notation from gathered names. Handle<String> MakeNameFromStack(); @@ -117,6 +120,7 @@ class FuncNameInferrer : public ZoneObject { ZoneList<int> entries_stack_; ZoneList<Name> names_stack_; ZoneList<FunctionLiteral*> funcs_to_infer_; + Zone* zone_; DISALLOW_COPY_AND_ASSIGN(FuncNameInferrer); }; |