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

Unified Diff: src/inspector/v8-heap-profiler-agent-impl.cc

Issue 2474483003: [inspector] migrate HeapProfiler to new style (Closed)
Patch Set: Created 4 years, 1 month 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 | « src/inspector/v8-heap-profiler-agent-impl.h ('k') | src/inspector/v8-inspector-session-impl.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/inspector/v8-heap-profiler-agent-impl.cc
diff --git a/src/inspector/v8-heap-profiler-agent-impl.cc b/src/inspector/v8-heap-profiler-agent-impl.cc
index 84c890bf3f72bf0c6f3937dc504b76f490a1180e..41b24ac949d591653f76db85e420271a9b4ca742 100644
--- a/src/inspector/v8-heap-profiler-agent-impl.cc
+++ b/src/inspector/v8-heap-profiler-agent-impl.cc
@@ -164,39 +164,42 @@ void V8HeapProfilerAgentImpl::restore() {
HeapProfilerAgentState::allocationTrackingEnabled, false));
if (m_state->booleanProperty(
HeapProfilerAgentState::samplingHeapProfilerEnabled, false)) {
- ErrorString error;
double samplingInterval = m_state->doubleProperty(
HeapProfilerAgentState::samplingHeapProfilerInterval, -1);
DCHECK_GE(samplingInterval, 0);
- startSampling(&error, Maybe<double>(samplingInterval));
+ startSampling(Maybe<double>(samplingInterval));
}
}
-void V8HeapProfilerAgentImpl::collectGarbage(ErrorString*) {
+Response V8HeapProfilerAgentImpl::collectGarbage() {
m_isolate->LowMemoryNotification();
+ return Response::OK();
}
-void V8HeapProfilerAgentImpl::startTrackingHeapObjects(
- ErrorString*, const protocol::Maybe<bool>& trackAllocations) {
+Response V8HeapProfilerAgentImpl::startTrackingHeapObjects(
+ Maybe<bool> trackAllocations) {
m_state->setBoolean(HeapProfilerAgentState::heapObjectsTrackingEnabled, true);
bool allocationTrackingEnabled = trackAllocations.fromMaybe(false);
m_state->setBoolean(HeapProfilerAgentState::allocationTrackingEnabled,
allocationTrackingEnabled);
startTrackingHeapObjectsInternal(allocationTrackingEnabled);
+ return Response::OK();
}
-void V8HeapProfilerAgentImpl::stopTrackingHeapObjects(
- ErrorString* error, const protocol::Maybe<bool>& reportProgress) {
+Response V8HeapProfilerAgentImpl::stopTrackingHeapObjects(
+ Maybe<bool> reportProgress) {
requestHeapStatsUpdate();
- takeHeapSnapshot(error, reportProgress);
+ takeHeapSnapshot(std::move(reportProgress));
stopTrackingHeapObjectsInternal();
+ return Response::OK();
}
-void V8HeapProfilerAgentImpl::enable(ErrorString*) {
+Response V8HeapProfilerAgentImpl::enable() {
m_state->setBoolean(HeapProfilerAgentState::heapProfilerEnabled, true);
+ return Response::OK();
}
-void V8HeapProfilerAgentImpl::disable(ErrorString* error) {
+Response V8HeapProfilerAgentImpl::disable() {
stopTrackingHeapObjectsInternal();
if (m_state->booleanProperty(
HeapProfilerAgentState::samplingHeapProfilerEnabled, false)) {
@@ -205,15 +208,12 @@ void V8HeapProfilerAgentImpl::disable(ErrorString* error) {
}
m_isolate->GetHeapProfiler()->ClearObjectIds();
m_state->setBoolean(HeapProfilerAgentState::heapProfilerEnabled, false);
+ return Response::OK();
}
-void V8HeapProfilerAgentImpl::takeHeapSnapshot(
- ErrorString* errorString, const protocol::Maybe<bool>& reportProgress) {
+Response V8HeapProfilerAgentImpl::takeHeapSnapshot(Maybe<bool> reportProgress) {
v8::HeapProfiler* profiler = m_isolate->GetHeapProfiler();
- if (!profiler) {
- *errorString = "Cannot access v8 heap profiler";
- return;
- }
+ if (!profiler) return Response::Error("Cannot access v8 heap profiler");
std::unique_ptr<HeapSnapshotProgress> progress;
if (reportProgress.fromMaybe(false))
progress = wrapUnique(new HeapSnapshotProgress(&m_frontend));
@@ -221,80 +221,63 @@ void V8HeapProfilerAgentImpl::takeHeapSnapshot(
GlobalObjectNameResolver resolver(m_session);
const v8::HeapSnapshot* snapshot =
profiler->TakeHeapSnapshot(progress.get(), &resolver);
- if (!snapshot) {
- *errorString = "Failed to take heap snapshot";
- return;
- }
+ if (!snapshot) return Response::Error("Failed to take heap snapshot");
HeapSnapshotOutputStream stream(&m_frontend);
snapshot->Serialize(&stream);
const_cast<v8::HeapSnapshot*>(snapshot)->Delete();
+ return Response::OK();
}
-void V8HeapProfilerAgentImpl::getObjectByHeapObjectId(
- ErrorString* error, const String16& heapSnapshotObjectId,
- const protocol::Maybe<String16>& objectGroup,
+Response V8HeapProfilerAgentImpl::getObjectByHeapObjectId(
+ const String16& heapSnapshotObjectId, Maybe<String16> objectGroup,
std::unique_ptr<protocol::Runtime::RemoteObject>* result) {
bool ok;
int id = heapSnapshotObjectId.toInteger(&ok);
- if (!ok) {
- *error = "Invalid heap snapshot object id";
- return;
- }
+ if (!ok) return Response::Error("Invalid heap snapshot object id");
v8::HandleScope handles(m_isolate);
v8::Local<v8::Object> heapObject = objectByHeapObjectId(m_isolate, id);
- if (heapObject.IsEmpty()) {
- *error = "Object is not available";
- return;
- }
+ if (heapObject.IsEmpty()) return Response::Error("Object is not available");
- if (!m_session->inspector()->client()->isInspectableHeapObject(heapObject)) {
- *error = "Object is not available";
- return;
- }
+ if (!m_session->inspector()->client()->isInspectableHeapObject(heapObject))
+ return Response::Error("Object is not available");
*result = m_session->wrapObject(heapObject->CreationContext(), heapObject,
objectGroup.fromMaybe(""), false);
- if (!result) *error = "Object is not available";
+ if (!result) return Response::Error("Object is not available");
+ return Response::OK();
}
-void V8HeapProfilerAgentImpl::addInspectedHeapObject(
- ErrorString* errorString, const String16& inspectedHeapObjectId) {
+Response V8HeapProfilerAgentImpl::addInspectedHeapObject(
+ const String16& inspectedHeapObjectId) {
bool ok;
int id = inspectedHeapObjectId.toInteger(&ok);
- if (!ok) {
- *errorString = "Invalid heap snapshot object id";
- return;
- }
+ if (!ok) return Response::Error("Invalid heap snapshot object id");
v8::HandleScope handles(m_isolate);
v8::Local<v8::Object> heapObject = objectByHeapObjectId(m_isolate, id);
- if (heapObject.IsEmpty()) {
- *errorString = "Object is not available";
- return;
- }
-
- if (!m_session->inspector()->client()->isInspectableHeapObject(heapObject)) {
- *errorString = "Object is not available";
- return;
- }
+ if (heapObject.IsEmpty()) return Response::Error("Object is not available");
+ if (!m_session->inspector()->client()->isInspectableHeapObject(heapObject))
+ return Response::Error("Object is not available");
m_session->addInspectedObject(wrapUnique(new InspectableHeapObject(id)));
+ return Response::OK();
}
-void V8HeapProfilerAgentImpl::getHeapObjectId(ErrorString* errorString,
- const String16& objectId,
- String16* heapSnapshotObjectId) {
+Response V8HeapProfilerAgentImpl::getHeapObjectId(
+ const String16& objectId, String16* heapSnapshotObjectId) {
v8::HandleScope handles(m_isolate);
v8::Local<v8::Value> value;
v8::Local<v8::Context> context;
- if (!m_session->unwrapObject(errorString, objectId, &value, &context,
+ protocol::ErrorString errorString;
+ if (!m_session->unwrapObject(&errorString, objectId, &value, &context,
nullptr) ||
value->IsUndefined())
- return;
+ return Response::Error(errorString);
v8::SnapshotObjectId id = m_isolate->GetHeapProfiler()->GetObjectId(value);
*heapSnapshotObjectId = String16::fromInteger(static_cast<size_t>(id));
+ return Response::OK();
}
void V8HeapProfilerAgentImpl::requestHeapStatsUpdate() {
@@ -332,13 +315,10 @@ void V8HeapProfilerAgentImpl::stopTrackingHeapObjectsInternal() {
m_state->setBoolean(HeapProfilerAgentState::allocationTrackingEnabled, false);
}
-void V8HeapProfilerAgentImpl::startSampling(
- ErrorString* errorString, const Maybe<double>& samplingInterval) {
+Response V8HeapProfilerAgentImpl::startSampling(
+ Maybe<double> samplingInterval) {
v8::HeapProfiler* profiler = m_isolate->GetHeapProfiler();
- if (!profiler) {
- *errorString = "Cannot access v8 heap profiler";
- return;
- }
+ if (!profiler) return Response::Error("Cannot access v8 heap profiler");
const unsigned defaultSamplingInterval = 1 << 15;
double samplingIntervalValue =
samplingInterval.fromMaybe(defaultSamplingInterval);
@@ -349,6 +329,7 @@ void V8HeapProfilerAgentImpl::startSampling(
profiler->StartSamplingHeapProfiler(
static_cast<uint64_t>(samplingIntervalValue), 128,
v8::HeapProfiler::kSamplingForceGC);
+ return Response::OK();
}
namespace {
@@ -379,14 +360,10 @@ buildSampingHeapProfileNode(const v8::AllocationProfile::Node* node) {
}
} // namespace
-void V8HeapProfilerAgentImpl::stopSampling(
- ErrorString* errorString,
+Response V8HeapProfilerAgentImpl::stopSampling(
std::unique_ptr<protocol::HeapProfiler::SamplingHeapProfile>* profile) {
v8::HeapProfiler* profiler = m_isolate->GetHeapProfiler();
- if (!profiler) {
- *errorString = "Cannot access v8 heap profiler";
- return;
- }
+ if (!profiler) return Response::Error("Cannot access v8 heap profiler");
v8::HandleScope scope(
m_isolate); // Allocation profile contains Local handles.
std::unique_ptr<v8::AllocationProfile> v8Profile(
@@ -394,14 +371,13 @@ void V8HeapProfilerAgentImpl::stopSampling(
profiler->StopSamplingHeapProfiler();
m_state->setBoolean(HeapProfilerAgentState::samplingHeapProfilerEnabled,
false);
- if (!v8Profile) {
- *errorString = "Cannot access v8 sampled heap profile.";
- return;
- }
+ if (!v8Profile)
+ return Response::Error("Cannot access v8 sampled heap profile.");
v8::AllocationProfile::Node* root = v8Profile->GetRootNode();
*profile = protocol::HeapProfiler::SamplingHeapProfile::create()
.setHead(buildSampingHeapProfileNode(root))
.build();
+ return Response::OK();
}
} // namespace v8_inspector
« no previous file with comments | « src/inspector/v8-heap-profiler-agent-impl.h ('k') | src/inspector/v8-inspector-session-impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698