WebAssembly.Global() ã³ã³ã¹ãã©ã¯ã¿ã¼
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since â¨2020å¹´3æâ©.
WebAssembly.Global() ã³ã³ã¹ãã©ã¯ã¿ã¼ã¯ãã°ãã¼ãã«å¤æ°ã®ã¤ã³ã¹ã¿ã³ã¹ãè¡¨ãæ°ãã Global ãªãã¸ã§ã¯ãã表ãã¾ãããã㯠JavaScript ããã¢ã¯ã»ã¹å¯è½ã§ã1 ã¤ä»¥ä¸ã® WebAssembly.Module ã¤ã³ã¹ã¿ã³ã¹ã®éã§ã¤ã³ãã¼ã/ã¨ã¯ã¹ãã¼ãå¯è½ã§ããããã«ãããè¤æ°ã®ã¢ã¸ã¥ã¼ã«ãåçãªã³ã¯ãããã¨ãã§ãã¾ãã
æ§æ
new WebAssembly.Global(descriptor, value)
弿°
descriptor-
ãªãã¸ã§ã¯ãã§ã 2 ã¤ã®ããããã£ãæã¡ã¾ãã
value: æååã§ããã®ã°ãã¼ãã«å¤æ°ã®ãã¼ã¿åã表ãã¾ãã ããã¯ä»¥ä¸ã®ããããã§ããi32: 32 ãããæ´æ°ãi64: 64 ãããæ´æ°ãï¼JavaScript ã§ã¯ãããã¯BigIntã¨ãã¦è¡¨ãããï¼f32: 32 ãããæµ®åå°æ°ç¹æ°ãf64: 64 ãããæµ®åå°æ°ç¹æ°ãv128: 128 ããããã¯ãã«ãexternref: ãã¹ãåç §ãanyfunc: 颿°åç §ã
mutable: è«çå¤ã§ããã®ã°ãã¼ãã«å¤æ°ã夿´å¯è½ã§ãããã©ããã表ãã¾ããæ¢å®ã§ã¯falseã§ãã
value-
夿°ãä¿æããå¤ã§ãã夿°ã®ãã¼ã¿åã«åãéããã©ããªå¤ã§ãåãã¾ãã ãããä½ã®å¤ã渡ãããªãã¨ã
descriptor.valueã®å¤ãi32ãi64ãf32ãf64ã®ããããã§ããå ´åã¯åä»ãã® 0 ã使ç¨ãããdescriptor.valueãexternrefã¾ãã¯anyfuncã§ããã°ãnullã使ç¨ããã¾ãï¼DefaultValueã¢ã«ã´ãªãºã ã§å®ç¾©ããã¦ããã¨ããã§ãï¼ã
ä¾
>æ°ãã Global ã¤ã³ã¹ã¿ã³ã¹ã®çæ
以ä¸ã®ä¾ã¯ãWebAssembly.Global() ã³ã³ã¹ãã©ã¯ã¿ã¼ãç¨ãã¦çæãããæ°ããã°ãã¼ãã«ã¤ã³ã¹ã¿ã³ã¹ã§ãã
ããã¯å¤æ´å¯è½ (mutable) 㪠i32 åã§ãå¤ã¯ 0 ã§ãã
ãã®å¾ãã°ãã¼ãã«ã®å¤ã¯ãã¾ã Global.value ããããã£ã使ç¨ã㦠42 ã«å¤æ´ãããæ¬¡ã« global.wasm ã¢ã¸ã¥ã¼ã«ããã¨ã¯ã¹ãã¼ãããã incGlobal() 颿°ã使ç¨ã㦠43 ã«å¤æ´ããã¾ãï¼ããã¯ãä¸ããããå¤ã« 1 ã追å ãã¦ããæ°ããå¤ãè¿ãã¾ãï¼ã
const output = document.getElementById("output");
function assertEq(msg, got, expected) {
const result =
got === expected
? `SUCCESS! Got: ${got}<br>`
: `FAIL!<br>Got: ${got}<br>Expected: ${expected}<br>`;
output.innerHTML += `Testing ${msg}: ${result}`;
}
assertEq("WebAssembly.Global exists", typeof WebAssembly.Global, "function");
const global = new WebAssembly.Global({ value: "i32", mutable: true }, 0);
WebAssembly.instantiateStreaming(fetch("global.wasm"), { js: { global } }).then(
({ instance }) => {
assertEq(
"getting initial value from wasm",
instance.exports.getGlobal(),
0,
);
global.value = 42;
assertEq(
"getting JS-updated value from wasm",
instance.exports.getGlobal(),
42,
);
instance.exports.incGlobal();
assertEq("getting wasm-updated value from JS", global.value, 43);
},
);
ã¡ã¢: ãã®ä¾ã¯ GitHub ä¸ã®å®è¡ä¾ã§ç¢ºèªã§ãã¾ããã¾ããã½ã¼ã¹ã³ã¼ããåç §ãã¦ãã ããã
仿§æ¸
| Specification |
|---|
| WebAssembly JavaScript Interface > # dom-global-global > |