| OLD | NEW |
| 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 1835 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1846 } | 1846 } |
| 1847 | 1847 |
| 1848 intptr_t NumArgsTested() const; | 1848 intptr_t NumArgsTested() const; |
| 1849 | 1849 |
| 1850 intptr_t deopt_id() const { | 1850 intptr_t deopt_id() const { |
| 1851 return raw_ptr()->deopt_id_; | 1851 return raw_ptr()->deopt_id_; |
| 1852 } | 1852 } |
| 1853 | 1853 |
| 1854 bool IsImmutable() const; | 1854 bool IsImmutable() const; |
| 1855 | 1855 |
| 1856 void Reset() const; | 1856 void Reset(Zone* zone) const; |
| 1857 void ResetData() const; | |
| 1858 | 1857 |
| 1859 // Note: only deopts with reasons before Unknown in this list are recorded in | 1858 // Note: only deopts with reasons before Unknown in this list are recorded in |
| 1860 // the ICData. All other reasons are used purely for informational messages | 1859 // the ICData. All other reasons are used purely for informational messages |
| 1861 // printed during deoptimization itself. | 1860 // printed during deoptimization itself. |
| 1862 #define DEOPT_REASONS(V) \ | 1861 #define DEOPT_REASONS(V) \ |
| 1863 V(BinarySmiOp) \ | 1862 V(BinarySmiOp) \ |
| 1864 V(BinaryMintOp) \ | 1863 V(BinaryMintOp) \ |
| 1865 V(DoubleToSmi) \ | 1864 V(DoubleToSmi) \ |
| 1866 V(CheckSmi) \ | 1865 V(CheckSmi) \ |
| 1867 V(Unknown) \ | 1866 V(Unknown) \ |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1953 | 1952 |
| 1954 // Clear all entries with the sentinel value and reset the first entry | 1953 // Clear all entries with the sentinel value and reset the first entry |
| 1955 // with the dummy target entry. | 1954 // with the dummy target entry. |
| 1956 void ClearAndSetStaticTarget(const Function& func) const; | 1955 void ClearAndSetStaticTarget(const Function& func) const; |
| 1957 | 1956 |
| 1958 // Returns the first index that should be used to for a new entry. Will | 1957 // Returns the first index that should be used to for a new entry. Will |
| 1959 // grow the array if necessary. | 1958 // grow the array if necessary. |
| 1960 RawArray* FindFreeIndex(intptr_t* index) const; | 1959 RawArray* FindFreeIndex(intptr_t* index) const; |
| 1961 | 1960 |
| 1962 void DebugDump() const; | 1961 void DebugDump() const; |
| 1963 void ValidateSentinelLocations() const; | |
| 1964 | 1962 |
| 1965 // Returns true if this is a two arg smi operation. | 1963 // Returns true if this is a two arg smi operation. |
| 1966 bool AddSmiSmiCheckForFastSmiStubs() const; | 1964 bool AddSmiSmiCheckForFastSmiStubs() const; |
| 1967 | 1965 |
| 1968 // Used for unoptimized static calls when no class-ids are checked. | 1966 // Used for unoptimized static calls when no class-ids are checked. |
| 1969 void AddTarget(const Function& target) const; | 1967 void AddTarget(const Function& target) const; |
| 1970 | 1968 |
| 1971 // Adding checks. | 1969 // Adding checks. |
| 1972 | 1970 |
| 1973 // Adds one more class test to ICData. Length of 'classes' must be equal to | 1971 // Adds one more class test to ICData. Length of 'classes' must be equal to |
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2126 bool, | 2124 bool, |
| 2127 ICData::kStaticCallPos, | 2125 ICData::kStaticCallPos, |
| 2128 ICData::kStaticCallSize> {}; | 2126 ICData::kStaticCallSize> {}; |
| 2129 #if defined(DEBUG) | 2127 #if defined(DEBUG) |
| 2130 // Used in asserts to verify that a check is not added twice. | 2128 // Used in asserts to verify that a check is not added twice. |
| 2131 bool HasCheck(const GrowableArray<intptr_t>& cids) const; | 2129 bool HasCheck(const GrowableArray<intptr_t>& cids) const; |
| 2132 #endif // DEBUG | 2130 #endif // DEBUG |
| 2133 | 2131 |
| 2134 intptr_t TestEntryLength() const; | 2132 intptr_t TestEntryLength() const; |
| 2135 static RawArray* NewNonCachedEmptyICDataArray(intptr_t num_args_tested); | 2133 static RawArray* NewNonCachedEmptyICDataArray(intptr_t num_args_tested); |
| 2136 static RawArray* NewEmptyICDataArray(intptr_t num_args_tested); | 2134 static RawArray* CachedEmptyICDataArray(intptr_t num_args_tested); |
| 2137 static RawICData* NewDescriptor(Zone* zone, | 2135 static RawICData* NewDescriptor(Zone* zone, |
| 2138 const Function& owner, | 2136 const Function& owner, |
| 2139 const String& target_name, | 2137 const String& target_name, |
| 2140 const Array& arguments_descriptor, | 2138 const Array& arguments_descriptor, |
| 2141 intptr_t deopt_id, | 2139 intptr_t deopt_id, |
| 2142 intptr_t num_args_tested, | 2140 intptr_t num_args_tested, |
| 2143 bool is_static_call); | 2141 bool is_static_call); |
| 2144 | 2142 |
| 2145 static void WriteSentinel(const Array& data, intptr_t test_entry_length); | 2143 static void WriteSentinel(const Array& data, intptr_t test_entry_length); |
| 2146 | 2144 |
| (...skipping 2350 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4497 return raw_ptr()->code_source_map_; | 4495 return raw_ptr()->code_source_map_; |
| 4498 } | 4496 } |
| 4499 | 4497 |
| 4500 void set_code_source_map(const CodeSourceMap& code_source_map) const { | 4498 void set_code_source_map(const CodeSourceMap& code_source_map) const { |
| 4501 ASSERT(code_source_map.IsOld()); | 4499 ASSERT(code_source_map.IsOld()); |
| 4502 StorePointer(&raw_ptr()->code_source_map_, code_source_map.raw()); | 4500 StorePointer(&raw_ptr()->code_source_map_, code_source_map.raw()); |
| 4503 } | 4501 } |
| 4504 | 4502 |
| 4505 // Used during reloading (see object_reload.cc). Calls Reset on all ICDatas | 4503 // Used during reloading (see object_reload.cc). Calls Reset on all ICDatas |
| 4506 // that are embedded inside the Code object. | 4504 // that are embedded inside the Code object. |
| 4507 void ResetICDatas() const; | 4505 void ResetICDatas(Zone* zone) const; |
| 4508 | 4506 |
| 4509 TokenPosition GetTokenPositionAt(intptr_t offset) const; | 4507 TokenPosition GetTokenPositionAt(intptr_t offset) const; |
| 4510 | 4508 |
| 4511 // Array of DeoptInfo objects. | 4509 // Array of DeoptInfo objects. |
| 4512 RawArray* deopt_info_array() const { | 4510 RawArray* deopt_info_array() const { |
| 4513 return raw_ptr()->deopt_info_array_; | 4511 return raw_ptr()->deopt_info_array_; |
| 4514 } | 4512 } |
| 4515 void set_deopt_info_array(const Array& array) const; | 4513 void set_deopt_info_array(const Array& array) const; |
| 4516 | 4514 |
| 4517 RawArray* stackmaps() const { | 4515 RawArray* stackmaps() const { |
| (...skipping 4218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8736 | 8734 |
| 8737 inline void TypeArguments::SetHash(intptr_t value) const { | 8735 inline void TypeArguments::SetHash(intptr_t value) const { |
| 8738 // This is only safe because we create a new Smi, which does not cause | 8736 // This is only safe because we create a new Smi, which does not cause |
| 8739 // heap allocation. | 8737 // heap allocation. |
| 8740 StoreSmi(&raw_ptr()->hash_, Smi::New(value)); | 8738 StoreSmi(&raw_ptr()->hash_, Smi::New(value)); |
| 8741 } | 8739 } |
| 8742 | 8740 |
| 8743 } // namespace dart | 8741 } // namespace dart |
| 8744 | 8742 |
| 8745 #endif // VM_OBJECT_H_ | 8743 #endif // VM_OBJECT_H_ |
| OLD | NEW |