Chromium Code Reviews| Index: runtime/vm/isolate.cc |
| =================================================================== |
| --- runtime/vm/isolate.cc (revision 18152) |
| +++ runtime/vm/isolate.cc (working copy) |
| @@ -4,6 +4,8 @@ |
| #include "vm/isolate.h" |
| +#include <sstream> |
| + |
| #include "include/dart_api.h" |
| #include "platform/assert.h" |
| #include "lib/mirrors.h" |
| @@ -627,4 +629,40 @@ |
| } |
| } |
| + |
| +char* Isolate::GetStatus(const char* request) { |
| + char* p = const_cast<char*>(request); |
| + const char* service_type = "/isolate/"; |
| + ASSERT(strncmp(p, service_type, strlen(service_type)) == 0); |
| + p += strlen(service_type); |
| + |
| + // Extract isolate handle. |
| + int64_t addr; |
| + OS::StringToInt64(p, &addr); |
| + Isolate* isolate = reinterpret_cast<Isolate*>(addr); |
| + Heap* heap = isolate->heap(); |
| + |
| + std::ostringstream stream; |
| + stream << '{' << std::endl; |
| + stream << " \"name\": \"" << isolate->name() << "\"," << std::endl; |
| + stream << " \"port\": " << isolate->main_port() << ',' << std::endl; |
| + stream << " \"starttime\": " << (isolate->start_time() / 1000) |
| + << ',' << std::endl; |
| + stream << " \"stacklimit\": " << isolate->saved_stack_limit() |
| + << ',' << std::endl; |
| + stream << " \"newspace\": {" << std::endl; |
| + stream << " \"used\": " << |
| + heap->Used(Heap::kNew) / KB << ',' << std::endl; |
| + stream << " \"capacity\": " << |
| + heap->Capacity(Heap::kNew) / KB << std::endl; |
| + stream << " }," << std::endl; |
| + stream << " \"oldspace\": {" << std::endl; |
| + stream << " \"used\": " << |
| + heap->Used(Heap::kOld) / KB << ',' << std::endl; |
| + stream << " \"capacity\": " << |
| + heap->Capacity(Heap::kOld) / KB << std::endl; |
| + stream << " }" << std::endl << "}"; |
|
siva
2013/02/09 01:00:57
Can this whole sequence be constructed using OS::S
Tom Ball
2013/02/14 23:45:16
Done.
|
| + return strdup(stream.str().c_str()); |
| +} |
| + |
| } // namespace dart |