432978367e
Move CodeObserver registration to the OS abstraction. Move Pprof logic to the OS abstraction. Remove pprof from VM tests because now pprof logic is in the VM itself. Add DISALLOW and AllStatic to Code Observers where appropriate. Previous review: https://codereview.chromium.org/11572032/ BUG=7321 Review URL: https://codereview.chromium.org//11660011 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16462 260f80e4-7a28-3924-810f-c04153c831b5
62 lines
1.5 KiB
C++
62 lines
1.5 KiB
C++
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
|
|
// for details. All rights reserved. Use of this source code is governed by a
|
|
// BSD-style license that can be found in the LICENSE file.
|
|
|
|
#include "vm/code_observers.h"
|
|
|
|
#include "vm/os.h"
|
|
|
|
namespace dart {
|
|
|
|
intptr_t CodeObservers::observers_length_ = 0;
|
|
CodeObserver** CodeObservers::observers_ = NULL;
|
|
|
|
|
|
void CodeObservers::Register(CodeObserver* observer) {
|
|
observers_length_++;
|
|
observers_ = reinterpret_cast<CodeObserver**>(
|
|
realloc(observers_, sizeof(observer) * observers_length_));
|
|
if (observers_ == NULL) {
|
|
FATAL("failed to grow code observers array");
|
|
}
|
|
observers_[observers_length_ - 1] = observer;
|
|
}
|
|
|
|
|
|
void CodeObservers::NotifyAll(const char* name,
|
|
uword base,
|
|
uword prologue_offset,
|
|
uword size,
|
|
bool optimized) {
|
|
ASSERT(!AreActive() || (strlen(name) != 0));
|
|
for (intptr_t i = 0; i < observers_length_; i++) {
|
|
if (observers_[i]->IsActive()) {
|
|
observers_[i]->Notify(name, base, prologue_offset, size, optimized);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
bool CodeObservers::AreActive() {
|
|
for (intptr_t i = 0; i < observers_length_; i++) {
|
|
if (observers_[i]->IsActive()) return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
|
|
void CodeObservers::DeleteAll() {
|
|
for (intptr_t i = 0; i < observers_length_; i++) {
|
|
delete observers_[i];
|
|
}
|
|
delete[] observers_;
|
|
}
|
|
|
|
|
|
void CodeObservers::InitOnce() {
|
|
OS::RegisterCodeObservers();
|
|
}
|
|
|
|
|
|
} // namespace dart
|