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

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

Issue 1414933006: Copy ICData descriptors when starting background compilation, so that they do not change while comp… (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Address comments Created 5 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
« no previous file with comments | « runtime/vm/flow_graph_inliner.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) 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 1903 matching lines...) Expand 10 before | Expand all | Expand 10 after
1914 bool HasOneTarget() const; 1914 bool HasOneTarget() const;
1915 bool HasReceiverClassId(intptr_t class_id) const; 1915 bool HasReceiverClassId(intptr_t class_id) const;
1916 1916
1917 static RawICData* New(const Function& owner, 1917 static RawICData* New(const Function& owner,
1918 const String& target_name, 1918 const String& target_name,
1919 const Array& arguments_descriptor, 1919 const Array& arguments_descriptor,
1920 intptr_t deopt_id, 1920 intptr_t deopt_id,
1921 intptr_t num_args_tested); 1921 intptr_t num_args_tested);
1922 static RawICData* NewFrom(const ICData& from, intptr_t num_args_tested); 1922 static RawICData* NewFrom(const ICData& from, intptr_t num_args_tested);
1923 1923
1924 // Generates a new ICData with descriptor data copied (shallow clone).
1925 // Entry array of the result is the same as in 'from'. Once entry array is
1926 // created, it can only change the 'count', all other properties are invariant
1927 // (target, cids, number of checks).
1928 static RawICData* CloneDescriptor(const ICData& from);
1929
1924 static intptr_t TestEntryLengthFor(intptr_t num_args); 1930 static intptr_t TestEntryLengthFor(intptr_t num_args);
1925 1931
1926 static intptr_t TargetIndexFor(intptr_t num_args) { 1932 static intptr_t TargetIndexFor(intptr_t num_args) {
1927 return num_args; 1933 return num_args;
1928 } 1934 }
1929 1935
1930 static intptr_t CountIndexFor(intptr_t num_args) { 1936 static intptr_t CountIndexFor(intptr_t num_args) {
1931 return (num_args + 1); 1937 return (num_args + 1);
1932 } 1938 }
1933 1939
(...skipping 675 matching lines...) Expand 10 before | Expand all | Expand 10 after
2609 // functions. 2615 // functions.
2610 int32_t SourceFingerprint() const; 2616 int32_t SourceFingerprint() const;
2611 2617
2612 // Return false and report an error if the fingerprint does not match. 2618 // Return false and report an error if the fingerprint does not match.
2613 bool CheckSourceFingerprint(const char* prefix, int32_t fp) const; 2619 bool CheckSourceFingerprint(const char* prefix, int32_t fp) const;
2614 2620
2615 // Works with map [deopt-id] -> ICData. 2621 // Works with map [deopt-id] -> ICData.
2616 void SaveICDataMap( 2622 void SaveICDataMap(
2617 const ZoneGrowableArray<const ICData*>& deopt_id_to_ic_data, 2623 const ZoneGrowableArray<const ICData*>& deopt_id_to_ic_data,
2618 const Array& edge_counters_array) const; 2624 const Array& edge_counters_array) const;
2625 // Uses saved ICData to populate the table 'deopt_id_to_ic_data'. Clone
2626 // descriptors if 'clone_descriptors' true.
2619 void RestoreICDataMap( 2627 void RestoreICDataMap(
2620 ZoneGrowableArray<const ICData*>* deopt_id_to_ic_data) const; 2628 ZoneGrowableArray<const ICData*>* deopt_id_to_ic_data,
2629 bool clone_descriptors) const;
2621 2630
2622 RawArray* ic_data_array() const; 2631 RawArray* ic_data_array() const;
2623 void ClearICDataArray() const; 2632 void ClearICDataArray() const;
2624 2633
2625 // Sets deopt reason in all ICData-s with given deopt_id. 2634 // Sets deopt reason in all ICData-s with given deopt_id.
2626 void SetDeoptReasonForAll(intptr_t deopt_id, ICData::DeoptReasonId reason); 2635 void SetDeoptReasonForAll(intptr_t deopt_id, ICData::DeoptReasonId reason);
2627 2636
2628 static const int kCtorPhaseInit = 1 << 0; 2637 static const int kCtorPhaseInit = 1 << 0;
2629 static const int kCtorPhaseBody = 1 << 1; 2638 static const int kCtorPhaseBody = 1 << 1;
2630 static const int kCtorPhaseAll = (kCtorPhaseInit | kCtorPhaseBody); 2639 static const int kCtorPhaseAll = (kCtorPhaseInit | kCtorPhaseBody);
(...skipping 5565 matching lines...) Expand 10 before | Expand all | Expand 10 after
8196 8205
8197 8206
8198 RawObject* MegamorphicCache::GetTargetFunction(const Array& array, 8207 RawObject* MegamorphicCache::GetTargetFunction(const Array& array,
8199 intptr_t index) { 8208 intptr_t index) {
8200 return array.At((index * kEntryLength) + kTargetFunctionIndex); 8209 return array.At((index * kEntryLength) + kTargetFunctionIndex);
8201 } 8210 }
8202 8211
8203 } // namespace dart 8212 } // namespace dart
8204 8213
8205 #endif // VM_OBJECT_H_ 8214 #endif // VM_OBJECT_H_
OLDNEW
« no previous file with comments | « runtime/vm/flow_graph_inliner.cc ('k') | runtime/vm/object.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698