123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- /*
- * 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.
- */
- #ifndef HERMES_PUBLIC_RUNTIMECONFIG_H
- #define HERMES_PUBLIC_RUNTIMECONFIG_H
- #include "hermes/Public/CrashManager.h"
- #include "hermes/Public/CtorConfig.h"
- #include "hermes/Public/GCConfig.h"
- #include <memory>
- #ifdef HERMESVM_SERIALIZE
- #include <vector>
- namespace llvm {
- class MemoryBuffer;
- class raw_ostream;
- } // namespace llvm
- #endif
- namespace hermes {
- namespace vm {
- class PinnedHermesValue;
- #ifdef HERMESVM_SERIALIZE
- class Serializer;
- class Deserializer;
- #endif
- // Parameters for Runtime initialisation. Check documentation in README.md
- // constexpr indicates that the default value is constexpr.
- #define RUNTIME_FIELDS_BASE(F) \
- /* Parameters to be passed on to the GC. */ \
- F(HERMES_NON_CONSTEXPR, vm::GCConfig, GCConfig) \
- \
- /* Pre-allocated Register Stack */ \
- F(constexpr, PinnedHermesValue *, RegisterStack, nullptr) \
- \
- /* Register Stack Size */ \
- F(constexpr, unsigned, MaxNumRegisters, 1024 * 1024) \
- \
- /* Whether or not the JIT is enabled */ \
- F(constexpr, bool, EnableJIT, false) \
- \
- /* Whether to allow eval and Function ctor */ \
- F(constexpr, bool, EnableEval, true) \
- \
- /* Whether to verify the IR generated by eval and Function ctor */ \
- F(constexpr, bool, VerifyEvalIR, false) \
- \
- /* Support for ES6 Proxy. */ \
- F(constexpr, bool, ES6Proxy, false) \
- \
- /* Support for ES6 Symbol. */ \
- F(constexpr, bool, ES6Symbol, true) \
- \
- /* Trace non-deterministic JS behavior */ \
- F(constexpr, bool, TraceEnvironmentInteractions, false) \
- \
- /* Enable sampling certain statistics. */ \
- F(constexpr, bool, EnableSampledStats, false) \
- \
- /* Whether to enable sampling profiler */ \
- F(constexpr, bool, EnableSampleProfiling, false) \
- \
- /* Whether to randomize stack placement etc. */ \
- F(constexpr, bool, RandomizeMemoryLayout, false) \
- \
- /* Eagerly read bytecode into page cache. */ \
- F(constexpr, unsigned, BytecodeWarmupPercent, 0) \
- \
- /* Signal-based I/O tracking. Slows down execution. If enabled, */ \
- /* all bytecode buffers > 64 kB passed to Hermes must be mmap:ed. */ \
- F(constexpr, bool, TrackIO, false) \
- \
- /* Enable contents of HermesInternal */ \
- F(constexpr, bool, EnableHermesInternal, true) \
- \
- /* Enable methods exposed to JS for testing */ \
- F(constexpr, bool, EnableHermesInternalTestMethods, false) \
- \
- /* Allows Function.toString() to return the original source code */ \
- /* if available. For this to work code must have been compiled at */ \
- /* runtime with CompileFlags::allowFunctionToStringWithRuntimeSource set. */ \
- F(constexpr, bool, AllowFunctionToStringWithRuntimeSource, false) \
- \
- /* An interface for managing crashes. */ \
- F(HERMES_NON_CONSTEXPR, \
- std::shared_ptr<CrashManager>, \
- CrashMgr, \
- new NopCrashManager) \
- \
- /* The flags passed from a VM experiment */ \
- F(constexpr, uint32_t, VMExperimentFlags, 0) \
- /* RUNTIME_FIELDS END */
- #ifdef HERMESVM_SERIALIZE
- using ExternalPointersVectorFunction = std::vector<void *>();
- #define RUNTIME_FIELDS_SD(F) \
- /* Should serialize after initialization */ \
- F(HERMES_NON_CONSTEXPR, \
- std::shared_ptr<llvm::raw_ostream>, \
- SerializeAfterInitFile, \
- nullptr) \
- /* Should deserialize instead of initialization */ \
- F(HERMES_NON_CONSTEXPR, \
- std::shared_ptr<llvm::MemoryBuffer>, \
- DeserializeFile, \
- nullptr) \
- /* A function to get pointer values not visible to Runtime. e.g. \
- * function pointers defined in ConsoleHost*/ \
- F(constexpr, \
- ExternalPointersVectorFunction *, \
- ExternalPointersVectorCallBack, \
- nullptr)
- #define RUNTIME_FIELDS(F) \
- RUNTIME_FIELDS_BASE(F) \
- RUNTIME_FIELDS_SD(F)
- #else // ifndef HERMESVM_SERIALIZE
- #define RUNTIME_FIELDS(F) RUNTIME_FIELDS_BASE(F)
- #endif // HERMESVM_SERIALIZE
- _HERMES_CTORCONFIG_STRUCT(RuntimeConfig, RUNTIME_FIELDS, {});
- #undef RUNTIME_FIELDS
- } // namespace vm
- } // namespace hermes
- #endif // HERMES_PUBLIC_RUNTIMECONFIG_H
|