OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 483 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
494 int NextMaterializedLiteralIndex() { | 494 int NextMaterializedLiteralIndex() { |
495 return next_materialized_literal_index_++; | 495 return next_materialized_literal_index_++; |
496 } | 496 } |
497 int materialized_literal_count() { | 497 int materialized_literal_count() { |
498 return next_materialized_literal_index_ - JSFunction::kLiteralsPrefixSize; | 498 return next_materialized_literal_index_ - JSFunction::kLiteralsPrefixSize; |
499 } | 499 } |
500 | 500 |
501 int NextHandlerIndex() { return next_handler_index_++; } | 501 int NextHandlerIndex() { return next_handler_index_++; } |
502 int handler_count() { return next_handler_index_; } | 502 int handler_count() { return next_handler_index_; } |
503 | 503 |
504 void SetThisPropertyAssignmentInfo( | |
505 bool only_simple_this_property_assignments, | |
506 Handle<FixedArray> this_property_assignments) { | |
507 only_simple_this_property_assignments_ = | |
508 only_simple_this_property_assignments; | |
509 this_property_assignments_ = this_property_assignments; | |
510 } | |
511 bool only_simple_this_property_assignments() { | |
512 return only_simple_this_property_assignments_; | |
513 } | |
514 Handle<FixedArray> this_property_assignments() { | |
515 return this_property_assignments_; | |
516 } | |
517 | |
518 void AddProperty() { expected_property_count_++; } | 504 void AddProperty() { expected_property_count_++; } |
519 int expected_property_count() { return expected_property_count_; } | 505 int expected_property_count() { return expected_property_count_; } |
520 | 506 |
521 void set_generator_object_variable(Variable *variable) { | 507 void set_generator_object_variable(Variable *variable) { |
522 ASSERT(variable != NULL); | 508 ASSERT(variable != NULL); |
523 ASSERT(!is_generator()); | 509 ASSERT(!is_generator()); |
524 generator_object_variable_ = variable; | 510 generator_object_variable_ = variable; |
525 } | 511 } |
526 Variable* generator_object_variable() const { | 512 Variable* generator_object_variable() const { |
527 return generator_object_variable_; | 513 return generator_object_variable_; |
528 } | 514 } |
529 bool is_generator() const { | 515 bool is_generator() const { |
530 return generator_object_variable_ != NULL; | 516 return generator_object_variable_ != NULL; |
531 } | 517 } |
532 | 518 |
533 AstNodeFactory<AstConstructionVisitor>* factory() { return &factory_; } | 519 AstNodeFactory<AstConstructionVisitor>* factory() { return &factory_; } |
534 | 520 |
535 private: | 521 private: |
536 // Used to assign an index to each literal that needs materialization in | 522 // Used to assign an index to each literal that needs materialization in |
537 // the function. Includes regexp literals, and boilerplate for object and | 523 // the function. Includes regexp literals, and boilerplate for object and |
538 // array literals. | 524 // array literals. |
539 int next_materialized_literal_index_; | 525 int next_materialized_literal_index_; |
540 | 526 |
541 // Used to assign a per-function index to try and catch handlers. | 527 // Used to assign a per-function index to try and catch handlers. |
542 int next_handler_index_; | 528 int next_handler_index_; |
543 | 529 |
544 // Properties count estimation. | 530 // Properties count estimation. |
545 int expected_property_count_; | 531 int expected_property_count_; |
546 | 532 |
547 // Keeps track of assignments to properties of this. Used for | |
548 // optimizing constructors. | |
549 bool only_simple_this_property_assignments_; | |
550 Handle<FixedArray> this_property_assignments_; | |
551 | |
552 // For generators, the variable that holds the generator object. This | 533 // For generators, the variable that holds the generator object. This |
553 // variable is used by yield expressions and return statements. NULL | 534 // variable is used by yield expressions and return statements. NULL |
554 // indicates that this function is not a generator. | 535 // indicates that this function is not a generator. |
555 Variable* generator_object_variable_; | 536 Variable* generator_object_variable_; |
556 | 537 |
557 Parser* parser_; | 538 Parser* parser_; |
558 FunctionState* outer_function_state_; | 539 FunctionState* outer_function_state_; |
559 Scope* outer_scope_; | 540 Scope* outer_scope_; |
560 int saved_ast_node_id_; | 541 int saved_ast_node_id_; |
561 AstNodeFactory<AstConstructionVisitor> factory_; | 542 AstNodeFactory<AstConstructionVisitor> factory_; |
(...skipping 346 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
908 private: | 889 private: |
909 static const int kTypeSlot = 0; | 890 static const int kTypeSlot = 0; |
910 static const int kElementsSlot = 1; | 891 static const int kElementsSlot = 1; |
911 | 892 |
912 DISALLOW_IMPLICIT_CONSTRUCTORS(CompileTimeValue); | 893 DISALLOW_IMPLICIT_CONSTRUCTORS(CompileTimeValue); |
913 }; | 894 }; |
914 | 895 |
915 } } // namespace v8::internal | 896 } } // namespace v8::internal |
916 | 897 |
917 #endif // V8_PARSER_H_ | 898 #endif // V8_PARSER_H_ |
OLD | NEW |