Index: runtime/bin/vmstats_impl.cc |
=================================================================== |
--- runtime/bin/vmstats_impl.cc (revision 20477) |
+++ runtime/bin/vmstats_impl.cc (working copy) |
@@ -4,8 +4,6 @@ |
#include "bin/vmstats_impl.h" |
-#include <sstream> |
- |
#include "bin/file.h" |
#include "bin/log.h" |
#include "bin/platform.h" |
@@ -252,21 +250,22 @@ |
free(content); |
} else { |
// No status content with this URL, return file or resource content. |
- std::string path(instance_->root_directory_); |
- path.append(url); |
+ dart::TextBuffer path(strlen(instance_->root_directory_) + strlen(url)); |
+ path.AddString(instance_->root_directory_); |
+ path.AddString(url); |
// Expand directory URLs. |
if (strcmp(url, "/") == 0) { |
- path.append(VMSTATS_HTML); |
+ path.AddString(VMSTATS_HTML); |
} else if (url[strlen(url) - 1] == '/') { |
- path.append(INDEX_HTML); |
+ path.AddString(INDEX_HTML); |
} |
bool success = false; |
char* text_buffer = NULL; |
- const char* content_type = ContentType(path.c_str()); |
- if (File::Exists(path.c_str())) { |
- File* f = File::Open(path.c_str(), File::kRead); |
+ const char* content_type = ContentType(path.buf()); |
+ if (File::Exists(path.buf())) { |
+ File* f = File::Open(path.buf(), File::kRead); |
if (f != NULL) { |
intptr_t len = f->Length(); |
text_buffer = reinterpret_cast<char*>(malloc(len)); |
@@ -279,7 +278,7 @@ |
} |
} else { |
const char* resource; |
- intptr_t len = Resources::ResourceLookup(path.c_str(), &resource); |
+ intptr_t len = Resources::ResourceLookup(path.buf(), &resource); |
if (len != Resources::kNoSuchInstance) { |
ASSERT(len >= 0); |
writeResponse(socket, content_type, resource, len); |
@@ -303,9 +302,8 @@ |
char* VmStats::IsolatesStatus() { |
- std::ostringstream stream; |
- stream << '{' << std::endl; |
- stream << "\"isolates\": [" << std::endl; |
+ dart::TextBuffer text(64); |
+ text.Printf("{\n\"isolates\": [\n"); |
IsolateTable::iterator itr; |
bool first = true; |
for (itr = isolate_table_.begin(); itr != isolate_table_.end(); ++itr) { |
@@ -316,17 +314,16 @@ |
reinterpret_cast<intptr_t>(isolate)); |
char* status = VmStatusService::GetVmStatus(request); |
if (status != NULL) { |
- stream << status; |
+ text.AddString(status); |
if (!first) { |
- stream << "," << std::endl; |
+ text.AddString(",\n"); |
} |
first = false; |
+ free(status); |
} |
- free(status); |
} |
- stream << std::endl << "]"; |
- stream << std::endl << '}' << std::endl; |
- return strdup(stream.str().c_str()); |
+ text.AddString("\n]\n}\n"); |
+ return strdup(text.buf()); |
} |