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

Side by Side Diff: runtime/vm/object.h

Issue 8403003: Rename the VM internal 'var' type to 'Dynamic' type. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: '' Created 9 years, 1 month 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 | « runtime/vm/compiler.cc ('k') | runtime/vm/object.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) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, 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_OBJECT_H_ 5 #ifndef VM_OBJECT_H_
6 #define VM_OBJECT_H_ 6 #define VM_OBJECT_H_
7 7
8 #include "vm/assert.h" 8 #include "vm/assert.h"
9 #include "vm/dart.h" 9 #include "vm/dart.h"
10 #include "vm/globals.h" 10 #include "vm/globals.h"
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 111
112 class Object { 112 class Object {
113 public: 113 public:
114 // Index for Singleton internal VM classes, 114 // Index for Singleton internal VM classes,
115 // this index is used in snapshots to refer to these classes directly. 115 // this index is used in snapshots to refer to these classes directly.
116 enum { 116 enum {
117 kNullObject = 0, 117 kNullObject = 0,
118 kSentinelObject, 118 kSentinelObject,
119 kClassClass, 119 kClassClass,
120 kNullClass, 120 kNullClass,
121 kVarClass, 121 kDynamicClass,
122 kVoidClass, 122 kVoidClass,
123 kUnresolvedClassClass, 123 kUnresolvedClassClass,
124 kParameterizedTypeClass, 124 kParameterizedTypeClass,
125 kTypeParameterClass, 125 kTypeParameterClass,
126 kInstantiatedTypeClass, 126 kInstantiatedTypeClass,
127 kTypeArgumentsClass, 127 kTypeArgumentsClass,
128 kTypeArrayClass, 128 kTypeArrayClass,
129 kInstantiatedTypeArgumentsClass, 129 kInstantiatedTypeArgumentsClass,
130 kFunctionClass, 130 kFunctionClass,
131 kFieldClass, 131 kFieldClass,
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 // The sentinel is a value that cannot be produced by Dart code. 203 // The sentinel is a value that cannot be produced by Dart code.
204 // It can be used to mark special values, for example to distinguish 204 // It can be used to mark special values, for example to distinguish
205 // "uninitialized" fields. 205 // "uninitialized" fields.
206 static RawInstance* sentinel() { return sentinel_; } 206 static RawInstance* sentinel() { return sentinel_; }
207 // Value marking that we are transitioning from sentinel, e.g., computing 207 // Value marking that we are transitioning from sentinel, e.g., computing
208 // a field value. Used to detect circular initialization. 208 // a field value. Used to detect circular initialization.
209 static RawInstance* transition_sentinel() { return transition_sentinel_; } 209 static RawInstance* transition_sentinel() { return transition_sentinel_; }
210 210
211 static RawClass* class_class() { return class_class_; } 211 static RawClass* class_class() { return class_class_; }
212 static RawClass* null_class() { return null_class_; } 212 static RawClass* null_class() { return null_class_; }
213 static RawClass* var_class() { return var_class_; } 213 static RawClass* dynamic_class() { return dynamic_class_; }
214 static RawClass* void_class() { return void_class_; } 214 static RawClass* void_class() { return void_class_; }
215 static RawClass* unresolved_class_class() { return unresolved_class_class_; } 215 static RawClass* unresolved_class_class() { return unresolved_class_class_; }
216 static RawClass* parameterized_type_class() { 216 static RawClass* parameterized_type_class() {
217 return parameterized_type_class_; 217 return parameterized_type_class_;
218 } 218 }
219 static RawClass* type_parameter_class() { return type_parameter_class_; } 219 static RawClass* type_parameter_class() { return type_parameter_class_; }
220 static RawClass* instantiated_type_class() { 220 static RawClass* instantiated_type_class() {
221 return instantiated_type_class_; 221 return instantiated_type_class_;
222 } 222 }
223 static RawClass* type_arguments_class() { return type_arguments_class_; } 223 static RawClass* type_arguments_class() { return type_arguments_class_; }
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 static cpp_vtable handle_vtable_; 304 static cpp_vtable handle_vtable_;
305 305
306 // The static values below are singletons shared between the different 306 // The static values below are singletons shared between the different
307 // isolates. They are all allocated in the non-GC'd Dart::vm_isolate_. 307 // isolates. They are all allocated in the non-GC'd Dart::vm_isolate_.
308 static RawObject* null_; 308 static RawObject* null_;
309 static RawInstance* sentinel_; 309 static RawInstance* sentinel_;
310 static RawInstance* transition_sentinel_; 310 static RawInstance* transition_sentinel_;
311 311
312 static RawClass* class_class_; // Class of the Class vm object. 312 static RawClass* class_class_; // Class of the Class vm object.
313 static RawClass* null_class_; // Class of the null object. 313 static RawClass* null_class_; // Class of the null object.
314 static RawClass* var_class_; // Class of the 'var' type. 314 static RawClass* dynamic_class_; // Class of the 'Dynamic' type.
315 static RawClass* void_class_; // Class of the 'void' type. 315 static RawClass* void_class_; // Class of the 'void' type.
316 static RawClass* unresolved_class_class_; // Class of UnresolvedClass. 316 static RawClass* unresolved_class_class_; // Class of UnresolvedClass.
317 static RawClass* parameterized_type_class_; // Class of ParameterizedType. 317 static RawClass* parameterized_type_class_; // Class of ParameterizedType.
318 static RawClass* type_parameter_class_; // Class of TypeParameter vm object. 318 static RawClass* type_parameter_class_; // Class of TypeParameter vm object.
319 static RawClass* instantiated_type_class_; // Class of InstantiatedType. 319 static RawClass* instantiated_type_class_; // Class of InstantiatedType.
320 static RawClass* type_arguments_class_; // Class of TypeArguments vm object. 320 static RawClass* type_arguments_class_; // Class of TypeArguments vm object.
321 static RawClass* type_array_class_; // Class of the TypeArray vm object. 321 static RawClass* type_array_class_; // Class of the TypeArray vm object.
322 static RawClass* instantiated_type_arguments_class_; // Class of Inst..ments. 322 static RawClass* instantiated_type_arguments_class_; // Class of Inst..ments.
323 static RawClass* function_class_; // Class of the Function vm object. 323 static RawClass* function_class_; // Class of the Function vm object.
324 static RawClass* field_class_; // Class of the Field vm object. 324 static RawClass* field_class_; // Class of the Field vm object.
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 RawType* SignatureType() const; 402 RawType* SignatureType() const;
403 403
404 RawLibrary* library() const { return raw_ptr()->library_; } 404 RawLibrary* library() const { return raw_ptr()->library_; }
405 void set_library(const Library& value) const; 405 void set_library(const Library& value) const;
406 406
407 // The type parameters are specified as an array of Strings. 407 // The type parameters are specified as an array of Strings.
408 RawArray* type_parameters() const { return raw_ptr()->type_parameters_; } 408 RawArray* type_parameters() const { return raw_ptr()->type_parameters_; }
409 void set_type_parameters(const Array& value) const; 409 void set_type_parameters(const Array& value) const;
410 intptr_t NumTypeParameters() const; 410 intptr_t NumTypeParameters() const;
411 411
412 // Type parameters may optionally extend a Type (VarType if no extends). 412 // Type parameters may optionally extend a Type (DynamicType if no extends).
413 RawTypeArray* type_parameter_extends() const { 413 RawTypeArray* type_parameter_extends() const {
414 return raw_ptr()->type_parameter_extends_; 414 return raw_ptr()->type_parameter_extends_;
415 } 415 }
416 void set_type_parameter_extends(const TypeArray& value) const; 416 void set_type_parameter_extends(const TypeArray& value) const;
417 417
418 // Return a TypeParameter if the type_name is a type parameter of this class. 418 // Return a TypeParameter if the type_name is a type parameter of this class.
419 // Return null otherwise. 419 // Return null otherwise.
420 RawTypeParameter* LookupTypeParameter(const String& type_name) const; 420 RawTypeParameter* LookupTypeParameter(const String& type_name) const;
421 421
422 // If this class is parameterized, each instance has a type_arguments field. 422 // If this class is parameterized, each instance has a type_arguments field.
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 RawArray* functions_cache() const { return raw_ptr()->functions_cache_; } 460 RawArray* functions_cache() const { return raw_ptr()->functions_cache_; }
461 void set_functions_cache(const Array& value) const; 461 void set_functions_cache(const Array& value) const;
462 462
463 static intptr_t functions_cache_offset() { 463 static intptr_t functions_cache_offset() {
464 return OFFSET_OF(RawClass, functions_cache_); 464 return OFFSET_OF(RawClass, functions_cache_);
465 } 465 }
466 466
467 // Check if this class represents the class of null. 467 // Check if this class represents the class of null.
468 bool IsNullClass() const { return raw() == Object::null_class(); } 468 bool IsNullClass() const { return raw() == Object::null_class(); }
469 469
470 // Check if this class represents the 'var' class. 470 // Check if this class represents the 'Dynamic' class.
471 bool IsVarClass() const { return raw() == Object::var_class(); } 471 bool IsDynamicClass() const { return raw() == Object::dynamic_class(); }
472 472
473 // Check if this class represents the 'void' class. 473 // Check if this class represents the 'void' class.
474 bool IsVoidClass() const { return raw() == Object::void_class(); } 474 bool IsVoidClass() const { return raw() == Object::void_class(); }
475 475
476 // Check if this class represents the 'Object' class. 476 // Check if this class represents the 'Object' class.
477 bool IsObjectClass() const; 477 bool IsObjectClass() const;
478 478
479 // Check if this class represents a signature class. 479 // Check if this class represents a signature class.
480 bool IsSignatureClass() const { 480 bool IsSignatureClass() const {
481 return signature_function() != Object::null(); 481 return signature_function() != Object::null();
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
692 692
693 // The name of this type's class, i.e. without the type argument names of this 693 // The name of this type's class, i.e. without the type argument names of this
694 // type. 694 // type.
695 RawString* ClassName() const; 695 RawString* ClassName() const;
696 696
697 // Check if this type represents the 'null' type. 697 // Check if this type represents the 'null' type.
698 bool IsNullType() const { 698 bool IsNullType() const {
699 return HasResolvedTypeClass() && (type_class() == Object::null_class()); 699 return HasResolvedTypeClass() && (type_class() == Object::null_class());
700 } 700 }
701 701
702 // Check if this type represents the 'var' type. 702 // Check if this type represents the 'Dynamic' type.
703 bool IsVarType() const { 703 bool IsDynamicType() const {
704 return HasResolvedTypeClass() && (type_class() == Object::var_class()); 704 return HasResolvedTypeClass() && (type_class() == Object::dynamic_class());
705 } 705 }
706 706
707 // Check if this type represents the 'void' type. 707 // Check if this type represents the 'void' type.
708 bool IsVoidType() const { 708 bool IsVoidType() const {
709 return HasResolvedTypeClass() && (type_class() == Object::void_class()); 709 return HasResolvedTypeClass() && (type_class() == Object::void_class());
710 } 710 }
711 711
712 // Check if this type represents the 'bool' interface. 712 // Check if this type represents the 'bool' interface.
713 bool IsBoolInterface() const; 713 bool IsBoolInterface() const;
714 714
(...skipping 30 matching lines...) Expand all
745 } 745 }
746 746
747 // Check the assignability relationship. 747 // Check the assignability relationship.
748 bool IsAssignableTo(const Type& dst) const { 748 bool IsAssignableTo(const Type& dst) const {
749 return Test(kIsAssignableTo, dst); 749 return Test(kIsAssignableTo, dst);
750 } 750 }
751 751
752 // The type of the literal 'null'. 752 // The type of the literal 'null'.
753 static RawType* NullType(); 753 static RawType* NullType();
754 754
755 // The 'var' type. 755 // The 'Dynamic' type.
756 static RawType* VarType(); 756 static RawType* DynamicType();
757 757
758 // The 'void' type. 758 // The 'void' type.
759 static RawType* VoidType(); 759 static RawType* VoidType();
760 760
761 // The 'Object' type. 761 // The 'Object' type.
762 static RawType* ObjectType(); 762 static RawType* ObjectType();
763 763
764 // The 'bool' interface type. 764 // The 'bool' interface type.
765 static RawType* BoolInterface(); 765 static RawType* BoolInterface();
766 766
767 // The 'int' interface type. 767 // The 'int' interface type.
768 static RawType* IntInterface(); 768 static RawType* IntInterface();
769 769
770 // The 'double' interface type. 770 // The 'double' interface type.
771 static RawType* DoubleInterface(); 771 static RawType* DoubleInterface();
772 772
773 // The 'num' interface type. 773 // The 'num' interface type.
774 static RawType* NumberInterface(); 774 static RawType* NumberInterface();
775 775
776 // The 'String' interface type. 776 // The 'String' interface type.
777 static RawType* StringInterface(); 777 static RawType* StringInterface();
778 778
779 // The 'Function' interface type. 779 // The 'Function' interface type.
780 static RawType* FunctionInterface(); 780 static RawType* FunctionInterface();
781 781
782 // The least specific valid raw type of the given class. 782 // The least specific valid raw type of the given class.
783 // For example, type A<VarType> would be returned for class A<T>, and type 783 // For example, type A<DynamicType> would be returned for class A<T>, and type
784 // B<VarType, A<VarType>> would be returned for B<U, V extends A>. 784 // B<DynamicType, A<DynamicType>> would be returned for B<U, V extends A>.
785 static RawType* NewRawType(const Class& type_class); 785 static RawType* NewRawType(const Class& type_class);
786 786
787 // The finalized type of the given non-parameterized class. 787 // The finalized type of the given non-parameterized class.
788 static RawType* NewNonParameterizedType(const Class& type_class); 788 static RawType* NewNonParameterizedType(const Class& type_class);
789 789
790 static RawType* NewParameterizedType(const Object& type_class, 790 static RawType* NewParameterizedType(const Object& type_class,
791 const TypeArguments& arguments); 791 const TypeArguments& arguments);
792 792
793 static RawType* NewTypeParameter(intptr_t index, const String& name); 793 static RawType* NewTypeParameter(intptr_t index, const String& name);
794 794
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
937 virtual bool IsUninstantiatedIdentity() const; 937 virtual bool IsUninstantiatedIdentity() const;
938 938
939 // Return 'this' if this type argument vector is instantiated, i.e. if it does 939 // Return 'this' if this type argument vector is instantiated, i.e. if it does
940 // not refer to type parameters. Otherwise, return a new type argument vector 940 // not refer to type parameters. Otherwise, return a new type argument vector
941 // where each reference to a type parameter is replaced with the corresponding 941 // where each reference to a type parameter is replaced with the corresponding
942 // type of the instantiator type argument vector starting at the given offset. 942 // type of the instantiator type argument vector starting at the given offset.
943 virtual RawTypeArguments* InstantiateFrom( 943 virtual RawTypeArguments* InstantiateFrom(
944 const TypeArguments& instantiator_type_arguments, 944 const TypeArguments& instantiator_type_arguments,
945 intptr_t offset) const; 945 intptr_t offset) const;
946 946
947 // Check if this type argument vector consists solely of VarType, considering 947 // Check if this type argument vector consists solely of DynamicType,
948 // only a prefix of length 'len'. 948 // considering only a prefix of length 'len'.
949 bool IsVarTypes(intptr_t len) const; 949 bool IsDynamicTypes(intptr_t len) const;
950 950
951 // Check the "more specific than" relationship, considering only a prefix of 951 // Check the "more specific than" relationship, considering only a prefix of
952 // length 'len'. 952 // length 'len'.
953 bool IsMoreSpecificThan(const TypeArguments& other, intptr_t len) const; 953 bool IsMoreSpecificThan(const TypeArguments& other, intptr_t len) const;
954 954
955 static RawTypeArguments* NewTypeArray(intptr_t len); 955 static RawTypeArguments* NewTypeArray(intptr_t len);
956 956
957 static RawTypeArguments* NewInstantiatedTypeArguments( 957 static RawTypeArguments* NewInstantiatedTypeArguments(
958 const TypeArguments& uninstantiated_type_arguments, 958 const TypeArguments& uninstantiated_type_arguments,
959 const TypeArguments& instantiator_type_arguments); 959 const TypeArguments& instantiator_type_arguments);
(...skipping 2008 matching lines...) Expand 10 before | Expand all | Expand 10 after
2968 } 2968 }
2969 2969
2970 2970
2971 void Context::SetAt(intptr_t index, const Instance& value) const { 2971 void Context::SetAt(intptr_t index, const Instance& value) const {
2972 StorePointer(InstanceAddr(index), value.raw()); 2972 StorePointer(InstanceAddr(index), value.raw());
2973 } 2973 }
2974 2974
2975 } // namespace dart 2975 } // namespace dart
2976 2976
2977 #endif // VM_OBJECT_H_ 2977 #endif // VM_OBJECT_H_
OLDNEW
« no previous file with comments | « runtime/vm/compiler.cc ('k') | runtime/vm/object.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698