Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(13)

Side by Side Diff: vm/raw_object.h

Issue 10632009: Make the parser agnostic to the TokenStream implementation. This is the first step towards compacti… (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « vm/parser.cc ('k') | vm/raw_object_snapshot.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #ifndef VM_RAW_OBJECT_H_ 5 #ifndef VM_RAW_OBJECT_H_
6 #define VM_RAW_OBJECT_H_ 6 #define VM_RAW_OBJECT_H_
7 7
8 #include "platform/assert.h" 8 #include "platform/assert.h"
9 #include "vm/globals.h" 9 #include "vm/globals.h"
10 #include "vm/token.h" 10 #include "vm/token.h"
(...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after
395 return reinterpret_cast<RawObject**>(&ptr()->allocation_stub_); 395 return reinterpret_cast<RawObject**>(&ptr()->allocation_stub_);
396 } 396 }
397 397
398 cpp_vtable handle_vtable_; 398 cpp_vtable handle_vtable_;
399 intptr_t instance_size_; // Size if fixed length or 0 if variable length. 399 intptr_t instance_size_; // Size if fixed length or 0 if variable length.
400 ObjectKind instance_kind_; 400 ObjectKind instance_kind_;
401 intptr_t id_; // Class Id, also index in the class table. 401 intptr_t id_; // Class Id, also index in the class table.
402 intptr_t type_arguments_instance_field_offset_; // May be kNoTypeArguments. 402 intptr_t type_arguments_instance_field_offset_; // May be kNoTypeArguments.
403 intptr_t next_field_offset_; // Offset of the next instance field. 403 intptr_t next_field_offset_; // Offset of the next instance field.
404 intptr_t num_native_fields_; // Number of native fields in class. 404 intptr_t num_native_fields_; // Number of native fields in class.
405 intptr_t token_index_; 405 intptr_t token_pos_;
406 int8_t class_state_; // Of type ClassState. 406 int8_t class_state_; // Of type ClassState.
407 bool is_const_; 407 bool is_const_;
408 bool is_interface_; 408 bool is_interface_;
409 409
410 friend class Object; 410 friend class Object;
411 friend class RawInstance; 411 friend class RawInstance;
412 friend class RawInstructions; 412 friend class RawInstructions;
413 friend class SnapshotReader; 413 friend class SnapshotReader;
414 }; 414 };
415 415
416 416
417 class RawUnresolvedClass : public RawObject { 417 class RawUnresolvedClass : public RawObject {
418 RAW_HEAP_OBJECT_IMPLEMENTATION(UnresolvedClass); 418 RAW_HEAP_OBJECT_IMPLEMENTATION(UnresolvedClass);
419 419
420 RawObject** from() { 420 RawObject** from() {
421 return reinterpret_cast<RawObject**>(&ptr()->library_prefix_); 421 return reinterpret_cast<RawObject**>(&ptr()->library_prefix_);
422 } 422 }
423 RawLibraryPrefix* library_prefix_; // Library prefix qualifier for the ident. 423 RawLibraryPrefix* library_prefix_; // Library prefix qualifier for the ident.
424 RawString* ident_; // Name of the unresolved identifier. 424 RawString* ident_; // Name of the unresolved identifier.
425 RawClass* factory_signature_class_; // Expected type parameters for factory. 425 RawClass* factory_signature_class_; // Expected type parameters for factory.
426 RawObject** to() { 426 RawObject** to() {
427 return reinterpret_cast<RawObject**>(&ptr()->factory_signature_class_); 427 return reinterpret_cast<RawObject**>(&ptr()->factory_signature_class_);
428 } 428 }
429 intptr_t token_index_; 429 intptr_t token_pos_;
430 }; 430 };
431 431
432 432
433 class RawAbstractType : public RawObject { 433 class RawAbstractType : public RawObject {
434 protected: 434 protected:
435 enum TypeState { 435 enum TypeState {
436 kAllocated, // Initial state. 436 kAllocated, // Initial state.
437 kBeingFinalized, // In the process of being finalized. 437 kBeingFinalized, // In the process of being finalized.
438 kFinalizedInstantiated, // Instantiated type ready for use. 438 kFinalizedInstantiated, // Instantiated type ready for use.
439 kFinalizedUninstantiated, // Uninstantiated type ready for use. 439 kFinalizedUninstantiated, // Uninstantiated type ready for use.
(...skipping 12 matching lines...) Expand all
452 452
453 RawObject** from() { 453 RawObject** from() {
454 return reinterpret_cast<RawObject**>(&ptr()->type_class_); 454 return reinterpret_cast<RawObject**>(&ptr()->type_class_);
455 } 455 }
456 RawObject* type_class_; // Either resolved class or unresolved class. 456 RawObject* type_class_; // Either resolved class or unresolved class.
457 RawAbstractTypeArguments* arguments_; 457 RawAbstractTypeArguments* arguments_;
458 RawError* malformed_error_; // Error object if type is malformed. 458 RawError* malformed_error_; // Error object if type is malformed.
459 RawObject** to() { 459 RawObject** to() {
460 return reinterpret_cast<RawObject**>(&ptr()->malformed_error_); 460 return reinterpret_cast<RawObject**>(&ptr()->malformed_error_);
461 } 461 }
462 intptr_t token_index_; 462 intptr_t token_pos_;
463 int8_t type_state_; 463 int8_t type_state_;
464 }; 464 };
465 465
466 466
467 class RawTypeParameter : public RawAbstractType { 467 class RawTypeParameter : public RawAbstractType {
468 private: 468 private:
469 RAW_HEAP_OBJECT_IMPLEMENTATION(TypeParameter); 469 RAW_HEAP_OBJECT_IMPLEMENTATION(TypeParameter);
470 470
471 RawObject** from() { 471 RawObject** from() {
472 return reinterpret_cast<RawObject**>(&ptr()->parameterized_class_); 472 return reinterpret_cast<RawObject**>(&ptr()->parameterized_class_);
473 } 473 }
474 RawClass* parameterized_class_; 474 RawClass* parameterized_class_;
475 RawString* name_; 475 RawString* name_;
476 RawObject** to() { return reinterpret_cast<RawObject**>(&ptr()->name_); } 476 RawObject** to() { return reinterpret_cast<RawObject**>(&ptr()->name_); }
477 intptr_t index_; 477 intptr_t index_;
478 intptr_t token_index_; 478 intptr_t token_pos_;
479 int8_t type_state_; 479 int8_t type_state_;
480 }; 480 };
481 481
482 482
483 class RawInstantiatedType : public RawAbstractType { 483 class RawInstantiatedType : public RawAbstractType {
484 private: 484 private:
485 RAW_HEAP_OBJECT_IMPLEMENTATION(InstantiatedType); 485 RAW_HEAP_OBJECT_IMPLEMENTATION(InstantiatedType);
486 486
487 RawObject** from() { 487 RawObject** from() {
488 return reinterpret_cast<RawObject**>(&ptr()->uninstantiated_type_); 488 return reinterpret_cast<RawObject**>(&ptr()->uninstantiated_type_);
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
564 RawCode* unoptimized_code_; // Unoptimized code, keep it after optimization. 564 RawCode* unoptimized_code_; // Unoptimized code, keep it after optimization.
565 RawContextScope* context_scope_; 565 RawContextScope* context_scope_;
566 RawFunction* parent_function_; // Enclosing function of this local function. 566 RawFunction* parent_function_; // Enclosing function of this local function.
567 RawClass* signature_class_; // Only for closure or signature function. 567 RawClass* signature_class_; // Only for closure or signature function.
568 RawCode* closure_allocation_stub_; // Stub code for allocation of closures. 568 RawCode* closure_allocation_stub_; // Stub code for allocation of closures.
569 RawFunction* implicit_closure_function_; // Implicit closure function. 569 RawFunction* implicit_closure_function_; // Implicit closure function.
570 RawObject** to() { 570 RawObject** to() {
571 return reinterpret_cast<RawObject**>(&ptr()->implicit_closure_function_); 571 return reinterpret_cast<RawObject**>(&ptr()->implicit_closure_function_);
572 } 572 }
573 573
574 intptr_t token_index_; 574 intptr_t token_pos_;
575 intptr_t end_token_index_; 575 intptr_t end_token_pos_;
576 intptr_t num_fixed_parameters_; 576 intptr_t num_fixed_parameters_;
577 intptr_t num_optional_parameters_; 577 intptr_t num_optional_parameters_;
578 intptr_t usage_counter_; // Incremented while function is running. 578 intptr_t usage_counter_; // Incremented while function is running.
579 intptr_t deoptimization_counter_; 579 intptr_t deoptimization_counter_;
580 Kind kind_; 580 Kind kind_;
581 bool is_static_; 581 bool is_static_;
582 bool is_const_; 582 bool is_const_;
583 bool is_optimizable_; 583 bool is_optimizable_;
584 bool is_native_; 584 bool is_native_;
585 }; 585 };
586 586
587 587
588 class RawField : public RawObject { 588 class RawField : public RawObject {
589 RAW_HEAP_OBJECT_IMPLEMENTATION(Field); 589 RAW_HEAP_OBJECT_IMPLEMENTATION(Field);
590 590
591 RawObject** from() { return reinterpret_cast<RawObject**>(&ptr()->name_); } 591 RawObject** from() { return reinterpret_cast<RawObject**>(&ptr()->name_); }
592 RawString* name_; 592 RawString* name_;
593 RawClass* owner_; 593 RawClass* owner_;
594 RawAbstractType* type_; 594 RawAbstractType* type_;
595 RawInstance* value_; // Offset for instance and value for static fields. 595 RawInstance* value_; // Offset for instance and value for static fields.
596 RawObject** to() { return reinterpret_cast<RawObject**>(&ptr()->value_); } 596 RawObject** to() { return reinterpret_cast<RawObject**>(&ptr()->value_); }
597 597
598 intptr_t token_index_; 598 intptr_t token_pos_;
599 bool is_static_; 599 bool is_static_;
600 bool is_final_; 600 bool is_final_;
601 bool has_initializer_; 601 bool has_initializer_;
602 }; 602 };
603 603
604 604
605 class RawLiteralToken : public RawObject { 605 class RawLiteralToken : public RawObject {
606 RAW_HEAP_OBJECT_IMPLEMENTATION(LiteralToken); 606 RAW_HEAP_OBJECT_IMPLEMENTATION(LiteralToken);
607 607
608 RawObject** from() { 608 RawObject** from() {
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
850 friend class SnapshotReader; 850 friend class SnapshotReader;
851 }; 851 };
852 852
853 853
854 class RawContextScope : public RawObject { 854 class RawContextScope : public RawObject {
855 RAW_HEAP_OBJECT_IMPLEMENTATION(ContextScope); 855 RAW_HEAP_OBJECT_IMPLEMENTATION(ContextScope);
856 856
857 // TODO(iposva): Switch to convential enum offset based structure to avoid 857 // TODO(iposva): Switch to convential enum offset based structure to avoid
858 // alignment mishaps. 858 // alignment mishaps.
859 struct VariableDesc { 859 struct VariableDesc {
860 RawSmi* token_index; 860 RawSmi* token_pos;
861 RawString* name; 861 RawString* name;
862 RawBool* is_final; 862 RawBool* is_final;
863 RawAbstractType* type; 863 RawAbstractType* type;
864 RawSmi* context_index; 864 RawSmi* context_index;
865 RawSmi* context_level; 865 RawSmi* context_level;
866 }; 866 };
867 867
868 intptr_t num_variables_; 868 intptr_t num_variables_;
869 869
870 // Variable length data follows here. 870 // Variable length data follows here.
(...skipping 645 matching lines...) Expand 10 before | Expand all | Expand 10 after
1516 kExternalUint64Array == kByteArray + 18 && 1516 kExternalUint64Array == kByteArray + 18 &&
1517 kExternalFloat32Array == kByteArray + 19 && 1517 kExternalFloat32Array == kByteArray + 19 &&
1518 kExternalFloat64Array == kByteArray + 20 && 1518 kExternalFloat64Array == kByteArray + 20 &&
1519 kClosure == kByteArray + 21); 1519 kClosure == kByteArray + 21);
1520 return (index >= kByteArray && index <= kClosure); 1520 return (index >= kByteArray && index <= kClosure);
1521 } 1521 }
1522 1522
1523 } // namespace dart 1523 } // namespace dart
1524 1524
1525 #endif // VM_RAW_OBJECT_H_ 1525 #endif // VM_RAW_OBJECT_H_
OLDNEW
« no previous file with comments | « vm/parser.cc ('k') | vm/raw_object_snapshot.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698