diff options
Diffstat (limited to 'deps/v8/src/wasm/wasm-features.h')
-rw-r--r-- | deps/v8/src/wasm/wasm-features.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/deps/v8/src/wasm/wasm-features.h b/deps/v8/src/wasm/wasm-features.h new file mode 100644 index 0000000000..2c6ab0f85a --- /dev/null +++ b/deps/v8/src/wasm/wasm-features.h @@ -0,0 +1,67 @@ +// Copyright 2018 the V8 project 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 V8_WASM_WASM_FEATURES_H_ +#define V8_WASM_WASM_FEATURES_H_ + +// The feature flags are declared in their own header. +#include "src/base/macros.h" +#include "src/wasm/wasm-feature-flags.h" + +// All features, including features that do not have flags. +#define FOREACH_WASM_FEATURE FOREACH_WASM_FEATURE_FLAG + +namespace v8 { +namespace internal { +class Isolate; +namespace wasm { + +#define COMMA , +#define SPACE +#define DECL_FIELD(feat, desc, val) bool feat = false; +#define JUST_TRUE(feat, desc, val) true +#define JUST_FALSE(feat, desc, val) false +#define DECL_PARAM(feat, desc, val) bool p##feat +#define DO_INIT(feat, desc, val) feat(p##feat) + +// Enabled or detected features. +struct WasmFeatures { + FOREACH_WASM_FEATURE(DECL_FIELD, SPACE) + + constexpr WasmFeatures() = default; + + explicit constexpr WasmFeatures(FOREACH_WASM_FEATURE(DECL_PARAM, COMMA)) + : FOREACH_WASM_FEATURE(DO_INIT, COMMA) {} +}; + +static constexpr WasmFeatures kAllWasmFeatures{ + FOREACH_WASM_FEATURE(JUST_TRUE, COMMA)}; + +static constexpr WasmFeatures kNoWasmFeatures{ + FOREACH_WASM_FEATURE(JUST_FALSE, COMMA)}; + +#undef JUST_TRUE +#undef JUST_FALSE +#undef DECL_FIELD +#undef DECL_PARAM +#undef DO_INIT +#undef COMMA +#undef SPACE + +static constexpr WasmFeatures kAsmjsWasmFeatures = kNoWasmFeatures; + +V8_EXPORT_PRIVATE WasmFeatures WasmFeaturesFromFlags(); + +// Enables features based on both commandline flags and the isolate. +// Precondition: A valid context must be set in {isolate->context()}. +V8_EXPORT_PRIVATE WasmFeatures WasmFeaturesFromIsolate(Isolate* isolate); + +V8_EXPORT_PRIVATE void UnionFeaturesInto(WasmFeatures* dst, + const WasmFeatures& src); + +} // namespace wasm +} // namespace internal +} // namespace v8 + +#endif // V8_WASM_WASM_FEATURES_H_ |