| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 289 // TraceID encapsulates an ID that can either be an integer or pointer; | 289 // TraceID encapsulates an ID that can either be an integer or pointer; |
| 290 // optionally, it can be paired with a scope string, too. Pointers are mangled | 290 // optionally, it can be paired with a scope string, too. Pointers are mangled |
| 291 // with the Process ID so that they are unlikely to collide when the same | 291 // with the Process ID so that they are unlikely to collide when the same |
| 292 // pointer is used on different processes. | 292 // pointer is used on different processes. |
| 293 class TraceID final { | 293 class TraceID final { |
| 294 STACK_ALLOCATED(); | 294 STACK_ALLOCATED(); |
| 295 WTF_MAKE_NONCOPYABLE(TraceID); | 295 WTF_MAKE_NONCOPYABLE(TraceID); |
| 296 public: | 296 public: |
| 297 class WithScope final { | 297 class WithScope final { |
| 298 STACK_ALLOCATED(); | 298 STACK_ALLOCATED(); |
| 299 |
| 299 public: | 300 public: |
| 300 template<typename T> WithScope(const char* scope, T id) | 301 template<typename T> WithScope(const char* scope, T id) |
| 301 : m_scope(scope), m_data(reinterpret_cast<unsigned long long>(id)) {
} | 302 : m_scope(scope), m_data(reinterpret_cast<unsigned long long>(id)) {
} |
| 302 const char* scope() const { return m_scope; } | 303 const char* scope() const { return m_scope; } |
| 303 unsigned long long data() const { return m_data; } | 304 unsigned long long data() const { return m_data; } |
| 304 private: | 305 private: |
| 305 const char* m_scope = kGlobalScope; | 306 const char* m_scope = kGlobalScope; |
| 306 unsigned long long m_data; | 307 unsigned long long m_data; |
| 307 }; | 308 }; |
| 308 | 309 |
| 309 template<bool dummyMangle> class MangleBehavior final { | 310 template<bool dummyMangle> class MangleBehavior final { |
| 310 STACK_ALLOCATED(); | 311 STACK_ALLOCATED(); |
| 312 |
| 311 public: | 313 public: |
| 312 template<typename T> explicit MangleBehavior(T id) : m_data(reinterpret_
cast<unsigned long long>(id)) { } | 314 template<typename T> explicit MangleBehavior(T id) : m_data(reinterpret_
cast<unsigned long long>(id)) { } |
| 313 explicit MangleBehavior(WithScope scopedID) : m_scope(scopedID.scope()),
m_data(scopedID.data()) { } | 315 explicit MangleBehavior(WithScope scopedID) : m_scope(scopedID.scope()),
m_data(scopedID.data()) { } |
| 314 const char* scope() const { return m_scope; } | 316 const char* scope() const { return m_scope; } |
| 315 unsigned long long data() const { return m_data; } | 317 unsigned long long data() const { return m_data; } |
| 316 private: | 318 private: |
| 317 const char* m_scope = kGlobalScope; | 319 const char* m_scope = kGlobalScope; |
| 318 unsigned long long m_data; | 320 unsigned long long m_data; |
| 319 }; | 321 }; |
| 320 typedef MangleBehavior<false> DontMangle; | 322 typedef MangleBehavior<false> DontMangle; |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 363 unsigned long long m_uint; | 365 unsigned long long m_uint; |
| 364 long long m_int; | 366 long long m_int; |
| 365 double m_double; | 367 double m_double; |
| 366 const void* m_pointer; | 368 const void* m_pointer; |
| 367 const char* m_string; | 369 const char* m_string; |
| 368 }; | 370 }; |
| 369 | 371 |
| 370 // Simple container for const char* that should be copied instead of retained. | 372 // Simple container for const char* that should be copied instead of retained. |
| 371 class TraceStringWithCopy { | 373 class TraceStringWithCopy { |
| 372 STACK_ALLOCATED(); | 374 STACK_ALLOCATED(); |
| 375 |
| 373 public: | 376 public: |
| 374 explicit TraceStringWithCopy(const char* str) : m_str(str) { } | 377 explicit TraceStringWithCopy(const char* str) : m_str(str) { } |
| 375 const char* str() const { return m_str; } | 378 const char* str() const { return m_str; } |
| 376 private: | 379 private: |
| 377 const char* m_str; | 380 const char* m_str; |
| 378 }; | 381 }; |
| 379 | 382 |
| 380 // Define setTraceValue for each allowed type. It stores the type and | 383 // Define setTraceValue for each allowed type. It stores the type and |
| 381 // value in the return arguments. This allows this API to avoid declaring any | 384 // value in the return arguments. This allows this API to avoid declaring any |
| 382 // structures so that it is portable to third_party libraries. | 385 // structures so that it is portable to third_party libraries. |
| (...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 613 m_pdata = &m_data; | 616 m_pdata = &m_data; |
| 614 } | 617 } |
| 615 | 618 |
| 616 private: | 619 private: |
| 617 // This Data struct workaround is to avoid initializing all the members | 620 // This Data struct workaround is to avoid initializing all the members |
| 618 // in Data during construction of this object, since this object is always | 621 // in Data during construction of this object, since this object is always |
| 619 // constructed, even when tracing is disabled. If the members of Data were | 622 // constructed, even when tracing is disabled. If the members of Data were |
| 620 // members of this class instead, compiler warnings occur about potential | 623 // members of this class instead, compiler warnings occur about potential |
| 621 // uninitialized accesses. | 624 // uninitialized accesses. |
| 622 struct Data { | 625 struct Data { |
| 623 DISALLOW_NEW(); | 626 STACK_ALLOCATED(); |
| 624 const unsigned char* categoryGroupEnabled; | 627 const unsigned char* categoryGroupEnabled; |
| 625 const char* name; | 628 const char* name; |
| 626 TraceEventHandle eventHandle; | 629 TraceEventHandle eventHandle; |
| 627 }; | 630 }; |
| 628 Data* m_pdata; | 631 Data* m_pdata; |
| 629 Data m_data; | 632 Data m_data; |
| 630 }; | 633 }; |
| 631 | 634 |
| 632 // TraceEventSamplingStateScope records the current sampling state | 635 // TraceEventSamplingStateScope records the current sampling state |
| 633 // and sets a new sampling state. When the scope exists, it restores | 636 // and sets a new sampling state. When the scope exists, it restores |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 681 const char* m_categoryGroup; | 684 const char* m_categoryGroup; |
| 682 const char* m_name; | 685 const char* m_name; |
| 683 IDType m_id; | 686 IDType m_id; |
| 684 }; | 687 }; |
| 685 | 688 |
| 686 } // namespace TraceEvent | 689 } // namespace TraceEvent |
| 687 | 690 |
| 688 } // namespace blink | 691 } // namespace blink |
| 689 | 692 |
| 690 #endif | 693 #endif |
| OLD | NEW |