Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(588)

Side by Side Diff: runtime/lib/timeline.cc

Issue 2974233002: VM: Re-format to use at most one newline between functions (Closed)
Patch Set: Rebase and merge Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « runtime/lib/string.cc ('k') | runtime/lib/typed_data.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "vm/bootstrap_natives.h" 5 #include "vm/bootstrap_natives.h"
6 6
7 #include "include/dart_api.h" 7 #include "include/dart_api.h"
8 8
9 #include "vm/native_entry.h" 9 #include "vm/native_entry.h"
10 #include "vm/object.h" 10 #include "vm/object.h"
11 #include "vm/os.h" 11 #include "vm/os.h"
12 #include "vm/timeline.h" 12 #include "vm/timeline.h"
13 13
14 namespace dart { 14 namespace dart {
15 15
16 // Native implementations for the dart:developer library. 16 // Native implementations for the dart:developer library.
17 17
18 DEFINE_NATIVE_ENTRY(Timeline_isDartStreamEnabled, 0) { 18 DEFINE_NATIVE_ENTRY(Timeline_isDartStreamEnabled, 0) {
19 #ifndef PRODUCT 19 #ifndef PRODUCT
20 if (!FLAG_support_timeline) { 20 if (!FLAG_support_timeline) {
21 return Bool::False().raw(); 21 return Bool::False().raw();
22 } 22 }
23 if (Timeline::GetDartStream()->enabled()) { 23 if (Timeline::GetDartStream()->enabled()) {
24 return Bool::True().raw(); 24 return Bool::True().raw();
25 } 25 }
26 #endif // !PRODUCT 26 #endif // !PRODUCT
27 return Bool::False().raw(); 27 return Bool::False().raw();
28 } 28 }
29 29
30
31 DEFINE_NATIVE_ENTRY(Timeline_getIsolateNum, 0) { 30 DEFINE_NATIVE_ENTRY(Timeline_getIsolateNum, 0) {
32 return Integer::New(static_cast<int64_t>(isolate->main_port()), Heap::kOld); 31 return Integer::New(static_cast<int64_t>(isolate->main_port()), Heap::kOld);
33 } 32 }
34 33
35
36 DEFINE_NATIVE_ENTRY(Timeline_getNextAsyncId, 0) { 34 DEFINE_NATIVE_ENTRY(Timeline_getNextAsyncId, 0) {
37 if (!FLAG_support_timeline) { 35 if (!FLAG_support_timeline) {
38 return Integer::New(0); 36 return Integer::New(0);
39 } 37 }
40 TimelineEventRecorder* recorder = Timeline::recorder(); 38 TimelineEventRecorder* recorder = Timeline::recorder();
41 if (recorder == NULL) { 39 if (recorder == NULL) {
42 return Integer::New(0); 40 return Integer::New(0);
43 } 41 }
44 return Integer::New(recorder->GetNextAsyncId()); 42 return Integer::New(recorder->GetNextAsyncId());
45 } 43 }
46 44
47
48 DEFINE_NATIVE_ENTRY(Timeline_getTraceClock, 0) { 45 DEFINE_NATIVE_ENTRY(Timeline_getTraceClock, 0) {
49 return Integer::New(OS::GetCurrentMonotonicMicros(), Heap::kNew); 46 return Integer::New(OS::GetCurrentMonotonicMicros(), Heap::kNew);
50 } 47 }
51 48
52
53 DEFINE_NATIVE_ENTRY(Timeline_getThreadCpuClock, 0) { 49 DEFINE_NATIVE_ENTRY(Timeline_getThreadCpuClock, 0) {
54 return Integer::New(OS::GetCurrentThreadCPUMicros(), Heap::kNew); 50 return Integer::New(OS::GetCurrentThreadCPUMicros(), Heap::kNew);
55 } 51 }
56 52
57
58 DEFINE_NATIVE_ENTRY(Timeline_reportTaskEvent, 6) { 53 DEFINE_NATIVE_ENTRY(Timeline_reportTaskEvent, 6) {
59 #ifndef PRODUCT 54 #ifndef PRODUCT
60 if (!FLAG_support_timeline) { 55 if (!FLAG_support_timeline) {
61 return Object::null(); 56 return Object::null();
62 } 57 }
63 GET_NON_NULL_NATIVE_ARGUMENT(Integer, start, arguments->NativeArgAt(0)); 58 GET_NON_NULL_NATIVE_ARGUMENT(Integer, start, arguments->NativeArgAt(0));
64 GET_NON_NULL_NATIVE_ARGUMENT(Integer, id, arguments->NativeArgAt(1)); 59 GET_NON_NULL_NATIVE_ARGUMENT(Integer, id, arguments->NativeArgAt(1));
65 GET_NON_NULL_NATIVE_ARGUMENT(String, phase, arguments->NativeArgAt(2)); 60 GET_NON_NULL_NATIVE_ARGUMENT(String, phase, arguments->NativeArgAt(2));
66 GET_NON_NULL_NATIVE_ARGUMENT(String, category, arguments->NativeArgAt(3)); 61 GET_NON_NULL_NATIVE_ARGUMENT(String, category, arguments->NativeArgAt(3));
67 GET_NON_NULL_NATIVE_ARGUMENT(String, name, arguments->NativeArgAt(4)); 62 GET_NON_NULL_NATIVE_ARGUMENT(String, name, arguments->NativeArgAt(4));
(...skipping 14 matching lines...) Expand all
82 OSThread* os_thread = thread->os_thread(); 77 OSThread* os_thread = thread->os_thread();
83 ASSERT(os_thread != NULL); 78 ASSERT(os_thread != NULL);
84 int64_t tid = OSThread::ThreadIdToIntPtr(os_thread->trace_id()); 79 int64_t tid = OSThread::ThreadIdToIntPtr(os_thread->trace_id());
85 // Convert phase to a C string and perform a sanity check. 80 // Convert phase to a C string and perform a sanity check.
86 const char* phase_string = phase.ToCString(); 81 const char* phase_string = phase.ToCString();
87 ASSERT(phase_string != NULL); 82 ASSERT(phase_string != NULL);
88 ASSERT((phase_string[0] == 'n') || (phase_string[0] == 'b') || 83 ASSERT((phase_string[0] == 'n') || (phase_string[0] == 'b') ||
89 (phase_string[0] == 'e')); 84 (phase_string[0] == 'e'));
90 ASSERT(phase_string[1] == '\0'); 85 ASSERT(phase_string[1] == '\0');
91 char* json = OS::SCreate( 86 char* json = OS::SCreate(
92 zone, "{\"name\":\"%s\",\"cat\":\"%s\",\"tid\":%" Pd64 ",\"pid\":%" Pd64 87 zone,
93 "," 88 "{\"name\":\"%s\",\"cat\":\"%s\",\"tid\":%" Pd64 ",\"pid\":%" Pd64
94 "\"ts\":%" Pd64 ",\"ph\":\"%s\",\"id\":%" Pd64 ", \"args\":%s}", 89 ","
90 "\"ts\":%" Pd64 ",\"ph\":\"%s\",\"id\":%" Pd64 ", \"args\":%s}",
95 name.ToCString(), category.ToCString(), tid, pid, start.AsInt64Value(), 91 name.ToCString(), category.ToCString(), tid, pid, start.AsInt64Value(),
96 phase_string, id.AsInt64Value(), args.ToCString()); 92 phase_string, id.AsInt64Value(), args.ToCString());
97 93
98 switch (phase_string[0]) { 94 switch (phase_string[0]) {
99 case 'n': 95 case 'n':
100 event->AsyncInstant("", id.AsInt64Value(), start.AsInt64Value()); 96 event->AsyncInstant("", id.AsInt64Value(), start.AsInt64Value());
101 break; 97 break;
102 case 'b': 98 case 'b':
103 event->AsyncBegin("", id.AsInt64Value(), start.AsInt64Value()); 99 event->AsyncBegin("", id.AsInt64Value(), start.AsInt64Value());
104 break; 100 break;
105 case 'e': 101 case 'e':
106 event->AsyncEnd("", id.AsInt64Value(), start.AsInt64Value()); 102 event->AsyncEnd("", id.AsInt64Value(), start.AsInt64Value());
107 break; 103 break;
108 default: 104 default:
109 UNREACHABLE(); 105 UNREACHABLE();
110 } 106 }
111 107
112 // json was allocated in the zone and a copy will be stored in event. 108 // json was allocated in the zone and a copy will be stored in event.
113 event->CompleteWithPreSerializedJSON(json); 109 event->CompleteWithPreSerializedJSON(json);
114 #endif 110 #endif
115 return Object::null(); 111 return Object::null();
116 } 112 }
117 113
118
119 DEFINE_NATIVE_ENTRY(Timeline_reportCompleteEvent, 5) { 114 DEFINE_NATIVE_ENTRY(Timeline_reportCompleteEvent, 5) {
120 #ifndef PRODUCT 115 #ifndef PRODUCT
121 if (!FLAG_support_timeline) { 116 if (!FLAG_support_timeline) {
122 return Object::null(); 117 return Object::null();
123 } 118 }
124 GET_NON_NULL_NATIVE_ARGUMENT(Integer, start, arguments->NativeArgAt(0)); 119 GET_NON_NULL_NATIVE_ARGUMENT(Integer, start, arguments->NativeArgAt(0));
125 GET_NON_NULL_NATIVE_ARGUMENT(Integer, start_cpu, arguments->NativeArgAt(1)); 120 GET_NON_NULL_NATIVE_ARGUMENT(Integer, start_cpu, arguments->NativeArgAt(1));
126 GET_NON_NULL_NATIVE_ARGUMENT(String, category, arguments->NativeArgAt(2)); 121 GET_NON_NULL_NATIVE_ARGUMENT(String, category, arguments->NativeArgAt(2));
127 GET_NON_NULL_NATIVE_ARGUMENT(String, name, arguments->NativeArgAt(3)); 122 GET_NON_NULL_NATIVE_ARGUMENT(String, name, arguments->NativeArgAt(3));
128 GET_NON_NULL_NATIVE_ARGUMENT(String, args, arguments->NativeArgAt(4)); 123 GET_NON_NULL_NATIVE_ARGUMENT(String, args, arguments->NativeArgAt(4));
(...skipping 15 matching lines...) Expand all
144 const int64_t duration_cpu = end_cpu - start_cpu.AsInt64Value(); 139 const int64_t duration_cpu = end_cpu - start_cpu.AsInt64Value();
145 int64_t pid = OS::ProcessId(); 140 int64_t pid = OS::ProcessId();
146 OSThread* os_thread = thread->os_thread(); 141 OSThread* os_thread = thread->os_thread();
147 ASSERT(os_thread != NULL); 142 ASSERT(os_thread != NULL);
148 int64_t tid = OSThread::ThreadIdToIntPtr(os_thread->trace_id()); 143 int64_t tid = OSThread::ThreadIdToIntPtr(os_thread->trace_id());
149 144
150 char* json = NULL; 145 char* json = NULL;
151 146
152 if ((start_cpu.AsInt64Value() != -1) && (end_cpu != -1)) { 147 if ((start_cpu.AsInt64Value() != -1) && (end_cpu != -1)) {
153 json = OS::SCreate( 148 json = OS::SCreate(
154 zone, "{\"name\":\"%s\",\"cat\":\"%s\",\"tid\":%" Pd64 ",\"pid\":%" Pd64 149 zone,
155 "," 150 "{\"name\":\"%s\",\"cat\":\"%s\",\"tid\":%" Pd64 ",\"pid\":%" Pd64
156 "\"ts\":%" Pd64 ",\"ph\":\"X\",\"dur\":%" Pd64 151 ","
157 "," 152 "\"ts\":%" Pd64 ",\"ph\":\"X\",\"dur\":%" Pd64
158 "\"tdur\":%" Pd64 ",\"args\":%s}", 153 ","
154 "\"tdur\":%" Pd64 ",\"args\":%s}",
159 name.ToCString(), category.ToCString(), tid, pid, start.AsInt64Value(), 155 name.ToCString(), category.ToCString(), tid, pid, start.AsInt64Value(),
160 duration, duration_cpu, args.ToCString()); 156 duration, duration_cpu, args.ToCString());
161 } else { 157 } else {
162 json = OS::SCreate( 158 json = OS::SCreate(
163 zone, "{\"name\":\"%s\",\"cat\":\"%s\",\"tid\":%" Pd64 ",\"pid\":%" Pd64 159 zone,
164 "," 160 "{\"name\":\"%s\",\"cat\":\"%s\",\"tid\":%" Pd64 ",\"pid\":%" Pd64
165 "\"ts\":%" Pd64 ",\"ph\":\"X\",\"dur\":%" Pd64 ",\"args\":%s}", 161 ","
162 "\"ts\":%" Pd64 ",\"ph\":\"X\",\"dur\":%" Pd64 ",\"args\":%s}",
166 name.ToCString(), category.ToCString(), tid, pid, start.AsInt64Value(), 163 name.ToCString(), category.ToCString(), tid, pid, start.AsInt64Value(),
167 duration, args.ToCString()); 164 duration, args.ToCString());
168 } 165 }
169 ASSERT(json != NULL); 166 ASSERT(json != NULL);
170 167
171 event->Duration("", start.AsInt64Value(), end, start_cpu.AsInt64Value(), 168 event->Duration("", start.AsInt64Value(), end, start_cpu.AsInt64Value(),
172 end_cpu); 169 end_cpu);
173 // json was allocated in the zone and a copy will be stored in event. 170 // json was allocated in the zone and a copy will be stored in event.
174 event->CompleteWithPreSerializedJSON(json); 171 event->CompleteWithPreSerializedJSON(json);
175 #endif 172 #endif
176 return Object::null(); 173 return Object::null();
177 } 174 }
178 175
179
180 DEFINE_NATIVE_ENTRY(Timeline_reportInstantEvent, 4) { 176 DEFINE_NATIVE_ENTRY(Timeline_reportInstantEvent, 4) {
181 #ifndef PRODUCT 177 #ifndef PRODUCT
182 if (!FLAG_support_timeline) { 178 if (!FLAG_support_timeline) {
183 return Object::null(); 179 return Object::null();
184 } 180 }
185 GET_NON_NULL_NATIVE_ARGUMENT(Integer, start, arguments->NativeArgAt(0)); 181 GET_NON_NULL_NATIVE_ARGUMENT(Integer, start, arguments->NativeArgAt(0));
186 GET_NON_NULL_NATIVE_ARGUMENT(String, category, arguments->NativeArgAt(1)); 182 GET_NON_NULL_NATIVE_ARGUMENT(String, category, arguments->NativeArgAt(1));
187 GET_NON_NULL_NATIVE_ARGUMENT(String, name, arguments->NativeArgAt(2)); 183 GET_NON_NULL_NATIVE_ARGUMENT(String, name, arguments->NativeArgAt(2));
188 GET_NON_NULL_NATIVE_ARGUMENT(String, args, arguments->NativeArgAt(3)); 184 GET_NON_NULL_NATIVE_ARGUMENT(String, args, arguments->NativeArgAt(3));
189 185
190 TimelineEventRecorder* recorder = Timeline::recorder(); 186 TimelineEventRecorder* recorder = Timeline::recorder();
191 if (recorder == NULL) { 187 if (recorder == NULL) {
192 return Object::null(); 188 return Object::null();
193 } 189 }
194 190
195 TimelineEvent* event = Timeline::GetDartStream()->StartEvent(); 191 TimelineEvent* event = Timeline::GetDartStream()->StartEvent();
196 if (event == NULL) { 192 if (event == NULL) {
197 // Stream was turned off. 193 // Stream was turned off.
198 return Object::null(); 194 return Object::null();
199 } 195 }
200 196
201 int64_t pid = OS::ProcessId(); 197 int64_t pid = OS::ProcessId();
202 OSThread* os_thread = thread->os_thread(); 198 OSThread* os_thread = thread->os_thread();
203 ASSERT(os_thread != NULL); 199 ASSERT(os_thread != NULL);
204 int64_t tid = OSThread::ThreadIdToIntPtr(os_thread->trace_id()); 200 int64_t tid = OSThread::ThreadIdToIntPtr(os_thread->trace_id());
205 201
206 char* json = OS::SCreate( 202 char* json = OS::SCreate(zone,
207 zone, "{\"name\":\"%s\",\"cat\":\"%s\",\"tid\":%" Pd64 ",\"pid\":%" Pd64 203 "{\"name\":\"%s\",\"cat\":\"%s\",\"tid\":%" Pd64
208 "," 204 ",\"pid\":%" Pd64
209 "\"ts\":%" Pd64 ",\"ph\":\"I\",\"args\":%s}", 205 ","
210 name.ToCString(), category.ToCString(), tid, pid, start.AsInt64Value(), 206 "\"ts\":%" Pd64 ",\"ph\":\"I\",\"args\":%s}",
211 args.ToCString()); 207 name.ToCString(), category.ToCString(), tid, pid,
208 start.AsInt64Value(), args.ToCString());
212 209
213 event->Instant("", start.AsInt64Value()); 210 event->Instant("", start.AsInt64Value());
214 // json was allocated in the zone and a copy will be stored in event. 211 // json was allocated in the zone and a copy will be stored in event.
215 event->CompleteWithPreSerializedJSON(json); 212 event->CompleteWithPreSerializedJSON(json);
216 #endif 213 #endif
217 return Object::null(); 214 return Object::null();
218 } 215 }
219 216
220 } // namespace dart 217 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/lib/string.cc ('k') | runtime/lib/typed_data.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698