mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 02:07:06 +00:00
[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:
parent
c0c523122b
commit
024d354a60
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue