Index: tools/profile.js |
diff --git a/tools/profile.js b/tools/profile.js |
index c04bed31f1f228ff32bfb908a02a0776f3efd99c..de9c42c5b1100c67d840690bbe63a845db0a2866 100644 |
--- a/tools/profile.js |
+++ b/tools/profile.js |
@@ -135,7 +135,7 @@ Profile.prototype.addStaticCode = function( |
* @param {number} size Code entry size. |
*/ |
Profile.prototype.addCode = function( |
- type, name, start, size) { |
+ type, name, timestamp, start, size) { |
var entry = new Profile.DynamicCodeEntry(size, type, name); |
this.codeMap_.addCode(start, entry); |
return entry; |
@@ -153,7 +153,7 @@ Profile.prototype.addCode = function( |
* @param {Profile.CodeState} state Optimization state. |
*/ |
Profile.prototype.addFuncCode = function( |
- type, name, start, size, funcAddr, state) { |
+ type, name, timestamp, start, size, funcAddr, state) { |
// As code and functions are in the same address space, |
// it is safe to put them in a single code map. |
var func = this.codeMap_.findDynamicEntryByStartAddress(funcAddr); |
@@ -192,6 +192,10 @@ Profile.prototype.moveCode = function(from, to) { |
} |
}; |
+Profile.prototype.deoptCode = function( |
+ timestamp, code, inliningId, scriptOffset, bailoutType, |
+ sourcePositionText, deoptReasonText) { |
+}; |
/** |
* Reports about deletion of a dynamic code entry. |
@@ -864,18 +868,23 @@ JsonProfile.prototype.addStaticCode = function( |
}; |
JsonProfile.prototype.addCode = function( |
- kind, name, start, size) { |
+ kind, name, timestamp, start, size) { |
var entry = new CodeMap.CodeEntry(size, name, 'CODE'); |
this.codeMap_.addCode(start, entry); |
entry.codeId = this.codeEntries_.length; |
- this.codeEntries_.push({name : entry.name, type : entry.type, kind : kind}); |
+ this.codeEntries_.push({ |
+ name : entry.name, |
+ timestamp: timestamp, |
+ type : entry.type, |
+ kind : kind |
+ }); |
return entry; |
}; |
JsonProfile.prototype.addFuncCode = function( |
- kind, name, start, size, funcAddr, state) { |
+ kind, name, timestamp, start, size, funcAddr, state) { |
// As code and functions are in the same address space, |
// it is safe to put them in a single code map. |
var func = this.codeMap_.findDynamicEntryByStartAddress(funcAddr); |
@@ -921,7 +930,8 @@ JsonProfile.prototype.addFuncCode = function( |
name : entry.name, |
type : entry.type, |
kind : kind, |
- func : func.funcId |
+ func : func.funcId, |
+ tm : timestamp |
}); |
} |
return entry; |
@@ -935,6 +945,28 @@ JsonProfile.prototype.moveCode = function(from, to) { |
} |
}; |
+JsonProfile.prototype.deoptCode = function( |
+ timestamp, code, inliningId, scriptOffset, bailoutType, |
+ sourcePositionText, deoptReasonText) { |
+ let entry = this.codeMap_.findDynamicEntryByStartAddress(code); |
+ if (entry) { |
+ let codeId = entry.codeId; |
+ if (!this.codeEntries_[codeId].deopt) { |
+ // Only add the deopt if there was no deopt before. |
+ // The subsequent deoptimizations should be lazy deopts for |
+ // other on-stack activations. |
+ this.codeEntries_[codeId].deopt = { |
+ tm : timestamp, |
+ inliningId : inliningId, |
+ scriptOffset : scriptOffset, |
+ posText : sourcePositionText, |
+ reason : deoptReasonText, |
+ bailoutType : bailoutType |
+ }; |
+ } |
+ } |
+}; |
+ |
JsonProfile.prototype.deleteCode = function(start) { |
try { |
this.codeMap_.deleteCode(start); |