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

Unified Diff: runtime/vm/trace_buffer.cc

Issue 328663008: Add support to trace warnings in TraceBuffer. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 6 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
Index: runtime/vm/trace_buffer.cc
===================================================================
--- runtime/vm/trace_buffer.cc (revision 37220)
+++ runtime/vm/trace_buffer.cc (working copy)
@@ -4,6 +4,7 @@
#include "vm/isolate.h"
#include "vm/json_stream.h"
+#include "vm/object.h"
#include "vm/os.h"
#include "vm/trace_buffer.h"
@@ -76,20 +77,59 @@
void TraceBuffer::TraceF(const char* format, ...) {
- int64_t micros = OS::GetCurrentTimeMicros();
+ const int64_t micros = OS::GetCurrentTimeMicros();
va_list args;
va_start(args, format);
- intptr_t len = OS::VSNPrint(NULL, 0, format, args);
+ const intptr_t len = OS::VSNPrint(NULL, 0, format, args);
va_end(args);
char* p = reinterpret_cast<char*>(malloc(len+1));
va_start(args, format);
- intptr_t len2 = OS::VSNPrint(p, len+1, format, args);
+ const intptr_t len2 = OS::VSNPrint(p, len+1, format, args);
va_end(args);
ASSERT(len == len2);
AppendTrace(micros, p);
}
+void TraceBuffer::TraceWarningF(Isolate* isolate,
+ const Script& script, intptr_t token_pos,
+ const char* format, ...) {
+ va_list args;
+ va_start(args, format);
+ TraceWarningV(isolate, script, token_pos, format, args);
+ va_end(args);
+}
+
+
+void TraceBuffer::TraceWarningV(Isolate* isolate,
Cutch 2014/06/11 21:45:03 JSONStream js; { JSONObject trace_warning(&j
regis 2014/06/11 23:48:35 Done.
+ const Script& script, intptr_t token_pos,
+ const char* format, va_list args) {
+ const int64_t micros = OS::GetCurrentTimeMicros();
+ TraceBuffer* trace_buffer = isolate->trace_buffer();
+ if (trace_buffer == NULL) {
+ Init(isolate);
+ trace_buffer = isolate->trace_buffer();
+ }
+ JSONStream js;
+ JSONObject trace_warning(&js);
+ trace_warning.AddProperty("type", "TraceBufferWarning");
+ const String& script_url = String::Handle(script.url());
+ trace_warning.AddProperty("script_url", script_url.ToCString());
+ trace_warning.AddProperty("token_pos", token_pos);
+ va_list args_copy;
+ va_copy(args_copy, args);
+ const intptr_t len = OS::VSNPrint(NULL, 0, format, args_copy);
+ va_end(args_copy);
+ char* msg = reinterpret_cast<char*>(malloc(len + 1));
+ va_copy(args_copy, args);
+ OS::VSNPrint(msg, len + 1, format, args_copy);
+ va_end(args_copy);
+ trace_warning.AddProperty("message", msg);
+ char* message_copy = strdup(js.ToCString());
+ trace_buffer->AppendTrace(micros, message_copy);
+}
+
+
void TraceBuffer::PrintToJSONStream(JSONStream* stream) const {
JSONObject json_trace_buffer(stream);
json_trace_buffer.AddProperty("type", "TraceBuffer");

Powered by Google App Engine
This is Rietveld 408576698