From: marja@chromium.org Date: Mon, 24 Mar 2014 12:16:09 +0000 (+0000) Subject: PreParser cleanup: no need to track with-ness of scopes. X-Git-Tag: upstream/4.7.83~10064 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=25260c2b9a261f796db5257b5735f99f27722a2a;p=platform%2Fupstream%2Fv8.git PreParser cleanup: no need to track with-ness of scopes. Historically, we used to track the "with-ness" of a scope differently; not creating a with scope, but setting a property on the scope (see https://codereview.chromium.org/5166006 ). For laziness decisions, checking the with-ness should be unnecessary: the current scope is function scope, and if the outer scope is global scope, there's surely no with scope in between. R=ulan@chromium.org BUG= Review URL: https://codereview.chromium.org/209863004 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20189 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- diff --git a/src/preparser.cc b/src/preparser.cc index 459cb6a..31c7388 100644 --- a/src/preparser.cc +++ b/src/preparser.cc @@ -850,7 +850,6 @@ PreParser::Expression PreParser::ParseFunctionLiteral( // Parse function body. ScopeType outer_scope_type = scope_->type(); - bool inside_with = scope_->inside_with(); PreParserScope function_scope(scope_, FUNCTION_SCOPE); FunctionState function_state(&function_state_, &scope_, &function_scope); function_state.set_is_generator(is_generator); @@ -892,8 +891,7 @@ PreParser::Expression PreParser::ParseFunctionLiteral( // See Parser::ParseFunctionLiteral for more information about lazy parsing // and lazy compilation. - bool is_lazily_parsed = (outer_scope_type == GLOBAL_SCOPE && - !inside_with && allow_lazy() && + bool is_lazily_parsed = (outer_scope_type == GLOBAL_SCOPE && allow_lazy() && !parenthesized_function_); parenthesized_function_ = false; diff --git a/src/preparser.h b/src/preparser.h index ee8e46b..080b772 100644 --- a/src/preparser.h +++ b/src/preparser.h @@ -678,18 +678,7 @@ class PreParserScope { public: explicit PreParserScope(PreParserScope* outer_scope, ScopeType scope_type) : scope_type_(scope_type) { - if (outer_scope) { - scope_inside_with_ = outer_scope->scope_inside_with_ || is_with_scope(); - strict_mode_ = outer_scope->strict_mode(); - } else { - scope_inside_with_ = is_with_scope(); - strict_mode_ = SLOPPY; - } - } - - bool is_with_scope() const { return scope_type_ == WITH_SCOPE; } - bool inside_with() const { - return scope_inside_with_; + strict_mode_ = outer_scope ? outer_scope->strict_mode() : SLOPPY; } ScopeType type() { return scope_type_; } @@ -698,7 +687,6 @@ class PreParserScope { private: ScopeType scope_type_; - bool scope_inside_with_; StrictMode strict_mode_; };