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

Unified Diff: tools/codemap.js

Issue 113101: Don't keep data about JS code that is never executed, optimize static symbols loading (Closed)
Patch Set: Also optimized static symbols loading Created 11 years, 7 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/codemap.js ('k') | tools/tickprocessor.js » ('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 32e03d6641113160c47cc86878fd23fce2b63485..3766db04815d4559088db6f786ca345f0b15634f 100644
--- a/tools/codemap.js
+++ b/tools/codemap.js
@@ -43,10 +43,8 @@ devtools.profiler.CodeMap = function() {
this.dynamics_ = new goog.structs.SplayTree();
/**
- * Deleted code entries. Used for code collected by the GC.
+ * Name generator for entries having duplicate names.
*/
- this.deleted_ = [];
-
this.dynamicsNameGen_ = new devtools.profiler.CodeMap.NameGenerator();
/**
@@ -81,8 +79,6 @@ devtools.profiler.CodeMap.PAGE_SIZE =
* @param {devtools.profiler.CodeMap.CodeEntry} codeEntry Code entry object.
*/
devtools.profiler.CodeMap.prototype.addCode = function(start, codeEntry) {
- var entryName = this.dynamicsNameGen_.getName(codeEntry.name);
- codeEntry.name = entryName;
this.dynamics_.insert(start, codeEntry);
};
@@ -102,14 +98,12 @@ devtools.profiler.CodeMap.prototype.moveCode = function(from, to) {
/**
* Discards a dynamic code entry. Throws an exception if there is no dynamic
- * code entry with the specified starting address. The entry will still be
- * returned from the 'getAllDynamicEntries' method.
+ * code entry with the specified starting address.
*
* @param {number} start The starting address of the entry being deleted.
*/
devtools.profiler.CodeMap.prototype.deleteCode = function(start) {
var removedNode = this.dynamics_.remove(start);
- this.deleted_.push(removedNode.value);
};
@@ -168,7 +162,14 @@ devtools.profiler.CodeMap.prototype.findEntry = function(addr) {
var min = this.dynamics_.findMin();
var max = this.dynamics_.findMax();
if (max != null && addr < (max.key + max.value.size) && addr >= min.key) {
- return this.findInTree_(this.dynamics_, addr);
+ var dynaEntry = this.findInTree_(this.dynamics_, addr);
+ if (dynaEntry == null) return null;
+ // Dedupe entry name.
+ if (!dynaEntry.nameUpdated_) {
Søren Thygesen Gjesse 2009/05/08 09:54:48 Is it alright to access 'private' members using ot
Mikhail Naganov 2009/05/08 11:25:40 I think so.
+ dynaEntry.name = this.dynamicsNameGen_.getName(dynaEntry.name);
+ dynaEntry.nameUpdated_ = true;
+ }
+ return dynaEntry;
}
return null;
};
@@ -178,8 +179,7 @@ devtools.profiler.CodeMap.prototype.findEntry = function(addr) {
* Returns an array of all dynamic code entries, including deleted ones.
*/
devtools.profiler.CodeMap.prototype.getAllDynamicEntries = function() {
- var dynamicEntries = this.dynamics_.exportValues();
- return dynamicEntries.concat(this.deleted_);
+ return this.dynamics_.exportValues();
};
@@ -201,6 +201,7 @@ devtools.profiler.CodeMap.prototype.getAllStaticEntries = function() {
devtools.profiler.CodeMap.CodeEntry = function(size, opt_name) {
this.size = size;
this.name = opt_name || '';
+ this.nameUpdated_ = false;
};
« no previous file with comments | « test/mjsunit/tools/codemap.js ('k') | tools/tickprocessor.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698