291befa1cd
A TimelineTask represents an asynchronous track of operations on the timeline.
The old API allowed multiple isolates to emit events simultaneously on the same task or to start / finish events in any order. This isn't supported by our UI and probably many other tools that consume trace-event.
With this change, operations within a TimelineTask must complete in the reverse order of their start calls (aka a stack). You can pass a TimelineTask from one isolate to another but you must first complete all open operations before passing it.
Example:
var task = new TimelineTask();
task.start('Some phase');
await someFuture;
task.finish();
Also: Add support for instant events.
R=rmacnak@google.com
Review URL: https://codereview.chromium.org/1412183008 .
33 lines
926 B
Dart
33 lines
926 B
Dart
// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
|
|
// for details. All rights reserved. Use of this source code is governed by a
|
|
// BSD-style license that can be found in the LICENSE file.
|
|
|
|
import 'dart:_internal';
|
|
|
|
patch int _getTraceClock() native "Timeline_getTraceClock";
|
|
|
|
patch int _getNextAsyncId() native "Timeline_getNextAsyncId";
|
|
|
|
patch int _getIsolateNum() native "Timeline_getIsolateNum";
|
|
|
|
patch void _reportTaskEvent(
|
|
int start,
|
|
int taskId,
|
|
String phase,
|
|
String category,
|
|
String name,
|
|
String argumentsAsJson) native "Timeline_reportTaskEvent";
|
|
|
|
patch void _reportCompleteEvent(
|
|
int start,
|
|
int end,
|
|
String category,
|
|
String name,
|
|
String argumentsAsJson) native "Timeline_reportCompleteEvent";
|
|
|
|
patch void _reportInstantEvent(
|
|
int start,
|
|
String category,
|
|
String name,
|
|
String argumentsAsJson) native "Timeline_reportInstantEvent";
|