|
@@ -55,6 +55,7 @@ class StackLink {
|
|
|
|
|
|
class Frame {
|
|
|
public var samples : Array<{ thread : Int, time : Float, stack : Array<StackElement> }> = [];
|
|
|
+ public var marks : Array<{ thread : Int, time : Float, msgId : Int, data : String }> = [];
|
|
|
public var startTime : Float;
|
|
|
public function new() {
|
|
|
}
|
|
@@ -221,7 +222,8 @@ class ProfileGen {
|
|
|
tcur.curFrame.startTime = time;
|
|
|
tcur.frames.push(tcur.curFrame);
|
|
|
default:
|
|
|
- Sys.println("Unknown profile message #"+msgId);
|
|
|
+ var dataStr = data.getString(0, data.length, RawNative); // our string is encoded in hl native format utf16 (ucs2)
|
|
|
+ tcur.curFrame.marks.push({ thread : tid, time : time, msgId : msgId, data : dataStr });
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -296,7 +298,8 @@ class ProfileGen {
|
|
|
args: { data : { startTime : 0 } },
|
|
|
});
|
|
|
|
|
|
- for( f in thread.frames ) {
|
|
|
+ for( findex in 0...thread.frames.length ) {
|
|
|
+ var f = thread.frames[findex];
|
|
|
if( f.samples.length == 0 ) continue;
|
|
|
var ts = timeStamp(f.startTime);
|
|
|
var tend = timeStamp(f.samples[f.samples.length-1].time);
|
|
@@ -309,6 +312,33 @@ class ProfileGen {
|
|
|
cat : "disabled-by-default-devtools.timeline",
|
|
|
name : "RunTask",
|
|
|
});
|
|
|
+ // Insert event marker as performance.measure
|
|
|
+ if( f.marks.length == 0 ) continue;
|
|
|
+ for( mindex in 0...f.marks.length ) {
|
|
|
+ var mark = f.marks[mindex];
|
|
|
+ var markStart = timeStamp(mark.time);
|
|
|
+ var markEnd = ( mindex == f.marks.length-1 ) ? tend : timeStamp(f.marks[mindex+1].time);
|
|
|
+ json.push({
|
|
|
+ pid : 0,
|
|
|
+ tid : tid,
|
|
|
+ ts : markStart,
|
|
|
+ ph : "b",
|
|
|
+ cat : "blink.user_timing",
|
|
|
+ id2 : { local : '$findex' },
|
|
|
+ args : {},
|
|
|
+ name : '${mark.msgId}:${mark.data}',
|
|
|
+ });
|
|
|
+ json.push({
|
|
|
+ pid : 0,
|
|
|
+ tid : tid,
|
|
|
+ ts : markEnd,
|
|
|
+ ph : "e",
|
|
|
+ cat : "blink.user_timing",
|
|
|
+ id2 : { local : '$findex' },
|
|
|
+ args : {},
|
|
|
+ name : '${mark.msgId}:${mark.data}',
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|
|
|
for( f in thread.frames ) {
|
|
|
if( f.samples.length == 0 ) continue;
|