Added task kind field to thread JSON output.

BUG=
R=johnmccutchan@google.com

Review-Url: https://codereview.chromium.org/2565253004 .
This commit is contained in:
Ben Konyi 2016-12-12 17:08:45 -08:00
parent 66182e5881
commit 9f8a85c19b
3 changed files with 33 additions and 5 deletions

View file

@ -213,6 +213,7 @@ void Thread::PrintJSON(JSONStream* stream) const {
jsobj.AddProperty("type", "_Thread");
jsobj.AddPropertyF("id", "threads/%" Pd "",
OSThread::ThreadIdToIntPtr(os_thread()->trace_id()));
jsobj.AddProperty("kind", TaskKindToCString(task_kind()));
Zone* zone = zone_;
{
JSONArray zone_info_array(&jsobj, "zones");
@ -266,6 +267,27 @@ void Thread::clear_sticky_error() {
}
const char* Thread::TaskKindToCString(TaskKind kind) {
switch (kind) {
case kUnknownTask:
return "kUnknownTask";
case kMutatorTask:
return "kMutatorTask";
case kCompilerTask:
return "kCompilerTask";
case kSweeperTask:
return "kSweeperTask";
case kMarkerTask:
return "kMarkerTask";
case kFinalizerTask:
return "kFinalizerTask";
default:
UNREACHABLE();
return "";
}
}
bool Thread::EnterIsolate(Isolate* isolate) {
const bool kIsMutatorThread = true;
Thread* thread = isolate->ScheduleThread(kIsMutatorThread);

View file

@ -161,6 +161,9 @@ class Thread : public BaseThread {
kMarkerTask = 0x8,
kFinalizerTask = 0x10,
};
// Converts a TaskKind to its corresponding C-String name.
static const char* TaskKindToCString(TaskKind kind);
~Thread();
// The currently executing thread, or NULL if not yet initialized.

View file

@ -343,11 +343,14 @@ TEST_CASE(ManySimpleTasksWithZones) {
}
// Check the thread exists and is the correct size.
char* thread_info_buf = OS::SCreate(
current_zone,
"\"type\":\"_Thread\","
"\"id\":\"threads\\/%" Pd "",
OSThread::ThreadIdToIntPtr(thread->os_thread()->trace_id()));
char* thread_info_buf =
OS::SCreate(current_zone,
"\"type\":\"_Thread\","
"\"id\":\"threads\\/%" Pd
"\","
"\"kind\":\"%s\"",
OSThread::ThreadIdToIntPtr(thread->os_thread()->trace_id()),
Thread::TaskKindToCString(thread->task_kind()));
EXPECT_SUBSTRING(thread_info_buf, json);
}