diff options
Diffstat (limited to 'deps/v8/src/wasm/wasm-features.cc')
-rw-r--r-- | deps/v8/src/wasm/wasm-features.cc | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/deps/v8/src/wasm/wasm-features.cc b/deps/v8/src/wasm/wasm-features.cc new file mode 100644 index 0000000000..6271fd0506 --- /dev/null +++ b/deps/v8/src/wasm/wasm-features.cc @@ -0,0 +1,40 @@ +// 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. + +#include "src/wasm/wasm-features.h" +#include "src/flags.h" +#include "src/handles-inl.h" +#include "src/isolate.h" + +namespace v8 { +namespace internal { +namespace wasm { + +#define COMMA , +#define SPACE +#define DO_UNION(feat, desc, val) dst->feat |= src.feat; +#define FLAG_REF(feat, desc, val) FLAG_experimental_wasm_##feat + +void UnionFeaturesInto(WasmFeatures* dst, const WasmFeatures& src) { + FOREACH_WASM_FEATURE(DO_UNION, SPACE); +} + +WasmFeatures WasmFeaturesFromFlags() { + return WasmFeatures{FOREACH_WASM_FEATURE(FLAG_REF, COMMA)}; +} + +WasmFeatures WasmFeaturesFromIsolate(Isolate* isolate) { + WasmFeatures features = WasmFeaturesFromFlags(); + features.threads |= + isolate->AreWasmThreadsEnabled(handle(isolate->context(), isolate)); + return features; +} + +#undef DO_UNION +#undef FLAG_REF +#undef SPACE +#undef COMMA +} // namespace wasm +} // namespace internal +} // namespace v8 |