| OLD | NEW | 
|---|
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "src/v8.h" | 5 #include "src/v8.h" | 
| 6 | 6 | 
| 7 #include "src/api.h" | 7 #include "src/api.h" | 
| 8 #include "src/ast.h" | 8 #include "src/ast.h" | 
| 9 #include "src/bootstrapper.h" | 9 #include "src/bootstrapper.h" | 
| 10 #include "src/char-predicates-inl.h" | 10 #include "src/char-predicates-inl.h" | 
| (...skipping 434 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 445 void ParserTraits::CheckPossibleEvalCall(Expression* expression, | 445 void ParserTraits::CheckPossibleEvalCall(Expression* expression, | 
| 446                                          Scope* scope) { | 446                                          Scope* scope) { | 
| 447   VariableProxy* callee = expression->AsVariableProxy(); | 447   VariableProxy* callee = expression->AsVariableProxy(); | 
| 448   if (callee != NULL && | 448   if (callee != NULL && | 
| 449       callee->IsVariable(parser_->isolate()->factory()->eval_string())) { | 449       callee->IsVariable(parser_->isolate()->factory()->eval_string())) { | 
| 450     scope->DeclarationScope()->RecordEvalCall(); | 450     scope->DeclarationScope()->RecordEvalCall(); | 
| 451   } | 451   } | 
| 452 } | 452 } | 
| 453 | 453 | 
| 454 | 454 | 
| 455 Expression* ParserTraits::MarkExpressionAsLValue(Expression* expression) { | 455 Expression* ParserTraits::MarkExpressionAsAssigned(Expression* expression) { | 
| 456   VariableProxy* proxy = expression != NULL | 456   VariableProxy* proxy = | 
| 457       ? expression->AsVariableProxy() | 457       expression != NULL ? expression->AsVariableProxy() : NULL; | 
| 458       : NULL; | 458   if (proxy != NULL) proxy->set_is_assigned(); | 
| 459   if (proxy != NULL) proxy->MarkAsLValue(); |  | 
| 460   return expression; | 459   return expression; | 
| 461 } | 460 } | 
| 462 | 461 | 
| 463 | 462 | 
| 464 bool ParserTraits::ShortcutNumericLiteralBinaryExpression( | 463 bool ParserTraits::ShortcutNumericLiteralBinaryExpression( | 
| 465     Expression** x, Expression* y, Token::Value op, int pos, | 464     Expression** x, Expression* y, Token::Value op, int pos, | 
| 466     AstNodeFactory<AstConstructionVisitor>* factory) { | 465     AstNodeFactory<AstConstructionVisitor>* factory) { | 
| 467   if ((*x)->AsLiteral() && (*x)->AsLiteral()->value()->IsNumber() && | 466   if ((*x)->AsLiteral() && (*x)->AsLiteral()->value()->IsNumber() && | 
| 468       y->AsLiteral() && y->AsLiteral()->value()->IsNumber()) { | 467       y->AsLiteral() && y->AsLiteral()->value()->IsNumber()) { | 
| 469     double x_val = (*x)->AsLiteral()->value()->Number(); | 468     double x_val = (*x)->AsLiteral()->value()->Number(); | 
| (...skipping 1238 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1708       if (allow_harmony_scoping() && strict_mode() == STRICT) { | 1707       if (allow_harmony_scoping() && strict_mode() == STRICT) { | 
| 1709         // In harmony we treat re-declarations as early errors. See | 1708         // In harmony we treat re-declarations as early errors. See | 
| 1710         // ES5 16 for a definition of early errors. | 1709         // ES5 16 for a definition of early errors. | 
| 1711         ParserTraits::ReportMessage("var_redeclaration", name); | 1710         ParserTraits::ReportMessage("var_redeclaration", name); | 
| 1712         *ok = false; | 1711         *ok = false; | 
| 1713         return; | 1712         return; | 
| 1714       } | 1713       } | 
| 1715       Expression* expression = NewThrowTypeError( | 1714       Expression* expression = NewThrowTypeError( | 
| 1716           "var_redeclaration", name, declaration->position()); | 1715           "var_redeclaration", name, declaration->position()); | 
| 1717       declaration_scope->SetIllegalRedeclaration(expression); | 1716       declaration_scope->SetIllegalRedeclaration(expression); | 
|  | 1717     } else if (mode == VAR) { | 
|  | 1718       var->set_maybe_assigned(); | 
| 1718     } | 1719     } | 
| 1719   } | 1720   } | 
| 1720 | 1721 | 
| 1721   // We add a declaration node for every declaration. The compiler | 1722   // We add a declaration node for every declaration. The compiler | 
| 1722   // will only generate code if necessary. In particular, declarations | 1723   // will only generate code if necessary. In particular, declarations | 
| 1723   // for inner local variables that do not represent functions won't | 1724   // for inner local variables that do not represent functions won't | 
| 1724   // result in any generated code. | 1725   // result in any generated code. | 
| 1725   // | 1726   // | 
| 1726   // Note that we always add an unresolved proxy even if it's not | 1727   // Note that we always add an unresolved proxy even if it's not | 
| 1727   // used, simply because we don't know in this method (w/o extra | 1728   // used, simply because we don't know in this method (w/o extra | 
| (...skipping 3098 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 4826       ASSERT(info()->isolate()->has_pending_exception()); | 4827       ASSERT(info()->isolate()->has_pending_exception()); | 
| 4827     } else { | 4828     } else { | 
| 4828       result = ParseProgram(); | 4829       result = ParseProgram(); | 
| 4829     } | 4830     } | 
| 4830   } | 4831   } | 
| 4831   info()->SetFunction(result); | 4832   info()->SetFunction(result); | 
| 4832   return (result != NULL); | 4833   return (result != NULL); | 
| 4833 } | 4834 } | 
| 4834 | 4835 | 
| 4835 } }  // namespace v8::internal | 4836 } }  // namespace v8::internal | 
| OLD | NEW | 
|---|