mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
73 lines
2.6 KiB
C++
73 lines
2.6 KiB
C++
// Copyright 2013 The Flutter Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#ifndef FLUTTER_RUNTIME_PTRACE_CHECK_H_
|
|
#define FLUTTER_RUNTIME_PTRACE_CHECK_H_
|
|
|
|
#include "flutter/common/settings.h"
|
|
#include "flutter/fml/build_config.h"
|
|
|
|
namespace flutter {
|
|
|
|
#define TRACING_CHECKS_NECESSARY \
|
|
FML_OS_IOS && !TARGET_OS_SIMULATOR && \
|
|
(FLUTTER_RUNTIME_MODE == FLUTTER_RUNTIME_MODE_DEBUG)
|
|
|
|
enum class TracingResult {
|
|
kNotAttempted,
|
|
kEnabled,
|
|
kNotNecessary = kEnabled,
|
|
kDisabled,
|
|
};
|
|
|
|
#if TRACING_CHECKS_NECESSARY
|
|
bool EnableTracingIfNecessaryImpl(const Settings& vm_settings);
|
|
TracingResult GetTracingResultImpl();
|
|
#endif // TRACING_CHECKS_NECESSARY
|
|
|
|
//------------------------------------------------------------------------------
|
|
/// @brief Enables tracing in the process so that JIT mode VMs may be
|
|
/// launched. Explicitly enabling tracing is not required on all
|
|
/// platforms. On platforms where it is not required, calling this
|
|
/// method will return true. If tracing is required but cannot be
|
|
/// enabled, it is the responsibility of the caller to display the
|
|
/// appropriate error message to the user as subsequent attempts to
|
|
/// launch the VM in JIT mode will cause process termination.
|
|
///
|
|
/// This method may be called multiple times and will return the
|
|
/// same result. There are no threading restrictions.
|
|
///
|
|
/// @param[in] vm_settings The settings used to launch the VM.
|
|
///
|
|
/// @return If tracing was enabled.
|
|
///
|
|
inline bool EnableTracingIfNecessary(const Settings& vm_settings) {
|
|
#if TRACING_CHECKS_NECESSARY
|
|
return EnableTracingIfNecessaryImpl(vm_settings);
|
|
#else // TRACING_CHECKS_NECESSARY
|
|
return true;
|
|
#endif // TRACING_CHECKS_NECESSARY
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
/// @brief Returns if a tracing check has been performed and its result. To
|
|
/// enable tracing, the Settings object used to launch the VM is
|
|
/// required. Components may want to display messages based on the
|
|
/// result of a previous tracing check without actually having the
|
|
/// settings object. This accessor can be used instead.
|
|
///
|
|
/// @return The tracing result.
|
|
///
|
|
inline TracingResult GetTracingResult() {
|
|
#if TRACING_CHECKS_NECESSARY
|
|
return GetTracingResultImpl();
|
|
#else // TRACING_CHECKS_NECESSARY
|
|
return TracingResult::kNotNecessary;
|
|
#endif // TRACING_CHECKS_NECESSARY
|
|
}
|
|
|
|
} // namespace flutter
|
|
|
|
#endif // FLUTTER_RUNTIME_PTRACE_CHECK_H_
|