| Index: src/profile-generator.cc
|
| ===================================================================
|
| --- src/profile-generator.cc (revision 13098)
|
| +++ src/profile-generator.cc (working copy)
|
| @@ -1644,12 +1644,14 @@
|
|
|
| V8HeapExplorer::V8HeapExplorer(
|
| HeapSnapshot* snapshot,
|
| - SnapshottingProgressReportingInterface* progress)
|
| + SnapshottingProgressReportingInterface* progress,
|
| + v8::HeapProfiler::ObjectNameResolver* resolver)
|
| : heap_(Isolate::Current()->heap()),
|
| snapshot_(snapshot),
|
| collection_(snapshot_->collection()),
|
| progress_(progress),
|
| - filler_(NULL) {
|
| + filler_(NULL),
|
| + global_object_name_resolver_(resolver) {
|
| }
|
|
|
|
|
| @@ -2712,21 +2714,30 @@
|
| isolate->factory()->NewStringFromAscii(CStrVector("URL"));
|
| const char** urls = NewArray<const char*>(enumerator.count());
|
| for (int i = 0, l = enumerator.count(); i < l; ++i) {
|
| - urls[i] = NULL;
|
| - HandleScope scope;
|
| - Handle<JSGlobalObject> global_obj = enumerator.at(i);
|
| - Object* obj_document;
|
| - if (global_obj->GetProperty(*document_string)->ToObject(&obj_document) &&
|
| - obj_document->IsJSObject()) {
|
| - // FixMe: Workaround: SharedWorker's current Isolate has NULL context.
|
| - // As result GetProperty(*url_string) will crash.
|
| - if (!Isolate::Current()->context() && obj_document->IsJSGlobalProxy())
|
| - continue;
|
| - JSObject* document = JSObject::cast(obj_document);
|
| - Object* obj_url;
|
| - if (document->GetProperty(*url_string)->ToObject(&obj_url) &&
|
| - obj_url->IsString()) {
|
| - urls[i] = collection_->names()->GetName(String::cast(obj_url));
|
| + if (global_object_name_resolver_) {
|
| + HandleScope scope;
|
| + Handle<JSGlobalObject> global_obj = enumerator.at(i);
|
| + urls[i] = global_object_name_resolver_->GetName(
|
| + Utils::ToLocal(Handle<JSObject>::cast(global_obj)));
|
| + } else {
|
| + // TODO(yurys): This branch is going to be removed once Chromium migrates
|
| + // to the new name resolver.
|
| + urls[i] = NULL;
|
| + HandleScope scope;
|
| + Handle<JSGlobalObject> global_obj = enumerator.at(i);
|
| + Object* obj_document;
|
| + if (global_obj->GetProperty(*document_string)->ToObject(&obj_document) &&
|
| + obj_document->IsJSObject()) {
|
| + // FixMe: Workaround: SharedWorker's current Isolate has NULL context.
|
| + // As result GetProperty(*url_string) will crash.
|
| + if (!Isolate::Current()->context() && obj_document->IsJSGlobalProxy())
|
| + continue;
|
| + JSObject* document = JSObject::cast(obj_document);
|
| + Object* obj_url;
|
| + if (document->GetProperty(*url_string)->ToObject(&obj_url) &&
|
| + obj_url->IsString()) {
|
| + urls[i] = collection_->names()->GetName(String::cast(obj_url));
|
| + }
|
| }
|
| }
|
| }
|
| @@ -3081,11 +3092,13 @@
|
| };
|
|
|
|
|
| -HeapSnapshotGenerator::HeapSnapshotGenerator(HeapSnapshot* snapshot,
|
| - v8::ActivityControl* control)
|
| +HeapSnapshotGenerator::HeapSnapshotGenerator(
|
| + HeapSnapshot* snapshot,
|
| + v8::ActivityControl* control,
|
| + v8::HeapProfiler::ObjectNameResolver* resolver)
|
| : snapshot_(snapshot),
|
| control_(control),
|
| - v8_heap_explorer_(snapshot_, this),
|
| + v8_heap_explorer_(snapshot_, this, resolver),
|
| dom_explorer_(snapshot_, this) {
|
| }
|
|
|
|
|