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

Unified Diff: tools/codemap.js

Issue 2696903002: [profiler] Graphical front-end for tick processor. (Closed)
Patch Set: Fix test Created 3 years, 10 months 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 | « test/mjsunit/tools/tickprocessor.js ('k') | tools/mac-nm » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/codemap.js
diff --git a/tools/codemap.js b/tools/codemap.js
index 30cdc21db50160b3363cbc34131487003ae94492..df6770f9a88087e5daa62ac0dee433ed27fdaa92 100644
--- a/tools/codemap.js
+++ b/tools/codemap.js
@@ -175,23 +175,28 @@ CodeMap.prototype.isAddressBelongsTo_ = function(addr, node) {
*/
CodeMap.prototype.findInTree_ = function(tree, addr) {
var node = tree.findGreatestLessThan(addr);
- return node && this.isAddressBelongsTo_(addr, node) ? node.value : null;
+ return node && this.isAddressBelongsTo_(addr, node) ? node : null;
};
/**
* Finds a code entry that contains the specified address. Both static and
- * dynamic code entries are considered.
+ * dynamic code entries are considered. Returns the code entry and the offset
+ * within the entry.
*
* @param {number} addr Address.
*/
-CodeMap.prototype.findEntry = function(addr) {
+CodeMap.prototype.findAddress = function(addr) {
var pageAddr = addr >>> CodeMap.PAGE_ALIGNMENT;
if (pageAddr in this.pages_) {
// Static code entries can contain "holes" of unnamed code.
// In this case, the whole library is assigned to this address.
- return this.findInTree_(this.statics_, addr) ||
- this.findInTree_(this.libraries_, addr);
+ var result = this.findInTree_(this.statics_, addr);
+ if (!result) {
+ result = this.findInTree_(this.libraries_, addr);
+ if (!result) return null;
+ }
+ return { entry : result.value, offset : addr - result.key };
}
var min = this.dynamics_.findMin();
var max = this.dynamics_.findMax();
@@ -199,17 +204,30 @@ CodeMap.prototype.findEntry = function(addr) {
var dynaEntry = this.findInTree_(this.dynamics_, addr);
if (dynaEntry == null) return null;
// Dedupe entry name.
- if (!dynaEntry.nameUpdated_) {
- dynaEntry.name = this.dynamicsNameGen_.getName(dynaEntry.name);
- dynaEntry.nameUpdated_ = true;
+ var entry = dynaEntry.value;
+ if (!entry.nameUpdated_) {
+ entry.name = this.dynamicsNameGen_.getName(entry.name);
+ entry.nameUpdated_ = true;
}
- return dynaEntry;
+ return { entry : entry, offset : addr - dynaEntry.key };
}
return null;
};
/**
+ * Finds a code entry that contains the specified address. Both static and
+ * dynamic code entries are considered.
+ *
+ * @param {number} addr Address.
+ */
+CodeMap.prototype.findEntry = function(addr) {
+ var result = this.findAddress(addr);
+ return result ? result.entry : null;
+};
+
+
+/**
* Returns a dynamic code entry using its starting address.
*
* @param {number} addr Address.
« no previous file with comments | « test/mjsunit/tools/tickprocessor.js ('k') | tools/mac-nm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698