[vm] Avoid linear scan of runtime entries when collecting a profile sample.

TEST=ci
Change-Id: Id8e9176e73c9e2dc0a251685711fd8bd8df7f41e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/284742
Reviewed-by: Ben Konyi <bkonyi@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
This commit is contained in:
Ryan Macnak 2023-02-23 18:03:57 +00:00 committed by Commit Queue
parent c0c523122b
commit 024d354a60
2 changed files with 6 additions and 12 deletions

View file

@ -39,10 +39,6 @@ bool VMTag::IsNativeEntryTag(uword tag) {
return (tag > kLastTagId) && !IsRuntimeEntryTag(tag);
}
bool VMTag::IsDartTag(uword id) {
return (id == kDartTagId);
}
bool VMTag::IsExitFrameTag(uword id) {
return (id != 0) && !IsDartTag(id) && (id != kIdleTagId) &&
(id != kVMTagId) && (id != kEmbedderTagId);
@ -106,17 +102,15 @@ VMTagCounters::VMTagCounters() {
}
void VMTagCounters::Increment(uword tag) {
if (VMTag::IsRuntimeEntryTag(tag)) {
ASSERT(tag != VMTag::kInvalidTagId);
if (tag < VMTag::kNumVMTags) {
counters_[tag]++;
} else if (VMTag::IsRuntimeEntryTag(tag)) {
counters_[VMTag::kRuntimeTagId]++;
return;
} else if (tag > VMTag::kNumVMTags) {
} else {
// Assume native entry.
counters_[VMTag::kNativeTagId]++;
return;
}
ASSERT(tag != VMTag::kInvalidTagId);
ASSERT(tag < VMTag::kNumVMTags);
counters_[tag]++;
}
int64_t VMTagCounters::count(uword tag) {

View file

@ -61,7 +61,7 @@ class VMTag : public AllStatic {
}
static const char* TagName(uword id);
static bool IsNativeEntryTag(uword id);
static bool IsDartTag(uword id);
static bool IsDartTag(uword id) { return id == kDartTagId; }
static bool IsExitFrameTag(uword id);
static bool IsRuntimeEntryTag(uword id);
static const char* RuntimeEntryTagName(uword id);