Files
sdk/runtime/vm/code_observers.h
T
meh@google.com b406d5cb4e Revert "Cleanup CodeObservers (and update build file)"
This reverts commit b528d673e762b0db88b902ec2e45f917e21d8a67.

BUG=

Review URL: https://codereview.chromium.org//11638002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16285 260f80e4-7a28-3924-810f-c04153c831b5
2012-12-18 19:59:30 +00:00

57 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.
#ifndef VM_CODE_OBSERVERS_H_
#define VM_CODE_OBSERVERS_H_
#include "vm/globals.h"
namespace dart {
// Object observing code creation events. Used by external profilers and
// debuggers to map address ranges to function names.
class CodeObserver {
public:
virtual ~CodeObserver() { }
// Returns true if this observer is active and should be notified
// about newly created code objects.
virtual bool IsActive() const = 0;
// Notify code observer about a newly created code object with the
// given properties.
virtual void Notify(const char* name,
uword base,
uword prologue_offset,
uword size,
bool optimized) = 0;
};
class CodeObservers {
public:
static void InitOnce();
static void Register(CodeObserver* observer);
// Notify all active code observers about a newly created code object.
static void NotifyAll(const char* name,
uword base,
uword prologue_offset,
uword size,
bool optimized);
// Returns true if there is at least one active code observer.
static bool AreActive();
private:
static intptr_t observers_length_;
static CodeObserver** observers_;
};
} // namespace dart
#endif // VM_CODE_OBSERVERS_H_