// 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/execution/isolate.h" #include "src/flags/flags.h" #include "src/handles/handles-inl.h" namespace v8 { namespace internal { namespace wasm { // static WasmFeatures WasmFeatures::FromFlags() { WasmFeatures features = WasmFeatures::None(); #define FLAG_REF(feat, ...) \ if (FLAG_experimental_wasm_##feat) features.Add(kFeature_##feat); FOREACH_WASM_FEATURE(FLAG_REF) #undef FLAG_REF return features; } // static WasmFeatures WasmFeatures::FromIsolate(Isolate* isolate) { WasmFeatures features = WasmFeatures::FromFlags(); if (isolate->AreWasmThreadsEnabled(handle(isolate->context(), isolate))) { features.Add(kFeature_threads); } if (isolate->IsWasmSimdEnabled(handle(isolate->context(), isolate))) { features.Add(kFeature_simd); } return features; } } // namespace wasm } // namespace internal } // namespace v8