Do not save/restore AST id generator.
AST ids only need to be unique, so there is no need to fiddle around with them. R=dslomov@chromium.org Review URL: https://codereview.chromium.org/633053002 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24433 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
ec871585fc
commit
f647ed7bfd
@ -342,25 +342,6 @@ class TargetScope BASE_EMBEDDED {
|
||||
// ----------------------------------------------------------------------------
|
||||
// Implementation of Parser
|
||||
|
||||
class ParserTraits::Checkpoint
|
||||
: public ParserBase<ParserTraits>::CheckpointBase {
|
||||
public:
|
||||
explicit Checkpoint(ParserBase<ParserTraits>* parser)
|
||||
: CheckpointBase(parser), parser_(parser) {
|
||||
saved_ast_node_id_gen_ = *parser_->ast_node_id_gen_;
|
||||
}
|
||||
|
||||
void Restore() {
|
||||
CheckpointBase::Restore();
|
||||
*parser_->ast_node_id_gen_ = saved_ast_node_id_gen_;
|
||||
}
|
||||
|
||||
private:
|
||||
ParserBase<ParserTraits>* parser_;
|
||||
AstNode::IdGen saved_ast_node_id_gen_;
|
||||
};
|
||||
|
||||
|
||||
bool ParserTraits::IsEvalOrArguments(const AstRawString* identifier) const {
|
||||
return identifier == parser_->ast_value_factory()->eval_string() ||
|
||||
identifier == parser_->ast_value_factory()->arguments_string();
|
||||
|
@ -374,8 +374,6 @@ class ParserTraits {
|
||||
typedef AstNodeFactory<AstConstructionVisitor> Factory;
|
||||
};
|
||||
|
||||
class Checkpoint;
|
||||
|
||||
explicit ParserTraits(Parser* parser) : parser_(parser) {}
|
||||
|
||||
// Custom operations executed when FunctionStates are created and destructed.
|
||||
|
@ -32,13 +32,6 @@ int isfinite(double value);
|
||||
namespace v8 {
|
||||
namespace internal {
|
||||
|
||||
class PreParserTraits::Checkpoint
|
||||
: public ParserBase<PreParserTraits>::CheckpointBase {
|
||||
public:
|
||||
explicit Checkpoint(ParserBase<PreParserTraits>* parser)
|
||||
: ParserBase<PreParserTraits>::CheckpointBase(parser) {}
|
||||
};
|
||||
|
||||
void PreParserTraits::ReportMessageAt(Scanner::Location location,
|
||||
const char* message,
|
||||
const char* arg,
|
||||
|
@ -123,8 +123,6 @@ class ParserBase : public Traits {
|
||||
}
|
||||
|
||||
protected:
|
||||
friend class Traits::Checkpoint;
|
||||
|
||||
enum AllowEvalOrArgumentsAsIdentifier {
|
||||
kAllowEvalOrArguments,
|
||||
kDontAllowEvalOrArguments
|
||||
@ -135,7 +133,7 @@ class ParserBase : public Traits {
|
||||
PARSE_EAGERLY
|
||||
};
|
||||
|
||||
class CheckpointBase;
|
||||
class Checkpoint;
|
||||
class ObjectLiteralChecker;
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
@ -235,16 +233,16 @@ class ParserBase : public Traits {
|
||||
typename Traits::Type::Factory factory_;
|
||||
|
||||
friend class ParserTraits;
|
||||
friend class CheckpointBase;
|
||||
friend class Checkpoint;
|
||||
};
|
||||
|
||||
// Annoyingly, arrow functions first parse as comma expressions, then when we
|
||||
// see the => we have to go back and reinterpret the arguments as being formal
|
||||
// parameters. To do so we need to reset some of the parser state back to
|
||||
// what it was before the arguments were first seen.
|
||||
class CheckpointBase BASE_EMBEDDED {
|
||||
class Checkpoint BASE_EMBEDDED {
|
||||
public:
|
||||
explicit CheckpointBase(ParserBase* parser) {
|
||||
explicit Checkpoint(ParserBase* parser) {
|
||||
function_state_ = parser->function_state_;
|
||||
next_materialized_literal_index_ =
|
||||
function_state_->next_materialized_literal_index_;
|
||||
@ -1149,8 +1147,6 @@ class PreParserTraits {
|
||||
typedef PreParserFactory Factory;
|
||||
};
|
||||
|
||||
class Checkpoint;
|
||||
|
||||
explicit PreParserTraits(PreParser* pre_parser) : pre_parser_(pre_parser) {}
|
||||
|
||||
// Custom operations executed when FunctionStates are created and
|
||||
@ -2164,7 +2160,7 @@ ParserBase<Traits>::ParseAssignmentExpression(bool accept_IN, bool* ok) {
|
||||
}
|
||||
|
||||
if (fni_ != NULL) fni_->Enter();
|
||||
typename Traits::Checkpoint checkpoint(this);
|
||||
ParserBase<Traits>::Checkpoint checkpoint(this);
|
||||
ExpressionT expression =
|
||||
this->ParseConditionalExpression(accept_IN, CHECK_OK);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user