Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(377)

Unified Diff: runtime/vm/os_android.cc

Issue 390043002: Fix dartbug.com/19998 (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/native_api_impl.cc ('k') | runtime/vm/os_linux.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/os_android.cc
===================================================================
--- runtime/vm/os_android.cc (revision 38188)
+++ runtime/vm/os_android.cc (working copy)
@@ -35,12 +35,11 @@
"Generate symbols of generated dart functions for debugging with GDB");
DEFINE_FLAG(bool, generate_perf_events_symbols, false,
"Generate events symbols for profiling with perf");
-DEFINE_FLAG(charp, generate_pprof_symbols, NULL,
- "Generate events symbols for profiling with pprof");
+
class PerfCodeObserver : public CodeObserver {
public:
- PerfCodeObserver() {
+ PerfCodeObserver() : out_file_(NULL) {
Dart_FileOpenCallback file_open = Isolate::file_open_callback();
if (file_open == NULL) {
return;
@@ -55,15 +54,14 @@
~PerfCodeObserver() {
Dart_FileCloseCallback file_close = Isolate::file_close_callback();
- if (file_close == NULL) {
+ if ((file_close == NULL) || (out_file_ == NULL)) {
return;
}
- ASSERT(out_file_ != NULL);
(*file_close)(out_file_);
}
virtual bool IsActive() const {
- return FLAG_generate_perf_events_symbols;
+ return FLAG_generate_perf_events_symbols && (out_file_ != NULL);
}
virtual void Notify(const char* name,
@@ -72,13 +70,14 @@
uword size,
bool optimized) {
Dart_FileWriteCallback file_write = Isolate::file_write_callback();
- ASSERT(file_write != NULL);
+ if ((file_write == NULL) || (out_file_ == NULL)) {
+ return;
+ }
const char* format = "%" Px " %" Px " %s%s\n";
const char* marker = optimized ? "*" : "";
intptr_t len = OS::SNPrint(NULL, 0, format, base, size, marker, name);
char* buffer = Isolate::Current()->current_zone()->Alloc<char>(len + 1);
OS::SNPrint(buffer, len + 1, format, base, size, marker, name);
- ASSERT(out_file_ != NULL);
(*file_write)(buffer, len, out_file_);
}
@@ -88,65 +87,7 @@
DISALLOW_COPY_AND_ASSIGN(PerfCodeObserver);
};
-class PprofCodeObserver : public CodeObserver {
- public:
- PprofCodeObserver() {
- pprof_symbol_generator_ = DebugInfo::NewGenerator();
- }
- ~PprofCodeObserver() {
- Dart_FileOpenCallback file_open = Isolate::file_open_callback();
- if (file_open == NULL) {
- return;
- }
- Dart_FileCloseCallback file_close = Isolate::file_close_callback();
- if (file_close == NULL) {
- return;
- }
- Dart_FileWriteCallback file_write = Isolate::file_write_callback();
- if (file_write == NULL) {
- return;
- }
- if (FLAG_generate_pprof_symbols == NULL) {
- return;
- }
- const char* filename = FLAG_generate_pprof_symbols;
- void* out_file = (*file_open)(filename, true);
- ASSERT(out_file != NULL);
- DebugInfo::ByteBuffer* debug_region = new DebugInfo::ByteBuffer();
- ASSERT(debug_region != NULL);
- pprof_symbol_generator_->WriteToMemory(debug_region);
- int buffer_size = debug_region->size();
- void* buffer = debug_region->data();
- delete debug_region;
- if (buffer_size > 0) {
- ASSERT(buffer != NULL);
- (*file_write)(buffer, buffer_size, out_file);
- }
- (*file_close)(out_file);
- DebugInfo::UnregisterAllSections();
- }
-
- virtual bool IsActive() const {
- return FLAG_generate_pprof_symbols != NULL;
- }
-
- virtual void Notify(const char* name,
- uword base,
- uword prologue_offset,
- uword size,
- bool optimized) {
- ASSERT(pprof_symbol_generator_ != NULL);
- pprof_symbol_generator_->AddCode(base, size);
- pprof_symbol_generator_->AddCodeRegion(name, base, size);
- }
-
- private:
- DebugInfo* pprof_symbol_generator_;
-
- DISALLOW_COPY_AND_ASSIGN(PprofCodeObserver);
-};
-
class GdbCodeObserver : public CodeObserver {
public:
GdbCodeObserver() { }
@@ -450,9 +391,6 @@
if (FLAG_generate_gdb_symbols) {
CodeObservers::Register(new GdbCodeObserver);
}
- if (FLAG_generate_pprof_symbols != NULL) {
- CodeObservers::Register(new PprofCodeObserver);
- }
#if defined(DART_VTUNE_SUPPORT)
CodeObservers::Register(new VTuneCodeObserver);
#endif
« no previous file with comments | « runtime/vm/native_api_impl.cc ('k') | runtime/vm/os_linux.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698