Reviewers: plesner, Description: Fix uninitialized members.
Make sure that the DummyScope top level scope used for pre-parsing have all members initialized. The type of this scope is set to global scope as it is a top level scope. Also ensure that the "naked" Scope constructor can only be used by sub-classes of Scope. The bug of missing initiaalization of members in the DummyScope was found by Valgrind. Please review this at http://codereview.chromium.org/173052 SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/ Affected files: M src/scopes.h M src/scopes.cc Index: src/scopes.h =================================================================== --- src/scopes.h (revision 2708) +++ src/scopes.h (working copy) @@ -93,7 +93,6 @@ GLOBAL_SCOPE // the top-level scope for a program or a top-level eval }; - Scope(); Scope(Scope* outer_scope, Type type); virtual ~Scope() { } @@ -130,7 +129,7 @@ Variable* DeclareGlobal(Handle<String> name); // Add a parameter to the parameter list. The parameter must have been - // declared via Declare. The same parameter may occur more then once in + // declared via Declare. The same parameter may occur more than once in // the parameter list; they must be added in source order, from left to // right. void AddParameter(Variable* var); @@ -286,6 +285,8 @@ protected: friend class ParserFactory; + explicit Scope(Type type); + // Scope tree. Scope* outer_scope_; // the immediately enclosing outer scope, or NULL ZoneList<Scope*> inner_scopes_; // the immediately enclosed inner scopes @@ -375,7 +376,7 @@ class DummyScope : public Scope { public: - DummyScope() { + DummyScope() : Scope(GLOBAL_SCOPE) { outer_scope_ = this; } Index: src/scopes.cc =================================================================== --- src/scopes.cc (revision 2708) +++ src/scopes.cc (working copy) @@ -108,14 +108,31 @@ // Dummy constructor -Scope::Scope() - : inner_scopes_(0), +Scope::Scope(Type type) + : outer_scope_(NULL), + inner_scopes_(0), + type_(type), + scope_name_(Factory::empty_symbol()), variables_(false), temps_(0), params_(0), dynamics_(NULL), unresolved_(0), - decls_(0) { + decls_(0), + receiver_(NULL), + function_(NULL), + arguments_(NULL), + arguments_shadow_(NULL), + illegal_redecl_(NULL), + scope_inside_with_(false), + scope_contains_with_(false), + scope_calls_eval_(false), + outer_scope_calls_eval_(false), + inner_scope_calls_eval_(false), + outer_scope_is_eval_scope_(false), + force_eager_compilation_(false), + num_stack_slots_(0), + num_heap_slots_(0) { } --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
