Commit 24c1e5ca authored by Ben Smith's avatar Ben Smith Committed by Commit Bot

Add flag to enable WebAssembly threads

WebAssembly threads implicitly enables SharedArrayBuffer
(--enable-shared-array-buffer) and structured cloning WebAssembly.Module
(--enable-webassembly).

Bug: 852756
Change-Id: I89d04cf08f1ff8cb777cf67f794d0f88049b6443
Reviewed-on: https://chromium-review.googlesource.com/1105558
Commit-Queue: Ben Smith <binji@chromium.org>
Reviewed-by: default avatarJochen Eisinger <jochen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#568676}
parent d2a6d6bc
...@@ -1373,6 +1373,9 @@ const FeatureEntry kFeatureEntries[] = { ...@@ -1373,6 +1373,9 @@ const FeatureEntry kFeatureEntries[] = {
{"enable-webassembly-baseline", flag_descriptions::kEnableWasmBaselineName, {"enable-webassembly-baseline", flag_descriptions::kEnableWasmBaselineName,
flag_descriptions::kEnableWasmBaselineDescription, kOsAll, flag_descriptions::kEnableWasmBaselineDescription, kOsAll,
FEATURE_VALUE_TYPE(features::kWebAssemblyBaseline)}, FEATURE_VALUE_TYPE(features::kWebAssemblyBaseline)},
{"enable-webassembly-threads", flag_descriptions::kEnableWasmThreadsName,
flag_descriptions::kEnableWasmThreadsDescription, kOsAll,
FEATURE_VALUE_TYPE(features::kWebAssemblyThreads)},
{"shared-array-buffer", flag_descriptions::kEnableSharedArrayBufferName, {"shared-array-buffer", flag_descriptions::kEnableSharedArrayBufferName,
flag_descriptions::kEnableSharedArrayBufferDescription, kOsAll, flag_descriptions::kEnableSharedArrayBufferDescription, kOsAll,
FEATURE_VALUE_TYPE(features::kSharedArrayBuffer)}, FEATURE_VALUE_TYPE(features::kSharedArrayBuffer)},
......
...@@ -728,6 +728,11 @@ const char kEnableWasmBaselineName[] = "WebAssembly baseline compiler"; ...@@ -728,6 +728,11 @@ const char kEnableWasmBaselineName[] = "WebAssembly baseline compiler";
const char kEnableWasmBaselineDescription[] = const char kEnableWasmBaselineDescription[] =
"Enables WebAssembly baseline compilation and tier up."; "Enables WebAssembly baseline compilation and tier up.";
const char kEnableWasmThreadsName[] = "WebAssembly threads support.";
const char kEnableWasmThreadsDescription[] =
"Enables support for the WebAssembly Threads proposal. Implies "
"#shared-array-buffer and #enable-webassembly.";
const char kExpensiveBackgroundTimerThrottlingName[] = const char kExpensiveBackgroundTimerThrottlingName[] =
"Throttle expensive background timers"; "Throttle expensive background timers";
const char kExpensiveBackgroundTimerThrottlingDescription[] = const char kExpensiveBackgroundTimerThrottlingDescription[] =
......
...@@ -462,6 +462,9 @@ extern const char kEnableWasmStreamingDescription[]; ...@@ -462,6 +462,9 @@ extern const char kEnableWasmStreamingDescription[];
extern const char kEnableWasmBaselineName[]; extern const char kEnableWasmBaselineName[];
extern const char kEnableWasmBaselineDescription[]; extern const char kEnableWasmBaselineDescription[];
extern const char kEnableWasmThreadsName[];
extern const char kEnableWasmThreadsDescription[];
extern const char kExpensiveBackgroundTimerThrottlingName[]; extern const char kExpensiveBackgroundTimerThrottlingName[];
extern const char kExpensiveBackgroundTimerThrottlingDescription[]; extern const char kExpensiveBackgroundTimerThrottlingDescription[];
......
...@@ -121,7 +121,8 @@ void SetRuntimeFeaturesDefaultsAndUpdateFromArgs( ...@@ -121,7 +121,8 @@ void SetRuntimeFeaturesDefaultsAndUpdateFromArgs(
base::FeatureList::IsEnabled(features::kWebAssemblyStreaming)); base::FeatureList::IsEnabled(features::kWebAssemblyStreaming));
WebRuntimeFeatures::EnableSharedArrayBuffer( WebRuntimeFeatures::EnableSharedArrayBuffer(
base::FeatureList::IsEnabled(features::kSharedArrayBuffer)); base::FeatureList::IsEnabled(features::kSharedArrayBuffer) ||
base::FeatureList::IsEnabled(features::kWebAssemblyThreads));
if (command_line.HasSwitch(switches::kDisableSharedWorkers)) if (command_line.HasSwitch(switches::kDisableSharedWorkers))
WebRuntimeFeatures::EnableSharedWorker(false); WebRuntimeFeatures::EnableSharedWorker(false);
......
...@@ -470,6 +470,11 @@ const base::Feature kWebAssemblyStreaming{"WebAssemblyStreaming", ...@@ -470,6 +470,11 @@ const base::Feature kWebAssemblyStreaming{"WebAssemblyStreaming",
const base::Feature kWebAssemblyBaseline{"WebAssemblyBaseline", const base::Feature kWebAssemblyBaseline{"WebAssemblyBaseline",
base::FEATURE_DISABLED_BY_DEFAULT}; base::FEATURE_DISABLED_BY_DEFAULT};
// Enable WebAssembly threads.
// https://github.com/WebAssembly/threads
const base::Feature kWebAssemblyThreads{"WebAssemblyThreads",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable WebAssembly trap handler. // Enable WebAssembly trap handler.
const base::Feature kWebAssemblyTrapHandler{"WebAssemblyTrapHandler", const base::Feature kWebAssemblyTrapHandler{"WebAssemblyTrapHandler",
base::FEATURE_DISABLED_BY_DEFAULT}; base::FEATURE_DISABLED_BY_DEFAULT};
......
...@@ -113,6 +113,7 @@ CONTENT_EXPORT extern const base::Feature kVrWebInputEditing; ...@@ -113,6 +113,7 @@ CONTENT_EXPORT extern const base::Feature kVrWebInputEditing;
CONTENT_EXPORT extern const base::Feature kWebAssembly; CONTENT_EXPORT extern const base::Feature kWebAssembly;
CONTENT_EXPORT extern const base::Feature kWebAssemblyStreaming; CONTENT_EXPORT extern const base::Feature kWebAssemblyStreaming;
CONTENT_EXPORT extern const base::Feature kWebAssemblyBaseline; CONTENT_EXPORT extern const base::Feature kWebAssemblyBaseline;
CONTENT_EXPORT extern const base::Feature kWebAssemblyThreads;
CONTENT_EXPORT extern const base::Feature kWebAssemblyTrapHandler; CONTENT_EXPORT extern const base::Feature kWebAssemblyTrapHandler;
CONTENT_EXPORT extern const base::Feature kWebAuth; CONTENT_EXPORT extern const base::Feature kWebAuth;
CONTENT_EXPORT extern const base::Feature kWebAuthBle; CONTENT_EXPORT extern const base::Feature kWebAuthBle;
......
...@@ -138,8 +138,6 @@ RenderProcessImpl::RenderProcessImpl( ...@@ -138,8 +138,6 @@ RenderProcessImpl::RenderProcessImpl(
"--harmony-import-meta"); "--harmony-import-meta");
SetV8FlagIfFeature(features::kAsmJsToWebAssembly, "--validate-asm"); SetV8FlagIfFeature(features::kAsmJsToWebAssembly, "--validate-asm");
SetV8FlagIfNotFeature(features::kAsmJsToWebAssembly, "--no-validate-asm"); SetV8FlagIfNotFeature(features::kAsmJsToWebAssembly, "--no-validate-asm");
SetV8FlagIfNotFeature(features::kWebAssembly,
"--wasm-disable-structured-cloning");
SetV8FlagIfFeature(features::kV8Orinoco, "--no-single-threaded-gc"); SetV8FlagIfFeature(features::kV8Orinoco, "--no-single-threaded-gc");
SetV8FlagIfNotFeature(features::kV8Orinoco, "--single-threaded-gc"); SetV8FlagIfNotFeature(features::kV8Orinoco, "--single-threaded-gc");
...@@ -150,10 +148,21 @@ RenderProcessImpl::RenderProcessImpl( ...@@ -150,10 +148,21 @@ RenderProcessImpl::RenderProcessImpl(
SetV8FlagIfFeature(features::kWebAssemblyBaseline, "--wasm-tier-up"); SetV8FlagIfFeature(features::kWebAssemblyBaseline, "--wasm-tier-up");
SetV8FlagIfNotFeature(features::kWebAssemblyBaseline, "--no-wasm-tier-up"); SetV8FlagIfNotFeature(features::kWebAssemblyBaseline, "--no-wasm-tier-up");
SetV8FlagIfFeature(features::kSharedArrayBuffer, if (base::FeatureList::IsEnabled(features::kWebAssemblyThreads)) {
"--harmony-sharedarraybuffer"); constexpr char kFlags[] =
SetV8FlagIfNotFeature(features::kSharedArrayBuffer, "--harmony-sharedarraybuffer "
"--no-harmony-sharedarraybuffer"); "--no-wasm-disable-structured-cloning "
"--experimental-wasm-threads";
v8::V8::SetFlagsFromString(kFlags, sizeof(kFlags));
} else {
SetV8FlagIfNotFeature(features::kWebAssembly,
"--wasm-disable-structured-cloning");
SetV8FlagIfFeature(features::kSharedArrayBuffer,
"--harmony-sharedarraybuffer");
SetV8FlagIfNotFeature(features::kSharedArrayBuffer,
"--no-harmony-sharedarraybuffer");
}
SetV8FlagIfNotFeature(features::kWebAssemblyTrapHandler, SetV8FlagIfNotFeature(features::kWebAssemblyTrapHandler,
"--no-wasm-trap-handler"); "--no-wasm-trap-handler");
......
...@@ -27894,6 +27894,7 @@ from previous Chrome versions. ...@@ -27894,6 +27894,7 @@ from previous Chrome versions.
<int value="118991027" label="enable-accelerated-fixed-root-background"/> <int value="118991027" label="enable-accelerated-fixed-root-background"/>
<int value="119185738" <int value="119185738"
label="OmniboxUIExperimentMaxAutocompleteMatches:disabled"/> label="OmniboxUIExperimentMaxAutocompleteMatches:disabled"/>
<int value="119309423" label="WebAssemblyThreads:disabled"/>
<int value="120429808" label="disable-new-profile-management"/> <int value="120429808" label="disable-new-profile-management"/>
<int value="121684313" label="QuickUnlockPin:enabled"/> <int value="121684313" label="QuickUnlockPin:enabled"/>
<int value="121858954" label="enable-supervised-user-safesites"/> <int value="121858954" label="enable-supervised-user-safesites"/>
...@@ -28647,6 +28648,7 @@ from previous Chrome versions. ...@@ -28647,6 +28648,7 @@ from previous Chrome versions.
<int value="1803465156" label="enable-zero-suggest-most-visited"/> <int value="1803465156" label="enable-zero-suggest-most-visited"/>
<int value="1803470125" label="SyncUSSSessions:enabled"/> <int value="1803470125" label="SyncUSSSessions:enabled"/>
<int value="1809940714" label="SpeculativeLaunchServiceWorker:disabled"/> <int value="1809940714" label="SpeculativeLaunchServiceWorker:disabled"/>
<int value="1810311887" label="WebAssemblyThreads:enabled"/>
<int value="1812368073" label="enable-new-app-list-mixer"/> <int value="1812368073" label="enable-new-app-list-mixer"/>
<int value="1814671708" label="disable-password-manager-reauthentication"/> <int value="1814671708" label="disable-password-manager-reauthentication"/>
<int value="1816843861" label="ServiceWorkerServicification:enabled"/> <int value="1816843861" label="ServiceWorkerServicification:enabled"/>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment