Files
sdk/runtime/lib/timeline.dart
T
John McCutchan 291befa1cd Redo TimelineTask API
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 .
2015-11-11 10:59:38 -08:00

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";