Index: src/parser.cc |
diff --git a/src/parser.cc b/src/parser.cc |
index c67cd8b712b19d6e225597297297c66fa919c731..fb1585edca315ba3404e3b38be5db40e034b8523 100644 |
--- a/src/parser.cc |
+++ b/src/parser.cc |
@@ -463,58 +463,6 @@ class TargetScope BASE_EMBEDDED { |
// ---------------------------------------------------------------------------- |
-// FunctionState and BlockState together implement the parser's scope stack. |
-// The parser's current scope is in scope_. The BlockState and |
-// FunctionState constructors push on the scope stack and the destructors |
-// pop. They are also used to hold the parser's per-function and per-block |
-// state. |
- |
-class Parser::BlockState BASE_EMBEDDED { |
- public: |
- BlockState(Scope** scope_stack, Scope* scope) |
- : scope_stack_(scope_stack), |
- outer_scope_(*scope_stack) { |
- *scope_stack = scope; |
- } |
- |
- ~BlockState() { *scope_stack_ = outer_scope_; } |
- |
- private: |
- Scope** scope_stack_; |
- Scope* outer_scope_; |
-}; |
- |
- |
-Parser::FunctionState::FunctionState(FunctionState** function_state_stack, |
- Scope** scope_stack, Scope* scope, |
- Zone* zone) |
- : next_materialized_literal_index_(JSFunction::kLiteralsPrefixSize), |
- next_handler_index_(0), |
- expected_property_count_(0), |
- generator_object_variable_(NULL), |
- function_state_stack_(function_state_stack), |
- outer_function_state_(*function_state_stack), |
- scope_stack_(scope_stack), |
- outer_scope_(*scope_stack), |
- isolate_(zone->isolate()), |
- saved_ast_node_id_(isolate_->ast_node_id()), |
- factory_(zone) { |
- *scope_stack_ = scope; |
- *function_state_stack = this; |
- isolate_->set_ast_node_id(BailoutId::FirstUsable().ToInt()); |
-} |
- |
- |
-Parser::FunctionState::~FunctionState() { |
- *scope_stack_ = outer_scope_; |
- *function_state_stack_ = outer_function_state_; |
- if (outer_function_state_ != NULL) { |
- isolate_->set_ast_node_id(saved_ast_node_id_); |
- } |
-} |
- |
- |
-// ---------------------------------------------------------------------------- |
// The CHECK_OK macro is a convenient macro to enforce error |
// handling for functions that may fail (by returning !*ok). |
// |
@@ -537,16 +485,6 @@ Parser::FunctionState::~FunctionState() { |
// ---------------------------------------------------------------------------- |
// Implementation of Parser |
-bool ParserTraits::is_classic_mode() const { |
- return parser_->scope_->is_classic_mode(); |
-} |
- |
- |
-bool ParserTraits::is_generator() const { |
- return parser_->function_state_->is_generator(); |
-} |
- |
- |
bool ParserTraits::IsEvalOrArguments(Handle<String> identifier) const { |
return identifier.is_identical_to( |
parser_->isolate()->factory()->eval_string()) || |
@@ -555,11 +493,6 @@ bool ParserTraits::IsEvalOrArguments(Handle<String> identifier) const { |
} |
-int ParserTraits::NextMaterializedLiteralIndex() { |
- return parser_->function_state_->NextMaterializedLiteralIndex(); |
-} |
- |
- |
void ParserTraits::ReportMessageAt(Scanner::Location source_location, |
const char* message, |
Vector<const char*> args) { |
@@ -623,14 +556,6 @@ Handle<String> ParserTraits::NextLiteralString(PretenureFlag tenured) { |
} |
-Expression* ParserTraits::NewRegExpLiteral(Handle<String> js_pattern, |
- Handle<String> js_flags, |
- int literal_index, |
- int pos) { |
- return parser_->factory()->NewRegExpLiteral( |
- js_pattern, js_flags, literal_index, pos); |
-} |
- |
Parser::Parser(CompilationInfo* info) |
: ParserBase<ParserTraits>(&scanner_, |
info->isolate()->stack_guard()->real_climit(), |
@@ -640,9 +565,7 @@ Parser::Parser(CompilationInfo* info) |
script_(info->script()), |
scanner_(isolate_->unicode_cache()), |
reusable_preparser_(NULL), |
- scope_(NULL), |
original_scope_(NULL), |
- function_state_(NULL), |
target_stack_(NULL), |
extension_(info->extension()), |
pre_parse_data_(NULL), |
@@ -4066,8 +3989,7 @@ FunctionLiteral* Parser::ParseFunctionLiteral( |
// Calling a generator returns a generator object. That object is stored |
// in a temporary variable, a definition that is used by "yield" |
- // expressions. Presence of a variable for the generator object in the |
- // FunctionState indicates that this function is a generator. |
+ // expressions. This also marks the FunctionState as a generator. |
Variable* temp = scope_->DeclarationScope()->NewTemporary( |
isolate()->factory()->dot_generator_object_string()); |
function_state.set_generator_object_variable(temp); |