Index: tools/profviz/composer.js |
diff --git a/tools/profviz/composer.js b/tools/profviz/composer.js |
index fe0bf00e7821ae0c3fa71154d69df3721d3f6e00..44dd7639de84b327331082696a2f2da5822660ae 100644 |
--- a/tools/profviz/composer.js |
+++ b/tools/profviz/composer.js |
@@ -31,7 +31,7 @@ Array.prototype.top = function() { |
} |
-function PlotScriptComposer(kResX, kResY) { |
+function PlotScriptComposer(kResX, kResY, error_output) { |
// Constants. |
var kV8BinarySuffixes = ["/d8", "/libv8.so"]; |
var kStackFrames = 8; // Stack frames to display in the plot. |
@@ -149,7 +149,10 @@ function PlotScriptComposer(kResX, kResY) { |
// Utility functions. |
function assert(something, message) { |
- if (!something) print(new Error(message).stack); |
+ if (!something) { |
+ var error = new Error(message); |
+ error_output(error.stack); |
+ } |
} |
function FindCodeKind(kind) { |
@@ -208,10 +211,15 @@ function PlotScriptComposer(kResX, kResY) { |
// Public methods. |
this.collectData = function(input, distortion_per_entry) { |
+ var last_timestamp = 0; |
+ |
// Parse functions. |
var parseTimeStamp = function(timestamp) { |
+ int_timestamp = parseInt(timestamp); |
+ assert(int_timestamp >= last_timestamp, "Inconsistent timestamps."); |
+ last_timestamp = int_timestamp; |
distortion += distortion_per_entry; |
- return parseInt(timestamp) / 1000 - distortion; |
+ return int_timestamp / 1000 - distortion; |
} |
var processTimerEventStart = function(name, start) { |
@@ -260,65 +268,6 @@ function PlotScriptComposer(kResX, kResY) { |
code_map.deleteCode(address); |
}; |
- var processSharedLibrary = function(name, start, end) { |
- var code_entry = new CodeMap.CodeEntry(end - start, name); |
- code_entry.kind = -2; // External code kind. |
- for (var i = 0; i < kV8BinarySuffixes.length; i++) { |
- var suffix = kV8BinarySuffixes[i]; |
- if (name.indexOf(suffix, name.length - suffix.length) >= 0) { |
- code_entry.kind = -1; // V8 runtime code kind. |
- break; |
- } |
- } |
- code_map.addLibrary(start, code_entry); |
- }; |
- |
- var processTimerEventStart = function(name, start) { |
- // Find out the thread id. |
- var new_event = TimerEvents[name]; |
- if (new_event === undefined) return; |
- var thread_id = new_event.thread_id; |
- |
- start = Math.max(last_time_stamp[thread_id] + kMinRangeLength, start); |
- |
- // Last event on this thread is done with the start of this event. |
- var last_event = event_stack[thread_id].top(); |
- if (last_event !== undefined) { |
- var new_range = new Range(last_time_stamp[thread_id], start); |
- last_event.ranges.push(new_range); |
- } |
- event_stack[thread_id].push(new_event); |
- last_time_stamp[thread_id] = start; |
- }; |
- |
- var processTimerEventEnd = function(name, end) { |
- // Find out about the thread_id. |
- var finished_event = TimerEvents[name]; |
- var thread_id = finished_event.thread_id; |
- assert(finished_event === event_stack[thread_id].pop(), |
- "inconsistent event stack"); |
- |
- end = Math.max(last_time_stamp[thread_id] + kMinRangeLength, end); |
- |
- var new_range = new Range(last_time_stamp[thread_id], end); |
- finished_event.ranges.push(new_range); |
- last_time_stamp[thread_id] = end; |
- }; |
- |
- var processCodeCreateEvent = function(type, kind, address, size, name) { |
- var code_entry = new CodeMap.CodeEntry(size, name); |
- code_entry.kind = kind; |
- code_map.addCode(address, code_entry); |
- }; |
- |
- var processCodeMoveEvent = function(from, to) { |
- code_map.moveCode(from, to); |
- }; |
- |
- var processCodeDeleteEvent = function(address) { |
- code_map.deleteCode(address); |
- }; |
- |
var processCodeDeoptEvent = function(time, size) { |
deopts.push(new Deopt(time, size)); |
} |