| Index: tools/profile.js
|
| diff --git a/tools/profile.js b/tools/profile.js
|
| index c9c9437e930d02b6a5cf4b8be64e1ca268e4a47a..15019be80b358ef3ec9005f69214b3141d5b3f77 100644
|
| --- a/tools/profile.js
|
| +++ b/tools/profile.js
|
| @@ -162,8 +162,16 @@ Profile.prototype.addFuncCode = function(
|
| // Function object has been overwritten with a new one.
|
| func.name = name;
|
| }
|
| - var entry = new Profile.DynamicFuncCodeEntry(size, type, func, state);
|
| - this.codeMap_.addCode(start, entry);
|
| + var entry = this.codeMap_.findDynamicEntryByStartAddress(start);
|
| + if (entry) {
|
| + if (entry.size === size && entry.func === func) {
|
| + // Entry state has changed.
|
| + entry.state = state;
|
| + }
|
| + } else {
|
| + entry = new Profile.DynamicFuncCodeEntry(size, type, func, state);
|
| + this.codeMap_.addCode(start, entry);
|
| + }
|
| return entry;
|
| };
|
|
|
| @@ -408,6 +416,11 @@ Profile.DynamicCodeEntry.prototype.isJSFunction = function() {
|
| };
|
|
|
|
|
| +Profile.DynamicCodeEntry.prototype.toString = function() {
|
| + return this.getName() + ': ' + this.size.toString(16);
|
| +};
|
| +
|
| +
|
| /**
|
| * Creates a dynamic code entry.
|
| *
|
| @@ -448,6 +461,11 @@ Profile.DynamicFuncCodeEntry.prototype.isJSFunction = function() {
|
| };
|
|
|
|
|
| +Profile.DynamicFuncCodeEntry.prototype.toString = function() {
|
| + return this.getName() + ': ' + this.size.toString(16);
|
| +};
|
| +
|
| +
|
| /**
|
| * Creates a shared function object entry.
|
| *
|
| @@ -473,6 +491,7 @@ Profile.FunctionEntry.prototype.getName = function() {
|
| return name;
|
| };
|
|
|
| +Profile.FunctionEntry.prototype.toString = CodeMap.CodeEntry.prototype.toString;
|
|
|
| /**
|
| * Constructs a call graph.
|
|
|