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

Unified Diff: runtime/vm/intermediate_language.h

Issue 2737303003: Allow dispatch to use a range of Class-ids in tests (Closed)
Patch Set: Feedback from Slava Created 3 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: runtime/vm/intermediate_language.h
diff --git a/runtime/vm/intermediate_language.h b/runtime/vm/intermediate_language.h
index 65a16c6eac5bdeba6dcc949d68e309c4ca0a9e58..51fce1abe8644d73e9ed6f69103a57d762e31380 100644
--- a/runtime/vm/intermediate_language.h
+++ b/runtime/vm/intermediate_language.h
@@ -2777,6 +2777,7 @@ class PolymorphicInstanceCallInstr : public TemplateDefinition<0, Throws> {
complete_(complete) {
ASSERT(instance_call_ != NULL);
ASSERT(!ic_data.NumberOfChecksIs(0));
+ total_call_count_ = CallCount();
}
InstanceCallInstr* instance_call() const { return instance_call_; }
@@ -2800,6 +2801,17 @@ class PolymorphicInstanceCallInstr : public TemplateDefinition<0, Throws> {
virtual intptr_t CallCount() const { return ic_data().AggregateCount(); }
+ // If this polymophic call site was created to cover the remaining cids after
+ // inlinng then we need to keep track of the total number of calls including
+ // the ones that wer inlined. This is different from the CallCount above: Eg
+ // if there were 100 calls originally, distributed across three class-ids in
+ // the ratio 50, 40, 7, 3. The first two were inlined, so now we have only
+ // 10 calls in the CallCount above, but the heuristics need to know that the
+ // last two cids cover 7% and 3% of the calls, not 70% and 30%.
+ intptr_t total_call_count() { return total_call_count_; }
+
+ void set_total_call_count(intptr_t count) { total_call_count_ = count; }
+
DECLARE_INSTRUCTION(PolymorphicInstanceCall)
const ICData& ic_data() const { return ic_data_; }
@@ -2819,6 +2831,7 @@ class PolymorphicInstanceCallInstr : public TemplateDefinition<0, Throws> {
const ICData& ic_data_;
bool with_checks_;
const bool complete_;
+ intptr_t total_call_count_;
DISALLOW_COPY_AND_ASSIGN(PolymorphicInstanceCallInstr);
};

Powered by Google App Engine
This is Rietveld 408576698