1ee5f57f93
https://bugs.webkit.org/show_bug.cgi?id=172848 <rdar://problem/25709212> Reviewed by Mark Lam. JSTests: * typeProfiler/inheritance.js: Rewrite the test slightly for clarity. The hoisting was confusing. * heapProfiler/class-names.js: Added. (MyES5Class): (MyES6Class): (MyES6Subclass): Test object types and improved class names. * heapProfiler/driver/driver.js: (CheapHeapSnapshotNode): (CheapHeapSnapshot): (createCheapHeapSnapshot): (HeapSnapshot): (createHeapSnapshot): Update snapshot parsing from version 1 to version 2. Source/JavaScriptCore: * heap/HeapSnapshotBuilder.h: * heap/HeapSnapshotBuilder.cpp: Update the snapshot version. Change the node's 0 | 1 internal value to be a 32bit bit flag. This is nice in that it is both compatible with the previous snapshot version and the same size. We can use more flags in the future. (JSC::HeapSnapshotBuilder::json): In cases where the classInfo gives us "Object" check for a better class name by checking (o).__proto__.constructor.name. We avoid this check in cases where (o).hasOwnProperty("constructor") which is the case for most Foo.prototype objects. Otherwise this would get the name of the Foo superclass for the Foo.prototype object. * runtime/JSObject.cpp: (JSC::JSObject::calculatedClassName): Handle some possible edge cases that were not handled before, such as a JSObject without a GlobalObject or an object which doesn't have a default getPrototype. Try to make the code a little clearer. Source/WebInspectorUI: * UserInterface/Workers/HeapSnapshot/HeapSnapshot.js: (HeapSnapshot): Support the new snapshot version. The only thing that changes are the node flags, and its actually completely compatible with version 1. (HeapSnapshot.updateCategoriesAndMetadata): List the count of object type instances in each class category. (HeapSnapshot.prototype.serializeNode): Include whether or not the node is an object type. * UserInterface/Proxies/HeapSnapshotNodeProxy.js: (WebInspector.HeapSnapshotNodeProxy): (WebInspector.HeapSnapshotNodeProxy.deserialize): Add a new Node isObjectType property based on the new data. * UserInterface/Views/HeapSnapshotClassDataGridNode.js: (WebInspector.HeapSnapshotClassDataGridNode.prototype.createCellContent): * UserInterface/Views/HeapSnapshotClusterContentView.js: (WebInspector.HeapSnapshotClusterContentView.iconStyleClassNameForClassName): If a class contains 50% or more object type instances then treat it as such instead of defaulting to native. * UserInterface/Views/HeapSnapshotDataGridTree.js: (WebInspector.HeapSnapshotInstancesDataGridTree.prototype.populateTopLevel): * UserInterface/Views/HeapSnapshotInstanceDataGridNode.js: (WebInspector.HeapSnapshotInstanceDataGridNode.prototype.createCellContent): We can be more specific than the default if the individual instance is known to be an object type. LayoutTests: * inspector/unit-tests/heap-snapshot-expected.txt: * inspector/unit-tests/heap-snapshot.html: Update for the new node flag. Canonical link: https://commits.webkit.org/209212@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@241787 268f45cc-cd09-0410-ab3c-d52691b4dbfc |
||
---|---|---|
.. | ||
driver | ||
basic-edges.js | ||
basic-nodes.js | ||
class-names.js | ||
property-edge-types.js | ||
typed-array-sizes.js | ||
variable-edge-types.js |