2018-10-19 18:05:11 +00:00
|
|
|
// Copyright (c) Facebook, Inc. and its affiliates.
|
|
|
|
//
|
|
|
|
// This source code is licensed under the MIT license found in the
|
|
|
|
// LICENSE file in the root directory of this source tree.
|
2018-10-18 07:47:02 +00:00
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <string>
|
|
|
|
|
|
|
|
#include <jsi/jsi.h>
|
|
|
|
|
|
|
|
namespace facebook {
|
|
|
|
namespace jsi {
|
|
|
|
|
|
|
|
/// Methods for starting and collecting instrumentation, an \c Instrumentation
|
|
|
|
/// instance is associated with a particular \c Runtime instance, which it
|
|
|
|
/// controls the instrumentation of.
|
|
|
|
class Instrumentation {
|
|
|
|
public:
|
|
|
|
virtual ~Instrumentation() = default;
|
|
|
|
|
|
|
|
/// Returns GC statistics as a JSON-encoded string, with an object containing
|
|
|
|
/// "type" and "version" fields outermost. "type" is a string, unique to a
|
|
|
|
/// particular implementation of \c jsi::Instrumentation, and "version" is a
|
|
|
|
/// number to indicate any revision to that implementation and its output
|
|
|
|
/// format.
|
|
|
|
///
|
|
|
|
/// \pre This call can only be made on the instrumentation instance of a
|
|
|
|
/// runtime initialised to collect GC statistics.
|
|
|
|
///
|
|
|
|
/// \post All cumulative measurements mentioned in the output are accumulated
|
|
|
|
/// across the entire lifetime of the Runtime.
|
|
|
|
///
|
|
|
|
/// \return the GC statistics collected so far, as a JSON-encoded string.
|
|
|
|
virtual std::string getRecordedGCStats() = 0;
|
|
|
|
|
|
|
|
/// Request statistics about the current state of the runtime's heap. This
|
|
|
|
/// function can be called at any time, and should produce information that is
|
|
|
|
/// correct at the instant it is called (i.e, not stale).
|
|
|
|
///
|
|
|
|
/// \return a jsi Value containing whichever statistics the runtime supports
|
|
|
|
/// for its heap.
|
|
|
|
virtual Value getHeapInfo(bool includeExpensive) = 0;
|
|
|
|
|
|
|
|
/// perform a full garbage collection
|
|
|
|
virtual void collectGarbage() = 0;
|
|
|
|
|
|
|
|
/// Captures the heap to a file
|
|
|
|
///
|
|
|
|
/// \param path to save the heap capture
|
|
|
|
///
|
|
|
|
/// \param compact Whether the JSON should be compact or pretty
|
|
|
|
///
|
|
|
|
/// \return true iff the heap capture succeeded
|
|
|
|
virtual bool createSnapshotToFile(const std::string& path, bool compact) = 0;
|
|
|
|
|
|
|
|
/// Write a trace of bridge traffic to the given file name.
|
|
|
|
virtual void writeBridgeTrafficTraceToFile(
|
|
|
|
const std::string& fileName) const = 0;
|
|
|
|
|
|
|
|
/// Write basic block profile trace to the given file name.
|
|
|
|
virtual void writeBasicBlockProfileTraceToFile(
|
|
|
|
const std::string& fileName) const = 0;
|
|
|
|
|
|
|
|
/// Enable sampling profiler.
|
|
|
|
virtual void enableSamplingProfiler() const = 0;
|
|
|
|
|
|
|
|
/// Dump sampled stack trace to the given file name.
|
|
|
|
virtual void dumpSampledTraceToFile(const std::string& fileName) const = 0;
|
|
|
|
|
|
|
|
/// Dump external profiler symbols to the given file name.
|
|
|
|
virtual void dumpProfilerSymbolsToFile(const std::string& fileName) const = 0;
|
|
|
|
};
|
|
|
|
|
|
|
|
} // namespace jsi
|
|
|
|
} // namespace facebook
|