Commit 26a5f212 authored by verwaest's avatar verwaest Committed by Commit bot

Drop unused end-position from VariableProxy

BUG=

Review-Url: https://codereview.chromium.org/2445993002
Cr-Commit-Position: refs/heads/master@{#40548}
parent 77ddcfb3
...@@ -159,10 +159,8 @@ bool Statement::IsJump() const { ...@@ -159,10 +159,8 @@ bool Statement::IsJump() const {
} }
} }
VariableProxy::VariableProxy(Variable* var, int start_position, VariableProxy::VariableProxy(Variable* var, int start_position)
int end_position)
: Expression(start_position, kVariableProxy), : Expression(start_position, kVariableProxy),
end_position_(end_position),
raw_name_(var->raw_name()), raw_name_(var->raw_name()),
next_unresolved_(nullptr) { next_unresolved_(nullptr) {
bit_field_ |= IsThisField::encode(var->is_this()) | bit_field_ |= IsThisField::encode(var->is_this()) |
...@@ -173,10 +171,8 @@ VariableProxy::VariableProxy(Variable* var, int start_position, ...@@ -173,10 +171,8 @@ VariableProxy::VariableProxy(Variable* var, int start_position,
} }
VariableProxy::VariableProxy(const AstRawString* name, VariableProxy::VariableProxy(const AstRawString* name,
VariableKind variable_kind, int start_position, VariableKind variable_kind, int start_position)
int end_position)
: Expression(start_position, kVariableProxy), : Expression(start_position, kVariableProxy),
end_position_(end_position),
raw_name_(name), raw_name_(name),
next_unresolved_(nullptr) { next_unresolved_(nullptr) {
bit_field_ |= IsThisField::encode(variable_kind == THIS_VARIABLE) | bit_field_ |= IsThisField::encode(variable_kind == THIS_VARIABLE) |
...@@ -187,7 +183,6 @@ VariableProxy::VariableProxy(const AstRawString* name, ...@@ -187,7 +183,6 @@ VariableProxy::VariableProxy(const AstRawString* name,
VariableProxy::VariableProxy(const VariableProxy* copy_from) VariableProxy::VariableProxy(const VariableProxy* copy_from)
: Expression(copy_from->position(), kVariableProxy), : Expression(copy_from->position(), kVariableProxy),
end_position_(copy_from->end_position_),
next_unresolved_(nullptr) { next_unresolved_(nullptr) {
bit_field_ = copy_from->bit_field_; bit_field_ = copy_from->bit_field_;
DCHECK(!copy_from->is_resolved()); DCHECK(!copy_from->is_resolved());
......
...@@ -1679,8 +1679,6 @@ class VariableProxy final : public Expression { ...@@ -1679,8 +1679,6 @@ class VariableProxy final : public Expression {
HoleCheckModeField::update(bit_field_, HoleCheckMode::kRequired); HoleCheckModeField::update(bit_field_, HoleCheckMode::kRequired);
} }
int end_position() const { return end_position_; }
// Bind this proxy to the variable var. // Bind this proxy to the variable var.
void BindTo(Variable* var); void BindTo(Variable* var);
...@@ -1701,9 +1699,9 @@ class VariableProxy final : public Expression { ...@@ -1701,9 +1699,9 @@ class VariableProxy final : public Expression {
private: private:
friend class AstNodeFactory; friend class AstNodeFactory;
VariableProxy(Variable* var, int start_position, int end_position); VariableProxy(Variable* var, int start_position);
VariableProxy(const AstRawString* name, VariableKind variable_kind, VariableProxy(const AstRawString* name, VariableKind variable_kind,
int start_position, int end_position); int start_position);
explicit VariableProxy(const VariableProxy* copy_from); explicit VariableProxy(const VariableProxy* copy_from);
static int parent_num_ids() { return Expression::num_ids(); } static int parent_num_ids() { return Expression::num_ids(); }
...@@ -1717,10 +1715,6 @@ class VariableProxy final : public Expression { ...@@ -1717,10 +1715,6 @@ class VariableProxy final : public Expression {
class HoleCheckModeField class HoleCheckModeField
: public BitField<HoleCheckMode, IsNewTargetField::kNext, 1> {}; : public BitField<HoleCheckMode, IsNewTargetField::kNext, 1> {};
// Position is stored in the AstNode superclass, but VariableProxy needs to
// know its end position too (for error messages). It cannot be inferred from
// the variable name length because it can contain escapes.
int end_position_;
FeedbackVectorSlot variable_feedback_slot_; FeedbackVectorSlot variable_feedback_slot_;
union { union {
const AstRawString* raw_name_; // if !is_resolved_ const AstRawString* raw_name_; // if !is_resolved_
...@@ -3341,18 +3335,15 @@ class AstNodeFactory final BASE_EMBEDDED { ...@@ -3341,18 +3335,15 @@ class AstNodeFactory final BASE_EMBEDDED {
} }
VariableProxy* NewVariableProxy(Variable* var, VariableProxy* NewVariableProxy(Variable* var,
int start_position = kNoSourcePosition, int start_position = kNoSourcePosition) {
int end_position = kNoSourcePosition) { return new (zone_) VariableProxy(var, start_position);
return new (zone_) VariableProxy(var, start_position, end_position);
} }
VariableProxy* NewVariableProxy(const AstRawString* name, VariableProxy* NewVariableProxy(const AstRawString* name,
VariableKind variable_kind, VariableKind variable_kind,
int start_position = kNoSourcePosition, int start_position = kNoSourcePosition) {
int end_position = kNoSourcePosition) {
DCHECK_NOT_NULL(name); DCHECK_NOT_NULL(name);
return new (zone_) return new (zone_) VariableProxy(name, variable_kind, start_position);
VariableProxy(name, variable_kind, start_position, end_position);
} }
// Recreates the VariableProxy in this Zone. // Recreates the VariableProxy in this Zone.
......
...@@ -956,15 +956,13 @@ Variable* Scope::DeclareVariable( ...@@ -956,15 +956,13 @@ Variable* Scope::DeclareVariable(
VariableProxy* Scope::NewUnresolved(AstNodeFactory* factory, VariableProxy* Scope::NewUnresolved(AstNodeFactory* factory,
const AstRawString* name, const AstRawString* name,
int start_position, int end_position, int start_position, VariableKind kind) {
VariableKind kind) {
// Note that we must not share the unresolved variables with // Note that we must not share the unresolved variables with
// the same name because they may be removed selectively via // the same name because they may be removed selectively via
// RemoveUnresolved(). // RemoveUnresolved().
DCHECK(!already_resolved_); DCHECK(!already_resolved_);
DCHECK_EQ(!needs_migration_, factory->zone() == zone()); DCHECK_EQ(!needs_migration_, factory->zone() == zone());
VariableProxy* proxy = VariableProxy* proxy = factory->NewVariableProxy(name, kind, start_position);
factory->NewVariableProxy(name, kind, start_position, end_position);
proxy->set_next_unresolved(unresolved_); proxy->set_next_unresolved(unresolved_);
unresolved_ = proxy; unresolved_ = proxy;
return proxy; return proxy;
......
...@@ -161,7 +161,6 @@ class V8_EXPORT_PRIVATE Scope : public NON_EXPORTED_BASE(ZoneObject) { ...@@ -161,7 +161,6 @@ class V8_EXPORT_PRIVATE Scope : public NON_EXPORTED_BASE(ZoneObject) {
VariableProxy* NewUnresolved(AstNodeFactory* factory, VariableProxy* NewUnresolved(AstNodeFactory* factory,
const AstRawString* name, const AstRawString* name,
int start_position = kNoSourcePosition, int start_position = kNoSourcePosition,
int end_position = kNoSourcePosition,
VariableKind kind = NORMAL_VARIABLE); VariableKind kind = NORMAL_VARIABLE);
void AddUnresolved(VariableProxy* proxy); void AddUnresolved(VariableProxy* proxy);
......
...@@ -673,11 +673,11 @@ class ParserBase { ...@@ -673,11 +673,11 @@ class ParserBase {
explicit ForInfo(ParserBase* parser) explicit ForInfo(ParserBase* parser)
: bound_names(1, parser->zone()), : bound_names(1, parser->zone()),
mode(ForEachStatement::ENUMERATE), mode(ForEachStatement::ENUMERATE),
each_loc(), position(kNoSourcePosition),
parsing_result() {} parsing_result() {}
ZoneList<const AstRawString*> bound_names; ZoneList<const AstRawString*> bound_names;
ForEachStatement::VisitMode mode; ForEachStatement::VisitMode mode;
Scanner::Location each_loc; int position;
DeclarationParsingResult parsing_result; DeclarationParsingResult parsing_result;
}; };
...@@ -1770,8 +1770,7 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParsePrimaryExpression( ...@@ -1770,8 +1770,7 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParsePrimaryExpression(
case Token::FUTURE_STRICT_RESERVED_WORD: { case Token::FUTURE_STRICT_RESERVED_WORD: {
// Using eval or arguments in this context is OK even in strict mode. // Using eval or arguments in this context is OK even in strict mode.
IdentifierT name = ParseAndClassifyIdentifier(CHECK_OK); IdentifierT name = ParseAndClassifyIdentifier(CHECK_OK);
return impl()->ExpressionFromIdentifier(name, beg_pos, return impl()->ExpressionFromIdentifier(name, beg_pos);
scanner()->location().end_pos);
} }
case Token::STRING: { case Token::STRING: {
...@@ -2392,8 +2391,7 @@ ParserBase<Impl>::ParseObjectPropertyDefinition(ObjectLiteralChecker* checker, ...@@ -2392,8 +2391,7 @@ ParserBase<Impl>::ParseObjectPropertyDefinition(ObjectLiteralChecker* checker,
Scanner::Location(next_beg_pos, next_end_pos), Scanner::Location(next_beg_pos, next_end_pos),
MessageTemplate::kAwaitBindingIdentifier); MessageTemplate::kAwaitBindingIdentifier);
} }
ExpressionT lhs = ExpressionT lhs = impl()->ExpressionFromIdentifier(name, next_beg_pos);
impl()->ExpressionFromIdentifier(name, next_beg_pos, next_end_pos);
CheckDestructuringElement(lhs, next_beg_pos, next_end_pos); CheckDestructuringElement(lhs, next_beg_pos, next_end_pos);
ExpressionT value; ExpressionT value;
...@@ -2660,8 +2658,8 @@ ParserBase<Impl>::ParseAssignmentExpression(bool accept_IN, bool* ok) { ...@@ -2660,8 +2658,8 @@ ParserBase<Impl>::ParseAssignmentExpression(bool accept_IN, bool* ok) {
PeekAhead() == Token::ARROW) { PeekAhead() == Token::ARROW) {
// async Identifier => AsyncConciseBody // async Identifier => AsyncConciseBody
IdentifierT name = ParseAndClassifyIdentifier(CHECK_OK); IdentifierT name = ParseAndClassifyIdentifier(CHECK_OK);
expression = impl()->ExpressionFromIdentifier( expression =
name, position(), scanner()->location().end_pos, InferName::kNo); impl()->ExpressionFromIdentifier(name, position(), InferName::kNo);
if (fni_) { if (fni_) {
// Remove `async` keyword from inferred name stack. // Remove `async` keyword from inferred name stack.
fni_->RemoveAsyncKeywordFromEnd(); fni_->RemoveAsyncKeywordFromEnd();
...@@ -5178,7 +5176,7 @@ typename ParserBase<Impl>::StatementT ParserBase<Impl>::ParseForStatement( ...@@ -5178,7 +5176,7 @@ typename ParserBase<Impl>::StatementT ParserBase<Impl>::ParseForStatement(
nullptr, CHECK_OK); nullptr, CHECK_OK);
bound_names_are_lexical = bound_names_are_lexical =
IsLexicalVariableMode(for_info.parsing_result.descriptor.mode); IsLexicalVariableMode(for_info.parsing_result.descriptor.mode);
for_info.each_loc = scanner()->location(); for_info.position = scanner()->location().beg_pos;
if (CheckInOrOf(&for_info.mode)) { if (CheckInOrOf(&for_info.mode)) {
// Just one declaration followed by in/of. // Just one declaration followed by in/of.
......
...@@ -478,9 +478,7 @@ Expression* Parser::NewSuperCallReference(int pos) { ...@@ -478,9 +478,7 @@ Expression* Parser::NewSuperCallReference(int pos) {
} }
Expression* Parser::NewTargetExpression(int pos) { Expression* Parser::NewTargetExpression(int pos) {
static const int kNewTargetStringLength = 10; auto proxy = NewUnresolved(ast_value_factory()->new_target_string(), pos);
auto proxy = NewUnresolved(ast_value_factory()->new_target_string(), pos,
pos + kNewTargetStringLength);
proxy->set_is_new_target(); proxy->set_is_new_target();
return proxy; return proxy;
} }
...@@ -1448,13 +1446,12 @@ Statement* Parser::ParseExportDeclaration(bool* ok) { ...@@ -1448,13 +1446,12 @@ Statement* Parser::ParseExportDeclaration(bool* ok) {
} }
VariableProxy* Parser::NewUnresolved(const AstRawString* name, int begin_pos, VariableProxy* Parser::NewUnresolved(const AstRawString* name, int begin_pos,
int end_pos, VariableKind kind) { VariableKind kind) {
return scope()->NewUnresolved(factory(), name, begin_pos, end_pos, kind); return scope()->NewUnresolved(factory(), name, begin_pos, kind);
} }
VariableProxy* Parser::NewUnresolved(const AstRawString* name) { VariableProxy* Parser::NewUnresolved(const AstRawString* name) {
return scope()->NewUnresolved(factory(), name, scanner()->location().beg_pos, return scope()->NewUnresolved(factory(), name, scanner()->location().beg_pos);
scanner()->location().end_pos);
} }
Declaration* Parser::DeclareVariable(const AstRawString* name, Declaration* Parser::DeclareVariable(const AstRawString* name,
...@@ -1468,8 +1465,7 @@ Declaration* Parser::DeclareVariable(const AstRawString* name, ...@@ -1468,8 +1465,7 @@ Declaration* Parser::DeclareVariable(const AstRawString* name,
int pos, bool* ok) { int pos, bool* ok) {
DCHECK_NOT_NULL(name); DCHECK_NOT_NULL(name);
VariableProxy* proxy = factory()->NewVariableProxy( VariableProxy* proxy = factory()->NewVariableProxy(
name, NORMAL_VARIABLE, scanner()->location().beg_pos, name, NORMAL_VARIABLE, scanner()->location().beg_pos);
scanner()->location().end_pos);
Declaration* declaration = Declaration* declaration =
factory()->NewVariableDeclaration(proxy, this->scope(), pos); factory()->NewVariableDeclaration(proxy, this->scope(), pos);
Declare(declaration, DeclarationDescriptor::NORMAL, mode, init, CHECK_OK); Declare(declaration, DeclarationDescriptor::NORMAL, mode, init, CHECK_OK);
...@@ -2012,8 +2008,7 @@ void Parser::DesugarBindingInForEachStatement(ForInfo* for_info, ...@@ -2012,8 +2008,7 @@ void Parser::DesugarBindingInForEachStatement(ForInfo* for_info,
*body_block = factory()->NewBlock(nullptr, 3, false, kNoSourcePosition); *body_block = factory()->NewBlock(nullptr, 3, false, kNoSourcePosition);
(*body_block)->statements()->Add(each_initialization_block, zone()); (*body_block)->statements()->Add(each_initialization_block, zone());
*each_variable = factory()->NewVariableProxy(temp, for_info->each_loc.beg_pos, *each_variable = factory()->NewVariableProxy(temp, for_info->position);
for_info->each_loc.end_pos);
} }
// Create a TDZ for any lexically-bound names in for in/of statements. // Create a TDZ for any lexically-bound names in for in/of statements.
...@@ -3415,7 +3410,7 @@ FunctionLiteral* Parser::InsertClassFieldInitializer( ...@@ -3415,7 +3410,7 @@ FunctionLiteral* Parser::InsertClassFieldInitializer(
constructor->scope(), constructor->scope(),
constructor->scope()->NewUnresolved( constructor->scope()->NewUnresolved(
factory(), ast_value_factory()->this_string(), kNoSourcePosition, factory(), ast_value_factory()->this_string(), kNoSourcePosition,
kNoSourcePosition + 4, THIS_VARIABLE)), THIS_VARIABLE)),
kNoSourcePosition); kNoSourcePosition);
constructor->body()->InsertAt(0, call_initializer, zone()); constructor->body()->InsertAt(0, call_initializer, zone());
return constructor; return constructor;
...@@ -4302,8 +4297,7 @@ Expression* Parser::RewriteAssignExponentiation(Expression* left, ...@@ -4302,8 +4297,7 @@ Expression* Parser::RewriteAssignExponentiation(Expression* left,
Expression* result; Expression* result;
DCHECK_NOT_NULL(lhs->raw_name()); DCHECK_NOT_NULL(lhs->raw_name());
result = ExpressionFromIdentifier(lhs->raw_name(), lhs->position(), result = ExpressionFromIdentifier(lhs->raw_name(), lhs->position());
lhs->end_position());
args->Add(left, zone()); args->Add(left, zone());
args->Add(right, zone()); args->Add(right, zone());
Expression* call = Expression* call =
......
...@@ -463,7 +463,6 @@ class V8_EXPORT_PRIVATE Parser : public NON_EXPORTED_BASE(ParserBase<Parser>) { ...@@ -463,7 +463,6 @@ class V8_EXPORT_PRIVATE Parser : public NON_EXPORTED_BASE(ParserBase<Parser>) {
void InsertSloppyBlockFunctionVarBindings(DeclarationScope* scope); void InsertSloppyBlockFunctionVarBindings(DeclarationScope* scope);
VariableProxy* NewUnresolved(const AstRawString* name, int begin_pos, VariableProxy* NewUnresolved(const AstRawString* name, int begin_pos,
int end_pos = kNoSourcePosition,
VariableKind kind = NORMAL_VARIABLE); VariableKind kind = NORMAL_VARIABLE);
VariableProxy* NewUnresolved(const AstRawString* name); VariableProxy* NewUnresolved(const AstRawString* name);
Variable* Declare(Declaration* declaration, Variable* Declare(Declaration* declaration,
...@@ -932,7 +931,7 @@ class V8_EXPORT_PRIVATE Parser : public NON_EXPORTED_BASE(ParserBase<Parser>) { ...@@ -932,7 +931,7 @@ class V8_EXPORT_PRIVATE Parser : public NON_EXPORTED_BASE(ParserBase<Parser>) {
} }
V8_INLINE Expression* ThisExpression(int pos = kNoSourcePosition) { V8_INLINE Expression* ThisExpression(int pos = kNoSourcePosition) {
return NewUnresolved(ast_value_factory()->this_string(), pos, pos + 4, return NewUnresolved(ast_value_factory()->this_string(), pos,
THIS_VARIABLE); THIS_VARIABLE);
} }
...@@ -944,12 +943,12 @@ class V8_EXPORT_PRIVATE Parser : public NON_EXPORTED_BASE(ParserBase<Parser>) { ...@@ -944,12 +943,12 @@ class V8_EXPORT_PRIVATE Parser : public NON_EXPORTED_BASE(ParserBase<Parser>) {
Literal* ExpressionFromLiteral(Token::Value token, int pos); Literal* ExpressionFromLiteral(Token::Value token, int pos);
V8_INLINE Expression* ExpressionFromIdentifier( V8_INLINE Expression* ExpressionFromIdentifier(
const AstRawString* name, int start_position, int end_position, const AstRawString* name, int start_position,
InferName infer = InferName::kYes) { InferName infer = InferName::kYes) {
if (infer == InferName::kYes) { if (infer == InferName::kYes) {
fni_->PushVariableName(name); fni_->PushVariableName(name);
} }
return NewUnresolved(name, start_position, end_position); return NewUnresolved(name, start_position);
} }
V8_INLINE Expression* ExpressionFromString(int pos) { V8_INLINE Expression* ExpressionFromString(int pos) {
......
...@@ -132,8 +132,7 @@ void Parser::PatternRewriter::VisitVariableProxy(VariableProxy* pattern) { ...@@ -132,8 +132,7 @@ void Parser::PatternRewriter::VisitVariableProxy(VariableProxy* pattern) {
// entering the function). // entering the function).
const AstRawString* name = pattern->raw_name(); const AstRawString* name = pattern->raw_name();
VariableProxy* proxy = factory()->NewVariableProxy( VariableProxy* proxy = factory()->NewVariableProxy(
name, NORMAL_VARIABLE, parser_->scanner()->location().beg_pos, name, NORMAL_VARIABLE, parser_->scanner()->location().beg_pos);
parser_->scanner()->location().end_pos);
Declaration* declaration = factory()->NewVariableDeclaration( Declaration* declaration = factory()->NewVariableDeclaration(
proxy, descriptor_->scope, descriptor_->declaration_pos); proxy, descriptor_->scope, descriptor_->declaration_pos);
Variable* var = parser_->Declare( Variable* var = parser_->Declare(
......
...@@ -215,15 +215,14 @@ PreParser::LazyParsingResult PreParser::ParseStatementListAndLogFunction( ...@@ -215,15 +215,14 @@ PreParser::LazyParsingResult PreParser::ParseStatementListAndLogFunction(
} }
PreParserExpression PreParser::ExpressionFromIdentifier( PreParserExpression PreParser::ExpressionFromIdentifier(
PreParserIdentifier name, int start_position, int end_position, PreParserIdentifier name, int start_position, InferName infer) {
InferName infer) {
if (track_unresolved_variables_) { if (track_unresolved_variables_) {
AstNodeFactory factory(ast_value_factory()); AstNodeFactory factory(ast_value_factory());
// Setting the Zone is necessary because zone_ might be the temp Zone, and // Setting the Zone is necessary because zone_ might be the temp Zone, and
// AstValueFactory doesn't know about it. // AstValueFactory doesn't know about it.
factory.set_zone(zone()); factory.set_zone(zone());
DCHECK_NOT_NULL(name.string_); DCHECK_NOT_NULL(name.string_);
scope()->NewUnresolved(&factory, name.string_, start_position, end_position, scope()->NewUnresolved(&factory, name.string_, start_position,
NORMAL_VARIABLE); NORMAL_VARIABLE);
} }
return PreParserExpression::FromIdentifier(name, zone()); return PreParserExpression::FromIdentifier(name, zone());
......
...@@ -1383,7 +1383,7 @@ class PreParser : public ParserBase<PreParser> { ...@@ -1383,7 +1383,7 @@ class PreParser : public ParserBase<PreParser> {
} }
PreParserExpression ExpressionFromIdentifier( PreParserExpression ExpressionFromIdentifier(
PreParserIdentifier name, int start_position, int end_position, PreParserIdentifier name, int start_position,
InferName infer = InferName::kYes); InferName infer = InferName::kYes);
V8_INLINE PreParserExpression ExpressionFromString(int pos) { V8_INLINE PreParserExpression ExpressionFromString(int pos) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment