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

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

Issue 1289643005: Rename accessors of class Field to make it more apparent as to what is being accessed - static fiel… (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: self-code-review Created 5 years, 3 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
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_OBJECT_H_ 5 #ifndef VM_OBJECT_H_
6 #define VM_OBJECT_H_ 6 #define VM_OBJECT_H_
7 7
8 #include "include/dart_api.h" 8 #include "include/dart_api.h"
9 #include "platform/assert.h" 9 #include "platform/assert.h"
10 #include "platform/utils.h" 10 #include "platform/utils.h"
(...skipping 2804 matching lines...) Expand 10 before | Expand all | Expand 10 after
2815 bool is_reflectable() const { 2815 bool is_reflectable() const {
2816 return ReflectableBit::decode(raw_ptr()->kind_bits_); 2816 return ReflectableBit::decode(raw_ptr()->kind_bits_);
2817 } 2817 }
2818 bool is_double_initialized() const { 2818 bool is_double_initialized() const {
2819 return DoubleInitializedBit::decode(raw_ptr()->kind_bits_); 2819 return DoubleInitializedBit::decode(raw_ptr()->kind_bits_);
2820 } 2820 }
2821 void set_is_double_initialized(bool value) const { 2821 void set_is_double_initialized(bool value) const {
2822 set_kind_bits(DoubleInitializedBit::update(value, raw_ptr()->kind_bits_)); 2822 set_kind_bits(DoubleInitializedBit::update(value, raw_ptr()->kind_bits_));
2823 } 2823 }
2824 2824
2825 inline intptr_t Offset() const; 2825 inline intptr_t InstanceFieldOffset() const;
2826 inline void SetOffset(intptr_t value_in_bytes) const; 2826 inline void SetInstanceFieldOffset(intptr_t offset_in_bytes) const;
2827 2827
2828 RawInstance* value() const; 2828 RawInstance* StaticFieldValue() const;
rmacnak 2015/09/01 16:54:55 FWIW, the service protocol simply calls this "stat
siva 2015/09/03 23:32:09 Acknowledged.
2829 void set_value(const Instance& value) const; 2829 void SetStaticFieldValue(const Instance& value,
2830 bool save_initial_value = false) const;
2830 2831
2831 RawClass* owner() const; 2832 RawClass* owner() const;
2832 RawClass* origin() const; // Either mixin class, or same as owner(). 2833 RawClass* origin() const; // Either mixin class, or same as owner().
2833 2834
2834 RawAbstractType* type() const { return raw_ptr()->type_; } 2835 RawAbstractType* type() const { return raw_ptr()->type_; }
2835 void set_type(const AbstractType& value) const; 2836 void set_type(const AbstractType& value) const;
2836 2837
2837 static intptr_t InstanceSize() { 2838 static intptr_t InstanceSize() {
2838 return RoundedAllocationSize(sizeof(RawField)); 2839 return RoundedAllocationSize(sizeof(RawField));
2839 } 2840 }
2840 2841
2841 static RawField* New(const String& name, 2842 static RawField* New(const String& name,
2842 bool is_static, 2843 bool is_static,
2843 bool is_final, 2844 bool is_final,
2844 bool is_const, 2845 bool is_const,
2845 bool is_reflectable, 2846 bool is_reflectable,
2846 const Class& owner, 2847 const Class& owner,
2847 intptr_t token_pos); 2848 intptr_t token_pos);
2848 2849
2849 // Allocate new field object, clone values from this field. The 2850 // Allocate new field object, clone values from this field. The
2850 // owner of the clone is new_owner. 2851 // owner of the clone is new_owner.
2851 RawField* Clone(const Class& new_owner) const; 2852 RawField* Clone(const Class& new_owner) const;
2852 2853
2853 static intptr_t value_offset() { return OFFSET_OF(RawField, value_); } 2854 static intptr_t instance_field_offset() {
2855 return OFFSET_OF(RawField, value_.offset_);
2856 }
2857 static intptr_t static_value_offset() {
2858 return OFFSET_OF(RawField, value_.static_value_);
2859 }
2854 2860
2855 static intptr_t kind_bits_offset() { return OFFSET_OF(RawField, kind_bits_); } 2861 static intptr_t kind_bits_offset() { return OFFSET_OF(RawField, kind_bits_); }
2856 2862
2857 intptr_t token_pos() const { return raw_ptr()->token_pos_; } 2863 intptr_t token_pos() const { return raw_ptr()->token_pos_; }
2858 2864
2859 bool has_initializer() const { 2865 bool has_initializer() const {
2860 return HasInitializerBit::decode(raw_ptr()->kind_bits_); 2866 return HasInitializerBit::decode(raw_ptr()->kind_bits_);
2861 } 2867 }
2862 void set_has_initializer(bool has_initializer) const { 2868 void set_has_initializer(bool has_initializer) const {
2863 set_kind_bits(HasInitializerBit::update(has_initializer, 2869 set_kind_bits(HasInitializerBit::update(has_initializer,
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
2954 // Add the given code object to the list of dependent ones. 2960 // Add the given code object to the list of dependent ones.
2955 void RegisterDependentCode(const Code& code) const; 2961 void RegisterDependentCode(const Code& code) const;
2956 2962
2957 // Deoptimize all dependent code objects. 2963 // Deoptimize all dependent code objects.
2958 void DeoptimizeDependentCode() const; 2964 void DeoptimizeDependentCode() const;
2959 2965
2960 bool IsUninitialized() const; 2966 bool IsUninitialized() const;
2961 2967
2962 void EvaluateInitializer() const; 2968 void EvaluateInitializer() const;
2963 2969
2964 RawFunction* initializer() const { 2970 RawFunction* PrecompiledInitializer() const {
2965 return raw_ptr()->initializer_; 2971 return raw_ptr()->initializer_.precompiled_initializer_;
2966 } 2972 }
2967 void set_initializer(const Function& initializer) const; 2973 void SetPrecompiledInitializer(const Function& initializer) const;
2974 bool HasPrecompiledInitializer() const;
2975
2976 RawInstance* SavedInitialStaticValue() const {
2977 return raw_ptr()->initializer_.saved_initial_value_;
2978 }
2979 void SetSavedInitialStaticValue(const Instance& value) const;
2968 2980
2969 // For static fields only. Constructs a closure that gets/sets the 2981 // For static fields only. Constructs a closure that gets/sets the
2970 // field value. 2982 // field value.
2971 RawInstance* GetterClosure() const; 2983 RawInstance* GetterClosure() const;
2972 RawInstance* SetterClosure() const; 2984 RawInstance* SetterClosure() const;
2973 RawInstance* AccessorClosure(bool make_setter) const; 2985 RawInstance* AccessorClosure(bool make_setter) const;
2974 2986
2975 // Constructs getter and setter names for fields and vice versa. 2987 // Constructs getter and setter names for fields and vice versa.
2976 static RawString* GetterName(const String& field_name); 2988 static RawString* GetterName(const String& field_name);
2977 static RawString* GetterSymbol(const String& field_name); 2989 static RawString* GetterSymbol(const String& field_name);
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
3029 } 3041 }
3030 void set_kind_bits(intptr_t value) const { 3042 void set_kind_bits(intptr_t value) const {
3031 StoreNonPointer(&raw_ptr()->kind_bits_, static_cast<uint8_t>(value)); 3043 StoreNonPointer(&raw_ptr()->kind_bits_, static_cast<uint8_t>(value));
3032 } 3044 }
3033 3045
3034 static RawField* New(); 3046 static RawField* New();
3035 3047
3036 FINAL_HEAP_OBJECT_IMPLEMENTATION(Field, Object); 3048 FINAL_HEAP_OBJECT_IMPLEMENTATION(Field, Object);
3037 friend class Class; 3049 friend class Class;
3038 friend class HeapProfiler; 3050 friend class HeapProfiler;
3051 friend class RawField;
3039 }; 3052 };
3040 3053
3041 3054
3042 class LiteralToken : public Object { 3055 class LiteralToken : public Object {
3043 public: 3056 public:
3044 Token::Kind kind() const { return raw_ptr()->kind_; } 3057 Token::Kind kind() const { return raw_ptr()->kind_; }
3045 RawString* literal() const { return raw_ptr()->literal_; } 3058 RawString* literal() const { return raw_ptr()->literal_; }
3046 RawObject* value() const { return raw_ptr()->value_; } 3059 RawObject* value() const { return raw_ptr()->value_; }
3047 3060
3048 static intptr_t InstanceSize() { 3061 static intptr_t InstanceSize() {
(...skipping 1832 matching lines...) Expand 10 before | Expand all | Expand 10 after
4881 4894
4882 protected: 4895 protected:
4883 virtual void PrintSharedInstanceJSON(JSONObject* jsobj, bool ref) const; 4896 virtual void PrintSharedInstanceJSON(JSONObject* jsobj, bool ref) const;
4884 4897
4885 private: 4898 private:
4886 RawObject** FieldAddrAtOffset(intptr_t offset) const { 4899 RawObject** FieldAddrAtOffset(intptr_t offset) const {
4887 ASSERT(IsValidFieldOffset(offset)); 4900 ASSERT(IsValidFieldOffset(offset));
4888 return reinterpret_cast<RawObject**>(raw_value() - kHeapObjectTag + offset); 4901 return reinterpret_cast<RawObject**>(raw_value() - kHeapObjectTag + offset);
4889 } 4902 }
4890 RawObject** FieldAddr(const Field& field) const { 4903 RawObject** FieldAddr(const Field& field) const {
4891 return FieldAddrAtOffset(field.Offset()); 4904 return FieldAddrAtOffset(field.InstanceFieldOffset());
4892 } 4905 }
4893 RawObject** NativeFieldsAddr() const { 4906 RawObject** NativeFieldsAddr() const {
4894 return FieldAddrAtOffset(sizeof(RawObject)); 4907 return FieldAddrAtOffset(sizeof(RawObject));
4895 } 4908 }
4896 4909
4897 void SetFieldAtOffset(intptr_t offset, const Object& value) const { 4910 void SetFieldAtOffset(intptr_t offset, const Object& value) const {
4898 StorePointer(FieldAddrAtOffset(offset), value.raw()); 4911 StorePointer(FieldAddrAtOffset(offset), value.raw());
4899 } 4912 }
4900 bool IsValidFieldOffset(intptr_t offset) const; 4913 bool IsValidFieldOffset(intptr_t offset) const;
4901 4914
(...skipping 3039 matching lines...) Expand 10 before | Expand all | Expand 10 after
7941 Isolate* isolate = Isolate::Current(); 7954 Isolate* isolate = Isolate::Current();
7942 Heap* isolate_heap = isolate->heap(); 7955 Heap* isolate_heap = isolate->heap();
7943 Heap* vm_isolate_heap = Dart::vm_isolate()->heap(); 7956 Heap* vm_isolate_heap = Dart::vm_isolate()->heap();
7944 ASSERT(isolate_heap->Contains(RawObject::ToAddr(raw_)) || 7957 ASSERT(isolate_heap->Contains(RawObject::ToAddr(raw_)) ||
7945 vm_isolate_heap->Contains(RawObject::ToAddr(raw_))); 7958 vm_isolate_heap->Contains(RawObject::ToAddr(raw_)));
7946 } 7959 }
7947 #endif 7960 #endif
7948 } 7961 }
7949 7962
7950 7963
7951 intptr_t Field::Offset() const { 7964 intptr_t Field::InstanceFieldOffset() const {
7952 ASSERT(!is_static()); // Offset is valid only for instance fields. 7965 ASSERT(!is_static()); // Valid only for dart instance fields.
7953 intptr_t value = Smi::Value(reinterpret_cast<RawSmi*>(raw_ptr()->value_)); 7966 intptr_t value = Smi::Value(raw_ptr()->value_.offset_);
7954 return (value * kWordSize); 7967 return (value * kWordSize);
7955 } 7968 }
7956 7969
7957 7970
7958 void Field::SetOffset(intptr_t value_in_bytes) const { 7971 void Field::SetInstanceFieldOffset(intptr_t offset_in_bytes) const {
7959 ASSERT(!is_static()); // SetOffset is valid only for instance fields. 7972 ASSERT(!is_static()); // Valid only for dart instance fields.
7960 ASSERT(kWordSize != 0); 7973 ASSERT(kWordSize != 0);
7961 StorePointer(&raw_ptr()->value_, 7974 StorePointer(&raw_ptr()->value_.offset_,
7962 static_cast<RawInstance*>(Smi::New(value_in_bytes / kWordSize))); 7975 Smi::New(offset_in_bytes / kWordSize));
7963 } 7976 }
7964 7977
7965 7978
7966 void Context::SetAt(intptr_t index, const Object& value) const { 7979 void Context::SetAt(intptr_t index, const Object& value) const {
7967 StorePointer(ObjectAddr(index), value.raw()); 7980 StorePointer(ObjectAddr(index), value.raw());
7968 } 7981 }
7969 7982
7970 7983
7971 intptr_t Instance::GetNativeField(int index) const { 7984 intptr_t Instance::GetNativeField(int index) const {
7972 ASSERT(IsValidNativeIndex(index)); 7985 ASSERT(IsValidNativeIndex(index));
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
8051 8064
8052 8065
8053 RawObject* MegamorphicCache::GetTargetFunction(const Array& array, 8066 RawObject* MegamorphicCache::GetTargetFunction(const Array& array,
8054 intptr_t index) { 8067 intptr_t index) {
8055 return array.At((index * kEntryLength) + kTargetFunctionIndex); 8068 return array.At((index * kEntryLength) + kTargetFunctionIndex);
8056 } 8069 }
8057 8070
8058 } // namespace dart 8071 } // namespace dart
8059 8072
8060 #endif // VM_OBJECT_H_ 8073 #endif // VM_OBJECT_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698