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
65 lines
1.7 KiB
C++
65 lines
1.7 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"
|
|
#include "vm/allocation.h"
|
|
|
|
namespace dart {
|
|
|
|
// Object observing code creation events. Used by external profilers and
|
|
// debuggers to map address ranges to function names.
|
|
class CodeObserver {
|
|
public:
|
|
CodeObserver() { }
|
|
|
|
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;
|
|
|
|
private:
|
|
DISALLOW_COPY_AND_ASSIGN(CodeObserver);
|
|
};
|
|
|
|
|
|
class CodeObservers : public AllStatic {
|
|
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();
|
|
|
|
static void DeleteAll();
|
|
|
|
private:
|
|
static intptr_t observers_length_;
|
|
static CodeObserver** observers_;
|
|
};
|
|
|
|
|
|
} // namespace dart
|
|
|
|
#endif // VM_CODE_OBSERVERS_H_
|