|  | // Copyright 2015 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | // Note: there is intentionally no header file associated with this library so | 
|  | // we don't risk implicitly demand loading it by accessing a symbol. | 
|  |  | 
|  | #if defined(WIN32) | 
|  | #define BASE_PROFILER_TEST_SUPPORT_LIBRARY_EXPORT __declspec(dllexport) | 
|  | #else  // defined(WIN32) | 
|  | #define BASE_PROFILER_TEST_SUPPORT_LIBRARY_EXPORT __attribute__((visibility("default"))) | 
|  | #endif | 
|  |  | 
|  | namespace base { | 
|  |  | 
|  | // Must be defined in an extern "C" block so we can look up the unmangled name. | 
|  | extern "C" { | 
|  |  | 
|  | BASE_PROFILER_TEST_SUPPORT_LIBRARY_EXPORT void InvokeCallbackFunction( | 
|  | void (*function)(void*), | 
|  | void* arg) { | 
|  | function(arg); | 
|  | // Prevent tail call. | 
|  | volatile int i = 0; | 
|  | i = 1; | 
|  | } | 
|  |  | 
|  | }  // extern "C" | 
|  |  | 
|  | }  // namespace base |