Make it clearer that PreParser doesn't depend on Isolate.

The Isolate* member of ParserBase::FunctionState was only used by
Parser. Removing it makes it clear that there are no isolates in
PreParser. (There's also no Zone, since PreParserTraits::Type::Zone is void.)

R=yangguo@chromium.org
BUG=

Review URL: https://codereview.chromium.org/216883003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20331 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
marja@chromium.org 2014-03-28 12:49:34 +00:00
parent 6d91c1e77f
commit 6608110e87
2 changed files with 6 additions and 8 deletions

View File

@ -441,16 +441,14 @@ class ParserTraits {
template<typename FunctionState> template<typename FunctionState>
static void SetUpFunctionState(FunctionState* function_state, Zone* zone) { static void SetUpFunctionState(FunctionState* function_state, Zone* zone) {
Isolate* isolate = zone->isolate(); Isolate* isolate = zone->isolate();
function_state->isolate_ = isolate;
function_state->saved_ast_node_id_ = isolate->ast_node_id(); function_state->saved_ast_node_id_ = isolate->ast_node_id();
isolate->set_ast_node_id(BailoutId::FirstUsable().ToInt()); isolate->set_ast_node_id(BailoutId::FirstUsable().ToInt());
} }
template<typename FunctionState> template<typename FunctionState>
static void TearDownFunctionState(FunctionState* function_state) { static void TearDownFunctionState(FunctionState* function_state, Zone* zone) {
if (function_state->outer_function_state_ != NULL) { if (function_state->outer_function_state_ != NULL) {
function_state->isolate_->set_ast_node_id( zone->isolate()->set_ast_node_id(function_state->saved_ast_node_id_);
function_state->saved_ast_node_id_);
} }
} }

View File

@ -228,8 +228,8 @@ class ParserBase : public Traits {
FunctionState* outer_function_state_; FunctionState* outer_function_state_;
typename Traits::Type::Scope** scope_stack_; typename Traits::Type::Scope** scope_stack_;
typename Traits::Type::Scope* outer_scope_; typename Traits::Type::Scope* outer_scope_;
Isolate* isolate_; // Only used by ParserTraits.
int saved_ast_node_id_; // Only used by ParserTraits. int saved_ast_node_id_; // Only used by ParserTraits.
typename Traits::Type::Zone* extra_param_;
typename Traits::Type::Factory factory_; typename Traits::Type::Factory factory_;
friend class ParserTraits; friend class ParserTraits;
@ -829,7 +829,7 @@ class PreParserTraits {
template<typename FunctionState> template<typename FunctionState>
static void SetUpFunctionState(FunctionState* function_state, void*) {} static void SetUpFunctionState(FunctionState* function_state, void*) {}
template<typename FunctionState> template<typename FunctionState>
static void TearDownFunctionState(FunctionState* function_state) {} static void TearDownFunctionState(FunctionState* function_state, void*) {}
// Helper functions for recursive descent. // Helper functions for recursive descent.
static bool IsEvalOrArguments(PreParserIdentifier identifier) { static bool IsEvalOrArguments(PreParserIdentifier identifier) {
@ -1181,8 +1181,8 @@ ParserBase<Traits>::FunctionState::FunctionState(
outer_function_state_(*function_state_stack), outer_function_state_(*function_state_stack),
scope_stack_(scope_stack), scope_stack_(scope_stack),
outer_scope_(*scope_stack), outer_scope_(*scope_stack),
isolate_(NULL),
saved_ast_node_id_(0), saved_ast_node_id_(0),
extra_param_(extra_param),
factory_(extra_param) { factory_(extra_param) {
*scope_stack_ = scope; *scope_stack_ = scope;
*function_state_stack = this; *function_state_stack = this;
@ -1194,7 +1194,7 @@ template<class Traits>
ParserBase<Traits>::FunctionState::~FunctionState() { ParserBase<Traits>::FunctionState::~FunctionState() {
*scope_stack_ = outer_scope_; *scope_stack_ = outer_scope_;
*function_state_stack_ = outer_function_state_; *function_state_stack_ = outer_function_state_;
Traits::TearDownFunctionState(this); Traits::TearDownFunctionState(this, extra_param_);
} }