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/base/platform/platform.h" | 9 #include "src/base/platform/platform.h" |
10 #include "src/bootstrapper.h" | 10 #include "src/bootstrapper.h" |
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
334 | 334 |
335 #define CHECK_FAILED /**/); \ | 335 #define CHECK_FAILED /**/); \ |
336 if (failed_) return NULL; \ | 336 if (failed_) return NULL; \ |
337 ((void)0 | 337 ((void)0 |
338 #define DUMMY ) // to make indentation work | 338 #define DUMMY ) // to make indentation work |
339 #undef DUMMY | 339 #undef DUMMY |
340 | 340 |
341 // ---------------------------------------------------------------------------- | 341 // ---------------------------------------------------------------------------- |
342 // Implementation of Parser | 342 // Implementation of Parser |
343 | 343 |
| 344 class ParserTraits::Checkpoint |
| 345 : public ParserBase<ParserTraits>::CheckpointBase { |
| 346 public: |
| 347 explicit Checkpoint(ParserBase<ParserTraits>* parser) |
| 348 : CheckpointBase(parser) { |
| 349 isolate_ = parser->zone()->isolate(); |
| 350 saved_ast_node_id_ = isolate_->ast_node_id(); |
| 351 } |
| 352 |
| 353 void Restore() { |
| 354 CheckpointBase::Restore(); |
| 355 isolate_->set_ast_node_id(saved_ast_node_id_); |
| 356 } |
| 357 |
| 358 private: |
| 359 Isolate* isolate_; |
| 360 int saved_ast_node_id_; |
| 361 }; |
| 362 |
| 363 |
344 bool ParserTraits::IsEvalOrArguments(const AstRawString* identifier) const { | 364 bool ParserTraits::IsEvalOrArguments(const AstRawString* identifier) const { |
345 return identifier == parser_->ast_value_factory_->eval_string() || | 365 return identifier == parser_->ast_value_factory_->eval_string() || |
346 identifier == parser_->ast_value_factory_->arguments_string(); | 366 identifier == parser_->ast_value_factory_->arguments_string(); |
347 } | 367 } |
348 | 368 |
349 | 369 |
350 bool ParserTraits::IsThisProperty(Expression* expression) { | 370 bool ParserTraits::IsThisProperty(Expression* expression) { |
351 DCHECK(expression != NULL); | 371 DCHECK(expression != NULL); |
352 Property* property = expression->AsProperty(); | 372 Property* property = expression->AsProperty(); |
353 return property != NULL && | 373 return property != NULL && |
(...skipping 4456 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4810 info()->SetAstValueFactory(ast_value_factory_); | 4830 info()->SetAstValueFactory(ast_value_factory_); |
4811 } | 4831 } |
4812 ast_value_factory_ = NULL; | 4832 ast_value_factory_ = NULL; |
4813 | 4833 |
4814 InternalizeUseCounts(); | 4834 InternalizeUseCounts(); |
4815 | 4835 |
4816 return (result != NULL); | 4836 return (result != NULL); |
4817 } | 4837 } |
4818 | 4838 |
4819 } } // namespace v8::internal | 4839 } } // namespace v8::internal |
OLD | NEW |