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
-~----------~----~----~----~------~----~------~--~---

Reply via email to