blob: 2ced4de08ef0698a1e643dcc91dfc48aa7cedab7 [file] [log] [blame] [edit]
<!doctype html><html lang="en">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta content="width=device-width, initial-scale=1, shrink-to-fit=no" name="viewport">
<title>WebAssembly JavaScript Interface</title>
<meta content="ED" name="w3c-status">
<meta content="Bikeshed version 3f621ba99, updated Mon Jul 28 15:38:36 2025 -0700" name="generator">
<link href="https://www.w3.org/TR/wasm-js-api-2/" rel="canonical">
<meta content="9d36019973201a19f9c9ebb0f10828b2fe2374aa" name="revision">
<meta content="dark light" name="color-scheme">
<style>
emu-const {
font-family: serif;
}
</style>
<style>/* Boilerplate: style-autolinks */
.css.css, .property.property, .descriptor.descriptor {
color: var(--a-normal-text);
font-size: inherit;
font-family: inherit;
}
.css::before, .property::before, .descriptor::before {
content: "‘";
}
.css::after, .property::after, .descriptor::after {
content: "’";
}
.property, .descriptor {
/* Don't wrap property and descriptor names */
white-space: nowrap;
}
.type { /* CSS value <type> */
font-style: italic;
}
pre .property::before, pre .property::after {
content: "";
}
[data-link-type="property"]::before,
[data-link-type="propdesc"]::before,
[data-link-type="descriptor"]::before,
[data-link-type="value"]::before,
[data-link-type="function"]::before,
[data-link-type="at-rule"]::before,
[data-link-type="selector"]::before,
[data-link-type="maybe"]::before {
content: "‘";
}
[data-link-type="property"]::after,
[data-link-type="propdesc"]::after,
[data-link-type="descriptor"]::after,
[data-link-type="value"]::after,
[data-link-type="function"]::after,
[data-link-type="at-rule"]::after,
[data-link-type="selector"]::after,
[data-link-type="maybe"]::after {
content: "’";
}
[data-link-type].production::before,
[data-link-type].production::after,
.prod [data-link-type]::before,
.prod [data-link-type]::after {
content: "";
}
[data-link-type=element],
[data-link-type=element-attr] {
font-family: Menlo, Consolas, "DejaVu Sans Mono", monospace;
font-size: .9em;
}
[data-link-type=element]::before { content: "<" }
[data-link-type=element]::after { content: ">" }
[data-link-type=biblio] {
white-space: pre;
}
@media (prefers-color-scheme: dark) {
:root {
--selflink-text: black;
--selflink-bg: silver;
--selflink-hover-text: white;
}
}
</style>
<style>/* Boilerplate: style-colors */
/* Any --*-text not paired with a --*-bg is assumed to have a transparent bg */
:root {
color-scheme: light dark;
--text: black;
--bg: white;
--unofficial-watermark: url(https://www.w3.org/StyleSheets/TR/2016/logos/UD-watermark);
--logo-bg: #1a5e9a;
--logo-active-bg: #c00;
--logo-text: white;
--tocnav-normal-text: #707070;
--tocnav-normal-bg: var(--bg);
--tocnav-hover-text: var(--tocnav-normal-text);
--tocnav-hover-bg: #f8f8f8;
--tocnav-active-text: #c00;
--tocnav-active-bg: var(--tocnav-normal-bg);
--tocsidebar-text: var(--text);
--tocsidebar-bg: #f7f8f9;
--tocsidebar-shadow: rgba(0,0,0,.1);
--tocsidebar-heading-text: hsla(203,20%,40%,.7);
--toclink-text: var(--text);
--toclink-underline: #3980b5;
--toclink-visited-text: var(--toclink-text);
--toclink-visited-underline: #054572;
--heading-text: #005a9c;
--hr-text: var(--text);
--algo-border: #def;
--del-text: red;
--del-bg: transparent;
--ins-text: #080;
--ins-bg: transparent;
--a-normal-text: #034575;
--a-normal-underline: #bbb;
--a-visited-text: var(--a-normal-text);
--a-visited-underline: #707070;
--a-hover-bg: rgba(75%, 75%, 75%, .25);
--a-active-text: #c00;
--a-active-underline: #c00;
--blockquote-border: silver;
--blockquote-bg: transparent;
--blockquote-text: currentcolor;
--issue-border: #e05252;
--issue-bg: #fbe9e9;
--issue-text: var(--text);
--issueheading-text: #831616;
--example-border: #e0cb52;
--example-bg: #fcfaee;
--example-text: var(--text);
--exampleheading-text: #574b0f;
--note-border: #52e052;
--note-bg: #e9fbe9;
--note-text: var(--text);
--noteheading-text: hsl(120, 70%, 30%);
--notesummary-underline: silver;
--assertion-border: #aaa;
--assertion-bg: #eee;
--assertion-text: black;
--advisement-border: orange;
--advisement-bg: #fec;
--advisement-text: var(--text);
--advisementheading-text: #b35f00;
--warning-border: red;
--warning-bg: hsla(40,100%,50%,0.95);
--warning-text: var(--text);
--amendment-border: #330099;
--amendment-bg: #F5F0FF;
--amendment-text: var(--text);
--amendmentheading-text: #220066;
--def-border: #8ccbf2;
--def-bg: #def;
--def-text: var(--text);
--defrow-border: #bbd7e9;
--datacell-border: silver;
--indexinfo-text: #707070;
--indextable-hover-text: black;
--indextable-hover-bg: #f7f8f9;
--outdatedspec-bg: rgba(0, 0, 0, .5);
--outdatedspec-text: black;
--outdated-bg: maroon;
--outdated-text: white;
--outdated-shadow: red;
--editedrec-bg: darkorange;
}
@media (prefers-color-scheme: dark) {
:root {
--text: #ddd;
--bg: black;
--unofficial-watermark: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='400' height='400'%3E%3Cg fill='%23100808' transform='translate(200 200) rotate(-45) translate(-200 -200)' stroke='%23100808' stroke-width='3'%3E%3Ctext x='50%25' y='220' style='font: bold 70px sans-serif; text-anchor: middle; letter-spacing: 6px;'%3EUNOFFICIAL%3C/text%3E%3Ctext x='50%25' y='305' style='font: bold 70px sans-serif; text-anchor: middle; letter-spacing: 6px;'%3EDRAFT%3C/text%3E%3C/g%3E%3C/svg%3E");
--logo-bg: #1a5e9a;
--logo-active-bg: #c00;
--logo-text: white;
--tocnav-normal-text: #999;
--tocnav-normal-bg: var(--bg);
--tocnav-hover-text: var(--tocnav-normal-text);
--tocnav-hover-bg: #080808;
--tocnav-active-text: #f44;
--tocnav-active-bg: var(--tocnav-normal-bg);
--tocsidebar-text: var(--text);
--tocsidebar-bg: #080808;
--tocsidebar-shadow: rgba(255,255,255,.1);
--tocsidebar-heading-text: hsla(203,20%,40%,.7);
--toclink-text: var(--text);
--toclink-underline: #6af;
--toclink-visited-text: var(--toclink-text);
--toclink-visited-underline: #054572;
--heading-text: #8af;
--hr-text: var(--text);
--algo-border: #456;
--del-text: #f44;
--del-bg: transparent;
--ins-text: #4a4;
--ins-bg: transparent;
--a-normal-text: #6af;
--a-normal-underline: #555;
--a-visited-text: var(--a-normal-text);
--a-visited-underline: var(--a-normal-underline);
--a-hover-bg: rgba(25%, 25%, 25%, .2);
--a-active-text: #f44;
--a-active-underline: var(--a-active-text);
--borderedblock-bg: rgba(255, 255, 255, .05);
--blockquote-border: silver;
--blockquote-bg: var(--borderedblock-bg);
--blockquote-text: currentcolor;
--issue-border: #e05252;
--issue-bg: var(--borderedblock-bg);
--issue-text: var(--text);
--issueheading-text: hsl(0deg, 70%, 70%);
--example-border: hsl(50deg, 90%, 60%);
--example-bg: var(--borderedblock-bg);
--example-text: var(--text);
--exampleheading-text: hsl(50deg, 70%, 70%);
--note-border: hsl(120deg, 100%, 35%);
--note-bg: var(--borderedblock-bg);
--note-text: var(--text);
--noteheading-text: hsl(120, 70%, 70%);
--notesummary-underline: silver;
--assertion-border: #444;
--assertion-bg: var(--borderedblock-bg);
--assertion-text: var(--text);
--advisement-border: orange;
--advisement-bg: #222218;
--advisement-text: var(--text);
--advisementheading-text: #f84;
--warning-border: red;
--warning-bg: hsla(40,100%,20%,0.95);
--warning-text: var(--text);
--amendment-border: #330099;
--amendment-bg: #080010;
--amendment-text: var(--text);
--amendmentheading-text: #cc00ff;
--def-border: #8ccbf2;
--def-bg: #080818;
--def-text: var(--text);
--defrow-border: #136;
--datacell-border: silver;
--indexinfo-text: #aaa;
--indextable-hover-text: var(--text);
--indextable-hover-bg: #181818;
--outdatedspec-bg: rgba(255, 255, 255, .5);
--outdatedspec-text: black;
--outdated-bg: maroon;
--outdated-text: white;
--outdated-shadow: red;
--editedrec-bg: darkorange;
}
/* In case a transparent-bg image doesn't expect to be on a dark bg,
which is quite common in practice... */
img { background: white; }
}
</style>
<style>/* Boilerplate: style-counters */
body {
counter-reset: example figure issue;
}
.issue {
counter-increment: issue;
}
.issue:not(.no-marker)::before {
content: "Issue " counter(issue);
}
.example {
counter-increment: example;
}
.example:not(.no-marker)::before {
content: "Example " counter(example);
}
.invalid.example:not(.no-marker)::before,
.illegal.example:not(.no-marker)::before {
content: "Invalid Example" counter(example);
}
figcaption {
counter-increment: figure;
}
figcaption:not(.no-marker)::before {
content: "Figure " counter(figure) " ";
}
</style>
<style>/* Boilerplate: style-dfn-panel */
:root {
--dfnpanel-bg: #ddd;
--dfnpanel-text: var(--text);
--dfnpanel-target-bg: #ffc;
--dfnpanel-target-outline: orange;
}
@media (prefers-color-scheme: dark) {
:root {
--dfnpanel-bg: #222;
--dfnpanel-text: var(--text);
--dfnpanel-target-bg: #333;
--dfnpanel-target-outline: silver;
}
}
.dfn-panel {
position: absolute;
z-index: 35;
width: 20em;
width: 300px;
height: auto;
max-height: 500px;
overflow: auto;
padding: 0.5em 0.75em;
font: small Helvetica Neue, sans-serif, Droid Sans Fallback;
background: var(--dfnpanel-bg);
color: var(--dfnpanel-text);
border: outset 0.2em;
white-space: normal; /* in case it's moved into a pre */
}
.dfn-panel:not(.on) { display: none; }
.dfn-panel * { margin: 0; padding: 0; text-indent: 0; }
.dfn-panel > b { display: block; }
.dfn-panel a { color: var(--dfnpanel-text); }
.dfn-panel a:not(:hover) { text-decoration: none !important; border-bottom: none !important; }
.dfn-panel a:focus {
outline: 5px auto Highlight;
outline: 5px auto -webkit-focus-ring-color;
}
.dfn-panel > b + b { margin-top: 0.25em; }
.dfn-panel ul { padding: 0 0 0 1em; list-style: none; }
.dfn-panel li a {
max-width: calc(300px - 1.5em - 1em);
overflow: hidden;
text-overflow: ellipsis;
}
.dfn-panel.activated {
display: inline-block;
position: fixed;
left: 8px;
bottom: 2em;
margin: 0 auto;
max-width: calc(100vw - 1.5em - .4em - .5em);
max-height: 30vh;
transition: left 1s ease-out, bottom 1s ease-out;
}
.dfn-panel .link-item:hover {
text-decoration: underline;
}
.dfn-panel .link-item .copy-icon {
opacity: 0;
}
.dfn-panel .link-item:hover .copy-icon,
.dfn-panel .link-item .copy-icon:focus {
opacity: 1;
}
.dfn-panel .copy-icon {
display: inline-block;
margin-right: 0.5em;
width: 0.85em;
height: 1em;
border-radius: 3px;
background-color: #ccc;
cursor: pointer;
}
.dfn-panel .copy-icon .icon {
width: 100%;
height: 100%;
background-color: #fff;
display: flex;
justify-content: center;
align-items: center;
position: relative;
}
.dfn-panel .copy-icon .icon::before {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
border: 1px solid black;
background-color: #ccc;
opacity: 0.25;
transform: translate(3px, -3px);
}
.dfn-panel .copy-icon:active .icon::before {
opacity: 1;
}
.dfn-paneled[role="button"] { cursor: help; }
.highlighted {
animation: target-fade 3s;
}
@keyframes target-fade {
from {
background-color: var(--dfnpanel-target-bg);
outline: 5px solid var(--dfnpanel-target-outline);
}
to {
color: var(--a-normal-text);
background-color: transparent;
outline: transparent;
}
}
</style>
<style>/* Boilerplate: style-idl-highlighting */
pre.idl.highlight {
background: var(--borderedblock-bg, var(--def-bg));
}
</style>
<style>/* Boilerplate: style-issues */
a[href].issue-return {
float: right;
float: inline-end;
color: var(--issueheading-text);
font-weight: bold;
text-decoration: none;
}
</style>
<style>/* Boilerplate: style-md-lists */
/* This is a weird hack for me not yet following the commonmark spec
regarding paragraph and lists. */
[data-md] > :first-child {
margin-top: 0;
}
[data-md] > :last-child {
margin-bottom: 0;
}
</style>
<style>/* Boilerplate: style-ref-hints */
:root {
--ref-hint-bg: #ddd;
--ref-hint-text: var(--text);
}
@media (prefers-color-scheme: dark) {
:root {
--ref-hint-bg: #222;
--ref-hint-text: var(--text);
}
}
.ref-hint {
display: inline-block;
position: absolute;
z-index: 35;
width: 20em;
width: 300px;
height: auto;
max-height: 500px;
overflow: auto;
padding: 0.5em 0.5em;
font: small Helvetica Neue, sans-serif, Droid Sans Fallback;
background: var(--ref-hint-bg);
color: var(--ref-hint-text);
border: outset 0.2em;
white-space: normal; /* in case it's moved into a pre */
}
.ref-hint * { margin: 0; padding: 0; text-indent: 0; }
.ref-hint ul { padding: 0 0 0 1em; list-style: none; }
</style>
<style>/* Boilerplate: style-selflinks */
:root {
--selflink-text: white;
--selflink-bg: gray;
--selflink-hover-text: black;
}
.heading, .issue, .note, .example, li, dt {
position: relative;
}
a.self-link {
position: absolute;
top: 0;
left: calc(-1 * (3.5rem - 26px));
width: calc(3.5rem - 26px);
height: 2em;
text-align: center;
border: none;
transition: opacity .2s;
opacity: .5;
}
a.self-link:hover {
opacity: 1;
}
.heading > a.self-link {
font-size: 83%;
}
.example > a.self-link,
.note > a.self-link,
.issue > a.self-link {
/* These blocks are overflow:auto, so positioning outside
doesn't work. */
left: auto;
right: 0;
}
li > a.self-link {
left: calc(-1 * (3.5rem - 26px) - 2em);
}
dfn > a.self-link {
top: auto;
left: auto;
opacity: 0;
width: 1.5em;
height: 1.5em;
background: var(--selflink-bg);
color: var(--selflink-text);
font-style: normal;
transition: opacity .2s, background-color .2s, color .2s;
}
dfn:hover > a.self-link {
opacity: 1;
}
dfn > a.self-link:hover {
color: var(--selflink-hover-text);
}
a.self-link::before { content: "¶"; }
.heading > a.self-link::before { content: "§"; }
dfn > a.self-link::before { content: "#"; }
</style>
<style>/* Boilerplate: style-syntax-highlighting */
code.highlight { padding: .1em; border-radius: .3em; }
pre.highlight, pre > code.highlight { display: block; padding: 1em; margin: .5em 0; overflow: auto; border-radius: 0; }
.highlight:not(.idl) { background: rgba(0, 0, 0, .03); }
c-[a] { color: #990055 } /* Keyword.Declaration */
c-[b] { color: #990055 } /* Keyword.Type */
c-[c] { color: #708090 } /* Comment */
c-[d] { color: #708090 } /* Comment.Multiline */
c-[e] { color: #0077aa } /* Name.Attribute */
c-[f] { color: #669900 } /* Name.Tag */
c-[g] { color: #222222 } /* Name.Variable */
c-[k] { color: #990055 } /* Keyword */
c-[l] { color: #000000 } /* Literal */
c-[m] { color: #000000 } /* Literal.Number */
c-[n] { color: #0077aa } /* Name */
c-[o] { color: #999999 } /* Operator */
c-[p] { color: #999999 } /* Punctuation */
c-[s] { color: #a67f59 } /* Literal.String */
c-[t] { color: #a67f59 } /* Literal.String.Single */
c-[u] { color: #a67f59 } /* Literal.String.Double */
c-[cp] { color: #708090 } /* Comment.Preproc */
c-[c1] { color: #708090 } /* Comment.Single */
c-[cs] { color: #708090 } /* Comment.Special */
c-[kc] { color: #990055 } /* Keyword.Constant */
c-[kn] { color: #990055 } /* Keyword.Namespace */
c-[kp] { color: #990055 } /* Keyword.Pseudo */
c-[kr] { color: #990055 } /* Keyword.Reserved */
c-[ld] { color: #000000 } /* Literal.Date */
c-[nc] { color: #0077aa } /* Name.Class */
c-[no] { color: #0077aa } /* Name.Constant */
c-[nd] { color: #0077aa } /* Name.Decorator */
c-[ni] { color: #0077aa } /* Name.Entity */
c-[ne] { color: #0077aa } /* Name.Exception */
c-[nf] { color: #0077aa } /* Name.Function */
c-[nl] { color: #0077aa } /* Name.Label */
c-[nn] { color: #0077aa } /* Name.Namespace */
c-[py] { color: #0077aa } /* Name.Property */
c-[ow] { color: #999999 } /* Operator.Word */
c-[mb] { color: #000000 } /* Literal.Number.Bin */
c-[mf] { color: #000000 } /* Literal.Number.Float */
c-[mh] { color: #000000 } /* Literal.Number.Hex */
c-[mi] { color: #000000 } /* Literal.Number.Integer */
c-[mo] { color: #000000 } /* Literal.Number.Oct */
c-[sb] { color: #a67f59 } /* Literal.String.Backtick */
c-[sc] { color: #a67f59 } /* Literal.String.Char */
c-[sd] { color: #a67f59 } /* Literal.String.Doc */
c-[se] { color: #a67f59 } /* Literal.String.Escape */
c-[sh] { color: #a67f59 } /* Literal.String.Heredoc */
c-[si] { color: #a67f59 } /* Literal.String.Interpol */
c-[sx] { color: #a67f59 } /* Literal.String.Other */
c-[sr] { color: #a67f59 } /* Literal.String.Regex */
c-[ss] { color: #a67f59 } /* Literal.String.Symbol */
c-[vc] { color: #0077aa } /* Name.Variable.Class */
c-[vg] { color: #0077aa } /* Name.Variable.Global */
c-[vi] { color: #0077aa } /* Name.Variable.Instance */
c-[il] { color: #000000 } /* Literal.Number.Integer.Long */
@media (prefers-color-scheme: dark) {
.highlight:not(.idl) { background: rgba(255, 255, 255, .05); }
c-[a] { color: #d33682 } /* Keyword.Declaration */
c-[b] { color: #d33682 } /* Keyword.Type */
c-[c] { color: #2aa198 } /* Comment */
c-[d] { color: #2aa198 } /* Comment.Multiline */
c-[e] { color: #268bd2 } /* Name.Attribute */
c-[f] { color: #b58900 } /* Name.Tag */
c-[g] { color: #cb4b16 } /* Name.Variable */
c-[k] { color: #d33682 } /* Keyword */
c-[l] { color: #657b83 } /* Literal */
c-[m] { color: #657b83 } /* Literal.Number */
c-[n] { color: #268bd2 } /* Name */
c-[o] { color: #657b83 } /* Operator */
c-[p] { color: #657b83 } /* Punctuation */
c-[s] { color: #6c71c4 } /* Literal.String */
c-[t] { color: #6c71c4 } /* Literal.String.Single */
c-[u] { color: #6c71c4 } /* Literal.String.Double */
c-[ch] { color: #2aa198 } /* Comment.Hashbang */
c-[cp] { color: #2aa198 } /* Comment.Preproc */
c-[cpf] { color: #2aa198 } /* Comment.PreprocFile */
c-[c1] { color: #2aa198 } /* Comment.Single */
c-[cs] { color: #2aa198 } /* Comment.Special */
c-[kc] { color: #d33682 } /* Keyword.Constant */
c-[kn] { color: #d33682 } /* Keyword.Namespace */
c-[kp] { color: #d33682 } /* Keyword.Pseudo */
c-[kr] { color: #d33682 } /* Keyword.Reserved */
c-[ld] { color: #657b83 } /* Literal.Date */
c-[nc] { color: #268bd2 } /* Name.Class */
c-[no] { color: #268bd2 } /* Name.Constant */
c-[nd] { color: #268bd2 } /* Name.Decorator */
c-[ni] { color: #268bd2 } /* Name.Entity */
c-[ne] { color: #268bd2 } /* Name.Exception */
c-[nf] { color: #268bd2 } /* Name.Function */
c-[nl] { color: #268bd2 } /* Name.Label */
c-[nn] { color: #268bd2 } /* Name.Namespace */
c-[py] { color: #268bd2 } /* Name.Property */
c-[ow] { color: #657b83 } /* Operator.Word */
c-[mb] { color: #657b83 } /* Literal.Number.Bin */
c-[mf] { color: #657b83 } /* Literal.Number.Float */
c-[mh] { color: #657b83 } /* Literal.Number.Hex */
c-[mi] { color: #657b83 } /* Literal.Number.Integer */
c-[mo] { color: #657b83 } /* Literal.Number.Oct */
c-[sa] { color: #6c71c4 } /* Literal.String.Affix */
c-[sb] { color: #6c71c4 } /* Literal.String.Backtick */
c-[sc] { color: #6c71c4 } /* Literal.String.Char */
c-[dl] { color: #6c71c4 } /* Literal.String.Delimiter */
c-[sd] { color: #6c71c4 } /* Literal.String.Doc */
c-[se] { color: #6c71c4 } /* Literal.String.Escape */
c-[sh] { color: #6c71c4 } /* Literal.String.Heredoc */
c-[si] { color: #6c71c4 } /* Literal.String.Interpol */
c-[sx] { color: #6c71c4 } /* Literal.String.Other */
c-[sr] { color: #6c71c4 } /* Literal.String.Regex */
c-[ss] { color: #6c71c4 } /* Literal.String.Symbol */
c-[fm] { color: #268bd2 } /* Name.Function.Magic */
c-[vc] { color: #cb4b16 } /* Name.Variable.Class */
c-[vg] { color: #cb4b16 } /* Name.Variable.Global */
c-[vi] { color: #cb4b16 } /* Name.Variable.Instance */
c-[vm] { color: #cb4b16 } /* Name.Variable.Magic */
c-[il] { color: #657b83 } /* Literal.Number.Integer.Long */
}
</style>
<style>/* Boilerplate: style-var-click-highlighting */
/*
Colors were chosen in Lab using https://nixsensor.com/free-color-converter/
D50 2deg illuminant, L in [0,100], a and b in [-128, 128]
0 = lab(85,0,85)
1 = lab(85,80,30)
2 = lab(85,-40,40)
3 = lab(85,-50,0)
4 = lab(85,5,15)
5 = lab(85,-10,-50)
6 = lab(85,35,-15)
For darkmode:
0 = oklab(50% 0% 108%)
1 = oklab(50% -51% 51%)
2 = oklab(50% -64% -20%)
3 = oklab(50% 6% 19%)
4 = oklab(50% -12% -64%)
5 = oklab(50% 44% -19%)
6 = oklab(50% 102% 38%)
*/
[data-algorithm] var { cursor: pointer; }
var[data-var-color] { background-color: var(--var-bg); box-shadow: 0 0 0 2px var(--var-bg); }
var[data-var-color] { --var-bg: #F4D200; }
var[data-var-color="1"] { --var-bg: #FF87A2; }
var[data-var-color="2"] { --var-bg: #96E885; }
var[data-var-color="3"] { --var-bg: #3EEED2; }
var[data-var-color="4"] { --var-bg: #EACFB6; }
var[data-var-color="5"] { --var-bg: #82DDFF; }
var[data-var-color="6"] { --var-vg: #FFBCF2; }
@media (prefers-color-scheme: dark) {
var[data-var-color] { --var-bg: #bc1a00; }
var[data-var-color="1"] { --var-bg: #007f00; }
var[data-var-color="2"] { --var-bg: #008698; }
var[data-var-color="3"] { --var-bg: #7f5b2b; }
var[data-var-color="4"] { --var-bg: #004df3; }
var[data-var-color="5"] { --var-bg: #a1248a; }
var[data-var-color="6"] { --var-vg: #ff0000; }
}
</style>
<link href="https://www.w3.org/StyleSheets/TR/2021/W3C-ED" rel="stylesheet">
<link href="https://www.w3.org/StyleSheets/TR/2021/dark.css" media="(prefers-color-scheme: dark)" rel="stylesheet" type="text/css">
<body class="h-entry">
<div class="head">
<p data-fill-with="logo"><a class="logo" href="https://www.w3.org/">
<img alt="W3C" height="48" src="https://www.w3.org/StyleSheets/TR/2021/logos/W3C" width="72">
</a>
</p>
<h1 class="p-name no-ref" id="title">WebAssembly JavaScript Interface</h1>
<p id="w3c-state"><a href="https://www.w3.org/standards/types/#ED">Editor’s Draft</a>,
<time class="dt-updated" datetime="2025-09-26">26 September 2025</time></p>
<details open>
<summary>More details about this document</summary>
<div data-fill-with="spec-metadata">
<dl>
<dt>This version:
<dd><a class="u-url" href="https://webassembly.github.io/spec/js-api/">https://webassembly.github.io/spec/js-api/</a>
<dt>Latest published version:
<dd><a href="https://www.w3.org/TR/wasm-js-api-2/">https://www.w3.org/TR/wasm-js-api-2/</a>
<dt>Implementation Report:
<dd><a href="https://webassembly.org/features/">https://webassembly.org/features/</a>
<dt>Feedback:
<dd><a href="https://github.com/WebAssembly/spec/issues">GitHub</a>
<dd><a href="#issues-index">Inline In Spec</a>
<dt class="editor">Editor:
<dd class="editor p-author h-card vcard" data-editor-id="46309"><span class="p-name fn">Ms2ger</span> (<span class="p-org org">Igalia</span>)
<dt>Issue Tracking:
<dd><a href="https://github.com/WebAssembly/spec/labels/wasm-js-api-2">GitHub Issues</a>
</dl>
</div>
</details>
<div data-fill-with="warning"></div>
<p class="copyright" data-fill-with="copyright"><a href="https://www.w3.org/policies/#copyright">Copyright</a> © 2025 <a href="https://www.w3.org/">World Wide Web Consortium</a>. <abbr title="World Wide Web Consortium">W3C</abbr><sup>®</sup> <a href="https://www.w3.org/policies/#Legal_Disclaimer">liability</a>, <a href="https://www.w3.org/policies/#W3C_Trademarks">trademark</a> and <a href="https://www.w3.org/copyright/software-license/" rel="license" title="W3C Software and Document License">permissive document license</a> rules apply.
</p>
<hr title="Separator for header">
</div>
<div class="p-summary" data-fill-with="abstract">
<h2 class="no-num no-toc no-ref heading settled" id="abstract"><span class="content">Abstract</span></h2>
<p>This document provides an explicit JavaScript API for interacting with WebAssembly.</p>
This is part of a collection of related documents:
the <a href="https://www.w3.org/TR/wasm-core/">Core WebAssembly Specification</a>,
the <a href="https://www.w3.org/TR/wasm-js-api/">WebAssembly JS Interface</a>,
and the <a href="https://www.w3.org/TR/wasm-web-api/">WebAssembly Web API</a>.
</div>
<h2 class="no-num no-toc no-ref heading settled" id="sotd"><span class="content">Status of this document</span></h2>
<div data-fill-with="status">
<p></p>
</div>
<div data-fill-with="at-risk"></div>
<nav data-fill-with="table-of-contents" id="toc">
<h2 class="no-num no-toc no-ref" id="contents">Table of Contents</h2>
<ol class="toc" role="directory">
<li><a href="#intro"><span class="secno">1</span> <span class="content">Introduction</span></a>
<li><a href="#sample"><span class="secno">2</span> <span class="content">Sample API Usage</span></a>
<li><a href="#notation"><span class="secno">3</span> <span class="content">Notation</span></a>
<li>
<a href="#webassembly-storage"><span class="secno">4</span> <span class="content">Internal storage</span></a>
<ol class="toc">
<li><a href="#store"><span class="secno">4.1</span> <span class="content">Interaction of the WebAssembly Store with JavaScript</span></a>
<li><a href="#object-caches"><span class="secno">4.2</span> <span class="content">WebAssembly JS Object Caches</span></a>
</ol>
<li>
<a href="#webassembly-namespace"><span class="secno">5</span> <span class="content">The WebAssembly Namespace</span></a>
<ol class="toc">
<li><a href="#modules"><span class="secno">5.1</span> <span class="content">Modules</span></a>
<li><a href="#instances"><span class="secno">5.2</span> <span class="content">Instances</span></a>
<li><a href="#memories"><span class="secno">5.3</span> <span class="content">Memories</span></a>
<li><a href="#tables"><span class="secno">5.4</span> <span class="content">Tables</span></a>
<li><a href="#globals"><span class="secno">5.5</span> <span class="content">Globals</span></a>
<li><a href="#exported-function-exotic-objects"><span class="secno">5.6</span> <span class="content">Exported Functions</span></a>
<li>
<a href="#tags"><span class="secno">5.7</span> <span class="content">Tags</span></a>
<ol class="toc">
<li><a href="#tag-types"><span class="secno">5.7.1</span> <span class="content">Tag types</span></a>
</ol>
<li><a href="#gc-exotic-objects"><span class="secno">5.8</span> <span class="content">Garbage Collected Objects</span></a>
<li>
<a href="#exceptions"><span class="secno">5.9</span> <span class="content">Exceptions</span></a>
<ol class="toc">
<li><a href="#js-exceptions"><span class="secno">5.9.1</span> <span class="content">JavaScript exceptions</span></a>
</ol>
<li><a href="#error-objects"><span class="secno">5.10</span> <span class="content">Error Objects</span></a>
</ol>
<li>
<a href="#builtins"><span class="secno">6</span> <span class="content">Builtins</span></a>
<ol class="toc">
<li>
<a href="#builtins-js-string"><span class="secno">6.1</span> <span class="content">String Builtins</span></a>
<ol class="toc">
<li><a href="#builtins-js-string-abstract-ops"><span class="secno">6.1.1</span> <span class="content">Abstract operations</span></a>
<li><a href="#js-string-cast"><span class="secno">6.1.2</span> <span class="content">cast</span></a>
<li><a href="#js-string-test"><span class="secno">6.1.3</span> <span class="content">test</span></a>
<li><a href="#js-string-fromCharCodeArray"><span class="secno">6.1.4</span> <span class="content">fromCharCodeArray</span></a>
<li><a href="#js-string-intoCharCodeArray"><span class="secno">6.1.5</span> <span class="content">intoCharCodeArray</span></a>
<li><a href="#js-string-fromCharCode"><span class="secno">6.1.6</span> <span class="content">fromCharCode</span></a>
<li><a href="#js-string-fromCodePoint"><span class="secno">6.1.7</span> <span class="content">fromCodePoint</span></a>
<li><a href="#js-string-charCodeAt"><span class="secno">6.1.8</span> <span class="content">charCodeAt</span></a>
<li><a href="#js-string-codePointAt"><span class="secno">6.1.9</span> <span class="content">codePointAt</span></a>
<li><a href="#js-string-length"><span class="secno">6.1.10</span> <span class="content">length</span></a>
<li><a href="#js-string-concat"><span class="secno">6.1.11</span> <span class="content">concat</span></a>
<li><a href="#js-string-substring"><span class="secno">6.1.12</span> <span class="content">substring</span></a>
<li><a href="#js-string-equals"><span class="secno">6.1.13</span> <span class="content">equals</span></a>
<li><a href="#js-string-compare"><span class="secno">6.1.14</span> <span class="content">compare</span></a>
</ol>
</ol>
<li>
<a href="#errors"><span class="secno">7</span> <span class="content">Error Condition Mappings to JavaScript</span></a>
<ol class="toc">
<li><a href="#stack-overflow"><span class="secno">7.1</span> <span class="content">Stack Overflow</span></a>
<li><a href="#out-of-memory"><span class="secno">7.2</span> <span class="content">Out of Memory</span></a>
</ol>
<li><a href="#limits"><span class="secno">8</span> <span class="content">Implementation-defined Limits</span></a>
<li><a href="#security-considerations"><span class="secno">9</span> <span class="content">Security and Privacy Considerations</span></a>
<li>
<a href="#change-history"><span class="secno">10</span> <span class="content">Change History</span></a>
<ol class="toc">
<li><a href="#release-20"><span class="secno">10.1</span> <span class="content">Release 2.0</span></a>
<li><a href="#release-30"><span class="secno">10.2</span> <span class="content">Release 3.0</span></a>
</ol>
<li>
<a href="#w3c-conformance"><span class="secno"></span> <span class="content">Conformance</span></a>
<ol class="toc">
<li><a href="#w3c-conventions"><span class="secno"></span> <span class="content">Document conventions</span></a>
<li><a href="#w3c-conformant-algorithms"><span class="secno"></span> <span class="content">Conformant Algorithms</span></a>
</ol>
<li>
<a href="#index"><span class="secno"></span> <span class="content">Index</span></a>
<ol class="toc">
<li><a href="#index-defined-here"><span class="secno"></span> <span class="content">Terms defined by this specification</span></a>
<li><a href="#index-defined-elsewhere"><span class="secno"></span> <span class="content">Terms defined by reference</span></a>
</ol>
<li>
<a href="#references"><span class="secno"></span> <span class="content">References</span></a>
<ol class="toc">
<li><a href="#normative"><span class="secno"></span> <span class="content">Normative References</span></a>
<li><a href="#informative"><span class="secno"></span> <span class="content">Informative References</span></a>
</ol>
<li><a href="#idl-index"><span class="secno"></span> <span class="content">IDL Index</span></a>
<li><a href="#issues-index"><span class="secno"></span> <span class="content">Issues Index</span></a>
</ol>
</nav>
<main>
<h2 class="heading settled" data-level="1" id="intro"><span class="secno">1. </span><span class="content">Introduction</span><a class="self-link" href="#intro"></a></h2>
<p>By design, the <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/intro/introduction.html#scope" id="ref-for-scope">scope</a> of the WebAssembly core specification <a data-link-type="biblio" href="#biblio-webassembly" title="WebAssembly Core Specification">[WEBASSEMBLY]</a> does not include a description of how WebAssembly programs interact with their surrounding execution environment.
Instead it defines an abstract <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/#appending/embedding.html" id="ref-for-appending/embedding.html">embedding interface</a> between WebAssembly and its environment, (called the <em>embedder</em>).
It is only through this interface that an embedder interacts with the semantics of WebAssembly, and the embedder implements the connection between its host environment and the embedding API.
This document describes the embedding of WebAssembly into JavaScript <a data-link-type="biblio" href="#biblio-ecmascript" title="ECMAScript Language Specification">[ECMASCRIPT]</a> environments, including how WebAssembly modules can be constructed and instantiated, how imported and exported functions are called, how data is exchanged, and how errors are handled.
When the JavaScript environment is itself embedded in a Web browser, the Web API spec <a data-link-type="biblio" href="#biblio-wasmweb" title="WebAssembly Web API Specification">[WASMWEB]</a> describes additional behavior relevant to the Web environment.</p>
<h2 class="heading settled" data-level="2" id="sample"><span class="secno">2. </span><span class="content">Sample API Usage</span><a class="self-link" href="#sample"></a></h2>
<p><em>This section is non-normative.</em></p>
<p>Given <code>demo.wat</code> (encoded to <code>demo.wasm</code>):</p>
<pre class="language-lisp highlight"><c- p>(</c-><c- g>module</c->
<c- p>(</c->import <c- s>"js"</c-> <c- s>"import1"</c-> <c- p>(</c-><c- g>func</c-> <c- g>$i1</c-><c- p>))</c->
<c- p>(</c->import <c- s>"js"</c-> <c- s>"import2"</c-> <c- p>(</c-><c- g>func</c-> <c- g>$i2</c-><c- p>))</c->
<c- p>(</c-><c- g>func</c-> <c- g>$main</c-> <c- p>(</c-><c- g>call</c-> <c- g>$i1</c-><c- p>))</c->
<c- p>(</c-><c- g>start</c-> <c- g>$main</c-><c- p>)</c->
<c- p>(</c-><c- g>func</c-> <c- p>(</c->export <c- s>"f"</c-><c- p>)</c-> <c- p>(</c-><c- g>call</c-> <c- g>$i2</c-><c- p>))</c->
<c- p>)</c->
</pre>
<p>and the following JavaScript, run in a browser:</p>
<pre class="language-javascript highlight"><c- a>var</c-> importObj <c- o>=</c-> <c- p>{</c->js<c- o>:</c-> <c- p>{</c->
import1<c- o>:</c-> <c- p>()</c-> <c- p>=></c-> console<c- p>.</c->log<c- p>(</c-><c- u>"hello,"</c-><c- p>),</c->
import2<c- o>:</c-> <c- p>()</c-> <c- p>=></c-> console<c- p>.</c->log<c- p>(</c-><c- u>"world!"</c-><c- p>)</c->
<c- p>}};</c->
fetch<c- p>(</c-><c- t>'demo.wasm'</c-><c- p>).</c->then<c- p>(</c->response <c- p>=></c->
response<c- p>.</c->arrayBuffer<c- p>()</c->
<c- p>).</c->then<c- p>(</c->buffer <c- p>=></c->
WebAssembly<c- p>.</c->instantiate<c- p>(</c->buffer<c- p>,</c-> importObj<c- p>)</c->
<c- p>).</c->then<c- p>(({</c->module<c- p>,</c-> instance<c- p>})</c-> <c- p>=></c->
instance<c- p>.</c->exports<c- p>.</c->f<c- p>()</c->
<c- p>);</c->
</pre>
<h2 class="heading settled" data-level="3" id="notation"><span class="secno">3. </span><span class="content">Notation</span><a class="self-link" href="#notation"></a></h2>
<p>This specification depends on the Infra Standard. <a data-link-type="biblio" href="#biblio-infra" title="Infra Standard">[INFRA]</a></p>
<p>The WebAssembly <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/conventions.html#grammar-notation" id="ref-for-grammar-notation">sequence</a> type is equivalent to the <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list" id="ref-for-list">list</a> type defined there; values of one
are treated as values of the other transparently.</p>
<h2 class="heading settled" data-level="4" id="webassembly-storage"><span class="secno">4. </span><span class="content">Internal storage</span><a class="self-link" href="#webassembly-storage"></a></h2>
<h3 class="heading settled" data-level="4.1" id="store"><span class="secno">4.1. </span><span class="content">Interaction of the WebAssembly Store with JavaScript</span><a class="self-link" href="#store"></a></h3>
<p class="note" role="note"><span class="marker">Note:</span> WebAssembly semantics are defined in terms of an abstract <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-store" id="ref-for-syntax-store">store</a>, representing the state of the WebAssembly abstract machine. WebAssembly operations take a store and return an updated store.</p>
<p>Each <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#agent" id="ref-for-agent">agent</a> has an <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="associated-store">associated store</dfn>. When a new agent is created, its associated store is set to the result of <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-store-init" id="ref-for-embed-store-init">store_init</a>().</p>
<p class="note" role="note"><span class="marker">Note:</span> In this specification, no WebAssembly-related objects, memory or addresses can be shared among agents in an <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#sec-agent-clusters" id="ref-for-sec-agent-clusters">agent cluster</a>. In a future version of WebAssembly, this may change.</p>
<p>Elements of the WebAssembly store may be <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="identified-with">identified with</dfn> JavaScript values. In particular, each WebAssembly <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#memory-instances" id="ref-for-memory-instances">memory instance</a> with a corresponding <code class="idl"><a data-link-type="idl" href="#memory" id="ref-for-memory">Memory</a></code> object is identified with a JavaScript <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/ecmascript-data-types-and-values.html#sec-data-blocks" id="ref-for-sec-data-blocks">Data Block</a>; modifications to this Data Block are identified to updating the agent’s store to a store which reflects those changes, and vice versa.</p>
<h3 class="heading settled" data-level="4.2" id="object-caches"><span class="secno">4.2. </span><span class="content">WebAssembly JS Object Caches</span><a class="self-link" href="#object-caches"></a></h3>
<p class="note" role="note"><span class="marker">Note:</span> There are several WebAssembly objects that may have a corresponding JavaScript object. The correspondence is stored in a per-agent mapping from WebAssembly <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#addresses" id="ref-for-addresses">address</a>es to JavaScript objects.
This mapping is used to ensure that, for a given <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#agent" id="ref-for-agent①">agent</a>, there exists at most one JavaScript object for a particular WebAssembly address. However, this property does not hold for shared objects.</p>
<p>Each <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#agent" id="ref-for-agent②">agent</a> is associated with the following <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#ordered-map" id="ref-for-ordered-map">ordered map</a>s:</p>
<ul>
<li data-md>
<p>The <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="memory-object-cache">Memory object cache</dfn>, mapping <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-memaddr" id="ref-for-syntax-memaddr">memory address</a>es to <code class="idl"><a data-link-type="idl" href="#memory" id="ref-for-memory①">Memory</a></code> objects.</p>
<li data-md>
<p>The <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="table-object-cache">Table object cache</dfn>, mapping <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-tableaddr" id="ref-for-syntax-tableaddr">table address</a>es to <code class="idl"><a data-link-type="idl" href="#table" id="ref-for-table">Table</a></code> objects.</p>
<li data-md>
<p>The <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="exported-function-cache">Exported Function cache</dfn>, mapping <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-funcaddr" id="ref-for-syntax-funcaddr">function address</a>es to <a data-link-type="dfn" href="#exported-function" id="ref-for-exported-function">Exported Function</a> objects.</p>
<li data-md>
<p>The <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="exported-gc-object-cache">Exported GC Object cache</dfn>, mapping <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-structaddr" id="ref-for-syntax-structaddr">struct address</a>es and <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-arrayaddr" id="ref-for-syntax-arrayaddr">array address</a>es to <a data-link-type="dfn" href="#exported-gc-object" id="ref-for-exported-gc-object">Exported GC Object</a> objects.</p>
<li data-md>
<p>The <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="global-object-cache">Global object cache</dfn>, mapping <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-globaladdr" id="ref-for-syntax-globaladdr">global address</a>es to <code class="idl"><a data-link-type="idl" href="#global" id="ref-for-global">Global</a></code> objects.</p>
<li data-md>
<p>The <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="tag-object-cache">Tag object cache</dfn>, mapping <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-tagaddr" id="ref-for-syntax-tagaddr">tag addresses</a> to <code class="idl"><a data-link-type="idl" href="#tag" id="ref-for-tag">Tag</a></code> objects.</p>
<li data-md>
<p>The <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="exception-object-cache">Exception object cache</dfn>, mapping <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-exnaddr" id="ref-for-syntax-exnaddr">exception address</a>es to <code class="idl"><a data-link-type="idl" href="#exception" id="ref-for-exception">Exception</a></code> objects.</p>
<li data-md>
<p>The <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="host-value-cache">Host value cache</dfn>, mapping <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-hostaddr" id="ref-for-syntax-hostaddr">host address</a>es to values.</p>
</ul>
<h2 class="heading settled" data-level="5" id="webassembly-namespace"><span class="secno">5. </span><span class="content">The WebAssembly Namespace</span><a class="self-link" href="#webassembly-namespace"></a></h2>
<pre class="idl highlight def"><c- b>dictionary</c-> <dfn class="dfn-paneled idl-code" data-dfn-type="dictionary" data-export id="dictdef-webassemblyinstantiatedsource"><code><c- g>WebAssemblyInstantiatedSource</c-></code></dfn> {
<c- b>required</c-> <a data-link-type="idl-name" href="#module" id="ref-for-module"><c- n>Module</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="WebAssemblyInstantiatedSource" data-dfn-type="dict-member" data-export data-type="Module" id="dom-webassemblyinstantiatedsource-module"><code><c- g>module</c-></code></dfn>;
<c- b>required</c-> <a data-link-type="idl-name" href="#instance" id="ref-for-instance"><c- n>Instance</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="WebAssemblyInstantiatedSource" data-dfn-type="dict-member" data-export data-type="Instance" id="dom-webassemblyinstantiatedsource-instance"><code><c- g>instance</c-></code></dfn>;
};
<c- b>dictionary</c-> <dfn class="dfn-paneled idl-code" data-dfn-type="dictionary" data-export id="dictdef-webassemblycompileoptions"><code><c- g>WebAssemblyCompileOptions</c-></code></dfn> {
<a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-USVString" id="ref-for-idl-USVString"><c- b>USVString</c-></a>? <dfn class="dfn-paneled idl-code" data-dfn-for="WebAssemblyCompileOptions" data-dfn-type="dict-member" data-export data-type="USVString?" id="dom-webassemblycompileoptions-importedstringconstants"><code><c- g>importedStringConstants</c-></code></dfn>;
<a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#idl-sequence" id="ref-for-idl-sequence"><c- b>sequence</c-></a>&lt;<a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-USVString" id="ref-for-idl-USVString①"><c- b>USVString</c-></a>> <dfn class="dfn-paneled idl-code" data-dfn-for="WebAssemblyCompileOptions" data-dfn-type="dict-member" data-export data-type="sequence<USVString>" id="dom-webassemblycompileoptions-builtins"><code><c- g>builtins</c-></code></dfn>;
};
[Exposed=*]
<c- b>namespace</c-> <dfn class="dfn-paneled idl-code" data-dfn-type="namespace" data-export id="namespacedef-webassembly"><code><c- g>WebAssembly</c-></code></dfn> {
<a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-boolean" id="ref-for-idl-boolean"><c- b>boolean</c-></a> <a class="idl-code" data-link-type="method" href="#dom-webassembly-validate" id="ref-for-dom-webassembly-validate"><c- g>validate</c-></a>(<a data-link-type="idl-name" href="https://webidl.spec.whatwg.org/#BufferSource" id="ref-for-BufferSource"><c- n>BufferSource</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="WebAssembly/validate(bytes, options), WebAssembly/validate(bytes)" data-dfn-type="argument" data-export id="dom-webassembly-validate-bytes-options-bytes"><code><c- g>bytes</c-></code></dfn>, <c- b>optional</c-> <a data-link-type="idl-name" href="#dictdef-webassemblycompileoptions" id="ref-for-dictdef-webassemblycompileoptions"><c- n>WebAssemblyCompileOptions</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="WebAssembly/validate(bytes, options), WebAssembly/validate(bytes)" data-dfn-type="argument" data-export id="dom-webassembly-validate-bytes-options-options"><code><c- g>options</c-></code></dfn> = {});
<a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-promise" id="ref-for-idl-promise"><c- b>Promise</c-></a>&lt;<a data-link-type="idl-name" href="#module" id="ref-for-module①"><c- n>Module</c-></a>> <a class="idl-code" data-link-type="method" href="#dom-webassembly-compile" id="ref-for-dom-webassembly-compile"><c- g>compile</c-></a>(<a data-link-type="idl-name" href="https://webidl.spec.whatwg.org/#BufferSource" id="ref-for-BufferSource①"><c- n>BufferSource</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="WebAssembly/compile(bytes, options), WebAssembly/compile(bytes)" data-dfn-type="argument" data-export id="dom-webassembly-compile-bytes-options-bytes"><code><c- g>bytes</c-></code></dfn>, <c- b>optional</c-> <a data-link-type="idl-name" href="#dictdef-webassemblycompileoptions" id="ref-for-dictdef-webassemblycompileoptions①"><c- n>WebAssemblyCompileOptions</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="WebAssembly/compile(bytes, options), WebAssembly/compile(bytes)" data-dfn-type="argument" data-export id="dom-webassembly-compile-bytes-options-options"><code><c- g>options</c-></code></dfn> = {});
<a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-promise" id="ref-for-idl-promise①"><c- b>Promise</c-></a>&lt;<a data-link-type="idl-name" href="#dictdef-webassemblyinstantiatedsource" id="ref-for-dictdef-webassemblyinstantiatedsource"><c- n>WebAssemblyInstantiatedSource</c-></a>> <a class="idl-code" data-link-type="method" href="#dom-webassembly-instantiate" id="ref-for-dom-webassembly-instantiate"><c- g>instantiate</c-></a>(
<a data-link-type="idl-name" href="https://webidl.spec.whatwg.org/#BufferSource" id="ref-for-BufferSource②"><c- n>BufferSource</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="WebAssembly/instantiate(bytes, importObject, options), WebAssembly/instantiate(bytes, importObject), WebAssembly/instantiate(bytes)" data-dfn-type="argument" data-export id="dom-webassembly-instantiate-bytes-importobject-options-bytes"><code><c- g>bytes</c-></code></dfn>, <c- b>optional</c-> <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-object" id="ref-for-idl-object"><c- b>object</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="WebAssembly/instantiate(bytes, importObject, options), WebAssembly/instantiate(bytes, importObject), WebAssembly/instantiate(bytes)" data-dfn-type="argument" data-export id="dom-webassembly-instantiate-bytes-importobject-options-importobject"><code><c- g>importObject</c-></code></dfn>, <c- b>optional</c-> <a data-link-type="idl-name" href="#dictdef-webassemblycompileoptions" id="ref-for-dictdef-webassemblycompileoptions②"><c- n>WebAssemblyCompileOptions</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="WebAssembly/instantiate(bytes, importObject, options), WebAssembly/instantiate(bytes, importObject), WebAssembly/instantiate(bytes)" data-dfn-type="argument" data-export id="dom-webassembly-instantiate-bytes-importobject-options-options"><code><c- g>options</c-></code></dfn> = {});
<a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-promise" id="ref-for-idl-promise②"><c- b>Promise</c-></a>&lt;<a data-link-type="idl-name" href="#instance" id="ref-for-instance①"><c- n>Instance</c-></a>> <a class="idl-code" data-link-type="method" href="#dom-webassembly-instantiate-moduleobject-importobject" id="ref-for-dom-webassembly-instantiate-moduleobject-importobject"><c- g>instantiate</c-></a>(
<a data-link-type="idl-name" href="#module" id="ref-for-module②"><c- n>Module</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="WebAssembly/instantiate(moduleObject, importObject), WebAssembly/instantiate(moduleObject)" data-dfn-type="argument" data-export id="dom-webassembly-instantiate-moduleobject-importobject-moduleobject"><code><c- g>moduleObject</c-></code></dfn>, <c- b>optional</c-> <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-object" id="ref-for-idl-object①"><c- b>object</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="WebAssembly/instantiate(moduleObject, importObject), WebAssembly/instantiate(moduleObject)" data-dfn-type="argument" data-export id="dom-webassembly-instantiate-moduleobject-importobject-importobject"><code><c- g>importObject</c-></code></dfn>);
<c- b>readonly</c-> <c- b>attribute</c-> <a data-link-type="idl-name" href="#tag" id="ref-for-tag①"><c- n>Tag</c-></a> <a class="idl-code" data-link-type="attribute" data-readonly data-type="Tag" href="#dom-webassembly-jstag" id="ref-for-dom-webassembly-jstag"><c- g>JSTag</c-></a>;
};
</pre>
<div class="algorithm" data-algorithm="compile a WebAssembly module">
To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="compile-a-webassembly-module">compile a WebAssembly module</dfn> from source bytes <var>bytes</var>, perform the following steps:
<ol>
<li data-md>
<p>Let <var>module</var> be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-module-decode" id="ref-for-embed-module-decode">module_decode</a>(<var>bytes</var>). If <var>module</var> is <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-error" id="ref-for-embed-error">error</a>, return <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-error" id="ref-for-embed-error①">error</a>.</p>
<li data-md>
<p>If <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-module-validate" id="ref-for-embed-module-validate">module_validate</a>(<var>module</var>) is <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-error" id="ref-for-embed-error②">error</a>, return <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-error" id="ref-for-embed-error③">error</a>.</p>
<li data-md>
<p>Return <var>module</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="validate builtins and imported string for a WebAssembly module">
<p>To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="validate-builtins-and-imported-string-for-a-webassembly-module">validate builtins and imported string for a WebAssembly module</dfn> from module <var>module</var>, enabled builtins <var>builtinSetNames</var>, and <var>importedStringModule</var>, perform the following steps:</p>
<ol>
<li data-md>
<p>If <a data-link-type="dfn" href="#validate-builtin-set-names" id="ref-for-validate-builtin-set-names">validating builtin set names</a> for <var>builtinSetNames</var> is false, return false.</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-iterate" id="ref-for-list-iterate">For each</a> <var>import</var> of <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-module-imports" id="ref-for-embed-module-imports">module_imports</a>(<var>module</var>),</p>
<ol>
<li data-md>
<p>If <var>importedStringModule</var> is not null and <var>import</var>[0] equals <var>importedStringModule</var>,</p>
<ol>
<li data-md>
<p>Let <var>importExternType</var> be <var>import</var>[2].</p>
<li data-md>
<p>Let <var>stringExternType</var> be <code>global const (ref extern)</code>.</p>
<li data-md>
<p>If <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-match-externtype" id="ref-for-embed-match-externtype">match_externtype</a>(<var>stringExternType</var>, <var>importExternType</var>) is false, return false</p>
</ol>
<li data-md>
<p>Else,</p>
<ol>
<li data-md>
<p>If <a data-link-type="dfn" href="#validate-an-import-for-builtins" id="ref-for-validate-an-import-for-builtins">validating a import for builtin</a> with <var>import</var> and <var>builtinSetNames</var> is false, return false.</p>
</ol>
</ol>
<li data-md>
<p>Return true.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="validate(bytes, options)" data-algorithm-for="WebAssembly">
The <dfn class="dfn-paneled idl-code" data-dfn-for="WebAssembly" data-dfn-type="method" data-export data-lt="validate(bytes, options)|validate(bytes)" id="dom-webassembly-validate"><code>validate(<var>bytes</var>, <var>options</var>)</code></dfn> method, when invoked, performs the following steps:
<ol>
<li data-md>
<p>Let <var>stableBytes</var> be a <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#dfn-get-buffer-source-copy" id="ref-for-dfn-get-buffer-source-copy">copy of the bytes held by the buffer</a> <var>bytes</var>.</p>
<li data-md>
<p><a data-link-type="dfn" href="#compile-a-webassembly-module" id="ref-for-compile-a-webassembly-module">Compile</a> <var>stableBytes</var> as a WebAssembly module and store the results as <var>module</var>.</p>
<li data-md>
<p>If <var>module</var> is <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-error" id="ref-for-embed-error④">error</a>, return false.</p>
<li data-md>
<p>Let <var>builtinSetNames</var> be <var>options</var>["builtins"].</p>
<li data-md>
<p>Let <var>importedStringModule</var> be <var>options</var>["importedStringConstants"].</p>
<li data-md>
<p>If <a data-link-type="dfn" href="#validate-builtins-and-imported-string-for-a-webassembly-module" id="ref-for-validate-builtins-and-imported-string-for-a-webassembly-module">validating builtins and imported strings</a> for <var>module</var> with <var>builtinSetNames</var> and <var>importedStringModule</var> returns false, return false.</p>
<li data-md>
<p>Return true.</p>
</ol>
</div>
<p>A <code class="idl"><a data-link-type="idl" href="#module" id="ref-for-module③">Module</a></code> object represents a single WebAssembly module. Each <code class="idl"><a data-link-type="idl" href="#module" id="ref-for-module④">Module</a></code> object has the following internal slots:</p>
<ul>
<li data-md>
<p>[[Module]] : a WebAssembly <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/modules.html#syntax-module" id="ref-for-syntax-module">module</a></p>
<li data-md>
<p>[[Bytes]] : the source bytes of [[Module]].</p>
<li data-md>
<p>[[BuiltinSets]] : an ordered set of names of <a href="#builtins">builtin sets</a></p>
<li data-md>
<p>[[ImportedStringModule]] : an optional module specifier string where any string constant can be imported from.</p>
</ul>
<div class="algorithm" data-algorithm="construct a WebAssembly module object">
To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="construct-a-webassembly-module-object">construct a WebAssembly module object</dfn> from a module <var>module</var>, source bytes <var>bytes</var>, enabled builtins <var>builtinSetNames</var>, and <var>importedStringModule</var>, perform the following steps:
<ol>
<li data-md>
<p>Let <var>moduleObject</var> be a new <code class="idl"><a data-link-type="idl" href="#module" id="ref-for-module⑤">Module</a></code> object.</p>
<li data-md>
<p>Set <var>moduleObject</var>.[[Module]] to <var>module</var>.</p>
<li data-md>
<p>Set <var>moduleObject</var>.[[Bytes]] to <var>bytes</var>.</p>
<li data-md>
<p>Set <var>moduleObject</var>.[[BuiltinSets]] to <var>builtinSetNames</var>.</p>
<li data-md>
<p>Set <var>moduleObject</var>.[[ImportedStringModule]] to <var>importedStringModule</var>.</p>
<li data-md>
<p>Return <var>moduleObject</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="asynchronously compile a WebAssembly module">
To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="asynchronously-compile-a-webassembly-module">asynchronously compile a WebAssembly module</dfn> from source bytes <var>bytes</var> and <code class="idl"><a data-link-type="idl" href="#dictdef-webassemblycompileoptions" id="ref-for-dictdef-webassemblycompileoptions③">WebAssemblyCompileOptions</a></code> <var>options</var> using optional <a data-link-type="dfn" href="https://html.spec.whatwg.org/multipage/webappapis.html#task-source" id="ref-for-task-source">task source</a> <var>taskSource</var>, perform the following steps:
<ol>
<li data-md>
<p>Let <var>promise</var> be <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#a-new-promise" id="ref-for-a-new-promise">a new promise</a>.</p>
<li data-md>
<p>Run the following steps <a data-link-type="dfn" href="https://html.spec.whatwg.org/multipage/infrastructure.html#in-parallel" id="ref-for-in-parallel">in parallel</a>:</p>
<ol>
<li data-md>
<p><a data-link-type="dfn" href="#compile-a-webassembly-module" id="ref-for-compile-a-webassembly-module①">Compile the WebAssembly module</a> <var>bytes</var> and store the result as <var>module</var>.</p>
<li data-md>
<p><a data-link-type="dfn" href="https://html.spec.whatwg.org/multipage/webappapis.html#queue-a-task" id="ref-for-queue-a-task">Queue a task</a> to perform the following steps. If <var>taskSource</var> was provided, queue the task on that task source.</p>
<ol>
<li data-md>
<p>If <var>module</var> is <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-error" id="ref-for-embed-error⑤">error</a>, reject <var>promise</var> with a <code class="idl"><a data-link-type="idl" href="#exceptiondef-compileerror" id="ref-for-exceptiondef-compileerror">CompileError</a></code> exception.</p>
<li data-md>
<p>Let <var>builtinSetNames</var> be <var>options</var>["builtins"].</p>
<li data-md>
<p>Let <var>importedStringModule</var> be <var>options</var>["importedStringConstants"].</p>
<li data-md>
<p>If <a data-link-type="dfn" href="#validate-builtins-and-imported-string-for-a-webassembly-module" id="ref-for-validate-builtins-and-imported-string-for-a-webassembly-module①">validating builtins and imported strings</a> for <var>module</var> with <var>builtinSetNames</var> and <var>importedStringModule</var> is false, reject <var>promise</var> with a <code class="idl"><a data-link-type="idl" href="#exceptiondef-compileerror" id="ref-for-exceptiondef-compileerror①">CompileError</a></code> exception.</p>
<li data-md>
<p>Otherwise,</p>
<ol>
<li data-md>
<p><a data-link-type="dfn" href="#construct-a-webassembly-module-object" id="ref-for-construct-a-webassembly-module-object">Construct a WebAssembly module object</a> from <var>module</var>, <var>bytes</var>, <var>builtinSetNames</var>, <var>importedStringModule</var>, and let <var>moduleObject</var> be the result.</p>
<li data-md>
<p><a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#resolve" id="ref-for-resolve">Resolve</a> <var>promise</var> with <var>moduleObject</var>.</p>
</ol>
</ol>
</ol>
<li data-md>
<p>Return <var>promise</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="compile(bytes, options)" data-algorithm-for="WebAssembly">
The <dfn class="dfn-paneled idl-code" data-dfn-for="WebAssembly" data-dfn-type="method" data-export data-lt="compile(bytes, options)|compile(bytes)" id="dom-webassembly-compile"><code>compile(<var>bytes</var>, <var>options</var>)</code></dfn> method, when invoked, performs the following steps:
<ol>
<li data-md>
<p>Let <var>stableBytes</var> be a <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#dfn-get-buffer-source-copy" id="ref-for-dfn-get-buffer-source-copy①">copy of the bytes held by the buffer</a> <var>bytes</var>.</p>
<li data-md>
<p><a data-link-type="dfn" href="#asynchronously-compile-a-webassembly-module" id="ref-for-asynchronously-compile-a-webassembly-module">Asynchronously compile a WebAssembly module</a> from <var>stableBytes</var> using <var>options</var> and return the result.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="instantiate imported strings">
<p>To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="instantiate-imported-strings">instantiate imported strings</dfn> with module <var>module</var> and <var>importedStringModule</var>, perform the following steps:</p>
<ol>
<li data-md>
<p class="assertion">Assert: <var>importedStringModule</var> is not null.</p>
<li data-md>
<p>Let <var>exportsObject</var> be <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands">!</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/ordinary-and-exotic-objects-behaviours.html#sec-ordinaryobjectcreate" id="ref-for-sec-ordinaryobjectcreate">OrdinaryObjectCreate</a>(null).</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-iterate" id="ref-for-list-iterate①">For each</a> (<var>moduleName</var>, <var>componentName</var>, <var>externtype</var>) of <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-module-imports" id="ref-for-embed-module-imports①">module_imports</a>(<var>module</var>),</p>
<ol>
<li data-md>
<p>If <var>moduleName</var> does not equal <var>importedStringModule</var>, then <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#iteration-continue" id="ref-for-iteration-continue">continue</a>.</p>
<li data-md>
<p>Let <var>stringConstant</var> be <var>componentName</var>.</p>
<li data-md>
<p>Let <var>status</var> be <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands①">!</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/abstract-operations.html#sec-createdataproperty" id="ref-for-sec-createdataproperty">CreateDataProperty</a>(<var>exportsObject</var>, <var>stringConstant</var>, <var>stringConstant</var>).</p>
<li data-md>
<p class="assertion">Assert: <var>status</var> is true.</p>
</ol>
<li data-md>
<p>Return <var>exportsObject</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="read-the-imports">
To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="read-the-imports">read the imports</dfn> from a WebAssembly module <var>module</var> from imports object <var>importObject</var>, enabled builtins <var>builtinSetNames</var>, and <var>importedStringModule</var>, perform the following steps:
<ol>
<li data-md>
<p>If <var>module</var>.<a data-link-type="dfn" data-refhint-key="32e497d6" href="https://webassembly.github.io/spec/core/syntax/modules.html#syntax-module" id="ref-for-syntax-module①">imports</a> <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-is-empty" id="ref-for-list-is-empty">is not empty</a>, and <var>importObject</var> is undefined, throw a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-typeerror" id="ref-for-sec-native-error-types-used-in-this-standard-typeerror">TypeError</a></code> exception.</p>
<li data-md>
<p>Let <var>builtinOrStringImports</var> be the ordered map « ».</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-iterate" id="ref-for-list-iterate②">For each</a> <var>builtinSetName</var> of <var>builtinSetNames</var>,</p>
<ol>
<li data-md>
<p class="assertion">Assert: <var>builtinOrStringImports</var> does not contain <var>builtinSetName</var></p>
<li data-md>
<p>If <var>builtinSetName</var> does not refer to a builtin set, then <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#iteration-continue" id="ref-for-iteration-continue①">continue</a>.</p>
<li data-md>
<p>Let <var>exportsObject</var> be the result of <a data-link-type="dfn" href="#instantiate-a-builtin-set" id="ref-for-instantiate-a-builtin-set">instantiate a builtin set</a> with <var>builtinSetName</var></p>
<li data-md>
<p>Let <var>builtinSetQualifiedName</var> be <var>builtinSetName</var> prefixed with "wasm:"</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-set" id="ref-for-map-set">Set</a> <var>builtinOrStringImports</var>[<var>builtinSetQualifiedName</var>] to <var>exportsObject</var></p>
</ol>
<li data-md>
<p>If <var>importedStringModule</var> is not null,</p>
<ol>
<li data-md>
<p>Let <var>exportsObject</var> be the result of <a data-link-type="dfn" href="#instantiate-imported-strings" id="ref-for-instantiate-imported-strings">instantiate imported strings</a> with <var>module</var> and <var>importedStringModule</var></p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-set" id="ref-for-map-set①">Set</a> <var>builtinOrStringImports</var>[<var>importedStringModule</var>] to <var>exportsObject</var></p>
</ol>
<li data-md>
<p>Let <var>imports</var> be « ».</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-iterate" id="ref-for-list-iterate③">For each</a> (<var>moduleName</var>, <var>componentName</var>, <var>externtype</var>) of <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-module-imports" id="ref-for-embed-module-imports②">module_imports</a>(<var>module</var>),</p>
<ol>
<li data-md>
<p>If <var>builtinOrStringImports</var> <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-exists" id="ref-for-map-exists">contains</a> <var>moduleName</var>,</p>
<ol>
<li data-md>
<p>Let <var>o</var> be <var>builtinOrStringImports</var>[<var>moduleName</var>].</p>
<li data-md>
<p>If <var>o</var> <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-object-type" id="ref-for-sec-object-type">is not an Object</a> or if <var>o</var> <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-exists" id="ref-for-map-exists①">does not contain</a> <var>componentName</var>,</p>
<ol>
<li data-md>
<p>Set <var>o</var> to <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands②">?</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/abstract-operations.html#sec-get-o-p" id="ref-for-sec-get-o-p">Get</a>(<var>importObject</var>, <var>moduleName</var>).</p>
</ol>
</ol>
<li data-md>
<p>Else,</p>
<ol>
<li data-md>
<p>Let <var>o</var> be <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands③">?</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/abstract-operations.html#sec-get-o-p" id="ref-for-sec-get-o-p①">Get</a>(<var>importObject</var>, <var>moduleName</var>).</p>
</ol>
<li data-md>
<p>If <var>o</var> <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-object-type" id="ref-for-sec-object-type①">is not an Object</a>, throw a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-typeerror" id="ref-for-sec-native-error-types-used-in-this-standard-typeerror①">TypeError</a></code> exception.</p>
<li data-md>
<p>Let <var>v</var> be <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands④">?</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/abstract-operations.html#sec-get-o-p" id="ref-for-sec-get-o-p②">Get</a>(<var>o</var>, <var>componentName</var>).</p>
<li data-md>
<p>If <var>externtype</var> is of the form <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#external-types" id="ref-for-external-types">func</a> <var>functype</var>,</p>
<ol>
<li data-md>
<p>If <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/abstract-operations.html#sec-iscallable" id="ref-for-sec-iscallable">IsCallable</a>(<var>v</var>) is false, throw a <code class="idl"><a data-link-type="idl" href="#exceptiondef-linkerror" id="ref-for-exceptiondef-linkerror">LinkError</a></code> exception.</p>
<li data-md>
<p>If <var>v</var> has a [[FunctionAddress]] internal slot, and therefore is an <a data-link-type="dfn" href="#exported-function" id="ref-for-exported-function①">Exported Function</a>,</p>
<ol>
<li data-md>
<p>Let <var>funcaddr</var> be the value of <var>v</var>’s [[FunctionAddress]] internal slot.</p>
</ol>
<li data-md>
<p>Otherwise,</p>
<ol>
<li data-md>
<p><a data-link-type="dfn" href="#create-a-host-function" id="ref-for-create-a-host-function">Create a host function</a> from <var>v</var> and <var>functype</var>, and let <var>funcaddr</var> be the result.</p>
<li data-md>
<p>Let <var>index</var> be the number of external functions in <var>imports</var>. This value <var>index</var> is known as the <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="index-of-the-host-function">index of the host function</dfn> <var>funcaddr</var>.</p>
</ol>
<li data-md>
<p>Let <var>externfunc</var> be the <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-externval" id="ref-for-syntax-externval">external value</a> <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-externval" id="ref-for-syntax-externval①">func</a> <var>funcaddr</var>.</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-append" id="ref-for-list-append">Append</a> <var>externfunc</var> to <var>imports</var>.</p>
</ol>
<li data-md>
<p>If <var>externtype</var> is of the form <a data-link-type="dfn" data-refhint-key="82295e1c" href="https://webassembly.github.io/spec/core/syntax/types.html#external-types" id="ref-for-external-types①">global</a> <var>mut</var> <var>valtype</var>,</p>
<ol>
<li data-md>
<p>If <var>v</var> <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#implements" id="ref-for-implements">implements</a> <code class="idl"><a data-link-type="idl" href="#global" id="ref-for-global①">Global</a></code>,</p>
<ol>
<li data-md>
<p>Let <var>globaladdr</var> be <var>v</var>.[[Global]].</p>
</ol>
<li data-md>
<p>Otherwise,</p>
<ol>
<li data-md>
<p>If <var>valtype</var> is <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-numtype" id="ref-for-syntax-numtype">i64</a> and <var>v</var> <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-ecmascript-language-types-bigint-type" id="ref-for-sec-ecmascript-language-types-bigint-type">is not a BigInt</a>,</p>
<ol>
<li data-md>
<p>Throw a <code class="idl"><a data-link-type="idl" href="#exceptiondef-linkerror" id="ref-for-exceptiondef-linkerror①">LinkError</a></code> exception.</p>
</ol>
<li data-md>
<p>If <var>valtype</var> is one of <a data-link-type="dfn" data-refhint-key="1eccdce5" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-numtype" id="ref-for-syntax-numtype①">i32</a>, <a data-link-type="dfn" data-refhint-key="a4646532" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-numtype" id="ref-for-syntax-numtype②">f32</a> or <a data-link-type="dfn" data-refhint-key="487b76fe" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-numtype" id="ref-for-syntax-numtype③">f64</a> and <var>v</var> <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-ecmascript-language-types-number-type" id="ref-for-sec-ecmascript-language-types-number-type">is not a Number</a>,</p>
<ol>
<li data-md>
<p>Throw a <code class="idl"><a data-link-type="idl" href="#exceptiondef-linkerror" id="ref-for-exceptiondef-linkerror②">LinkError</a></code> exception.</p>
</ol>
<li data-md>
<p>If <var>valtype</var> is <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#vector-types" id="ref-for-vector-types">v128</a>,</p>
<ol>
<li data-md>
<p>Throw a <code class="idl"><a data-link-type="idl" href="#exceptiondef-linkerror" id="ref-for-exceptiondef-linkerror③">LinkError</a></code> exception.</p>
</ol>
<li data-md>
<p>Let <var>value</var> be <a data-link-type="dfn" href="#towebassemblyvalue" id="ref-for-towebassemblyvalue">ToWebAssemblyValue</a>(<var>v</var>, <var>valtype</var>). If this operation throws a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-typeerror" id="ref-for-sec-native-error-types-used-in-this-standard-typeerror②">TypeError</a></code>, catch it, and throw a <code class="idl"><a data-link-type="idl" href="#exceptiondef-linkerror" id="ref-for-exceptiondef-linkerror④">LinkError</a></code> exception.</p>
<li data-md>
<p>Let <var>store</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store">associated store</a>.</p>
<li data-md>
<p>Let (<var>store</var>, <var>globaladdr</var>) be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-global-alloc" id="ref-for-embed-global-alloc">global_alloc</a>(<var>store</var>, <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-mut" id="ref-for-syntax-mut">const</a> <var>valtype</var>, <var>value</var>).</p>
<li data-md>
<p>Set the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent①">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store①">associated store</a> to <var>store</var>.</p>
</ol>
<li data-md>
<p>Let <var>externglobal</var> be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-externval" id="ref-for-syntax-externval②">global</a> <var>globaladdr</var>.</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-append" id="ref-for-list-append①">Append</a> <var>externglobal</var> to <var>imports</var>.</p>
</ol>
<li data-md>
<p>If <var>externtype</var> is of the form <a data-link-type="dfn" data-refhint-key="2be47a22" href="https://webassembly.github.io/spec/core/syntax/types.html#external-types" id="ref-for-external-types②">mem</a> <var>memtype</var>,</p>
<ol>
<li data-md>
<p>If <var>v</var> does not <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#implements" id="ref-for-implements①">implement</a> <code class="idl"><a data-link-type="idl" href="#memory" id="ref-for-memory②">Memory</a></code>, throw a <code class="idl"><a data-link-type="idl" href="#exceptiondef-linkerror" id="ref-for-exceptiondef-linkerror⑤">LinkError</a></code> exception.</p>
<li data-md>
<p>Let <var>externmem</var> be the <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-externval" id="ref-for-syntax-externval③">external value</a> <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-externval" id="ref-for-syntax-externval④">mem</a> <var>v</var>.[[Memory]].</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-append" id="ref-for-list-append②">Append</a> <var>externmem</var> to <var>imports</var>.</p>
</ol>
<li data-md>
<p>If <var>externtype</var> is of the form <a data-link-type="dfn" data-refhint-key="eb9c1b7f" href="https://webassembly.github.io/spec/core/syntax/types.html#external-types" id="ref-for-external-types③">table</a> <var>tabletype</var>,</p>
<ol>
<li data-md>
<p>If <var>v</var> does not <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#implements" id="ref-for-implements②">implement</a> <code class="idl"><a data-link-type="idl" href="#table" id="ref-for-table①">Table</a></code>, throw a <code class="idl"><a data-link-type="idl" href="#exceptiondef-linkerror" id="ref-for-exceptiondef-linkerror⑥">LinkError</a></code> exception.</p>
<li data-md>
<p>Let <var>tableaddr</var> be <var>v</var>.[[Table]].</p>
<li data-md>
<p>Let <var>externtable</var> be the <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-externval" id="ref-for-syntax-externval⑤">external value</a> <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-externval" id="ref-for-syntax-externval⑥">table</a> <var>tableaddr</var>.</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-append" id="ref-for-list-append③">Append</a> <var>externtable</var> to <var>imports</var>.</p>
</ol>
<li data-md>
<p>If <var>externtype</var> is of the form <a data-link-type="dfn" data-refhint-key="a5c9608b" href="https://webassembly.github.io/spec/core/syntax/types.html#external-types" id="ref-for-external-types④">tag</a> <var>attribute</var> <var>functype</var>,</p>
<ol>
<li data-md>
<p class="assertion">Assert: <var>attribute</var> is <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-tagtype" id="ref-for-syntax-tagtype">exception</a>.</p>
<li data-md>
<p>If <var>v</var> does not <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#implements" id="ref-for-implements③">implement</a> <code class="idl"><a data-link-type="idl" href="#tag" id="ref-for-tag②">Tag</a></code>, throw a <code class="idl"><a data-link-type="idl" href="#exceptiondef-linkerror" id="ref-for-exceptiondef-linkerror⑦">LinkError</a></code> exception.</p>
<li data-md>
<p>Let <var>tagaddr</var> be <var>v</var>.[[Address]].</p>
<li data-md>
<p>Let <var>externtag</var> be the <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-externval" id="ref-for-syntax-externval⑦">external value</a> <a data-link-type="dfn" data-refhint-key="c77be4cb" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-externval" id="ref-for-syntax-externval⑧">tag</a> <var>tagaddr</var>.</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-append" id="ref-for-list-append④">Append</a> <var>externtag</var> to <var>imports</var>.</p>
</ol>
</ol>
<li data-md>
<p>Return <var>imports</var>.</p>
</ol>
<p class="note" role="note"><span class="marker">Note:</span> This algorithm only verifies the right kind of JavaScript values are passed.
The verification of WebAssembly type requirements is deferred to the
"<a data-link-type="dfn" href="#instantiate-the-core-of-a-webassembly-module" id="ref-for-instantiate-the-core-of-a-webassembly-module">instantiate the core of a WebAssembly module</a>" algorithm.</p>
</div>
<div class="algorithm" data-algorithm="create an exports object">
To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="create-an-exports-object">create an exports object</dfn> from a WebAssembly module <var>module</var> and instance <var>instance</var>, perform the following steps:
<ol>
<li data-md>
<p>Let <var>exportsObject</var> be <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands⑤">!</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/ordinary-and-exotic-objects-behaviours.html#sec-ordinaryobjectcreate" id="ref-for-sec-ordinaryobjectcreate①">OrdinaryObjectCreate</a>(null).</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-iterate" id="ref-for-list-iterate④">For each</a> (<var>name</var>, <var>externtype</var>) of <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-module-exports" id="ref-for-embed-module-exports">module_exports</a>(<var>module</var>),</p>
<ol>
<li data-md>
<p>Let <var>externval</var> be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-instance-export" id="ref-for-embed-instance-export">instance_export</a>(<var>instance</var>, <var>name</var>).</p>
<li data-md>
<p class="assertion">Assert: <var>externval</var> is not <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-error" id="ref-for-embed-error⑥">error</a>.</p>
<li data-md>
<p>If <var>externtype</var> is of the form <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#external-types" id="ref-for-external-types⑤">func</a> <var>functype</var>,</p>
<ol>
<li data-md>
<p class="assertion">Assert: <var>externval</var> is of the form <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-externval" id="ref-for-syntax-externval⑨">func</a> <var>funcaddr</var>.</p>
<li data-md>
<p>Let <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-externval" id="ref-for-syntax-externval①⓪">func</a> <var>funcaddr</var> be <var>externval</var>.</p>
<li data-md>
<p>Let <var>func</var> be the result of creating <a data-link-type="dfn" href="#a-new-exported-function" id="ref-for-a-new-exported-function">a new Exported Function</a> from <var>funcaddr</var>.</p>
<li data-md>
<p>Let <var>value</var> be <var>func</var>.</p>
</ol>
<li data-md>
<p>If <var>externtype</var> is of the form <a data-link-type="dfn" data-refhint-key="82295e1c" href="https://webassembly.github.io/spec/core/syntax/types.html#external-types" id="ref-for-external-types⑥">global</a> <var>mut</var> <var>globaltype</var>,</p>
<ol>
<li data-md>
<p class="assertion">Assert: <var>externval</var> is of the form <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-externval" id="ref-for-syntax-externval①①">global</a> <var>globaladdr</var>.</p>
<li data-md>
<p>Let <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-externval" id="ref-for-syntax-externval①②">global</a> <var>globaladdr</var> be <var>externval</var>.</p>
<li data-md>
<p>Let <var>global</var> be <a data-link-type="dfn" href="#create-a-global-object" id="ref-for-create-a-global-object">a new Global object</a> created from <var>globaladdr</var>.</p>
<li data-md>
<p>Let <var>value</var> be <var>global</var>.</p>
</ol>
<li data-md>
<p>If <var>externtype</var> is of the form <a data-link-type="dfn" data-refhint-key="2be47a22" href="https://webassembly.github.io/spec/core/syntax/types.html#external-types" id="ref-for-external-types⑦">mem</a> <var>memtype</var>,</p>
<ol>
<li data-md>
<p class="assertion">Assert: <var>externval</var> is of the form <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-externval" id="ref-for-syntax-externval①③">mem</a> <var>memaddr</var>.</p>
<li data-md>
<p>Let <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-externval" id="ref-for-syntax-externval①④">mem</a> <var>memaddr</var> be <var>externval</var>.</p>
<li data-md>
<p>Let <var>memory</var> be <a data-link-type="dfn" href="#create-a-memory-object" id="ref-for-create-a-memory-object">a new Memory object</a> created from <var>memaddr</var>.</p>
<li data-md>
<p>Let <var>value</var> be <var>memory</var>.</p>
</ol>
<li data-md>
<p>If <var>externtype</var> is of the form <a data-link-type="dfn" data-refhint-key="eb9c1b7f" href="https://webassembly.github.io/spec/core/syntax/types.html#external-types" id="ref-for-external-types⑧">table</a> <var>tabletype</var>,</p>
<ol>
<li data-md>
<p class="assertion">Assert: <var>externval</var> is of the form <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-externval" id="ref-for-syntax-externval①⑤">table</a> <var>tableaddr</var>.</p>
<li data-md>
<p>Let <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-externval" id="ref-for-syntax-externval①⑥">table</a> <var>tableaddr</var> be <var>externval</var>.</p>
<li data-md>
<p>Let <var>table</var> be <a data-link-type="dfn" href="#create-a-table-object" id="ref-for-create-a-table-object">a new Table object</a> created from <var>tableaddr</var>.</p>
<li data-md>
<p>Let <var>value</var> be <var>table</var>.</p>
</ol>
<li data-md>
<p>If <var>externtype</var> is of the form <a data-link-type="dfn" data-refhint-key="a5c9608b" href="https://webassembly.github.io/spec/core/syntax/types.html#external-types" id="ref-for-external-types⑨">tag</a> <var>attribute</var> <var>functype</var>,</p>
<ol>
<li data-md>
<p class="assertion">Assert: <var>attribute</var> is <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-tagtype" id="ref-for-syntax-tagtype①">exception</a>.</p>
<li data-md>
<p class="assertion">Assert: <var>externval</var> is of the form <a data-link-type="dfn" data-refhint-key="c77be4cb" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-externval" id="ref-for-syntax-externval①⑦">tag</a> <var>tagaddr</var>.</p>
<li data-md>
<p>Let <a data-link-type="dfn" data-refhint-key="c77be4cb" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-externval" id="ref-for-syntax-externval①⑧">tag</a> <var>tagaddr</var> be <var>externval</var>.</p>
<li data-md>
<p>Let <var>tag</var> be <a data-link-type="dfn" href="#create-a-tag-object" id="ref-for-create-a-tag-object">a new Tag object</a> created from <var>tagaddr</var>.</p>
<li data-md>
<p>Let <var>value</var> be <var>tag</var>.</p>
</ol>
<li data-md>
<p>Let <var>status</var> be <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands⑥">!</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/abstract-operations.html#sec-createdataproperty" id="ref-for-sec-createdataproperty①">CreateDataProperty</a>(<var>exportsObject</var>, <var>name</var>, <var>value</var>).</p>
<li data-md>
<p class="assertion">Assert: <var>status</var> is true.</p>
</ol>
<p class="note" role="note"><span class="marker">Note:</span> the validity and uniqueness checks performed during <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/valid/modules.html#valid-module" id="ref-for-valid-module">WebAssembly module validation</a> ensure that each property name is valid and no properties are defined twice.</p>
<li data-md>
<p>Perform <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands⑦">!</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/abstract-operations.html#sec-setintegritylevel" id="ref-for-sec-setintegritylevel">SetIntegrityLevel</a>(<var>exportsObject</var>, <code>"frozen"</code>).</p>
<li data-md>
<p>Return <var>exportsObject</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="initialize an instance object">
To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="initialize-an-instance-object">initialize an instance object</dfn> <var>instanceObject</var> from a WebAssembly module <var>module</var> and instance <var>instance</var>, perform the following steps:
<ol>
<li data-md>
<p><a data-link-type="dfn" href="#create-an-exports-object" id="ref-for-create-an-exports-object">Create an exports object</a> from <var>module</var> and <var>instance</var> and let <var>exportsObject</var> be the result.</p>
<li data-md>
<p>Set <var>instanceObject</var>.[[Instance]] to <var>instance</var>.</p>
<li data-md>
<p>Set <var>instanceObject</var>.[[Exports]] to <var>exportsObject</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="instantiate the core of a WebAssembly module">
To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="instantiate-the-core-of-a-webassembly-module">instantiate the core of a WebAssembly module</dfn> from a module <var>module</var> and imports <var>imports</var>, perform the following steps:
<ol>
<li data-md>
<p>Let <var>store</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent②">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store②">associated store</a>.</p>
<li data-md>
<p>Let <var>result</var> be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-module-instantiate" id="ref-for-embed-module-instantiate">module_instantiate</a>(<var>store</var>, <var>module</var>, <var>imports</var>).</p>
<li data-md>
<p>If <var>result</var> is <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-error" id="ref-for-embed-error⑦">error</a>, throw an appropriate exception type:</p>
<ul>
<li data-md>
<p>A <code class="idl"><a data-link-type="idl" href="#exceptiondef-linkerror" id="ref-for-exceptiondef-linkerror⑧">LinkError</a></code> exception for most cases which occur during linking.</p>
<li data-md>
<p>If the error came when running the start function, throw a <code class="idl"><a data-link-type="idl" href="#exceptiondef-runtimeerror" id="ref-for-exceptiondef-runtimeerror">RuntimeError</a></code> for most errors which occur from WebAssembly, or the error object propagated from inner ECMAScript code.</p>
<li data-md>
<p>Another error type if appropriate, for example an out-of-memory exception, as documented in <a href="#errors">the WebAssembly error mapping</a>.</p>
</ul>
<li data-md>
<p>Let (<var>store</var>, <var>instance</var>) be <var>result</var>.</p>
<li data-md>
<p>Set the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent③">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store③">associated store</a> to <var>store</var>.</p>
<li data-md>
<p>Return <var>instance</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="asynchronously instantiate a WebAssembly module">
To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="asynchronously-instantiate-a-webassembly-module">asynchronously instantiate a WebAssembly module</dfn> from a <code class="idl"><a data-link-type="idl" href="#module" id="ref-for-module⑥">Module</a></code> <var>moduleObject</var> and imports <var>importObject</var>, perform the following steps:
<ol>
<li data-md>
<p>Let <var>promise</var> be <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#a-new-promise" id="ref-for-a-new-promise①">a new promise</a>.</p>
<li data-md>
<p>Let <var>module</var> be <var>moduleObject</var>.[[Module]].</p>
<li data-md>
<p>Let <var>builtinSetNames</var> be <var>moduleObject</var>.[[BuiltinSets]].</p>
<li data-md>
<p>Let <var>importedStringModule</var> be <var>moduleObject</var>.[[ImportedStringModule]].</p>
<li data-md>
<p><a data-link-type="dfn" href="#read-the-imports" id="ref-for-read-the-imports">Read the imports</a> of <var>module</var> with imports <var>importObject</var>, <var>builtinSetNames</var> and <var>importedStringModule</var>, and let <var>imports</var> be the result.
If this operation throws an exception, catch it, <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#reject" id="ref-for-reject">reject</a> <var>promise</var> with the exception, and return <var>promise</var>.</p>
<li data-md>
<p>Run the following steps <a data-link-type="dfn" href="https://html.spec.whatwg.org/multipage/infrastructure.html#in-parallel" id="ref-for-in-parallel①">in parallel</a>:</p>
<ol>
<li data-md>
<p><a data-link-type="dfn" href="https://html.spec.whatwg.org/multipage/webappapis.html#queue-a-task" id="ref-for-queue-a-task①">Queue a task</a> to perform the following steps:
Note: Implementation-specific work may be performed here.</p>
<ol>
<li data-md>
<p><a data-link-type="dfn" href="#instantiate-the-core-of-a-webassembly-module" id="ref-for-instantiate-the-core-of-a-webassembly-module①">Instantiate the core of a WebAssembly module</a> <var>module</var> with <var>imports</var>, and let <var>instance</var> be the result.
If this throws an exception, catch it, <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#reject" id="ref-for-reject①">reject</a> <var>promise</var> with the exception, and terminate these substeps.</p>
<li data-md>
<p>Let <var>instanceObject</var> be a <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#new" id="ref-for-new">new</a> <code class="idl"><a data-link-type="idl" href="#instance" id="ref-for-instance②">Instance</a></code>.</p>
<li data-md>
<p><a data-link-type="dfn" href="#initialize-an-instance-object" id="ref-for-initialize-an-instance-object">Initialize</a> <var>instanceObject</var> from <var>module</var> and <var>instance</var>.
If this throws an exception, catch it, <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#reject" id="ref-for-reject②">reject</a> <var>promise</var> with the exception, and terminate these substeps.</p>
<li data-md>
<p><a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#resolve" id="ref-for-resolve①">Resolve</a> <var>promise</var> with <var>instanceObject</var>.</p>
</ol>
</ol>
<li data-md>
<p>Return <var>promise</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="instantiate a promise of a module">
To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="instantiate-a-promise-of-a-module">instantiate a promise of a module</dfn> <var>promiseOfModule</var> with imports <var>importObject</var>, perform the following steps:
<ol>
<li data-md>
<p>Let <var>promise</var> be <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#a-new-promise" id="ref-for-a-new-promise②">a new promise</a>.</p>
<li data-md>
<p><a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#upon-fulfillment" id="ref-for-upon-fulfillment">Upon fulfillment</a> of <var>promiseOfModule</var> with value <var>module</var>:</p>
<ol>
<li data-md>
<p><a data-link-type="dfn" href="#asynchronously-instantiate-a-webassembly-module" id="ref-for-asynchronously-instantiate-a-webassembly-module">Instantiate the WebAssembly module</a> <var>module</var> importing <var>importObject</var>, and let <var>innerPromise</var> be the result.</p>
<li data-md>
<p><a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#upon-fulfillment" id="ref-for-upon-fulfillment①">Upon fulfillment</a> of <var>innerPromise</var> with value <var>instance</var>.</p>
<ol>
<li data-md>
<p>Let <var>result</var> be the <code class="idl"><a data-link-type="idl" href="#dictdef-webassemblyinstantiatedsource" id="ref-for-dictdef-webassemblyinstantiatedsource①">WebAssemblyInstantiatedSource</a></code> value «[ "<code class="idl"><a data-link-type="idl" href="#dom-webassemblyinstantiatedsource-module" id="ref-for-dom-webassemblyinstantiatedsource-module">module</a></code>" → <var>module</var>, "<code class="idl"><a data-link-type="idl" href="#dom-webassemblyinstantiatedsource-instance" id="ref-for-dom-webassemblyinstantiatedsource-instance">instance</a></code>" → <var>instance</var> ]».</p>
<li data-md>
<p><a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#resolve" id="ref-for-resolve②">Resolve</a> <var>promise</var> with <var>result</var>.</p>
</ol>
<li data-md>
<p><a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#upon-rejection" id="ref-for-upon-rejection">Upon rejection</a> of <var>innerPromise</var> with reason <var>reason</var>:</p>
<ol>
<li data-md>
<p><a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#reject" id="ref-for-reject③">Reject</a> <var>promise</var> with <var>reason</var>.</p>
</ol>
</ol>
<li data-md>
<p><a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#upon-rejection" id="ref-for-upon-rejection①">Upon rejection</a> of <var>promiseOfModule</var> with reason <var>reason</var>:</p>
<ol>
<li data-md>
<p><a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#reject" id="ref-for-reject④">Reject</a> <var>promise</var> with <var>reason</var>.</p>
</ol>
<li data-md>
<p>Return <var>promise</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="instantiate(bytes, importObject, options)" data-algorithm-for="WebAssembly">
The <dfn class="dfn-paneled idl-code" data-dfn-for="WebAssembly" data-dfn-type="method" data-export data-lt="instantiate(bytes, importObject, options)|instantiate(bytes, importObject)|instantiate(bytes)" id="dom-webassembly-instantiate"><code>instantiate(<var>bytes</var>, <var>importObject</var>, <var>options</var>)</code></dfn> method, when invoked, performs the following steps:
<ol>
<li data-md>
<p>Let <var>stableBytes</var> be a <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#dfn-get-buffer-source-copy" id="ref-for-dfn-get-buffer-source-copy②">copy of the bytes held by the buffer</a> <var>bytes</var>.</p>
<li data-md>
<p><a data-link-type="dfn" href="#asynchronously-compile-a-webassembly-module" id="ref-for-asynchronously-compile-a-webassembly-module①">Asynchronously compile a WebAssembly module</a> from <var>stableBytes</var> using <var>options</var> and let <var>promiseOfModule</var> be the result.</p>
<li data-md>
<p><a data-link-type="dfn" href="#instantiate-a-promise-of-a-module" id="ref-for-instantiate-a-promise-of-a-module">Instantiate</a> <var>promiseOfModule</var> with imports <var>importObject</var> and return the result.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="instantiate(moduleObject, importObject)" data-algorithm-for="WebAssembly">
The <dfn class="dfn-paneled idl-code" data-dfn-for="WebAssembly" data-dfn-type="method" data-export data-lt="instantiate(moduleObject, importObject)|instantiate(moduleObject)" id="dom-webassembly-instantiate-moduleobject-importobject"><code>instantiate(<var>moduleObject</var>, <var>importObject</var>)</code></dfn> method, when invoked, performs the following steps:
<ol>
<li data-md>
<p><a data-link-type="dfn" href="#asynchronously-instantiate-a-webassembly-module" id="ref-for-asynchronously-instantiate-a-webassembly-module①">Asynchronously instantiate the WebAssembly module</a> <var>moduleObject</var> importing <var>importObject</var>, and return the result.</p>
</ol>
</div>
<p class="note" role="note"><span class="marker">Note:</span> A follow-on streaming API is documented in the <a href="https://webassembly.github.io/spec/web-api/index.html">WebAssembly Web API</a>.</p>
<p>The getter of the <dfn class="dfn-paneled idl-code" data-dfn-for="WebAssembly" data-dfn-type="attribute" data-export id="dom-webassembly-jstag"><code>JSTag</code></dfn> attribute of the <code class="idl"><a data-link-type="idl" href="#namespacedef-webassembly" id="ref-for-namespacedef-webassembly">WebAssembly</a></code> Namespace, when invoked, performs the following steps:</p>
<ol>
<li data-md>
<p>Let <var>JSTagAddr</var> be the result of <a data-link-type="dfn" href="#get-the-javascript-exception-tag" id="ref-for-get-the-javascript-exception-tag">getting the JavaScript exception tag</a>.</p>
<li data-md>
<p>Let <var>JSTagObject</var> be the result of <a data-link-type="dfn" href="#create-a-tag-object" id="ref-for-create-a-tag-object①">creating a Tag object</a> from <var>JSTagAddr</var>.</p>
<li data-md>
<p>Return <var>JSTagObject</var>.</p>
</ol>
<h3 class="heading settled" data-level="5.1" id="modules"><span class="secno">5.1. </span><span class="content">Modules</span><a class="self-link" href="#modules"></a></h3>
<pre class="idl highlight def"><c- b>enum</c-> <dfn class="dfn-paneled idl-code" data-dfn-type="enum" data-export id="enumdef-importexportkind"><code><c- g>ImportExportKind</c-></code></dfn> {
<dfn class="dfn-paneled idl-code" data-dfn-for="ImportExportKind" data-dfn-type="enum-value" data-export id="dom-importexportkind-function"><code><c- s>"function"</c-></code></dfn>,
<dfn class="dfn-paneled idl-code" data-dfn-for="ImportExportKind" data-dfn-type="enum-value" data-export id="dom-importexportkind-table"><code><c- s>"table"</c-></code></dfn>,
<dfn class="dfn-paneled idl-code" data-dfn-for="ImportExportKind" data-dfn-type="enum-value" data-export id="dom-importexportkind-memory"><code><c- s>"memory"</c-></code></dfn>,
<dfn class="dfn-paneled idl-code" data-dfn-for="ImportExportKind" data-dfn-type="enum-value" data-export id="dom-importexportkind-global"><code><c- s>"global"</c-></code></dfn>,
<dfn class="dfn-paneled idl-code" data-dfn-for="ImportExportKind" data-dfn-type="enum-value" data-export id="dom-importexportkind-tag"><code><c- s>"tag"</c-></code></dfn>
};
<c- b>enum</c-> <dfn class="dfn-paneled idl-code" data-dfn-type="enum" data-export id="enumdef-addresstype"><code><c- g>AddressType</c-></code></dfn> {
<dfn class="dfn-paneled idl-code" data-dfn-for="AddressType" data-dfn-type="enum-value" data-export id="dom-addresstype-i32"><code><c- s>"i32"</c-></code></dfn>,
<dfn class="dfn-paneled idl-code" data-dfn-for="AddressType" data-dfn-type="enum-value" data-export id="dom-addresstype-i64"><code><c- s>"i64"</c-></code></dfn>,
};
<c- b>typedef</c-> <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-any" id="ref-for-idl-any"><c- b>any</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-type="typedef" data-export id="typedefdef-addressvalue"><code><c- g>AddressValue</c-></code></dfn>;
<c- b>dictionary</c-> <dfn class="dfn-paneled idl-code" data-dfn-type="dictionary" data-export id="dictdef-moduleexportdescriptor"><code><c- g>ModuleExportDescriptor</c-></code></dfn> {
<c- b>required</c-> <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-USVString" id="ref-for-idl-USVString②"><c- b>USVString</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="ModuleExportDescriptor" data-dfn-type="dict-member" data-export data-type="USVString" id="dom-moduleexportdescriptor-name"><code><c- g>name</c-></code></dfn>;
<c- b>required</c-> <a data-link-type="idl-name" href="#enumdef-importexportkind" id="ref-for-enumdef-importexportkind"><c- n>ImportExportKind</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="ModuleExportDescriptor" data-dfn-type="dict-member" data-export data-type="ImportExportKind" id="dom-moduleexportdescriptor-kind"><code><c- g>kind</c-></code></dfn>;
// Note: Other fields such as signature may be added in the future.
};
<c- b>dictionary</c-> <dfn class="dfn-paneled idl-code" data-dfn-type="dictionary" data-export id="dictdef-moduleimportdescriptor"><code><c- g>ModuleImportDescriptor</c-></code></dfn> {
<c- b>required</c-> <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-USVString" id="ref-for-idl-USVString③"><c- b>USVString</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="ModuleImportDescriptor" data-dfn-type="dict-member" data-export data-type="USVString" id="dom-moduleimportdescriptor-module"><code><c- g>module</c-></code></dfn>;
<c- b>required</c-> <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-USVString" id="ref-for-idl-USVString④"><c- b>USVString</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="ModuleImportDescriptor" data-dfn-type="dict-member" data-export data-type="USVString" id="dom-moduleimportdescriptor-name"><code><c- g>name</c-></code></dfn>;
<c- b>required</c-> <a data-link-type="idl-name" href="#enumdef-importexportkind" id="ref-for-enumdef-importexportkind①"><c- n>ImportExportKind</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="ModuleImportDescriptor" data-dfn-type="dict-member" data-export data-type="ImportExportKind" id="dom-moduleimportdescriptor-kind"><code><c- g>kind</c-></code></dfn>;
};
[<a class="idl-code" data-link-type="extended-attribute" href="https://webidl.spec.whatwg.org/#LegacyNamespace" id="ref-for-LegacyNamespace"><c- g>LegacyNamespace</c-></a>=<a data-link-type="idl-name" href="#namespacedef-webassembly" id="ref-for-namespacedef-webassembly①"><c- n>WebAssembly</c-></a>, Exposed=*]
<c- b>interface</c-> <dfn class="dfn-paneled idl-code" data-dfn-type="interface" data-export id="module"><code><c- g>Module</c-></code></dfn> {
<a class="idl-code" data-link-type="constructor" href="#dom-module-module" id="ref-for-dom-module-module"><c- g>constructor</c-></a>(<a data-link-type="idl-name" href="https://webidl.spec.whatwg.org/#BufferSource" id="ref-for-BufferSource③"><c- n>BufferSource</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="Module/Module(bytes, options), Module/constructor(bytes, options), Module/Module(bytes), Module/constructor(bytes)" data-dfn-type="argument" data-export id="dom-module-module-bytes-options-bytes"><code><c- g>bytes</c-></code></dfn>, <c- b>optional</c-> <a data-link-type="idl-name" href="#dictdef-webassemblycompileoptions" id="ref-for-dictdef-webassemblycompileoptions④"><c- n>WebAssemblyCompileOptions</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="Module/Module(bytes, options), Module/constructor(bytes, options), Module/Module(bytes), Module/constructor(bytes)" data-dfn-type="argument" data-export id="dom-module-module-bytes-options-options"><code><c- g>options</c-></code></dfn> = {});
<c- b>static</c-> <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#idl-sequence" id="ref-for-idl-sequence①"><c- b>sequence</c-></a>&lt;<a data-link-type="idl-name" href="#dictdef-moduleexportdescriptor" id="ref-for-dictdef-moduleexportdescriptor"><c- n>ModuleExportDescriptor</c-></a>> <a class="idl-code" data-link-type="method" href="#dom-module-exports" id="ref-for-dom-module-exports"><c- g>exports</c-></a>(<a data-link-type="idl-name" href="#module" id="ref-for-module⑦"><c- n>Module</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="Module/exports(moduleObject)" data-dfn-type="argument" data-export id="dom-module-exports-moduleobject-moduleobject"><code><c- g>moduleObject</c-></code></dfn>);
<c- b>static</c-> <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#idl-sequence" id="ref-for-idl-sequence②"><c- b>sequence</c-></a>&lt;<a data-link-type="idl-name" href="#dictdef-moduleimportdescriptor" id="ref-for-dictdef-moduleimportdescriptor"><c- n>ModuleImportDescriptor</c-></a>> <a class="idl-code" data-link-type="method" href="#dom-module-imports" id="ref-for-dom-module-imports"><c- g>imports</c-></a>(<a data-link-type="idl-name" href="#module" id="ref-for-module⑧"><c- n>Module</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="Module/imports(moduleObject)" data-dfn-type="argument" data-export id="dom-module-imports-moduleobject-moduleobject"><code><c- g>moduleObject</c-></code></dfn>);
<c- b>static</c-> <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#idl-sequence" id="ref-for-idl-sequence③"><c- b>sequence</c-></a>&lt;<a class="idl-code" data-link-type="interface" href="https://tc39.github.io/ecma262/#sec-arraybuffer-objects" id="ref-for-sec-arraybuffer-objects"><c- b>ArrayBuffer</c-></a>> <a class="idl-code" data-link-type="method" href="#dom-module-customsections" id="ref-for-dom-module-customsections"><c- g>customSections</c-></a>(<a data-link-type="idl-name" href="#module" id="ref-for-module⑨"><c- n>Module</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="Module/customSections(moduleObject, sectionName)" data-dfn-type="argument" data-export id="dom-module-customsections-moduleobject-sectionname-moduleobject"><code><c- g>moduleObject</c-></code></dfn>, <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-DOMString" id="ref-for-idl-DOMString"><c- b>DOMString</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="Module/customSections(moduleObject, sectionName)" data-dfn-type="argument" data-export id="dom-module-customsections-moduleobject-sectionname-sectionname"><code><c- g>sectionName</c-></code></dfn>);
};
</pre>
<div class="algorithm" data-algorithm="string value of the extern type">
The <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="string-value-of-the-extern-type">string value of the extern type</dfn> <var>type</var> is
<ul>
<li data-md>
<p>"function" if <var>type</var> is of the form <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#external-types" id="ref-for-external-types①⓪">func</a> <var>functype</var></p>
<li data-md>
<p>"table" if <var>type</var> is of the form <a data-link-type="dfn" data-refhint-key="eb9c1b7f" href="https://webassembly.github.io/spec/core/syntax/types.html#external-types" id="ref-for-external-types①①">table</a> <var>tabletype</var></p>
<li data-md>
<p>"memory" if <var>type</var> is of the form <a data-link-type="dfn" data-refhint-key="2be47a22" href="https://webassembly.github.io/spec/core/syntax/types.html#external-types" id="ref-for-external-types①②">mem</a> <var>memtype</var></p>
<li data-md>
<p>"global" if <var>type</var> is of the form <a data-link-type="dfn" data-refhint-key="82295e1c" href="https://webassembly.github.io/spec/core/syntax/types.html#external-types" id="ref-for-external-types①③">global</a> <var>globaltype</var></p>
<li data-md>
<p>"tag" if <var>type</var> is of the form <a data-link-type="dfn" data-refhint-key="a5c9608b" href="https://webassembly.github.io/spec/core/syntax/types.html#external-types" id="ref-for-external-types①④">tag</a> <var>tag</var></p>
</ul>
</div>
<div class="algorithm" data-algorithm="exports(moduleObject)" data-algorithm-for="Module">
The <dfn class="dfn-paneled idl-code" data-dfn-for="Module" data-dfn-type="method" data-export id="dom-module-exports"><code>exports(<var>moduleObject</var>)</code></dfn> method, when invoked, performs the following steps:
<ol>
<li data-md>
<p>Let <var>module</var> be <var>moduleObject</var>.[[Module]].</p>
<li data-md>
<p>Let <var>exports</var> be « ».</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-iterate" id="ref-for-list-iterate⑤">For each</a> (<var>name</var>, <var>type</var>) of <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-module-exports" id="ref-for-embed-module-exports①">module_exports</a>(<var>module</var>),</p>
<ol>
<li data-md>
<p>Let <var>kind</var> be the <a data-link-type="dfn" href="#string-value-of-the-extern-type" id="ref-for-string-value-of-the-extern-type">string value of the extern type</a> <var>type</var>.</p>
<li data-md>
<p>Let <var>obj</var> be «[ "<code class="idl"><a data-link-type="idl" href="#dom-moduleexportdescriptor-name" id="ref-for-dom-moduleexportdescriptor-name">name</a></code>" → <var>name</var>, "<code class="idl"><a data-link-type="idl" href="#dom-moduleexportdescriptor-kind" id="ref-for-dom-moduleexportdescriptor-kind">kind</a></code>" → <var>kind</var> ]».</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-append" id="ref-for-list-append⑤">Append</a> <var>obj</var> to <var>exports</var>.</p>
</ol>
<li data-md>
<p>Return <var>exports</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="imports(moduleObject)" data-algorithm-for="Module">
The <dfn class="dfn-paneled idl-code" data-dfn-for="Module" data-dfn-type="method" data-export id="dom-module-imports"><code>imports(<var>moduleObject</var>)</code></dfn> method, when invoked, performs the following steps:
<ol>
<li data-md>
<p>Let <var>module</var> be <var>moduleObject</var>.[[Module]].</p>
<li data-md>
<p>Let <var>builtinSetNames</var> be <var>moduleObject</var>.[[BuiltinSets]].</p>
<li data-md>
<p>Let <var>importedStringModule</var> be <var>moduleObject</var>.[[ImportedStringModule]].</p>
<li data-md>
<p>Let <var>imports</var> be « ».</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-iterate" id="ref-for-list-iterate⑥">For each</a> (<var>moduleName</var>, <var>name</var>, <var>type</var>) of <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-module-imports" id="ref-for-embed-module-imports③">module_imports</a>(<var>module</var>),</p>
<ol>
<li data-md>
<p>If <a data-link-type="dfn" href="#find-a-builtin" id="ref-for-find-a-builtin">find a builtin</a> for (<var>moduleName</var>, <var>name</var>, <var>type</var>) and <var>builtinSetNames</var> is not null, then <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#iteration-continue" id="ref-for-iteration-continue②">continue</a>.</p>
<li data-md>
<p>If <var>importedStringModule</var> is not null and <var>moduleName</var> equals <var>importedStringModule</var>, then <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#iteration-continue" id="ref-for-iteration-continue③">continue</a>.</p>
<li data-md>
<p>Let <var>kind</var> be the <a data-link-type="dfn" href="#string-value-of-the-extern-type" id="ref-for-string-value-of-the-extern-type①">string value of the extern type</a> <var>type</var>.</p>
<li data-md>
<p>Let <var>obj</var> be «[ "<code class="idl"><a data-link-type="idl" href="#dom-moduleimportdescriptor-module" id="ref-for-dom-moduleimportdescriptor-module">module</a></code>" → <var>moduleName</var>, "<code class="idl"><a data-link-type="idl" href="#dom-moduleimportdescriptor-name" id="ref-for-dom-moduleimportdescriptor-name">name</a></code>" → <var>name</var>, "<code class="idl"><a data-link-type="idl" href="#dom-moduleimportdescriptor-kind" id="ref-for-dom-moduleimportdescriptor-kind">kind</a></code>" → <var>kind</var> ]».</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-append" id="ref-for-list-append⑥">Append</a> <var>obj</var> to <var>imports</var>.</p>
</ol>
<li data-md>
<p>Return <var>imports</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="customSections(moduleObject, sectionName)" data-algorithm-for="Module">
The <dfn class="dfn-paneled idl-code" data-dfn-for="Module" data-dfn-type="method" data-export id="dom-module-customsections"><code>customSections(<var>moduleObject</var>, <var>sectionName</var>)</code></dfn> method, when invoked, performs the following steps:
<ol>
<li data-md>
<p>Let <var>bytes</var> be <var>moduleObject</var>.[[Bytes]].</p>
<li data-md>
<p>Let <var>customSections</var> be « ».</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-iterate" id="ref-for-list-iterate⑦">For each</a> <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/binary/modules.html#custom-section" id="ref-for-custom-section">custom section</a> <var>customSection</var> of <var>bytes</var>, interpreted according to the <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/binary/modules.html#binary-module" id="ref-for-binary-module">module grammar</a>,</p>
<ol>
<li data-md>
<p>Let <var>name</var> be the <code>name</code> of <var>customSection</var>, <a data-link-type="dfn" href="https://encoding.spec.whatwg.org/#utf-8-decode-without-bom-or-fail" id="ref-for-utf-8-decode-without-bom-or-fail">decoded as UTF-8</a>.</p>
<li data-md>
<p class="assertion">Assert: <var>name</var> is not failure (<var>moduleObject</var>.[[Module]] is <a data-link-type="dfn" data-refhint-key="db25377b" href="https://webassembly.github.io/spec/core/valid/modules.html#valid-module" id="ref-for-valid-module①">valid</a>).</p>
<li data-md>
<p>If <var>name</var> equals <var>sectionName</var> as string values,</p>
<ol>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-append" id="ref-for-list-append⑦">Append</a> a new <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-arraybuffer-objects" id="ref-for-sec-arraybuffer-objects①">ArrayBuffer</a></code> containing a copy of the bytes in <var>bytes</var> for the range matched by this <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/binary/modules.html#binary-customsec" id="ref-for-binary-customsec">customsec</a> production to <var>customSections</var>.</p>
</ol>
</ol>
<li data-md>
<p>Return <var>customSections</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="Module(bytes, options)" data-algorithm-for="Module">
The <dfn class="dfn-paneled idl-code" data-dfn-for="Module" data-dfn-type="constructor" data-export data-lt="Module(bytes, options)|constructor(bytes, options)|Module(bytes)|constructor(bytes)" id="dom-module-module"><code>Module(<var>bytes</var>, <var>options</var>)</code></dfn> constructor, when invoked, performs the following steps:
<ol>
<li data-md>
<p>Let <var>stableBytes</var> be a <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#dfn-get-buffer-source-copy" id="ref-for-dfn-get-buffer-source-copy③">copy of the bytes held by the buffer</a> <var>bytes</var>.</p>
<li data-md>
<p><a data-link-type="dfn" href="#compile-a-webassembly-module" id="ref-for-compile-a-webassembly-module②">Compile the WebAssembly module</a> <var>stableBytes</var> and store the result as <var>module</var>.</p>
<li data-md>
<p>If <var>module</var> is <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-error" id="ref-for-embed-error⑧">error</a>, throw a <code class="idl"><a data-link-type="idl" href="#exceptiondef-compileerror" id="ref-for-exceptiondef-compileerror②">CompileError</a></code> exception.</p>
<li data-md>
<p>Let <var>builtinSetNames</var> be <var>options</var>["builtins"].</p>
<li data-md>
<p>Let <var>importedStringModule</var> be <var>options</var>["importedStringConstants"].</p>
<li data-md>
<p>If <a data-link-type="dfn" href="#validate-builtins-and-imported-string-for-a-webassembly-module" id="ref-for-validate-builtins-and-imported-string-for-a-webassembly-module②">validating builtins and imported strings</a> for <var>module</var> with <var>builtinSetNames</var> and <var>importedStringModule</var> returns false, throw a <code class="idl"><a data-link-type="idl" href="#exceptiondef-compileerror" id="ref-for-exceptiondef-compileerror③">CompileError</a></code> exception.</p>
<li data-md>
<p>Set <strong>this</strong>.[[Module]] to <var>module</var>.</p>
<li data-md>
<p>Set <strong>this</strong>.[[Bytes]] to <var>stableBytes</var>.</p>
<li data-md>
<p>Set <strong>this</strong>.[[BuiltinSets]] to <var>builtinSetNames</var>.</p>
<li data-md>
<p>Set <strong>this</strong>.[[ImportedStringModule]] to <var>importedStringModule</var>.</p>
</ol>
<p class="note" role="note"><span class="marker">Note:</span> Some implementations enforce a size limitation on <var>bytes</var>. Use of this API is discouraged, in favor of asynchronous APIs.</p>
</div>
<h3 class="heading settled" data-level="5.2" id="instances"><span class="secno">5.2. </span><span class="content">Instances</span><a class="self-link" href="#instances"></a></h3>
<pre class="idl highlight def">[<a class="idl-code" data-link-type="extended-attribute" href="https://webidl.spec.whatwg.org/#LegacyNamespace" id="ref-for-LegacyNamespace①"><c- g>LegacyNamespace</c-></a>=<a data-link-type="idl-name" href="#namespacedef-webassembly" id="ref-for-namespacedef-webassembly②"><c- n>WebAssembly</c-></a>, Exposed=*]
<c- b>interface</c-> <dfn class="dfn-paneled idl-code" data-dfn-type="interface" data-export id="instance"><code><c- g>Instance</c-></code></dfn> {
<a class="idl-code" data-link-type="constructor" href="#dom-instance-instance" id="ref-for-dom-instance-instance"><c- g>constructor</c-></a>(<a data-link-type="idl-name" href="#module" id="ref-for-module①⓪"><c- n>Module</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="Instance/Instance(module, importObject), Instance/constructor(module, importObject), Instance/Instance(module), Instance/constructor(module)" data-dfn-type="argument" data-export id="dom-instance-instance-module-importobject-module"><code><c- g>module</c-></code></dfn>, <c- b>optional</c-> <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-object" id="ref-for-idl-object②"><c- b>object</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="Instance/Instance(module, importObject), Instance/constructor(module, importObject), Instance/Instance(module), Instance/constructor(module)" data-dfn-type="argument" data-export id="dom-instance-instance-module-importobject-importobject"><code><c- g>importObject</c-></code></dfn>);
<c- b>readonly</c-> <c- b>attribute</c-> <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-object" id="ref-for-idl-object③"><c- b>object</c-></a> <a class="idl-code" data-link-type="attribute" data-readonly data-type="object" href="#dom-instance-exports" id="ref-for-dom-instance-exports"><c- g>exports</c-></a>;
};
</pre>
<div class="algorithm" data-algorithm="Instance(module, importObject)" data-algorithm-for="Instance">
The <dfn class="dfn-paneled idl-code" data-dfn-for="Instance" data-dfn-type="constructor" data-export data-lt="Instance(module, importObject)|constructor(module, importObject)|Instance(module)|constructor(module)" id="dom-instance-instance"><code>Instance(<var>module</var>, <var>importObject</var>)</code></dfn> constructor, when invoked, runs the following steps:
<ol>
<li data-md>
<p>Let <var>module</var> be <var>module</var>.[[Module]].</p>
<li data-md>
<p>Let <var>builtinSetNames</var> be <var>module</var>.[[BuiltinSets]].</p>
<li data-md>
<p>Let <var>importedStringModule</var> be <var>module</var>.[[ImportedStringModule]].</p>
<li data-md>
<p><a data-link-type="dfn" href="#read-the-imports" id="ref-for-read-the-imports①">Read the imports</a> of <var>module</var> with imports <var>importObject</var>, <var>builtinSetNames</var>, and <var>importedStringModule</var>, and let <var>imports</var> be the result.</p>
<li data-md>
<p><a data-link-type="dfn" href="#instantiate-the-core-of-a-webassembly-module" id="ref-for-instantiate-the-core-of-a-webassembly-module②">Instantiate the core of a WebAssembly module</a> <var>module</var> with <var>imports</var>, and let <var>instance</var> be the result.</p>
<li data-md>
<p><a data-link-type="dfn" href="#initialize-an-instance-object" id="ref-for-initialize-an-instance-object①">Initialize</a> <strong>this</strong> from <var>module</var> and <var>instance</var>.</p>
</ol>
<p class="note" role="note"><span class="marker">Note:</span> The use of this synchronous API is discouraged, as some implementations sometimes do long-running compilation work when instantiating.</p>
</div>
<div class="algorithm" data-algorithm="exports" data-algorithm-for="Instance">
The getter of the <dfn class="dfn-paneled idl-code" data-dfn-for="Instance" data-dfn-type="attribute" data-export id="dom-instance-exports"><code>exports</code></dfn> attribute of <code class="idl"><a data-link-type="idl" href="#instance" id="ref-for-instance③">Instance</a></code> returns <strong>this</strong>.[[Exports]].
</div>
<h3 class="heading settled" data-level="5.3" id="memories"><span class="secno">5.3. </span><span class="content">Memories</span><a class="self-link" href="#memories"></a></h3>
<pre class="idl highlight def"><c- b>dictionary</c-> <dfn class="dfn-paneled idl-code" data-dfn-type="dictionary" data-export id="dictdef-memorydescriptor"><code><c- g>MemoryDescriptor</c-></code></dfn> {
<c- b>required</c-> <a data-link-type="idl-name" href="#typedefdef-addressvalue" id="ref-for-typedefdef-addressvalue"><c- n>AddressValue</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="MemoryDescriptor" data-dfn-type="dict-member" data-export data-type="AddressValue" id="dom-memorydescriptor-initial"><code><c- g>initial</c-></code></dfn>;
<a data-link-type="idl-name" href="#typedefdef-addressvalue" id="ref-for-typedefdef-addressvalue①"><c- n>AddressValue</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="MemoryDescriptor" data-dfn-type="dict-member" data-export data-type="AddressValue" id="dom-memorydescriptor-maximum"><code><c- g>maximum</c-></code></dfn>;
<a data-link-type="idl-name" href="#enumdef-addresstype" id="ref-for-enumdef-addresstype"><c- n>AddressType</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="MemoryDescriptor" data-dfn-type="dict-member" data-export data-type="AddressType" id="dom-memorydescriptor-address"><code><c- g>address</c-></code></dfn>;
};
[<a class="idl-code" data-link-type="extended-attribute" href="https://webidl.spec.whatwg.org/#LegacyNamespace" id="ref-for-LegacyNamespace②"><c- g>LegacyNamespace</c-></a>=<a data-link-type="idl-name" href="#namespacedef-webassembly" id="ref-for-namespacedef-webassembly③"><c- n>WebAssembly</c-></a>, Exposed=*]
<c- b>interface</c-> <dfn class="dfn-paneled idl-code" data-dfn-type="interface" data-export id="memory"><code><c- g>Memory</c-></code></dfn> {
<a class="idl-code" data-link-type="constructor" href="#dom-memory-memory" id="ref-for-dom-memory-memory"><c- g>constructor</c-></a>(<a data-link-type="idl-name" href="#dictdef-memorydescriptor" id="ref-for-dictdef-memorydescriptor"><c- n>MemoryDescriptor</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="Memory/Memory(descriptor), Memory/constructor(descriptor)" data-dfn-type="argument" data-export id="dom-memory-memory-descriptor-descriptor"><code><c- g>descriptor</c-></code></dfn>);
<a data-link-type="idl-name" href="#typedefdef-addressvalue" id="ref-for-typedefdef-addressvalue②"><c- n>AddressValue</c-></a> <a class="idl-code" data-link-type="method" href="#dom-memory-grow" id="ref-for-dom-memory-grow"><c- g>grow</c-></a>(<a data-link-type="idl-name" href="#typedefdef-addressvalue" id="ref-for-typedefdef-addressvalue③"><c- n>AddressValue</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="Memory/grow(delta)" data-dfn-type="argument" data-export id="dom-memory-grow-delta-delta"><code><c- g>delta</c-></code></dfn>);
<a class="idl-code" data-link-type="interface" href="https://tc39.github.io/ecma262/#sec-arraybuffer-objects" id="ref-for-sec-arraybuffer-objects②"><c- b>ArrayBuffer</c-></a> <a class="idl-code" data-link-type="method" href="#dom-memory-tofixedlengthbuffer" id="ref-for-dom-memory-tofixedlengthbuffer"><c- g>toFixedLengthBuffer</c-></a>();
<a class="idl-code" data-link-type="interface" href="https://tc39.github.io/ecma262/#sec-arraybuffer-objects" id="ref-for-sec-arraybuffer-objects③"><c- b>ArrayBuffer</c-></a> <a class="idl-code" data-link-type="method" href="#dom-memory-toresizablebuffer" id="ref-for-dom-memory-toresizablebuffer"><c- g>toResizableBuffer</c-></a>();
<c- b>readonly</c-> <c- b>attribute</c-> <a class="idl-code" data-link-type="interface" href="https://tc39.github.io/ecma262/#sec-arraybuffer-objects" id="ref-for-sec-arraybuffer-objects④"><c- b>ArrayBuffer</c-></a> <a class="idl-code" data-link-type="attribute" data-readonly data-type="ArrayBuffer" href="#dom-memory-buffer" id="ref-for-dom-memory-buffer"><c- g>buffer</c-></a>;
};
</pre>
<p>A <code class="idl"><a data-link-type="idl" href="#memory" id="ref-for-memory③">Memory</a></code> object represents a single <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#memory-instances" id="ref-for-memory-instances①">memory instance</a>
which can be simultaneously referenced by multiple <code class="idl"><a data-link-type="idl" href="#instance" id="ref-for-instance④">Instance</a></code> objects. Each
<code class="idl"><a data-link-type="idl" href="#memory" id="ref-for-memory④">Memory</a></code> object has the following internal slots:</p>
<ul>
<li data-md>
<p>[[Memory]] : a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-memaddr" id="ref-for-syntax-memaddr①">memory address</a></p>
<li data-md>
<p>[[BufferObject]] : an <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-arraybuffer-objects" id="ref-for-sec-arraybuffer-objects⑤">ArrayBuffer</a></code> whose <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/ecmascript-data-types-and-values.html#sec-data-blocks" id="ref-for-sec-data-blocks①">Data Block</a> is <a data-link-type="dfn" href="#identified-with" id="ref-for-identified-with">identified with</a> the above memory address</p>
</ul>
<div class="algorithm" data-algorithm="create a fixed length memory buffer">
To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="create-a-fixed-length-memory-buffer">create a fixed length memory buffer</dfn> from a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-memaddr" id="ref-for-syntax-memaddr②">memory address</a> <var>memaddr</var>, perform the following steps:
<ol>
<li data-md>
<p>Let <var>block</var> be a <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/ecmascript-data-types-and-values.html#sec-data-blocks" id="ref-for-sec-data-blocks②">Data Block</a> which is <a data-link-type="dfn" href="#identified-with" id="ref-for-identified-with①">identified with</a> the underlying memory of <var>memaddr</var>.</p>
<li data-md>
<p>Let <var>buffer</var> be a new <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-arraybuffer-objects" id="ref-for-sec-arraybuffer-objects⑥">ArrayBuffer</a></code> with the internal slots [[ArrayBufferData]], [[ArrayBufferByteLength]], and [[ArrayBufferDetachKey]].</p>
<li data-md>
<p>Set <var>buffer</var>.[[ArrayBufferData]] to <var>block</var>.</p>
<li data-md>
<p>Set <var>buffer</var>.[[ArrayBufferByteLength]] to the length of <var>block</var>.</p>
<li data-md>
<p>Set <var>buffer</var>.[[ArrayBufferDetachKey]] to "WebAssembly.Memory".</p>
<li data-md>
<p>Return <var>buffer</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="create a resizable memory buffer">
To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="create-a-resizable-memory-buffer">create a resizable memory buffer</dfn> from a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-memaddr" id="ref-for-syntax-memaddr③">memory address</a> <var>memaddr</var> and a <var>maxsize</var>, perform the following steps:
<ol>
<li data-md>
<p>Let <var>block</var> be a <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/ecmascript-data-types-and-values.html#sec-data-blocks" id="ref-for-sec-data-blocks③">Data Block</a> which is <a data-link-type="dfn" href="#identified-with" id="ref-for-identified-with②">identified with</a> the underlying memory of <var>memaddr</var>.</p>
<li data-md>
<p>Let <var>length</var> be the length of <var>block</var>.</p>
<li data-md>
<p>Let <var>buffer</var> be a new <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-arraybuffer-objects" id="ref-for-sec-arraybuffer-objects⑦">ArrayBuffer</a></code> with the internal slots [[ArrayBufferData]], [[ArrayBufferByteLength]], [[ArrayBufferMaxByteLength]], and [[ArrayBufferDetachKey]].</p>
<li data-md>
<p>Set <var>buffer</var>.[[ArrayBufferData]] to <var>block</var>.</p>
<li data-md>
<p>Set <var>buffer</var>.[[ArrayBufferByteLength]] to <var>length</var>.</p>
<li data-md>
<p>Set <var>buffer</var>.[[ArrayBufferMaxByteLength]] is <var>maxsize</var>.</p>
<li data-md>
<p>Set <var>buffer</var>.[[ArrayBufferDetachKey]] to "WebAssembly.Memory".</p>
<li data-md>
<p>Return <var>buffer</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="initialize a memory object">
To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="initialize-a-memory-object">initialize a memory object</dfn> <var>memory</var> from a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-memaddr" id="ref-for-syntax-memaddr④">memory address</a> <var>memaddr</var>, perform the following steps:
<ol>
<li data-md>
<p>Let <var>map</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent④">surrounding agent</a>’s associated <a data-link-type="dfn" href="#memory-object-cache" id="ref-for-memory-object-cache">Memory object cache</a>.</p>
<li data-md>
<p class="assertion">Assert: <var>map</var>[<var>memaddr</var>] doesn’t <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-exists" id="ref-for-map-exists②">exist</a>.</p>
<li data-md>
<p>Let <var>buffer</var> be the result of <a data-link-type="dfn" href="#create-a-fixed-length-memory-buffer" id="ref-for-create-a-fixed-length-memory-buffer">creating a fixed length memory buffer</a> from <var>memaddr</var>.</p>
<li data-md>
<p>Set <var>memory</var>.[[Memory]] to <var>memaddr</var>.</p>
<li data-md>
<p>Set <var>memory</var>.[[BufferObject]] to <var>buffer</var>.</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-set" id="ref-for-map-set②">Set</a> <var>map</var>[<var>memaddr</var>] to <var>memory</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="create a memory object">
To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="create-a-memory-object">create a memory object</dfn> from a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-memaddr" id="ref-for-syntax-memaddr⑤">memory address</a> <var>memaddr</var>, perform the following steps:
<ol>
<li data-md>
<p>Let <var>map</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent⑤">surrounding agent</a>’s associated <a data-link-type="dfn" href="#memory-object-cache" id="ref-for-memory-object-cache①">Memory object cache</a>.</p>
<li data-md>
<p>If <var>map</var>[<var>memaddr</var>] <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-exists" id="ref-for-map-exists③">exists</a>,</p>
<ol>
<li data-md>
<p>Return <var>map</var>[<var>memaddr</var>].</p>
</ol>
<li data-md>
<p>Let <var>memory</var> be a <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#new" id="ref-for-new①">new</a> <code class="idl"><a data-link-type="idl" href="#memory" id="ref-for-memory⑤">Memory</a></code>.</p>
<li data-md>
<p><a data-link-type="dfn" href="#initialize-a-memory-object" id="ref-for-initialize-a-memory-object">Initialize</a> <var>memory</var> from <var>memaddr</var>.</p>
<li data-md>
<p>Return <var>memory</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="Memory(descriptor)" data-algorithm-for="Memory">
The <dfn class="dfn-paneled idl-code" data-dfn-for="Memory" data-dfn-type="constructor" data-export data-lt="Memory(descriptor)|constructor(descriptor)" id="dom-memory-memory"><code>Memory(<var>descriptor</var>)</code></dfn> constructor, when invoked, performs the following steps:
<ol>
<li data-md>
<p>If <var>descriptor</var>["address"] <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-exists" id="ref-for-map-exists④">exists</a>, let <var>addrtype</var> be <var>descriptor</var>["address"]; otherwise, let <var>addrtype</var> be "i32".</p>
<li data-md>
<p>Let <var>initial</var> be <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands⑧">?</a> <a data-link-type="dfn" href="#addressvaluetou64" id="ref-for-addressvaluetou64">AddressValueToU64</a>(<var>descriptor</var>["initial"], <var>addrtype</var>).</p>
<li data-md>
<p>If <var>descriptor</var>["maximum"] <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-exists" id="ref-for-map-exists⑤">exists</a>, let <var>maximum</var> be <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands⑨">?</a> <a data-link-type="dfn" href="#addressvaluetou64" id="ref-for-addressvaluetou64①">AddressValueToU64</a>(<var>descriptor</var>["maximum"], <var>addrtype</var>); otherwise, let <var>maximum</var> be empty.</p>
<li data-md>
<p>Let <var>memtype</var> be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-memtype" id="ref-for-syntax-memtype">memory type</a> <var>addrtype</var> { <strong>min</strong> <var>initial</var>, <strong>max</strong> <var>maximum</var> }.</p>
<li data-md>
<p>If <var>memtype</var> is not <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/valid/types.html#valid-memtype" id="ref-for-valid-memtype">valid</a>, throw a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-rangeerror" id="ref-for-sec-native-error-types-used-in-this-standard-rangeerror">RangeError</a></code> exception.</p>
<li data-md>
<p>Let <var>store</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent⑥">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store④">associated store</a>.</p>
<li data-md>
<p>Let (<var>store</var>, <var>memaddr</var>) be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-mem-alloc" id="ref-for-embed-mem-alloc">mem_alloc</a>(<var>store</var>, <var>memtype</var>). If allocation fails, throw a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-rangeerror" id="ref-for-sec-native-error-types-used-in-this-standard-rangeerror①">RangeError</a></code> exception.</p>
<li data-md>
<p>Set the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent⑦">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store⑤">associated store</a> to <var>store</var>.</p>
<li data-md>
<p><a data-link-type="dfn" href="#initialize-a-memory-object" id="ref-for-initialize-a-memory-object①">Initialize</a> <strong>this</strong> from <var>memaddr</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="refresh the Memory buffer">
To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="refresh-the-memory-buffer">refresh the Memory buffer</dfn> of <var>memaddr</var>, perform the following steps:
<ol>
<li data-md>
<p>Let <var>map</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent⑧">surrounding agent</a>’s associated <a data-link-type="dfn" href="#memory-object-cache" id="ref-for-memory-object-cache②">Memory object cache</a>.</p>
<li data-md>
<p class="assertion">Assert: <var>map</var>[<var>memaddr</var>] <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-exists" id="ref-for-map-exists⑥">exists</a>.</p>
<li data-md>
<p>Let <var>memory</var> be <var>map</var>[<var>memaddr</var>].</p>
<li data-md>
<p>Let <var>buffer</var> be <var>memory</var>.[[BufferObject]].</p>
<li data-md>
<p>If <a data-link-type="dfn" href="https://tc39.es/proposal-resizablearraybuffer/#sec-isfixedarraybuffer" id="ref-for-sec-isfixedarraybuffer">IsFixedLengthArrayBuffer</a>(<var>buffer</var>) is true,</p>
<ol>
<li data-md>
<p>Perform <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands①⓪">!</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/structured-data.html#sec-detacharraybuffer" id="ref-for-sec-detacharraybuffer">DetachArrayBuffer</a>(<var>buffer</var>, "WebAssembly.Memory").</p>
<li data-md>
<p>Let <var>buffer</var> be the result of <a data-link-type="dfn" href="#create-a-fixed-length-memory-buffer" id="ref-for-create-a-fixed-length-memory-buffer①">creating a fixed length memory buffer</a> from <var>memaddr</var>.</p>
<li data-md>
<p>Set <var>memory</var>.[[BufferObject]] to <var>buffer</var>.</p>
</ol>
<li data-md>
<p>Otherwise,</p>
<ol>
<li data-md>
<p>Let <var>block</var> be a <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/ecmascript-data-types-and-values.html#sec-data-blocks" id="ref-for-sec-data-blocks④">Data Block</a> which is <a data-link-type="dfn" href="#identified-with" id="ref-for-identified-with③">identified with</a> the underlying memory of <var>memaddr</var>.</p>
<li data-md>
<p>Set <var>buffer</var>.[[ArrayBufferData]] to <var>block</var>.</p>
<li data-md>
<p>Set <var>buffer</var>.[[ArrayBufferByteLength]] to the length of <var>block</var>.</p>
</ol>
</ol>
</div>
<div class="algorithm" data-algorithm="grow the memory buffer">
To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="grow-the-memory-buffer">grow the memory buffer</dfn> associated with a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-memaddr" id="ref-for-syntax-memaddr⑥">memory address</a> <var>memaddr</var> by <var>delta</var>, perform the following steps:
<ol>
<li data-md>
<p>Let <var>store</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent⑨">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store⑥">associated store</a>.</p>
<li data-md>
<p>Let <var>ret</var> be the <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-mem-size" id="ref-for-embed-mem-size">mem_size</a>(<var>store</var>, <var>memaddr</var>).</p>
<li data-md>
<p>Let <var>store</var> be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-mem-grow" id="ref-for-embed-mem-grow">mem_grow</a>(<var>store</var>, <var>memaddr</var>, <var>delta</var>).</p>
<li data-md>
<p>If <var>store</var> is <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-error" id="ref-for-embed-error⑨">error</a>, throw a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-rangeerror" id="ref-for-sec-native-error-types-used-in-this-standard-rangeerror②">RangeError</a></code> exception.</p>
<li data-md>
<p>Set the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent①⓪">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store⑦">associated store</a> to <var>store</var>.</p>
<li data-md>
<p><a data-link-type="dfn" href="#refresh-the-memory-buffer" id="ref-for-refresh-the-memory-buffer">Refresh the memory buffer</a> of <var>memaddr</var>.</p>
<li data-md>
<p>Return <var>ret</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="dom-Memory-grow">
The <dfn class="dfn-paneled idl-code" data-dfn-for="Memory" data-dfn-type="method" data-export id="dom-memory-grow"><code>grow(<var>delta</var>)</code></dfn> method, when invoked, performs the following steps:
<ol>
<li data-md>
<p>Let <var>memaddr</var> be <strong>this</strong>.[[Memory]].</p>
<li data-md>
<p>Let <var>store</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent①①">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store⑧">associated store</a>.</p>
<li data-md>
<p>Let <var>addrtype</var> be the <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-addrtype" id="ref-for-syntax-addrtype">address type</a> in <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-mem-type" id="ref-for-embed-mem-type">mem_type</a>(<var>store</var>, <var>memaddr</var>).</p>
<li data-md>
<p>Let <var>delta64</var> be <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands①①">?</a> <a data-link-type="dfn" href="#addressvaluetou64" id="ref-for-addressvaluetou64②">AddressValueToU64</a>(<var>delta</var>, <var>addrtype</var>).</p>
<li data-md>
<p>Let <var>ret</var> be the result of <a data-link-type="dfn" href="#grow-the-memory-buffer" id="ref-for-grow-the-memory-buffer">growing the memory buffer</a> associated with <var>memaddr</var> by <var>delta64</var>.</p>
<li data-md>
<p>Return <a data-link-type="dfn" href="#u64toaddressvalue" id="ref-for-u64toaddressvalue">U64ToAddressValue</a>(<var>ret</var>, <var>addrtype</var>).</p>
</ol>
</div>
<p>Immediately after a WebAssembly <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/instructions.html#exec-memory-grow" id="ref-for-exec-memory-grow">memory.grow</a> instruction executes, perform the following steps:</p>
<div class="algorithm" data-algorithm="memory.grow">
<ol>
<li data-md>
<p>If the top of the stack is not <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#values" id="ref-for-values">i32.const</a> (−1),</p>
<ol>
<li data-md>
<p>Let <var>frame</var> be the <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/conventions.html#exec-notation-textual" id="ref-for-exec-notation-textual">current frame</a>.</p>
<li data-md>
<p class="assertion">Assert: due to validation, <var>frame</var>.<a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-frame" id="ref-for-syntax-frame">module</a>.<a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-moduleinst" id="ref-for-syntax-moduleinst">memaddrs</a>[0] exists.</p>
<li data-md>
<p>Let <var>memaddr</var> be the memory address <var>frame</var>.<a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-frame" id="ref-for-syntax-frame①">module</a>.<a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-moduleinst" id="ref-for-syntax-moduleinst①">memaddrs</a>[0].</p>
<li data-md>
<p><a data-link-type="dfn" href="#refresh-the-memory-buffer" id="ref-for-refresh-the-memory-buffer①">Refresh the memory buffer</a> of <var>memaddr</var>.</p>
</ol>
</ol>
</div>
<div class="algorithm" data-algorithm="dom-Memory-toFixedLengthBuffer">
The <dfn class="dfn-paneled idl-code" data-dfn-for="Memory" data-dfn-type="method" data-export id="dom-memory-tofixedlengthbuffer"><code>toFixedLengthBuffer()</code></dfn> method, when invoked, performs the following steps:
<ol>
<li data-md>
<p>Let <var>buffer</var> be <strong>this</strong>.[[BufferObject]].</p>
<li data-md>
<p>If <a data-link-type="dfn" href="https://tc39.es/proposal-resizablearraybuffer/#sec-isfixedarraybuffer" id="ref-for-sec-isfixedarraybuffer①">IsFixedLengthArrayBuffer</a>(<var>buffer</var>) is true, return <var>buffer</var>.</p>
<li data-md>
<p>Let <var>memaddr</var> be <strong>this</strong>.[[Memory]].</p>
<li data-md>
<p>Let <var>fixedBuffer</var> be the result of <a data-link-type="dfn" href="#create-a-fixed-length-memory-buffer" id="ref-for-create-a-fixed-length-memory-buffer②">creating a fixed length memory buffer</a> from <var>memaddr</var>.</p>
<li data-md>
<p>Perform <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands①②">!</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/structured-data.html#sec-detacharraybuffer" id="ref-for-sec-detacharraybuffer①">DetachArrayBuffer</a>(<var>buffer</var>, "WebAssembly.Memory").</p>
<li data-md>
<p>Set <strong>this</strong>.[[BufferObject]] to <var>fixedBuffer</var>.</p>
<li data-md>
<p>Return <var>fixedBuffer</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="dom-Memory-toResizableBuffer">
The <dfn class="dfn-paneled idl-code" data-dfn-for="Memory" data-dfn-type="method" data-export id="dom-memory-toresizablebuffer"><code>toResizableBuffer()</code></dfn> method, when invoked, performs the following steps:
<ol>
<li data-md>
<p>Let <var>memaddr</var> be <strong>this</strong>.[[Memory]].</p>
<li data-md>
<p>Let <var>store</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent①②">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store⑨">associated store</a>.</p>
<li data-md>
<p>Let <var>memtype</var> be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-mem-type" id="ref-for-embed-mem-type①">mem_type</a>(<var>store</var>, <var>memaddr</var>).</p>
<li data-md>
<p>If <var>memtype</var> does not have a max,</p>
<ol>
<li data-md>
<p><a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#dfn-throw" id="ref-for-dfn-throw">Throw</a> a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-typeerror" id="ref-for-sec-native-error-types-used-in-this-standard-typeerror③">TypeError</a></code> exception.</p>
</ol>
<li data-md>
<p>Let <var>buffer</var> be <strong>this</strong>.[[BufferObject]].</p>
<li data-md>
<p>If <a data-link-type="dfn" href="https://tc39.es/proposal-resizablearraybuffer/#sec-isfixedarraybuffer" id="ref-for-sec-isfixedarraybuffer②">IsFixedLengthArrayBuffer</a>(<var>buffer</var>) is false, return <var>buffer</var>.</p>
<li data-md>
<p class="assertion">Assert: <var>memtype</var> has a max.</p>
<li data-md>
<p>Let <var>maxsize</var> be the max value in <var>memtype</var> * 65536.</p>
<li data-md>
<p>Let <var>resizableBuffer</var> be the result of <a data-link-type="dfn" href="#create-a-resizable-memory-buffer" id="ref-for-create-a-resizable-memory-buffer">creating a resizable memory buffer</a> from <var>memaddr</var> and <var>maxsize</var>.</p>
<li data-md>
<p>Perform <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands①③">!</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/structured-data.html#sec-detacharraybuffer" id="ref-for-sec-detacharraybuffer②">DetachArrayBuffer</a>(<var>buffer</var>, "WebAssembly.Memory").</p>
<li data-md>
<p>Set <strong>this</strong>.[[BufferObject]] to <var>resizableBuffer</var>.</p>
<li data-md>
<p>Return <var>resizableBuffer</var>.</p>
</ol>
</div>
<p><code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-arraybuffer-objects" id="ref-for-sec-arraybuffer-objects⑧">ArrayBuffer</a></code> objects returned by a <code class="idl"><a data-link-type="idl" href="#memory" id="ref-for-memory⑥">Memory</a></code> object must have a size that is a multiple of a WebAssembly <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#page-size" id="ref-for-page-size">page size</a> (the constant 65536). For this reason <a data-link-type="dfn" href="https://tc39.es/proposal-resizablearraybuffer/#sec-hostresizearraybuffer" id="ref-for-sec-hostresizearraybuffer">HostResizeArrayBuffer</a> is redefined as follows.</p>
<div class="algorithm" data-algorithm="abstract operation HostResizeArrayBuffer">
<p>The <dfn class="dfn-paneled" data-dfn-type="dfn" data-export id="HostResizeArrayBuffer">abstract operation <a data-link-type="dfn" href="https://tc39.es/proposal-resizablearraybuffer/#sec-hostresizearraybuffer" id="ref-for-sec-hostresizearraybuffer①">HostResizeArrayBuffer</a></dfn> takes arguments <var>buffer</var> (an <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-arraybuffer-objects" id="ref-for-sec-arraybuffer-objects⑨">ArrayBuffer</a></code>) and <var>newLength</var>. It performs the following steps when called.</p>
<ol>
<li data-md>
<p>If <var>buffer</var>.[[ArrayBufferDetachKey]] is "WebAssembly.Memory",</p>
<ol>
<li data-md>
<p>Let <var>map</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent①③">surrounding agent</a>’s associated <a data-link-type="dfn" href="#memory-object-cache" id="ref-for-memory-object-cache③">Memory object cache</a>.</p>
<li data-md>
<p class="assertion">Assert: <var>buffer</var> is the [[BufferObject]] of exactly one value in <var>map</var>.</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-iterate" id="ref-for-map-iterate">For each</a> <var>memaddr</var><var>mem</var> in <var>map</var>,</p>
<ol>
<li data-md>
<p>If <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-samevalue" id="ref-for-sec-samevalue">SameValue</a>(<var>mem</var>.[[BufferObject]], <var>buffer</var>) is true,</p>
<ol>
<li data-md>
<p class="assertion">Assert: <var>buffer</var>.[[ArrayBufferByteLength]] modulo 65536 is 0.</p>
<li data-md>
<p>Let <var>lengthDelta</var> be <var>newLength</var> - <var>buffer</var>.[[ArrayBufferByteLength]].</p>
<li data-md>
<p>If <var>lengthDelta</var> &lt; 0 or <var>lengthDelta</var> modulo 65536 is not 0,</p>
<ol>
<li data-md>
<p>Throw a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-rangeerror" id="ref-for-sec-native-error-types-used-in-this-standard-rangeerror③">RangeError</a></code> exception.</p>
</ol>
<li data-md>
<p>Let <var>delta</var> be <var>lengthDelta</var> ÷ 65536.</p>
<li data-md>
<p><a data-link-type="dfn" href="#grow-the-memory-buffer" id="ref-for-grow-the-memory-buffer①">Grow the memory buffer</a> associated with <var>memaddr</var> by <var>delta</var>.</p>
</ol>
</ol>
<li data-md>
<p>Return <emu-const>handled</emu-const>.</p>
</ol>
<li data-md>
<p>Otherwise, return <emu-const>unhandled</emu-const>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="buffer" data-algorithm-for="Memory">
The getter of the <dfn class="dfn-paneled idl-code" data-dfn-for="Memory" data-dfn-type="attribute" data-export id="dom-memory-buffer"><code>buffer</code></dfn> attribute of <code class="idl"><a data-link-type="idl" href="#memory" id="ref-for-memory⑦">Memory</a></code> returns <strong>this</strong>.[[BufferObject]].
</div>
<h3 class="heading settled" data-level="5.4" id="tables"><span class="secno">5.4. </span><span class="content">Tables</span><a class="self-link" href="#tables"></a></h3>
<pre class="idl highlight def"><c- b>enum</c-> <dfn class="dfn-paneled idl-code" data-dfn-type="enum" data-export id="enumdef-tablekind"><code><c- g>TableKind</c-></code></dfn> {
<dfn class="dfn-paneled idl-code" data-dfn-for="TableKind" data-dfn-type="enum-value" data-export id="dom-tablekind-externref"><code><c- s>"externref"</c-></code></dfn>,
<dfn class="dfn-paneled idl-code" data-dfn-for="TableKind" data-dfn-type="enum-value" data-export id="dom-tablekind-anyfunc"><code><c- s>"anyfunc"</c-></code></dfn>,
// Note: More values may be added in future iterations,
// e.g., typed function references, typed GC references
};
<c- b>dictionary</c-> <dfn class="dfn-paneled idl-code" data-dfn-type="dictionary" data-export id="dictdef-tabledescriptor"><code><c- g>TableDescriptor</c-></code></dfn> {
<c- b>required</c-> <a data-link-type="idl-name" href="#enumdef-tablekind" id="ref-for-enumdef-tablekind"><c- n>TableKind</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="TableDescriptor" data-dfn-type="dict-member" data-export data-type="TableKind" id="dom-tabledescriptor-element"><code><c- g>element</c-></code></dfn>;
<c- b>required</c-> <a data-link-type="idl-name" href="#typedefdef-addressvalue" id="ref-for-typedefdef-addressvalue④"><c- n>AddressValue</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="TableDescriptor" data-dfn-type="dict-member" data-export data-type="AddressValue" id="dom-tabledescriptor-initial"><code><c- g>initial</c-></code></dfn>;
<a data-link-type="idl-name" href="#typedefdef-addressvalue" id="ref-for-typedefdef-addressvalue⑤"><c- n>AddressValue</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="TableDescriptor" data-dfn-type="dict-member" data-export data-type="AddressValue" id="dom-tabledescriptor-maximum"><code><c- g>maximum</c-></code></dfn>;
<a data-link-type="idl-name" href="#enumdef-addresstype" id="ref-for-enumdef-addresstype①"><c- n>AddressType</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="TableDescriptor" data-dfn-type="dict-member" data-export data-type="AddressType" id="dom-tabledescriptor-address"><code><c- g>address</c-></code></dfn>;
};
[<a class="idl-code" data-link-type="extended-attribute" href="https://webidl.spec.whatwg.org/#LegacyNamespace" id="ref-for-LegacyNamespace③"><c- g>LegacyNamespace</c-></a>=<a data-link-type="idl-name" href="#namespacedef-webassembly" id="ref-for-namespacedef-webassembly④"><c- n>WebAssembly</c-></a>, Exposed=*]
<c- b>interface</c-> <dfn class="dfn-paneled idl-code" data-dfn-type="interface" data-export id="table"><code><c- g>Table</c-></code></dfn> {
<a class="idl-code" data-link-type="constructor" href="#dom-table-table" id="ref-for-dom-table-table"><c- g>constructor</c-></a>(<a data-link-type="idl-name" href="#dictdef-tabledescriptor" id="ref-for-dictdef-tabledescriptor"><c- n>TableDescriptor</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="Table/Table(descriptor, value), Table/constructor(descriptor, value), Table/Table(descriptor), Table/constructor(descriptor)" data-dfn-type="argument" data-export id="dom-table-table-descriptor-value-descriptor"><code><c- g>descriptor</c-></code></dfn>, <c- b>optional</c-> <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-any" id="ref-for-idl-any①"><c- b>any</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="Table/Table(descriptor, value), Table/constructor(descriptor, value), Table/Table(descriptor), Table/constructor(descriptor)" data-dfn-type="argument" data-export id="dom-table-table-descriptor-value-value"><code><c- g>value</c-></code></dfn>);
<a data-link-type="idl-name" href="#typedefdef-addressvalue" id="ref-for-typedefdef-addressvalue⑥"><c- n>AddressValue</c-></a> <a class="idl-code" data-link-type="method" href="#dom-table-grow" id="ref-for-dom-table-grow"><c- g>grow</c-></a>(<a data-link-type="idl-name" href="#typedefdef-addressvalue" id="ref-for-typedefdef-addressvalue⑦"><c- n>AddressValue</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="Table/grow(delta, value), Table/grow(delta)" data-dfn-type="argument" data-export id="dom-table-grow-delta-value-delta"><code><c- g>delta</c-></code></dfn>, <c- b>optional</c-> <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-any" id="ref-for-idl-any②"><c- b>any</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="Table/grow(delta, value), Table/grow(delta)" data-dfn-type="argument" data-export id="dom-table-grow-delta-value-value"><code><c- g>value</c-></code></dfn>);
<a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-any" id="ref-for-idl-any③"><c- b>any</c-></a> <a class="idl-code" data-link-type="method" href="#dom-table-get" id="ref-for-dom-table-get"><c- g>get</c-></a>(<a data-link-type="idl-name" href="#typedefdef-addressvalue" id="ref-for-typedefdef-addressvalue⑧"><c- n>AddressValue</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="Table/get(index)" data-dfn-type="argument" data-export id="dom-table-get-index-index"><code><c- g>index</c-></code></dfn>);
<a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-undefined" id="ref-for-idl-undefined"><c- b>undefined</c-></a> <a class="idl-code" data-link-type="method" href="#dom-table-set" id="ref-for-dom-table-set"><c- g>set</c-></a>(<a data-link-type="idl-name" href="#typedefdef-addressvalue" id="ref-for-typedefdef-addressvalue⑨"><c- n>AddressValue</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="Table/set(index, value), Table/set(index)" data-dfn-type="argument" data-export id="dom-table-set-index-value-index"><code><c- g>index</c-></code></dfn>, <c- b>optional</c-> <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-any" id="ref-for-idl-any④"><c- b>any</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="Table/set(index, value), Table/set(index)" data-dfn-type="argument" data-export id="dom-table-set-index-value-value"><code><c- g>value</c-></code></dfn>);
<c- b>readonly</c-> <c- b>attribute</c-> <a data-link-type="idl-name" href="#typedefdef-addressvalue" id="ref-for-typedefdef-addressvalue①⓪"><c- n>AddressValue</c-></a> <a class="idl-code" data-link-type="attribute" data-readonly data-type="AddressValue" href="#dom-table-length" id="ref-for-dom-table-length"><c- g>length</c-></a>;
};
</pre>
<p>A <code class="idl"><a data-link-type="idl" href="#table" id="ref-for-table②">Table</a></code> object represents a single <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#table-instances" id="ref-for-table-instances">table instance</a> which can be simultaneously referenced by
multiple <code class="idl"><a data-link-type="idl" href="#instance" id="ref-for-instance⑤">Instance</a></code> objects.
Each <code class="idl"><a data-link-type="idl" href="#table" id="ref-for-table③">Table</a></code> object has a [[Table]] internal slot, which is a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-tableaddr" id="ref-for-syntax-tableaddr①">table address</a>.</p>
<div class="algorithm" data-algorithm="initialize a table object">
To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="initialize-a-table-object">initialize a table object</dfn> <var>table</var> from a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-tableaddr" id="ref-for-syntax-tableaddr②">table address</a> <var>tableaddr</var>, perform the following steps:
<ol>
<li data-md>
<p>Let <var>map</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent①④">surrounding agent</a>’s associated <a data-link-type="dfn" href="#table-object-cache" id="ref-for-table-object-cache">Table object cache</a>.</p>
<li data-md>
<p class="assertion">Assert: <var>map</var>[<var>tableaddr</var>] doesn’t <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-exists" id="ref-for-map-exists⑦">exist</a>.</p>
<li data-md>
<p>Set <var>table</var>.[[Table]] to <var>tableaddr</var>.</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-set" id="ref-for-map-set③">Set</a> <var>map</var>[<var>tableaddr</var>] to <var>table</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="create a table object">
To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="create-a-table-object">create a table object</dfn> from a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-tableaddr" id="ref-for-syntax-tableaddr③">table address</a> <var>tableaddr</var>, perform the following steps:
<ol>
<li data-md>
<p>Let <var>map</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent①⑤">surrounding agent</a>’s associated <a data-link-type="dfn" href="#table-object-cache" id="ref-for-table-object-cache①">Table object cache</a>.</p>
<li data-md>
<p>If <var>map</var>[<var>tableaddr</var>] <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-exists" id="ref-for-map-exists⑧">exists</a>,</p>
<ol>
<li data-md>
<p>Return <var>map</var>[<var>tableaddr</var>].</p>
</ol>
<li data-md>
<p>Let <var>table</var> be a <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#new" id="ref-for-new②">new</a> <code class="idl"><a data-link-type="idl" href="#table" id="ref-for-table④">Table</a></code>.</p>
<li data-md>
<p><a data-link-type="dfn" href="#initialize-a-table-object" id="ref-for-initialize-a-table-object">Initialize</a> <var>table</var> from <var>tableaddr</var>.</p>
<li data-md>
<p>Return <var>table</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="Table(descriptor, value)" data-algorithm-for="Table">
The <dfn class="dfn-paneled idl-code" data-dfn-for="Table" data-dfn-type="constructor" data-export data-lt="Table(descriptor, value)|constructor(descriptor, value)|Table(descriptor)|constructor(descriptor)" id="dom-table-table"><code>Table(<var>descriptor</var>, <var>value</var>)</code></dfn> constructor, when invoked, performs the following steps:
<ol>
<li data-md>
<p>Let <var>elementtype</var> be <a data-link-type="dfn" href="#tovaluetype" id="ref-for-tovaluetype">ToValueType</a>(<var>descriptor</var>["element"]).</p>
<li data-md>
<p>If <var>elementtype</var> is not a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/valid/matching.html#match-reftype" id="ref-for-match-reftype">reftype</a>,</p>
<ol>
<li data-md>
<p><a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#dfn-throw" id="ref-for-dfn-throw①">Throw</a> a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-typeerror" id="ref-for-sec-native-error-types-used-in-this-standard-typeerror④">TypeError</a></code> exception.</p>
</ol>
<li data-md>
<p>If <var>descriptor</var>["address"] <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-exists" id="ref-for-map-exists⑨">exists</a>, let <var>addrtype</var> be <var>descriptor</var>["address"]; otherwise, let <var>addrtype</var> be "i32".</p>
<li data-md>
<p>Let <var>initial</var> be <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands①④">?</a> <a data-link-type="dfn" href="#addressvaluetou64" id="ref-for-addressvaluetou64③">AddressValueToU64</a>(<var>descriptor</var>["initial"], <var>addrtype</var>).</p>
<li data-md>
<p>If <var>descriptor</var>["maximum"] <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-exists" id="ref-for-map-exists①⓪">exists</a>, let <var>maximum</var> be <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands①⑤">?</a> <a data-link-type="dfn" href="#addressvaluetou64" id="ref-for-addressvaluetou64④">AddressValueToU64</a>(<var>descriptor</var>["maximum"], <var>addrtype</var>); otherwise, let <var>maximum</var> be empty.</p>
<li data-md>
<p>Let <var>type</var> be the <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-tabletype" id="ref-for-syntax-tabletype">table type</a> <var>addrtype</var> { <b><a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-limits" id="ref-for-syntax-limits">min</a></b> <var>initial</var>, <b><a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-limits" id="ref-for-syntax-limits①">max</a></b> <var>maximum</var> } <var>elementType</var>.</p>
<li data-md>
<p>If <var>type</var> is not <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/valid/types.html#valid-tabletype" id="ref-for-valid-tabletype">valid</a>, throw a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-rangeerror" id="ref-for-sec-native-error-types-used-in-this-standard-rangeerror④">RangeError</a></code> exception.</p>
<li data-md>
<p>If <var>value</var> is missing,</p>
<ol>
<li data-md>
<p>Let <var>ref</var> be <a data-link-type="dfn" href="#defaultvalue" id="ref-for-defaultvalue">DefaultValue</a>(<var>elementtype</var>).</p>
<li data-md>
<p class="assertion">Assert: <var>ref</var> is not <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-error" id="ref-for-embed-error①⓪">error</a>.</p>
</ol>
<li data-md>
<p>Otherwise,</p>
<ol>
<li data-md>
<p>Let <var>ref</var> be <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands①⑥">?</a> <a data-link-type="dfn" href="#towebassemblyvalue" id="ref-for-towebassemblyvalue①">ToWebAssemblyValue</a>(<var>value</var>, <var>elementType</var>).</p>
</ol>
<li data-md>
<p>Let <var>store</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent①⑥">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store①⓪">associated store</a>.</p>
<li data-md>
<p>Let (<var>store</var>, <var>tableaddr</var>) be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-table-alloc" id="ref-for-embed-table-alloc">table_alloc</a>(<var>store</var>, <var>type</var>, <var>ref</var>). If allocation fails, throw a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-rangeerror" id="ref-for-sec-native-error-types-used-in-this-standard-rangeerror⑤">RangeError</a></code> exception.</p>
<li data-md>
<p>Set the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent①⑦">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store①①">associated store</a> to <var>store</var>.</p>
<li data-md>
<p><a data-link-type="dfn" href="#initialize-a-table-object" id="ref-for-initialize-a-table-object①">Initialize</a> <strong>this</strong> from <var>tableaddr</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="dom-Table-grow">
The <dfn class="dfn-paneled idl-code" data-dfn-for="Table" data-dfn-type="method" data-export data-lt="grow(delta, value)|grow(delta)" id="dom-table-grow"><code>grow(<var>delta</var>, <var>value</var>)</code></dfn> method, when invoked, performs the following steps:
<ol>
<li data-md>
<p>Let <var>tableaddr</var> be <strong>this</strong>.[[Table]].</p>
<li data-md>
<p>Let <var>store</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent①⑧">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store①②">associated store</a>.</p>
<li data-md>
<p>Let <var>initialSize</var> be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-table-size" id="ref-for-embed-table-size">table_size</a>(<var>store</var>, <var>tableaddr</var>).</p>
<li data-md>
<p>Let (<var>addrtype</var>, <var>limits</var>, <var>elementtype</var>) be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-table-type" id="ref-for-embed-table-type">table_type</a>(<var>store</var>, <var>tableaddr</var>).</p>
<li data-md>
<p>Let <var>delta64</var> be <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands①⑦">?</a> <a data-link-type="dfn" href="#addressvaluetou64" id="ref-for-addressvaluetou64⑤">AddressValueToU64</a>(<var>delta</var>, <var>addrtype</var>).</p>
<li data-md>
<p>If <var>value</var> is missing,</p>
<ol>
<li data-md>
<p>Let <var>ref</var> be <a data-link-type="dfn" href="#defaultvalue" id="ref-for-defaultvalue①">DefaultValue</a>(<var>elementtype</var>).</p>
<li data-md>
<p>If <var>ref</var> is <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-error" id="ref-for-embed-error①①">error</a>, throw a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-typeerror" id="ref-for-sec-native-error-types-used-in-this-standard-typeerror⑤">TypeError</a></code> exception.</p>
</ol>
<li data-md>
<p>Otherwise,</p>
<ol>
<li data-md>
<p>Let <var>ref</var> be <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands①⑧">?</a> <a data-link-type="dfn" href="#towebassemblyvalue" id="ref-for-towebassemblyvalue②">ToWebAssemblyValue</a>(<var>value</var>, <var>elementtype</var>).</p>
</ol>
<li data-md>
<p>Let <var>result</var> be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-table-grow" id="ref-for-embed-table-grow">table_grow</a>(<var>store</var>, <var>tableaddr</var>, <var>delta64</var>, <var>ref</var>).</p>
<li data-md>
<p>If <var>result</var> is <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-error" id="ref-for-embed-error①②">error</a>, throw a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-rangeerror" id="ref-for-sec-native-error-types-used-in-this-standard-rangeerror⑥">RangeError</a></code> exception.</p>
<p class="note" role="note"><span class="marker">Note:</span> The above exception can happen due to either insufficient memory or an invalid size parameter.</p>
<li data-md>
<p>Set the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent①⑨">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store①③">associated store</a> to <var>result</var>.</p>
<li data-md>
<p>Return <var>initialSize</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="length" data-algorithm-for="Table">
The getter of the <dfn class="dfn-paneled idl-code" data-dfn-for="Table" data-dfn-type="attribute" data-export id="dom-table-length"><code>length</code></dfn> attribute of <code class="idl"><a data-link-type="idl" href="#table" id="ref-for-table⑤">Table</a></code>, when invoked, performs the following steps:
<ol>
<li data-md>
<p>Let <var>tableaddr</var> be <strong>this</strong>.[[Table]].</p>
<li data-md>
<p>Let <var>store</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent②⓪">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store①④">associated store</a>.</p>
<li data-md>
<p>Let <var>addrtype</var> be the <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-addrtype" id="ref-for-syntax-addrtype①">address type</a> in <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-table-type" id="ref-for-embed-table-type①">table_type</a>(<var>store</var>, <var>tableaddr</var>).</p>
<li data-md>
<p>Let <var>length64</var> be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-table-size" id="ref-for-embed-table-size①">table_size</a>(<var>store</var>, <var>tableaddr</var>).</p>
<li data-md>
<p>Return <a data-link-type="dfn" href="#u64toaddressvalue" id="ref-for-u64toaddressvalue①">U64ToAddressValue</a>(<var>length64</var>, <var>addrtype</var>).</p>
</ol>
</div>
<div class="algorithm" data-algorithm="get(index)" data-algorithm-for="Table">
The <dfn class="dfn-paneled idl-code" data-dfn-for="Table" data-dfn-type="method" data-export id="dom-table-get"><code>get(<var>index</var>)</code></dfn> method, when invoked, performs the following steps:
<ol>
<li data-md>
<p>Let <var>tableaddr</var> be <strong>this</strong>.[[Table]].</p>
<li data-md>
<p>Let <var>store</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent②①">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store①⑤">associated store</a>.</p>
<li data-md>
<p>Let (<var>addrtype</var>, <var>limits</var>, <var>elementtype</var>) be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-table-type" id="ref-for-embed-table-type②">table_type</a>(<var>store</var>, <var>tableaddr</var>).</p>
<li data-md>
<p>If <var>elementtype</var> <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/valid/matching.html#match-reftype" id="ref-for-match-reftype①">matches</a> <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype" id="ref-for-syntax-reftype">exnref</a>,</p>
<ol>
<li data-md>
<p>Throw a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-typeerror" id="ref-for-sec-native-error-types-used-in-this-standard-typeerror⑥">TypeError</a></code> exception.</p>
</ol>
<li data-md>
<p>Let <var>index64</var> be <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands①⑨">?</a> <a data-link-type="dfn" href="#addressvaluetou64" id="ref-for-addressvaluetou64⑥">AddressValueToU64</a>(<var>index</var>, <var>addrtype</var>).</p>
<li data-md>
<p>Let <var>result</var> be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-table-read" id="ref-for-embed-table-read">table_read</a>(<var>store</var>, <var>tableaddr</var>, <var>index64</var>).</p>
<li data-md>
<p>If <var>result</var> is <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-error" id="ref-for-embed-error①③">error</a>, throw a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-rangeerror" id="ref-for-sec-native-error-types-used-in-this-standard-rangeerror⑦">RangeError</a></code> exception.</p>
<li data-md>
<p>Return <a data-link-type="dfn" href="#tojsvalue" id="ref-for-tojsvalue">ToJSValue</a>(<var>result</var>).</p>
</ol>
</div>
<div class="algorithm" data-algorithm="set(index, value)" data-algorithm-for="Table">
The <dfn class="dfn-paneled idl-code" data-dfn-for="Table" data-dfn-type="method" data-export data-lt="set(index, value)|set(index)" id="dom-table-set"><code>set(<var>index</var>, <var>value</var>)</code></dfn> method, when invoked, performs the following steps:
<ol>
<li data-md>
<p>Let <var>tableaddr</var> be <strong>this</strong>.[[Table]].</p>
<li data-md>
<p>Let <var>store</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent②②">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store①⑥">associated store</a>.</p>
<li data-md>
<p>Let (<var>addrtype</var>, <var>limits</var>, <var>elementtype</var>) be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-table-type" id="ref-for-embed-table-type③">table_type</a>(<var>store</var>, <var>tableaddr</var>).</p>
<li data-md>
<p>If <var>elementtype</var> <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/valid/matching.html#match-reftype" id="ref-for-match-reftype②">matches</a> <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype" id="ref-for-syntax-reftype①">exnref</a>,</p>
<ol>
<li data-md>
<p>Throw a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-typeerror" id="ref-for-sec-native-error-types-used-in-this-standard-typeerror⑦">TypeError</a></code> exception.</p>
</ol>
<li data-md>
<p>Let <var>index64</var> be <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands②⓪">?</a> <a data-link-type="dfn" href="#addressvaluetou64" id="ref-for-addressvaluetou64⑦">AddressValueToU64</a>(<var>index</var>, <var>addrtype</var>).</p>
<li data-md>
<p>If <var>value</var> is missing,</p>
<ol>
<li data-md>
<p>Let <var>ref</var> be <a data-link-type="dfn" href="#defaultvalue" id="ref-for-defaultvalue②">DefaultValue</a>(<var>elementtype</var>).</p>
<li data-md>
<p>If <var>ref</var> is <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-error" id="ref-for-embed-error①④">error</a>, throw a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-typeerror" id="ref-for-sec-native-error-types-used-in-this-standard-typeerror⑧">TypeError</a></code> exception.</p>
</ol>
<li data-md>
<p>Otherwise,</p>
<ol>
<li data-md>
<p>Let <var>ref</var> be <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands②①">?</a> <a data-link-type="dfn" href="#towebassemblyvalue" id="ref-for-towebassemblyvalue③">ToWebAssemblyValue</a>(<var>value</var>, <var>elementtype</var>).</p>
</ol>
<li data-md>
<p>Let <var>store</var> be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-table-write" id="ref-for-embed-table-write">table_write</a>(<var>store</var>, <var>tableaddr</var>, <var>index64</var>, <var>ref</var>).</p>
<li data-md>
<p>If <var>store</var> is <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-error" id="ref-for-embed-error①⑤">error</a>, throw a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-rangeerror" id="ref-for-sec-native-error-types-used-in-this-standard-rangeerror⑧">RangeError</a></code> exception.</p>
<li data-md>
<p>Set the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent②③">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store①⑦">associated store</a> to <var>store</var>.</p>
</ol>
</div>
<h3 class="heading settled" data-level="5.5" id="globals"><span class="secno">5.5. </span><span class="content">Globals</span><a class="self-link" href="#globals"></a></h3>
<pre class="idl highlight def"><c- b>enum</c-> <dfn class="dfn-paneled idl-code" data-dfn-type="enum" data-export id="enumdef-valuetype"><code><c- g>ValueType</c-></code></dfn> {
<dfn class="dfn-paneled idl-code" data-dfn-for="ValueType" data-dfn-type="enum-value" data-export id="dom-valuetype-i32"><code><c- s>"i32"</c-></code></dfn>,
<dfn class="dfn-paneled idl-code" data-dfn-for="ValueType" data-dfn-type="enum-value" data-export id="dom-valuetype-i64"><code><c- s>"i64"</c-></code></dfn>,
<dfn class="dfn-paneled idl-code" data-dfn-for="ValueType" data-dfn-type="enum-value" data-export id="dom-valuetype-f32"><code><c- s>"f32"</c-></code></dfn>,
<dfn class="dfn-paneled idl-code" data-dfn-for="ValueType" data-dfn-type="enum-value" data-export id="dom-valuetype-f64"><code><c- s>"f64"</c-></code></dfn>,
<dfn class="dfn-paneled idl-code" data-dfn-for="ValueType" data-dfn-type="enum-value" data-export id="dom-valuetype-v128"><code><c- s>"v128"</c-></code></dfn>,
<dfn class="dfn-paneled idl-code" data-dfn-for="ValueType" data-dfn-type="enum-value" data-export id="dom-valuetype-externref"><code><c- s>"externref"</c-></code></dfn>,
<dfn class="dfn-paneled idl-code" data-dfn-for="ValueType" data-dfn-type="enum-value" data-export id="dom-valuetype-anyfunc"><code><c- s>"anyfunc"</c-></code></dfn>,
};
</pre>
<p class="note" role="note"><span class="marker">Note:</span> this type may be extended with additional cases in future versions of WebAssembly.</p>
<pre class="idl highlight def"><c- b>dictionary</c-> <dfn class="dfn-paneled idl-code" data-dfn-type="dictionary" data-export id="dictdef-globaldescriptor"><code><c- g>GlobalDescriptor</c-></code></dfn> {
<c- b>required</c-> <a data-link-type="idl-name" href="#enumdef-valuetype" id="ref-for-enumdef-valuetype"><c- n>ValueType</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="GlobalDescriptor" data-dfn-type="dict-member" data-export data-type="ValueType" id="dom-globaldescriptor-value"><code><c- g>value</c-></code></dfn>;
<a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-boolean" id="ref-for-idl-boolean①"><c- b>boolean</c-></a> <dfn class="dfn-paneled idl-code" data-default="false" data-dfn-for="GlobalDescriptor" data-dfn-type="dict-member" data-export data-type="boolean" id="dom-globaldescriptor-mutable"><code><c- g>mutable</c-></code></dfn> = <c- b>false</c->;
};
[<a class="idl-code" data-link-type="extended-attribute" href="https://webidl.spec.whatwg.org/#LegacyNamespace" id="ref-for-LegacyNamespace④"><c- g>LegacyNamespace</c-></a>=<a data-link-type="idl-name" href="#namespacedef-webassembly" id="ref-for-namespacedef-webassembly⑤"><c- n>WebAssembly</c-></a>, Exposed=*]
<c- b>interface</c-> <dfn class="dfn-paneled idl-code" data-dfn-type="interface" data-export id="global"><code><c- g>Global</c-></code></dfn> {
<a class="idl-code" data-link-type="constructor" href="#dom-global-global" id="ref-for-dom-global-global"><c- g>constructor</c-></a>(<a data-link-type="idl-name" href="#dictdef-globaldescriptor" id="ref-for-dictdef-globaldescriptor"><c- n>GlobalDescriptor</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="Global/Global(descriptor, v), Global/constructor(descriptor, v), Global/Global(descriptor), Global/constructor(descriptor)" data-dfn-type="argument" data-export id="dom-global-global-descriptor-v-descriptor"><code><c- g>descriptor</c-></code></dfn>, <c- b>optional</c-> <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-any" id="ref-for-idl-any⑤"><c- b>any</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="Global/Global(descriptor, v), Global/constructor(descriptor, v), Global/Global(descriptor), Global/constructor(descriptor)" data-dfn-type="argument" data-export id="dom-global-global-descriptor-v-v"><code><c- g>v</c-></code></dfn>);
<a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-any" id="ref-for-idl-any⑥"><c- b>any</c-></a> <a class="idl-code" data-link-type="method" href="#dom-global-valueof" id="ref-for-dom-global-valueof"><c- g>valueOf</c-></a>();
<c- b>attribute</c-> <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-any" id="ref-for-idl-any⑦"><c- b>any</c-></a> <a class="idl-code" data-link-type="attribute" data-type="any" href="#dom-global-value" id="ref-for-dom-global-value"><c- g>value</c-></a>;
};
</pre>
<p>A <code class="idl"><a data-link-type="idl" href="#global" id="ref-for-global②">Global</a></code> object represents a single <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#global-instances" id="ref-for-global-instances">global instance</a>
which can be simultaneously referenced by multiple <code class="idl"><a data-link-type="idl" href="#instance" id="ref-for-instance⑥">Instance</a></code> objects. Each
<code class="idl"><a data-link-type="idl" href="#global" id="ref-for-global③">Global</a></code> object has one internal slot:</p>
<ul>
<li data-md>
<p>[[Global]] : a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-globaladdr" id="ref-for-syntax-globaladdr①">global address</a></p>
</ul>
<div class="algorithm" data-algorithm="initialize a global object">
To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="initialize-a-global-object">initialize a global object</dfn> <var>global</var> from a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-globaladdr" id="ref-for-syntax-globaladdr②">global address</a> <var>globaladdr</var>, perform the following steps:
<ol>
<li data-md>
<p>Let <var>map</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent②④">surrounding agent</a>’s associated <a data-link-type="dfn" href="#global-object-cache" id="ref-for-global-object-cache">Global object cache</a>.</p>
<li data-md>
<p class="assertion">Assert: <var>map</var>[<var>globaladdr</var>] doesn’t <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-exists" id="ref-for-map-exists①①">exist</a>.</p>
<li data-md>
<p>Set <var>global</var>.[[Global]] to <var>globaladdr</var>.</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-set" id="ref-for-map-set④">Set</a> <var>map</var>[<var>globaladdr</var>] to <var>global</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="create a global object">
To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="create-a-global-object">create a global object</dfn> from a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-globaladdr" id="ref-for-syntax-globaladdr③">global address</a> <var>globaladdr</var>, perform the following steps:
<ol>
<li data-md>
<p>Let <var>map</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent②⑤">surrounding agent</a>’s associated <a data-link-type="dfn" href="#global-object-cache" id="ref-for-global-object-cache①">Global object cache</a>.</p>
<li data-md>
<p>If <var>map</var>[<var>globaladdr</var>] <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-exists" id="ref-for-map-exists①②">exists</a>,</p>
<ol>
<li data-md>
<p>Return <var>map</var>[<var>globaladdr</var>].</p>
</ol>
<li data-md>
<p>Let <var>global</var> be a <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#new" id="ref-for-new③">new</a> <code class="idl"><a data-link-type="idl" href="#global" id="ref-for-global④">Global</a></code>.</p>
<li data-md>
<p><a data-link-type="dfn" href="#initialize-a-global-object" id="ref-for-initialize-a-global-object">Initialize</a> <var>global</var> from <var>globaladdr</var>.</p>
<li data-md>
<p>Return <var>global</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="ToValueType">
The algorithm <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="tovaluetype">ToValueType</dfn>(<var>s</var>) performs the following steps:
<ol>
<li data-md>
<p>If <var>s</var> equals "i32", return <a data-link-type="dfn" data-refhint-key="1eccdce5" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-numtype" id="ref-for-syntax-numtype④">i32</a>.</p>
<li data-md>
<p>If <var>s</var> equals "i64", return <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-numtype" id="ref-for-syntax-numtype⑤">i64</a>.</p>
<li data-md>
<p>If <var>s</var> equals "f32", return <a data-link-type="dfn" data-refhint-key="a4646532" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-numtype" id="ref-for-syntax-numtype⑥">f32</a>.</p>
<li data-md>
<p>If <var>s</var> equals "f64", return <a data-link-type="dfn" data-refhint-key="487b76fe" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-numtype" id="ref-for-syntax-numtype⑦">f64</a>.</p>
<li data-md>
<p>If <var>s</var> equals "v128", return <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#vector-types" id="ref-for-vector-types①">v128</a>.</p>
<li data-md>
<p>If <var>s</var> equals "anyfunc", return <a data-link-type="dfn" data-refhint-key="706a103c" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype" id="ref-for-syntax-reftype②">funcref</a>.</p>
<li data-md>
<p>If <var>s</var> equals "externref", return <a data-link-type="dfn" data-refhint-key="92193adb" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype" id="ref-for-syntax-reftype③">externref</a>.</p>
<li data-md>
<p class="assertion">Assert: This step is not reached.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="DefaultValue">
The algorithm <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="defaultvalue">DefaultValue</dfn>(<var>valuetype</var>) performs the following steps:
<ol>
<li data-md>
<p>If <var>valuetype</var> equals <a data-link-type="dfn" data-refhint-key="92193adb" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype" id="ref-for-syntax-reftype④">externref</a>, return <a data-link-type="dfn" href="#towebassemblyvalue" id="ref-for-towebassemblyvalue④">ToWebAssemblyValue</a>(undefined, <var>valuetype</var>).</p>
<li data-md>
<p>Return <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-val-default" id="ref-for-embed-val-default">val_default</a>(<var>valuetype</var>).</p>
</ol>
</div>
<div class="algorithm" data-algorithm="Global(descriptor, v)" data-algorithm-for="Global">
The <dfn class="dfn-paneled idl-code" data-dfn-for="Global" data-dfn-type="constructor" data-export data-lt="Global(descriptor, v)|constructor(descriptor, v)|Global(descriptor)|constructor(descriptor)" id="dom-global-global"><code>Global(<var>descriptor</var>, <var>v</var>)</code></dfn> constructor, when invoked, performs the following steps:
<ol>
<li data-md>
<p>Let <var>mutable</var> be <var>descriptor</var>["mutable"].</p>
<li data-md>
<p>Let <var>valuetype</var> be <a data-link-type="dfn" href="#tovaluetype" id="ref-for-tovaluetype①">ToValueType</a>(<var>descriptor</var>["value"]).</p>
<li data-md>
<p>If <var>valuetype</var> <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/valid/matching.html#match-valtype" id="ref-for-match-valtype">matches</a> <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#vector-types" id="ref-for-vector-types②">v128</a> or <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype" id="ref-for-syntax-reftype⑤">exnref</a>,</p>
<ol>
<li data-md>
<p>Throw a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-typeerror" id="ref-for-sec-native-error-types-used-in-this-standard-typeerror⑨">TypeError</a></code> exception.</p>
</ol>
<li data-md>
<p>If <var>v</var> is missing,</p>
<ol>
<li data-md>
<p>Let <var>value</var> be <a data-link-type="dfn" href="#defaultvalue" id="ref-for-defaultvalue③">DefaultValue</a>(<var>valuetype</var>).</p>
<li data-md>
<p class="assertion">Assert: <var>value</var> is not <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-error" id="ref-for-embed-error①⑥">error</a>.</p>
</ol>
<li data-md>
<p>Otherwise,</p>
<ol>
<li data-md>
<p>Let <var>value</var> be <a data-link-type="dfn" href="#towebassemblyvalue" id="ref-for-towebassemblyvalue⑤">ToWebAssemblyValue</a>(<var>v</var>, <var>valuetype</var>).</p>
</ol>
<li data-md>
<p>If <var>mutable</var> is true, let <var>globaltype</var> be <a data-link-type="dfn" data-refhint-key="e638887d" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-mut" id="ref-for-syntax-mut①">var</a> <var>valuetype</var>; otherwise, let <var>globaltype</var> be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-mut" id="ref-for-syntax-mut②">const</a> <var>valuetype</var>.</p>
<li data-md>
<p>Let <var>store</var> be the current agent’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store①⑧">associated store</a>.</p>
<li data-md>
<p>Let (<var>store</var>, <var>globaladdr</var>) be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-global-alloc" id="ref-for-embed-global-alloc①">global_alloc</a>(<var>store</var>, <var>globaltype</var>, <var>value</var>). </p>
<li data-md>
<p>Set the current agent’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store①⑨">associated store</a> to <var>store</var>.</p>
<li data-md>
<p><a data-link-type="dfn" href="#initialize-a-global-object" id="ref-for-initialize-a-global-object①">Initialize</a> <strong>this</strong> from <var>globaladdr</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="GetGlobalValue">
The algorithm <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="getglobalvalue">GetGlobalValue</dfn>(<code class="idl"><a data-link-type="idl" href="#global" id="ref-for-global⑤">Global</a></code> <var>global</var>) performs the following steps:
<ol>
<li data-md>
<p>Let <var>store</var> be the current agent’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store②⓪">associated store</a>.</p>
<li data-md>
<p>Let <var>globaladdr</var> be <var>global</var>.[[Global]].</p>
<li data-md>
<p>Let <var>globaltype</var> be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-global-type" id="ref-for-embed-global-type">global_type</a>(<var>store</var>, <var>globaladdr</var>).</p>
<li data-md>
<p>If <var>globaltype</var> is of the form <var>mut</var> <var>valuetype</var> where <var>valuetype</var> <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/valid/matching.html#match-valtype" id="ref-for-match-valtype①">matches</a> <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#vector-types" id="ref-for-vector-types③">v128</a> or <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype" id="ref-for-syntax-reftype⑥">exnref</a>, throw a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-typeerror" id="ref-for-sec-native-error-types-used-in-this-standard-typeerror①⓪">TypeError</a></code>.</p>
<li data-md>
<p>Let <var>value</var> be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-global-read" id="ref-for-embed-global-read">global_read</a>(<var>store</var>, <var>globaladdr</var>).</p>
<li data-md>
<p>Return <a data-link-type="dfn" href="#tojsvalue" id="ref-for-tojsvalue①">ToJSValue</a>(<var>value</var>).</p>
</ol>
</div>
<div class="algorithm" data-algorithm="value" data-algorithm-for="Global">
The getter of the <dfn class="dfn-paneled idl-code" data-dfn-for="Global" data-dfn-type="attribute" data-export id="dom-global-value"><code>value</code></dfn> attribute of <code class="idl"><a data-link-type="idl" href="#global" id="ref-for-global⑥">Global</a></code>, when invoked, performs the following steps:
<ol>
<li data-md>
<p>Return <a data-link-type="dfn" href="#getglobalvalue" id="ref-for-getglobalvalue">GetGlobalValue</a>(<strong>this</strong>).</p>
</ol>
<p>The setter of the value attribute of <code class="idl"><a data-link-type="idl" href="#global" id="ref-for-global⑦">Global</a></code>, when invoked, performs the following steps:</p>
<ol>
<li data-md>
<p>Let <var>store</var> be the current agent’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store②①">associated store</a>.</p>
<li data-md>
<p>Let <var>globaladdr</var> be <strong>this</strong>.[[Global]].</p>
<li data-md>
<p>Let <var>mut</var> <var>valuetype</var> be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-global-type" id="ref-for-embed-global-type①">global_type</a>(<var>store</var>, <var>globaladdr</var>).</p>
<li data-md>
<p>If <var>valuetype</var> <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/valid/matching.html#match-valtype" id="ref-for-match-valtype②">matches</a> <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#vector-types" id="ref-for-vector-types④">v128</a> or <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype" id="ref-for-syntax-reftype⑦">exnref</a>, throw a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-typeerror" id="ref-for-sec-native-error-types-used-in-this-standard-typeerror①①">TypeError</a></code>.</p>
<li data-md>
<p>If <var>mut</var> is <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-mut" id="ref-for-syntax-mut③">const</a>, throw a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-typeerror" id="ref-for-sec-native-error-types-used-in-this-standard-typeerror①②">TypeError</a></code>.</p>
<li data-md>
<p>Let <var>value</var> be <a data-link-type="dfn" href="#towebassemblyvalue" id="ref-for-towebassemblyvalue⑥">ToWebAssemblyValue</a>(<strong>the given value</strong>, <var>valuetype</var>).</p>
<li data-md>
<p>Let <var>store</var> be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-global-write" id="ref-for-embed-global-write">global_write</a>(<var>store</var>, <var>globaladdr</var>, <var>value</var>).</p>
<li data-md>
<p>If <var>store</var> is <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-error" id="ref-for-embed-error①⑦">error</a>, throw a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-rangeerror" id="ref-for-sec-native-error-types-used-in-this-standard-rangeerror⑨">RangeError</a></code> exception.</p>
<li data-md>
<p>Set the current agent’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store②②">associated store</a> to <var>store</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="valueOf()" data-algorithm-for="Global">
The <dfn class="dfn-paneled idl-code" data-dfn-for="Global" data-dfn-type="method" data-export id="dom-global-valueof"><code>valueOf()</code></dfn> method, when invoked, performs the following steps:
<ol>
<li data-md>
<p>Return <a data-link-type="dfn" href="#getglobalvalue" id="ref-for-getglobalvalue①">GetGlobalValue</a>(<strong>this</strong>).</p>
</ol>
</div>
<h3 class="heading settled" data-level="5.6" id="exported-function-exotic-objects"><span class="secno">5.6. </span><span class="content">Exported Functions</span><a class="self-link" href="#exported-function-exotic-objects"></a></h3>
<p>A WebAssembly function is made available in JavaScript as an <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="exported-function">Exported Function</dfn>.
Exported Functions are <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-built-in-function-objects" id="ref-for-sec-built-in-function-objects">Built-in Function Objects</a> which are not constructors, and which have a [[FunctionAddress]] internal slot.
This slot holds a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-funcaddr" id="ref-for-syntax-funcaddr①">function address</a> relative to the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent②⑥">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store②③">associated store</a>.</p>
<div class="algorithm" data-algorithm="name of the WebAssembly function">
The <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="name-of-the-webassembly-function">name of the WebAssembly function</dfn> <var>funcaddr</var> is found by performing the following steps:
<ol>
<li data-md>
<p>Let <var>store</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent②⑦">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store②④">associated store</a>.</p>
<li data-md>
<p>Let <var>funcinst</var> be <var>store</var>.funcs[<var>funcaddr</var>].</p>
<li data-md>
<p>If <var>funcinst</var> is of the form {type <var>functype</var>, hostcode <var>hostfunc</var>},</p>
<ol>
<li data-md>
<p class="assertion">Assert: <var>hostfunc</var> is a JavaScript object and <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/abstract-operations.html#sec-iscallable" id="ref-for-sec-iscallable①">IsCallable</a>(<var>hostfunc</var>) is true.</p>
<li data-md>
<p>Let <var>index</var> be the <a data-link-type="dfn" href="#index-of-the-host-function" id="ref-for-index-of-the-host-function">index of the host function</a> <var>funcaddr</var>.</p>
</ol>
<li data-md>
<p>Otherwise,</p>
<ol>
<li data-md>
<p>Let <var>moduleinst</var> be <var>funcinst</var>.module.</p>
<li data-md>
<p class="assertion">Assert: <var>funcaddr</var> is contained in <var>moduleinst</var>.funcaddrs.</p>
<li data-md>
<p>Let <var>index</var> be the index of <var>moduleinst</var>.funcaddrs where <var>funcaddr</var> is found.</p>
</ol>
<li data-md>
<p>Return <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands②②">!</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/abstract-operations.html#sec-tostring" id="ref-for-sec-tostring">ToString</a>(<var>index</var>).</p>
</ol>
</div>
<div class="algorithm" data-algorithm="a new Exported Function">
To create <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="a-new-exported-function">a new Exported Function</dfn> from a WebAssembly <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-funcaddr" id="ref-for-syntax-funcaddr②">function address</a> <var>funcaddr</var>, perform the following steps:
<ol>
<li data-md>
<p>Let <var>map</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent②⑧">surrounding agent</a>’s associated <a data-link-type="dfn" href="#exported-function-cache" id="ref-for-exported-function-cache">Exported Function cache</a>.</p>
<li data-md>
<p>If <var>map</var>[<var>funcaddr</var>] <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-exists" id="ref-for-map-exists①③">exists</a>,</p>
<ol>
<li data-md>
<p>Return <var>map</var>[<var>funcaddr</var>].</p>
</ol>
<li data-md>
<p>Let <var>steps</var> be "<a data-link-type="dfn" href="#call-an-exported-function" id="ref-for-call-an-exported-function">call the Exported Function</a> <var>funcaddr</var> with arguments."</p>
<li data-md>
<p>Let <var>realm</var> be the <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#current-realm" id="ref-for-current-realm">current Realm</a>.</p>
<li data-md>
<p>Let <var>store</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent②⑨">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store②⑤">associated store</a>.</p>
<li data-md>
<p>Let <var>functype</var> be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-func-type" id="ref-for-embed-func-type">func_type</a>(<var>store</var>, <var>funcaddr</var>).</p>
<li data-md>
<p>Let [<var>paramTypes</var>] → [<var>resultTypes</var>] be <var>functype</var>.</p>
<li data-md>
<p>Let <var>arity</var> be <var>paramTypes</var>’s <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-size" id="ref-for-list-size">size</a>.</p>
<li data-md>
<p>Let <var>name</var> be the <a data-link-type="dfn" href="#name-of-the-webassembly-function" id="ref-for-name-of-the-webassembly-function">name of the WebAssembly function</a> <var>funcaddr</var>.</p>
<li data-md>
<p>Let <var>function</var> be <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands②③">!</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/ordinary-and-exotic-objects-behaviours.html#sec-createbuiltinfunction" id="ref-for-sec-createbuiltinfunction">CreateBuiltinFunction</a>(<var>steps</var>, <var>arity</var>, <var>name</var>, « [[FunctionAddress]] », <var>realm</var>).</p>
<li data-md>
<p>Set <var>function</var>.[[FunctionAddress]] to <var>funcaddr</var>.</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-set" id="ref-for-map-set⑤">Set</a> <var>map</var>[<var>funcaddr</var>] to <var>function</var>.</p>
<li data-md>
<p>Return <var>function</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="call an Exported Function">
To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="call-an-exported-function">call an Exported Function</dfn> with <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-funcaddr" id="ref-for-syntax-funcaddr③">function address</a> <var>funcaddr</var> and a <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list" id="ref-for-list①">list</a> of JavaScript arguments <var>argValues</var>, perform the following steps:
<ol>
<li data-md>
<p>Let <var>store</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent③⓪">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store②⑥">associated store</a>.</p>
<li data-md>
<p>Let <var>functype</var> be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-func-type" id="ref-for-embed-func-type①">func_type</a>(<var>store</var>, <var>funcaddr</var>).</p>
<li data-md>
<p>Let [<var>parameters</var>] → [<var>results</var>] be <var>functype</var>.</p>
<li data-md>
<p>If any type in <var>parameters</var> or <var>results</var> <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/valid/matching.html#match-valtype" id="ref-for-match-valtype③">matches</a> <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#vector-types" id="ref-for-vector-types⑤">v128</a> or <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype" id="ref-for-syntax-reftype⑧">exnref</a>, throw a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-typeerror" id="ref-for-sec-native-error-types-used-in-this-standard-typeerror①③">TypeError</a></code>.</p>
<p class="note" role="note"><span class="marker">Note:</span> the above error is thrown each time the [[Call]] method is invoked.</p>
<li data-md>
<p>Let <var>args</var> be « ».</p>
<li data-md>
<p>Let <var>i</var> be 0.</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-iterate" id="ref-for-list-iterate⑧">For each</a> <var>t</var> of <var>parameters</var>,</p>
<ol>
<li data-md>
<p>If <var>argValues</var>’s <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-size" id="ref-for-list-size①">size</a> > <var>i</var>, let <var>arg</var> be <var>argValues</var>[<var>i</var>].</p>
<li data-md>
<p>Otherwise, let <var>arg</var> be undefined.</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-append" id="ref-for-list-append⑧">Append</a> <a data-link-type="dfn" href="#towebassemblyvalue" id="ref-for-towebassemblyvalue⑦">ToWebAssemblyValue</a>(<var>arg</var>, <var>t</var>) to <var>args</var>.</p>
<li data-md>
<p>Set <var>i</var> to <var>i</var> + 1.</p>
</ol>
<li data-md>
<p>Let (<var>store</var>, <var>ret</var>) be the result of <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-func-invoke" id="ref-for-embed-func-invoke">func_invoke</a>(<var>store</var>, <var>funcaddr</var>, <var>args</var>).</p>
<li data-md>
<p>Set the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent③①">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store②⑦">associated store</a> to <var>store</var>.</p>
<li data-md>
<p>If <var>ret</var> is <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-error" id="ref-for-embed-error①⑧">error</a>, throw an exception. This exception should be a WebAssembly <code class="idl"><a data-link-type="idl" href="#exceptiondef-runtimeerror" id="ref-for-exceptiondef-runtimeerror①">RuntimeError</a></code> exception, unless otherwise indicated by <a href="#errors">the WebAssembly error mapping</a>.</p>
<li data-md>
<p>If <var>ret</var> is <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#dfn-throw" id="ref-for-dfn-throw②">THROW</a> <a data-link-type="dfn" data-refhint-key="b0f69a43" href="https://webassembly.github.io/spec/core/exec/runtime.html#values" id="ref-for-values①">ref.exn</a> <var>exnaddr</var>, then</p>
<ol>
<li data-md>
<p>Let <var>tagaddr</var> be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-exn-tag" id="ref-for-embed-exn-tag">exn_tag</a>(<var>store</var>, <var>exnaddr</var>).</p>
<li data-md>
<p>Let <var>payload</var> be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-exn-read" id="ref-for-embed-exn-read">exn_read</a>(<var>store</var>, <var>exnaddr</var>).</p>
<li data-md>
<p>Let <var>jsTagAddr</var> be the result of <a data-link-type="dfn" href="#get-the-javascript-exception-tag" id="ref-for-get-the-javascript-exception-tag①">getting the JavaScript exception tag</a>.</p>
<li data-md>
<p>If <var>tagaddr</var> is equal to <var>jsTagAddr</var>,</p>
<ol>
<li data-md>
<p>Throw the result of <a data-link-type="dfn" href="#retrieving-a-host-value" id="ref-for-retrieving-a-host-value">retrieving a host value</a> from <var>payload</var>[0].</p>
</ol>
<li data-md>
<p>Otherwise,</p>
<ol>
<li data-md>
<p>Let <var>exception</var> be <a data-link-type="dfn" href="#create-an-exception-object" id="ref-for-create-an-exception-object">a new Exception</a> created from <var>exnaddr</var>.</p>
<li data-md>
<p>Throw <var>exception</var>.</p>
</ol>
</ol>
<li data-md>
<p>Let <var>outArity</var> be the <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-size" id="ref-for-list-size②">size</a> of <var>ret</var>.</p>
<li data-md>
<p>If <var>outArity</var> is 0, return undefined.</p>
<li data-md>
<p>Otherwise, if <var>outArity</var> is 1, return <a data-link-type="dfn" href="#tojsvalue" id="ref-for-tojsvalue②">ToJSValue</a>(<var>ret</var>[0]).</p>
<li data-md>
<p>Otherwise,</p>
<ol>
<li data-md>
<p>Let <var>values</var> be « ».</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-iterate" id="ref-for-list-iterate⑨">For each</a> <var>r</var> of <var>ret</var>,</p>
<ol>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-append" id="ref-for-list-append⑨">Append</a> <a data-link-type="dfn" href="#tojsvalue" id="ref-for-tojsvalue③">ToJSValue</a>(<var>r</var>) to <var>values</var>.</p>
</ol>
<li data-md>
<p>Return <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/abstract-operations.html#sec-createarrayfromlist" id="ref-for-sec-createarrayfromlist">CreateArrayFromList</a>(<var>values</var>).</p>
</ol>
</ol>
</div>
<p class="note" role="note"><span class="marker">Note:</span> <a data-link-type="dfn" href="#call-an-exported-function" id="ref-for-call-an-exported-function①">Calling an Exported Function</a> executes in the [[Realm]] of the callee Exported Function, as per the definition of <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-built-in-function-objects" id="ref-for-sec-built-in-function-objects①">built-in function objects</a>.</p>
<p class="note" role="note"><span class="marker">Note:</span> Exported Functions do not have a [[Construct]] method and thus it is not possible to call one with the <code>new</code> operator.</p>
<div class="algorithm" data-algorithm="run a host function">
To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="run-a-host-function">run a host function</dfn> from the JavaScript object <var>func</var>, type <var>functype</var>, and <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list" id="ref-for-list②">list</a> of <a data-link-type="dfn" data-refhint-key="8390efce" href="https://webassembly.github.io/spec/core/exec/runtime.html#values" id="ref-for-values②">WebAssembly values</a> <var>arguments</var>, perform the following steps:
<ol>
<li data-md>
<p>Let [<var>parameters</var>] → [<var>results</var>] be <var>functype</var>.</p>
<li data-md>
<p>If any type in <var>parameters</var> or <var>results</var> <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/valid/matching.html#match-valtype" id="ref-for-match-valtype④">matches</a> <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#vector-types" id="ref-for-vector-types⑥">v128</a> or <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype" id="ref-for-syntax-reftype⑨">exnref</a>, throw a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-typeerror" id="ref-for-sec-native-error-types-used-in-this-standard-typeerror①④">TypeError</a></code>.</p>
<li data-md>
<p>Let <var>jsArguments</var> be « ».</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-iterate" id="ref-for-list-iterate①⓪">For each</a> <var>arg</var> of <var>arguments</var>,</p>
<ol>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-append" id="ref-for-list-append①⓪">Append</a> <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands②④">!</a> <a data-link-type="dfn" href="#tojsvalue" id="ref-for-tojsvalue④">ToJSValue</a>(<var>arg</var>) to <var>jsArguments</var>.</p>
</ol>
<li data-md>
<p>Let <var>ret</var> be <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands②⑤">?</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/abstract-operations.html#sec-call" id="ref-for-sec-call">Call</a>(<var>func</var>, undefined, <var>jsArguments</var>).</p>
<li data-md>
<p>Let <var>resultsSize</var> be <var>results</var>’s <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-size" id="ref-for-list-size③">size</a>.</p>
<li data-md>
<p>If <var>resultsSize</var> is 0, return « ».</p>
<li data-md>
<p>Otherwise, if <var>resultsSize</var> is 1, return « <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands②⑥">?</a> <a data-link-type="dfn" href="#towebassemblyvalue" id="ref-for-towebassemblyvalue⑧">ToWebAssemblyValue</a>(<var>ret</var>, <var>results</var>[0]) ».</p>
<li data-md>
<p>Otherwise,</p>
<ol>
<li data-md>
<p>Let <var>method</var> be <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands②⑦">?</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/abstract-operations.html#sec-getmethod" id="ref-for-sec-getmethod">GetMethod</a>(<var>ret</var>, <code class="idl"><a data-link-type="idl" href="https://tc39.es/ecma262/multipage/ecmascript-data-types-and-values.html#sec-well-known-symbols" id="ref-for-sec-well-known-symbols">%Symbol.iterator%</a></code>).</p>
<li data-md>
<p>If <var>method</var> is undefined, <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#dfn-throw" id="ref-for-dfn-throw③">throw</a> a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-typeerror" id="ref-for-sec-native-error-types-used-in-this-standard-typeerror①⑤">TypeError</a></code>.</p>
<li data-md>
<p>Let <var>values</var> be <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands②⑧">?</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/abstract-operations.html#sec-iteratortolist" id="ref-for-sec-iteratortolist">IteratorToList</a>(<a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands②⑨">?</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/abstract-operations.html#sec-getiteratorfrommethod" id="ref-for-sec-getiteratorfrommethod">GetIteratorFromMethod</a>(<var>ret</var>, <var>method</var>)).</p>
<li data-md>
<p>Let <var>wasmValues</var> be a new, empty <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list" id="ref-for-list③">list</a>.</p>
<li data-md>
<p>If <var>values</var>’s <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-size" id="ref-for-list-size④">size</a> is not <var>resultsSize</var>, throw a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-typeerror" id="ref-for-sec-native-error-types-used-in-this-standard-typeerror①⑥">TypeError</a></code> exception.</p>
<li data-md>
<p>For each <var>value</var> and <var>resultType</var> in <var>values</var> and <var>results</var>, paired linearly,</p>
<ol>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-append" id="ref-for-list-append①①">Append</a> <a data-link-type="dfn" href="#towebassemblyvalue" id="ref-for-towebassemblyvalue⑨">ToWebAssemblyValue</a>(<var>value</var>, <var>resultType</var>) to <var>wasmValues</var>.</p>
</ol>
<li data-md>
<p>Return <var>wasmValues</var>.</p>
</ol>
</ol>
</div>
<div class="algorithm" data-algorithm="create a host function">
To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="create-a-host-function">create a host function</dfn> from the JavaScript object <var>func</var> and type <var>functype</var>, perform the following steps:
<ol>
<li data-md>
<p class="assertion">Assert: <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/abstract-operations.html#sec-iscallable" id="ref-for-sec-iscallable②">IsCallable</a>(<var>func</var>).</p>
<li data-md>
<p>Let <var>stored settings</var> be the <a data-link-type="dfn" href="https://html.spec.whatwg.org/multipage/webappapis.html#incumbent-settings-object" id="ref-for-incumbent-settings-object">incumbent settings object</a>.</p>
<li data-md>
<p>Let <var>hostfunc</var> be a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-hostfunc" id="ref-for-syntax-hostfunc">host function</a> which performs the following steps when called with arguments <var>arguments</var>:</p>
<ol>
<li data-md>
<p>Let <var>realm</var> be <var>func</var>’s <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#dfn-associated-realm" id="ref-for-dfn-associated-realm">associated Realm</a>.</p>
<li data-md>
<p>Let <var>relevant settings</var> be <var>realm</var>’s <a data-link-type="dfn" href="https://html.spec.whatwg.org/multipage/webappapis.html#concept-realm-settings-object" id="ref-for-concept-realm-settings-object">settings object</a>.</p>
<li data-md>
<p><a data-link-type="dfn" href="https://html.spec.whatwg.org/multipage/webappapis.html#prepare-to-run-script" id="ref-for-prepare-to-run-script">Prepare to run script</a> with <var>relevant settings</var>.</p>
<li data-md>
<p><a data-link-type="dfn" href="https://html.spec.whatwg.org/multipage/webappapis.html#prepare-to-run-a-callback" id="ref-for-prepare-to-run-a-callback">Prepare to run a callback</a> with <var>stored settings</var>.</p>
<li data-md>
<p>Let <var>result</var> be the result of <a data-link-type="dfn" href="#run-a-host-function" id="ref-for-run-a-host-function">running a host function</a> from <var>func</var>, <var>functype</var>, and <var>arguments</var>.</p>
<li data-md>
<p><a data-link-type="dfn" href="https://html.spec.whatwg.org/multipage/webappapis.html#clean-up-after-running-a-callback" id="ref-for-clean-up-after-running-a-callback">Clean up after running a callback</a> with <var>stored settings</var>.</p>
<li data-md>
<p><a data-link-type="dfn" href="https://html.spec.whatwg.org/multipage/webappapis.html#clean-up-after-running-script" id="ref-for-clean-up-after-running-script">Clean up after running script</a> with <var>relevant settings</var>.</p>
<li data-md>
<p class="assertion">Assert: <var>result</var>.[[Type]] is <emu-const>throw</emu-const> or <emu-const>normal</emu-const>.</p>
<li data-md>
<p>Let <var>store</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent③②">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store②⑧">associated store</a>.</p>
<li data-md>
<p>If <var>result</var>.[[Type]] is <emu-const>throw</emu-const>, then:</p>
<ol>
<li data-md>
<p>Let <var>v</var> be <var>result</var>.[[Value]].</p>
<li data-md>
<p>If <var>v</var> <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#implements" id="ref-for-implements④">implements</a> <code class="idl"><a data-link-type="idl" href="#exception" id="ref-for-exception①">Exception</a></code>,</p>
<ol>
<li data-md>
<p>Let <var>address</var> be <var>v</var>.[[Address]].</p>
</ol>
<li data-md>
<p>Otherwise,</p>
<ol>
<li data-md>
<p>Let <var>type</var> be the result of <a data-link-type="dfn" href="#get-the-javascript-exception-tag" id="ref-for-get-the-javascript-exception-tag②">getting the JavaScript exception tag</a>.</p>
<li data-md>
<p>Let <var>payload</var> be <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands③⓪">!</a> <a data-link-type="dfn" href="#towebassemblyvalue" id="ref-for-towebassemblyvalue①⓪">ToWebAssemblyValue</a>(<var>v</var>, <a data-link-type="dfn" data-refhint-key="92193adb" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype" id="ref-for-syntax-reftype①⓪">externref</a>).</p>
<li data-md>
<p>Let (<var>store</var>, <var>address</var>) be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-exn-alloc" id="ref-for-embed-exn-alloc">exn_alloc</a>(<var>store</var>, <var>type</var>, « <var>payload</var> »).</p>
<li data-md>
<p>Set the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent③③">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store②⑨">associated store</a> to <var>store</var>.</p>
</ol>
<li data-md>
<p>Execute the WebAssembly instructions (<a data-link-type="dfn" data-refhint-key="b0f69a43" href="https://webassembly.github.io/spec/core/exec/runtime.html#values" id="ref-for-values③">ref.exn</a> <var>address</var>) (<a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/instructions.html#exec-throw-ref" id="ref-for-exec-throw-ref">throw_ref</a>).</p>
</ol>
<li data-md>
<p>Otherwise, return <var>result</var>.[[Value]].</p>
</ol>
<li data-md>
<p>Let (<var>store</var>, <var>funcaddr</var>) be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-func-alloc" id="ref-for-embed-func-alloc">func_alloc</a>(<var>store</var>, <var>functype</var>, <var>hostfunc</var>).</p>
<li data-md>
<p>Set the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent③④">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store③⓪">associated store</a> to <var>store</var>.</p>
<li data-md>
<p>Return <var>funcaddr</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="ToJSValue">
The algorithm <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="tojsvalue">ToJSValue</dfn>(<var>w</var>) coerces a <a data-link-type="dfn" data-refhint-key="8390efce" href="https://webassembly.github.io/spec/core/exec/runtime.html#values" id="ref-for-values④">WebAssembly value</a> to a JavaScript value by performing the following steps:
<ol>
<li data-md>
<p class="assertion">Assert: <var>w</var> is not of the form <a data-link-type="dfn" data-refhint-key="5e745a1a" href="https://webassembly.github.io/spec/core/exec/runtime.html#values" id="ref-for-values⑤">v128.const</a> <var>v128</var>.</p>
<li data-md>
<p class="assertion">Assert: <var>w</var> is not of the form <a data-link-type="dfn" data-refhint-key="b0f69a43" href="https://webassembly.github.io/spec/core/exec/runtime.html#values" id="ref-for-values⑥">ref.exn</a> <var>exnaddr</var>.</p>
<li data-md>
<p>If <var>w</var> is of the form <a data-link-type="dfn" data-refhint-key="74913b16" href="https://webassembly.github.io/spec/core/exec/runtime.html#values" id="ref-for-values⑦">i64.const</a> <var>u64</var>,</p>
<ol>
<li data-md>
<p>Let <var>i64</var> be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/numerics.html#aux-signed" id="ref-for-aux-signed">signed_64</a>(<var>u64</var>).</p>
<li data-md>
<p>Return <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#ℤ" id="ref-for-ℤ"></a>(<var>i64</var> interpreted as a <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#mathematical-value" id="ref-for-mathematical-value">mathematical value</a>).</p>
</ol>
<li data-md>
<p>If <var>w</var> is of the form <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#values" id="ref-for-values⑧">i32.const</a> <var>u32</var>,</p>
<ol>
<li data-md>
<p>Let <var>i32</var> be <a data-link-type="dfn" data-refhint-key="71830f3f" href="https://webassembly.github.io/spec/core/exec/numerics.html#aux-signed" id="ref-for-aux-signed①">signed_32</a>(<var>u32</var>).</p>
<li data-md>
<p>Return <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#𝔽" id="ref-for-𝔽">𝔽</a>(<var>i32</var> interpreted as a <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#mathematical-value" id="ref-for-mathematical-value①">mathematical value</a>).</p>
</ol>
<li data-md>
<p>If <var>w</var> is of the form <a data-link-type="dfn" data-refhint-key="dfe8fce9" href="https://webassembly.github.io/spec/core/exec/runtime.html#values" id="ref-for-values⑨">f32.const</a> <var>f32</var>,</p>
<ol>
<li data-md>
<p>If <var>f32</var> is <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/values.html#syntax-float" id="ref-for-syntax-float">+∞</a> or <a data-link-type="dfn" data-refhint-key="fd8a763c" href="https://webassembly.github.io/spec/core/syntax/values.html#syntax-float" id="ref-for-syntax-float①">−∞</a>, return <strong>+∞</strong><sub>𝔽</sub> or <strong>-∞</strong><sub>𝔽</sub>, respectively.</p>
<li data-md>
<p>If <var>f32</var> is <a data-link-type="dfn" data-refhint-key="8b33b0c0" href="https://webassembly.github.io/spec/core/syntax/values.html#syntax-float" id="ref-for-syntax-float②">nan</a>, return <strong>NaN</strong>.</p>
<li data-md>
<p>Return <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#𝔽" id="ref-for-𝔽①">𝔽</a>(<var>f32</var> interpreted as a <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#mathematical-value" id="ref-for-mathematical-value②">mathematical value</a>).</p>
</ol>
<li data-md>
<p>If <var>w</var> is of the form <a data-link-type="dfn" data-refhint-key="f2c8868c" href="https://webassembly.github.io/spec/core/exec/runtime.html#values" id="ref-for-values①⓪">f64.const</a> <var>f64</var>,</p>
<ol>
<li data-md>
<p>If <var>f64</var> is <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/values.html#syntax-float" id="ref-for-syntax-float③">+∞</a> or <a data-link-type="dfn" data-refhint-key="fd8a763c" href="https://webassembly.github.io/spec/core/syntax/values.html#syntax-float" id="ref-for-syntax-float④">−∞</a>, return <strong>+∞</strong><sub>𝔽</sub> or <strong>-∞</strong><sub>𝔽</sub>, respectively.</p>
<li data-md>
<p>If <var>f64</var> is <a data-link-type="dfn" data-refhint-key="8b33b0c0" href="https://webassembly.github.io/spec/core/syntax/values.html#syntax-float" id="ref-for-syntax-float⑤">nan</a>, return <strong>NaN</strong>.</p>
<li data-md>
<p>Return <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#𝔽" id="ref-for-𝔽②">𝔽</a>(<var>f64</var> interpreted as a <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#mathematical-value" id="ref-for-mathematical-value③">mathematical value</a>).</p>
</ol>
<li data-md>
<p>If <var>w</var> is of the form <a data-link-type="dfn" data-refhint-key="6b9f083b" href="https://webassembly.github.io/spec/core/exec/runtime.html#values" id="ref-for-values①①">ref.null</a> <var>t</var>, return null.</p>
<li data-md>
<p>If <var>w</var> is of the form <a data-link-type="dfn" data-refhint-key="2a855222" href="https://webassembly.github.io/spec/core/exec/runtime.html#values" id="ref-for-values①②">ref.i31</a> <var>u31</var>,</p>
<ol>
<li data-md>
<p>Let <var>i31</var> be <a data-link-type="dfn" data-refhint-key="87dd702b" href="https://webassembly.github.io/spec/core/exec/numerics.html#aux-signed" id="ref-for-aux-signed②">signed_31</a>(<var>u31</var>).</p>
<li data-md>
<p>Let return <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#𝔽" id="ref-for-𝔽③">𝔽</a>(<var>i31</var>).</p>
</ol>
<li data-md>
<p>If <var>w</var> is of the form <a data-link-type="dfn" data-refhint-key="4a3b2658" href="https://webassembly.github.io/spec/core/exec/runtime.html#values" id="ref-for-values①③">ref.struct</a> <var>structaddr</var>, return the result of creating <a data-link-type="dfn" href="#a-new-exported-gc-object" id="ref-for-a-new-exported-gc-object">a new Exported GC Object</a> from <var>structaddr</var> and "struct".</p>
<li data-md>
<p>If <var>w</var> is of the form <a data-link-type="dfn" data-refhint-key="b73131e1" href="https://webassembly.github.io/spec/core/exec/runtime.html#values" id="ref-for-values①④">ref.array</a> <var>arrayaddr</var>, return the result of creating <a data-link-type="dfn" href="#a-new-exported-gc-object" id="ref-for-a-new-exported-gc-object①">a new Exported GC Object</a> from <var>arrayaddr</var> and "array".</p>
<li data-md>
<p>If <var>w</var> is of the form <a data-link-type="dfn" data-refhint-key="e4a6ca14" href="https://webassembly.github.io/spec/core/exec/runtime.html#values" id="ref-for-values①⑤">ref.func</a> <var>funcaddr</var>, return the result of creating <a data-link-type="dfn" href="#a-new-exported-function" id="ref-for-a-new-exported-function①">a new Exported Function</a> from <var>funcaddr</var>.</p>
<li data-md>
<p>If <var>w</var> is of the form <a data-link-type="dfn" data-refhint-key="eba518e9" href="https://webassembly.github.io/spec/core/exec/runtime.html#values" id="ref-for-values①⑥">ref.host</a> <var>hostaddr</var>, return the result of <a data-link-type="dfn" href="#retrieving-a-host-value" id="ref-for-retrieving-a-host-value①">retrieving a host value</a> from <var>hostaddr</var>.</p>
<li data-md>
<p>If <var>w</var> is of the form <a data-link-type="dfn" data-refhint-key="f3505c41" href="https://webassembly.github.io/spec/core/exec/runtime.html#values" id="ref-for-values①⑦">ref.extern</a> <var>ref</var>, return <a data-link-type="dfn" href="#tojsvalue" id="ref-for-tojsvalue⑤">ToJSValue</a>(<var>ref</var>).</p>
</ol>
<p class="note" role="note"><span class="marker">Note:</span> Number values which are equal to NaN may have various observable NaN payloads; see <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/structured-data.html#sec-numerictorawbytes" id="ref-for-sec-numerictorawbytes">NumericToRawBytes</a> for details.</p>
</div>
<div class="algorithm" data-algorithm="retrieving a host value">
<p>For <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="retrieving-a-host-value">retrieving a host value</dfn> from an <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-hostaddr" id="ref-for-syntax-hostaddr①">host address</a> <var>hostaddr</var>, perform the following steps:</p>
<ol>
<li data-md>
<p>Let <var>map</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent③⑤">surrounding agent</a>’s associated <a data-link-type="dfn" href="#host-value-cache" id="ref-for-host-value-cache">host value cache</a>.</p>
<li data-md>
<p class="assertion">Assert: <var>map</var>[<var>hostaddr</var>] <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-exists" id="ref-for-map-exists①④">exists</a>.</p>
<li data-md>
<p>Return <var>map</var>[<var>hostaddr</var>].</p>
</ol>
</div>
<div class="algorithm" data-algorithm="ToWebAssemblyValue">
The algorithm <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="towebassemblyvalue">ToWebAssemblyValue</dfn>(<var>v</var>, <var>type</var>) coerces a JavaScript value to a <a data-link-type="dfn" data-refhint-key="8390efce" href="https://webassembly.github.io/spec/core/exec/runtime.html#values" id="ref-for-values①⑧">WebAssembly value</a> by performing the following steps:
<ol>
<li data-md>
<p class="assertion">Assert: <var>type</var> is not <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#vector-types" id="ref-for-vector-types⑦">v128</a>.</p>
<li data-md>
<p class="assertion">Assert: <var>type</var> does not <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/valid/matching.html#match-valtype" id="ref-for-match-valtype⑤">match</a> <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype" id="ref-for-syntax-reftype①①">exnref</a>.</p>
<li data-md>
<p>If <var>type</var> is <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-numtype" id="ref-for-syntax-numtype⑧">i64</a>,</p>
<ol>
<li data-md>
<p>Let <var>i64</var> be <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands③①">?</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/abstract-operations.html#sec-tobigint64" id="ref-for-sec-tobigint64">ToBigInt64</a>(<var>v</var>).</p>
<li data-md>
<p>Let <var>u64</var> be the unsigned integer such that <var>i64</var> is <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/numerics.html#aux-signed" id="ref-for-aux-signed③">signed_64</a>(<var>u64</var>).</p>
<li data-md>
<p>Return <a data-link-type="dfn" data-refhint-key="74913b16" href="https://webassembly.github.io/spec/core/exec/runtime.html#values" id="ref-for-values①⑨">i64.const</a> <var>u64</var>.</p>
</ol>
<li data-md>
<p>If <var>type</var> is <a data-link-type="dfn" data-refhint-key="1eccdce5" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-numtype" id="ref-for-syntax-numtype⑨">i32</a>,</p>
<ol>
<li data-md>
<p>Let <var>i32</var> be <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands③②">?</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/abstract-operations.html#sec-toint32" id="ref-for-sec-toint32">ToInt32</a>(<var>v</var>).</p>
<li data-md>
<p>Let <var>u32</var> be the unsigned integer such that <var>i32</var> is <a data-link-type="dfn" data-refhint-key="71830f3f" href="https://webassembly.github.io/spec/core/exec/numerics.html#aux-signed" id="ref-for-aux-signed④">signed_32</a>(<var>u32</var>).</p>
<li data-md>
<p>Return <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#values" id="ref-for-values②⓪">i32.const</a> <var>u32</var>.</p>
</ol>
<li data-md>
<p>If <var>type</var> is <a data-link-type="dfn" data-refhint-key="a4646532" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-numtype" id="ref-for-syntax-numtype①⓪">f32</a>,</p>
<ol>
<li data-md>
<p>Let <var>number</var> be <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands③③">?</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/abstract-operations.html#sec-tonumber" id="ref-for-sec-tonumber">ToNumber</a>(<var>v</var>).</p>
<li data-md>
<p>If <var>number</var> is <strong>NaN</strong>,</p>
<ol>
<li data-md>
<p>Let <var>n</var> be an implementation-defined integer such that <a data-link-type="dfn" data-refhint-key="00c2566d" href="https://webassembly.github.io/spec/core/syntax/values.html#syntax-float" id="ref-for-syntax-float⑥">canon</a><sub>32</sub><var>n</var> &lt; 2<sup><a data-link-type="dfn" data-refhint-key="e4515620" href="https://webassembly.github.io/spec/core/syntax/values.html#syntax-float" id="ref-for-syntax-float⑦">signif</a>(32)</sup>.</p>
<li data-md>
<p>Let <var>f32</var> be <a data-link-type="dfn" data-refhint-key="8b33b0c0" href="https://webassembly.github.io/spec/core/syntax/values.html#syntax-float" id="ref-for-syntax-float⑧">nan</a>(n).</p>
</ol>
<li data-md>
<p>Otherwise,</p>
<ol>
<li data-md>
<p>Let <var>f32</var> be <var>number</var> rounded to the nearest representable value using IEEE 754-2019 round to nearest, ties to even mode. <a data-link-type="biblio" href="#biblio-ieee-754" title="IEEE Standard for Floating-Point Arithmetic">[IEEE-754]</a></p>
</ol>
<li data-md>
<p>Return <a data-link-type="dfn" data-refhint-key="dfe8fce9" href="https://webassembly.github.io/spec/core/exec/runtime.html#values" id="ref-for-values②①">f32.const</a> <var>f32</var>.</p>
</ol>
<li data-md>
<p>If <var>type</var> is <a data-link-type="dfn" data-refhint-key="487b76fe" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-numtype" id="ref-for-syntax-numtype①①">f64</a>,</p>
<ol>
<li data-md>
<p>Let <var>number</var> be <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands③④">?</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/abstract-operations.html#sec-tonumber" id="ref-for-sec-tonumber①">ToNumber</a>(<var>v</var>).</p>
<li data-md>
<p>If <var>number</var> is <strong>NaN</strong>,</p>
<ol>
<li data-md>
<p>Let <var>n</var> be an implementation-defined integer such that <a data-link-type="dfn" data-refhint-key="00c2566d" href="https://webassembly.github.io/spec/core/syntax/values.html#syntax-float" id="ref-for-syntax-float⑨">canon</a><sub>64</sub><var>n</var> &lt; 2<sup><a data-link-type="dfn" data-refhint-key="e4515620" href="https://webassembly.github.io/spec/core/syntax/values.html#syntax-float" id="ref-for-syntax-float①⓪">signif</a>(64)</sup>.</p>
<li data-md>
<p>Let <var>f64</var> be <a data-link-type="dfn" data-refhint-key="8b33b0c0" href="https://webassembly.github.io/spec/core/syntax/values.html#syntax-float" id="ref-for-syntax-float①①">nan</a>(n).</p>
</ol>
<li data-md>
<p>Otherwise,</p>
<ol>
<li data-md>
<p>Let <var>f64</var> be <var>number</var>.</p>
</ol>
<li data-md>
<p>Return <a data-link-type="dfn" data-refhint-key="f2c8868c" href="https://webassembly.github.io/spec/core/exec/runtime.html#values" id="ref-for-values②②">f64.const</a> <var>f64</var>.</p>
</ol>
<li data-md>
<p>If <var>type</var> is of the form <a data-link-type="dfn" data-refhint-key="a130a533" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype" id="ref-for-syntax-reftype①②">ref</a> <var>null</var> <var>heaptype</var>,</p>
<ol>
<li data-md>
<p>If <var>v</var> is null,</p>
<ol>
<li data-md>
<p>Let <var>r</var> be <a data-link-type="dfn" data-refhint-key="6b9f083b" href="https://webassembly.github.io/spec/core/exec/runtime.html#values" id="ref-for-values②③">ref.null</a> <var>heaptype</var>.</p>
</ol>
<li data-md>
<p>Else if <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-match-valtype" id="ref-for-embed-match-valtype">match_valtype</a>(<var>type</var>, <a data-link-type="dfn" data-refhint-key="a130a533" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype" id="ref-for-syntax-reftype①③">ref</a> <var>null</var> <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#heap-types" id="ref-for-heap-types">extern</a>),</p>
<ol>
<li data-md>
<p>Let <var>ref</var> be <a data-link-type="dfn" href="#towebassemblyvalue" id="ref-for-towebassemblyvalue①①">ToWebAssemblyValue</a>(<var>v</var>, <a data-link-type="dfn" data-refhint-key="a130a533" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype" id="ref-for-syntax-reftype①④">ref</a> <a data-link-type="dfn" data-refhint-key="f4809bf4" href="https://webassembly.github.io/spec/core/syntax/types.html#heap-types" id="ref-for-heap-types①">any</a>).</p>
<li data-md>
<p>Let <var>r</var> be <a data-link-type="dfn" data-refhint-key="f3505c41" href="https://webassembly.github.io/spec/core/exec/runtime.html#values" id="ref-for-values②④">ref.extern</a> <var>ref</var>.</p>
</ol>
<li data-md>
<p>Else if <var>v</var> is an <a data-link-type="dfn" href="#exported-function" id="ref-for-exported-function②">Exported Function</a> and <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-match-valtype" id="ref-for-embed-match-valtype①">match_valtype</a>(<var>type</var>, <a data-link-type="dfn" data-refhint-key="a130a533" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype" id="ref-for-syntax-reftype①⑤">ref</a> <var>null</var> <a data-link-type="dfn" data-refhint-key="cf0d7dd8" href="https://webassembly.github.io/spec/core/syntax/types.html#heap-types" id="ref-for-heap-types②">func</a>),</p>
<ol>
<li data-md>
<p>Let <var>funcaddr</var> be the value of <var>v</var>’s [[FunctionAddress]] internal slot.</p>
<li data-md>
<p>Let <var>r</var> be <a data-link-type="dfn" data-refhint-key="e4a6ca14" href="https://webassembly.github.io/spec/core/exec/runtime.html#values" id="ref-for-values②⑤">ref.func</a> <var>funcaddr</var>.</p>
</ol>
<li data-md>
<p>Else if <var>v</var> <a data-link-type="dfn" data-refhint-key="866f3068" href="https://tc39.github.io/ecma262/#sec-ecmascript-language-types-number-type" id="ref-for-sec-ecmascript-language-types-number-type①">is a Number</a> and <var>v</var> is equal to <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands③⑤">?</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/abstract-operations.html#sec-toint32" id="ref-for-sec-toint32①">ToInt32</a>(<var>v</var>) and <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#ℝ" id="ref-for-ℝ"></a>(<var>v</var>) &lt; 2<sup>30</sup> and <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#ℝ" id="ref-for-ℝ①"></a>(<var>v</var>) ⩾ -2<sup>30</sup>,</p>
<ol>
<li data-md>
<p>Let <var>i31</var> <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands③⑥">?</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/abstract-operations.html#sec-toint32" id="ref-for-sec-toint32②">ToInt32</a>(<var>v</var>).</p>
<li data-md>
<p>Let <var>u31</var> be the unsigned integer such that <var>i31</var> is <a data-link-type="dfn" data-refhint-key="87dd702b" href="https://webassembly.github.io/spec/core/exec/numerics.html#aux-signed" id="ref-for-aux-signed⑤">signed_31</a>(<var>i31</var>).</p>
<li data-md>
<p>Let <var>r</var> be <a data-link-type="dfn" data-refhint-key="2a855222" href="https://webassembly.github.io/spec/core/exec/runtime.html#values" id="ref-for-values②⑥">ref.i31</a> <var>u31</var>.</p>
</ol>
<li data-md>
<p>Else if <var>v</var> is an <a data-link-type="dfn" href="#exported-gc-object" id="ref-for-exported-gc-object①">Exported GC Object</a>,</p>
<ol>
<li data-md>
<p>Let <var>objectaddr</var> be the value of <var>v</var>’s [[ObjectAddress]] internal slot.</p>
<li data-md>
<p>Let <var>objectkind</var> be the value of <var>v</var>’s [[ObjectKind]] internal slot.</p>
<li data-md>
<p>If <var>objectkind</var> is "array",</p>
<ol>
<li data-md>
<p>Let <var>r</var> be <a data-link-type="dfn" data-refhint-key="b73131e1" href="https://webassembly.github.io/spec/core/exec/runtime.html#values" id="ref-for-values②⑦">ref.array</a> <var>objectaddr</var>.</p>
</ol>
<li data-md>
<p>If <var>objectkind</var> is "struct",</p>
<ol>
<li data-md>
<p>Let <var>r</var> be <a data-link-type="dfn" data-refhint-key="4a3b2658" href="https://webassembly.github.io/spec/core/exec/runtime.html#values" id="ref-for-values②⑧">ref.struct</a> <var>objectaddr</var>.</p>
</ol>
</ol>
<li data-md>
<p>Else,</p>
<ol>
<li data-md>
<p>Let <var>map</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent③⑥">surrounding agent</a>’s associated <a data-link-type="dfn" href="#host-value-cache" id="ref-for-host-value-cache①">host value cache</a>.</p>
<li data-md>
<p>If a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-hostaddr" id="ref-for-syntax-hostaddr②">host address</a> <var>hostaddr</var> exists such that <var>map</var>[<var>hostaddr</var>] is the same as <var>v</var>,</p>
<ol>
<li data-md>
<p>Return <a data-link-type="dfn" data-refhint-key="eba518e9" href="https://webassembly.github.io/spec/core/exec/runtime.html#values" id="ref-for-values②⑨">ref.host</a> <var>hostaddr</var>.</p>
</ol>
<li data-md>
<p>Let <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-hostaddr" id="ref-for-syntax-hostaddr③">host address</a> <var>hostaddr</var> be the smallest address such that <var>map</var>[<var>hostaddr</var>] <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-exists" id="ref-for-map-exists①⑤">exists</a> is false.</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-set" id="ref-for-map-set⑥">Set</a> <var>map</var>[<var>hostaddr</var>] to <var>v</var>.</p>
<li data-md>
<p>Let <var>r</var> be <a data-link-type="dfn" data-refhint-key="eba518e9" href="https://webassembly.github.io/spec/core/exec/runtime.html#values" id="ref-for-values③⓪">ref.host</a> <var>hostaddr</var>.</p>
</ol>
<li data-md>
<p>Let <var>store</var> be the current agent’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store③①">associated store</a>.</p>
<li data-md>
<p>Let <var>actualtype</var> be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-ref-type" id="ref-for-embed-ref-type">ref_type</a>(<var>store</var>, <var>r</var>).</p>
<li data-md>
<p>If <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-match-valtype" id="ref-for-embed-match-valtype②">match_valtype</a>(<var>actualtype</var>, <var>type</var>) is false,</p>
<ol>
<li data-md>
<p>Throw a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-typeerror" id="ref-for-sec-native-error-types-used-in-this-standard-typeerror①⑦">TypeError</a></code>.</p>
</ol>
<li data-md>
<p>Return <var>r</var>.</p>
</ol>
<li data-md>
<p class="assertion">Assert: This step is not reached.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="AddressValueToU64">
The algorithm <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="addressvaluetou64">AddressValueToU64</dfn>(<var>v</var>, <var>addrtype</var>) converts a JavaScript value to a WebAssembly <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/values.html#syntax-int" id="ref-for-syntax-int">u64</a> for use in embedding operations. It is designed to act like <a data-link-type="dfn" href="https://heycam.github.io/webidl/#EnforceRange" id="ref-for-EnforceRange">[EnforceRange]</a> <a data-link-type="dfn" href="https://heycam.github.io/webidl/#idl-unsigned-long" id="ref-for-idl-unsigned-long">unsigned long</a> for <code class="idl"><a data-link-type="idl" href="#enumdef-addresstype" id="ref-for-enumdef-addresstype②">AddressType</a></code> "i32", and to extend these semantics to <code class="idl"><a data-link-type="idl" href="#enumdef-addresstype" id="ref-for-enumdef-addresstype③">AddressType</a></code> "i64", by performing the following steps:
<ol>
<li data-md>
<p>If <var>addrtype</var> is "i32",</p>
<ol>
<li data-md>
<p>Let <var>n</var> be <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands③⑦">?</a> <a data-link-type="abstract-op" href="https://webidl.spec.whatwg.org/#abstract-opdef-converttoint" id="ref-for-abstract-opdef-converttoint">ConvertToInt</a>(<var>v</var>, 32, "unsigned"), where the destination type is associated with <a data-link-type="dfn" href="https://heycam.github.io/webidl/#EnforceRange" id="ref-for-EnforceRange①">[EnforceRange]</a>.</p>
<p class="note" role="note"><span class="marker">Note:</span> This is equivalent to the <a data-link-type="dfn" href="https://heycam.github.io/webidl/#js-unsigned-long" id="ref-for-js-unsigned-long">JS conversion rules</a> for <a data-link-type="dfn" href="https://heycam.github.io/webidl/#EnforceRange" id="ref-for-EnforceRange②">[EnforceRange]</a> <a data-link-type="dfn" href="https://heycam.github.io/webidl/#idl-unsigned-long" id="ref-for-idl-unsigned-long①">unsigned long</a>.</p>
<li data-md>
<p>Return <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#ℝ" id="ref-for-ℝ②"></a>(<var>n</var>) as a WebAssembly <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/values.html#syntax-int" id="ref-for-syntax-int①">u64</a>.</p>
</ol>
<li data-md>
<p>If <var>addrtype</var> is "i64",</p>
<ol>
<li data-md>
<p>Let <var>n</var> be <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands③⑧">?</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/abstract-operations.html#sec-tobigint" id="ref-for-sec-tobigint">ToBigInt</a>(<var>v</var>).</p>
<li data-md>
<p>If <var>n</var> &lt; 0 or <var>n</var> > 2<sup>64</sup> − 1, <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#dfn-throw" id="ref-for-dfn-throw④">throw</a> a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-typeerror" id="ref-for-sec-native-error-types-used-in-this-standard-typeerror①⑧">TypeError</a></code>.</p>
<p class="note" role="note"><span class="marker">Note:</span> This operation is designed to emulate <a data-link-type="dfn" href="https://heycam.github.io/webidl/#EnforceRange" id="ref-for-EnforceRange③">[EnforceRange]</a>.</p>
<li data-md>
<p>Return <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#ℝ" id="ref-for-ℝ③"></a>(<var>n</var>) as a WebAssembly <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/values.html#syntax-int" id="ref-for-syntax-int②">u64</a>.</p>
</ol>
<li data-md>
<p class="assertion">Assert: This step is not reached.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="U64ToAddressValue">
The algorithm <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="u64toaddressvalue">U64ToAddressValue</dfn>(<var>v</var>, <var>addrtype</var>) converts a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/values.html#syntax-int" id="ref-for-syntax-int③">u64</a> value from a WebAssembly embedding operation to the correct variant of <code class="idl"><a data-link-type="idl" href="#typedefdef-addressvalue" id="ref-for-typedefdef-addressvalue①①">AddressValue</a></code> for an <code class="idl"><a data-link-type="idl" href="#enumdef-addresstype" id="ref-for-enumdef-addresstype④">AddressType</a></code>, by performing the following steps:
<ol>
<li data-md>
<p>If <var>addrtype</var> is "i32", return <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#𝔽" id="ref-for-𝔽④">𝔽</a>(<var>v</var> interpreted as a <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#mathematical-value" id="ref-for-mathematical-value④">mathematical value</a>).</p>
<li data-md>
<p>Else if <var>addrtype</var> is "i64", return <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#ℤ" id="ref-for-ℤ①"></a>(<var>v</var> interpreted as a <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#mathematical-value" id="ref-for-mathematical-value⑤">mathematical value</a>).</p>
<li data-md>
<p class="assertion">Assert: This step is not reached.</p>
</ol>
</div>
<h3 class="heading settled" data-level="5.7" id="tags"><span class="secno">5.7. </span><span class="content">Tags</span><a class="self-link" href="#tags"></a></h3>
<p>The <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="tag_alloc">tag_alloc</dfn>(<var>store</var>, <var>parameters</var>) algorithm creates a new <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-tagaddr" id="ref-for-syntax-tagaddr①">tag address</a> for <var>parameters</var> in <var>store</var> and returns the updated store and the <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-tagaddr" id="ref-for-syntax-tagaddr②">tag address</a>.</p>
<h4 class="heading settled" data-level="5.7.1" id="tag-types"><span class="secno">5.7.1. </span><span class="content">Tag types</span><a class="self-link" href="#tag-types"></a></h4>
<pre class="idl highlight def"><c- b>dictionary</c-> <dfn class="dfn-paneled idl-code" data-dfn-type="dictionary" data-export id="dictdef-tagtype"><code><c- g>TagType</c-></code></dfn> {
<c- b>required</c-> <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#idl-sequence" id="ref-for-idl-sequence④"><c- b>sequence</c-></a>&lt;<a data-link-type="idl-name" href="#enumdef-valuetype" id="ref-for-enumdef-valuetype①"><c- n>ValueType</c-></a>> <dfn class="dfn-paneled idl-code" data-dfn-for="TagType" data-dfn-type="dict-member" data-export data-type="sequence<ValueType>" id="dom-tagtype-parameters"><code><c- g>parameters</c-></code></dfn>;
};
[<a class="idl-code" data-link-type="extended-attribute" href="https://webidl.spec.whatwg.org/#LegacyNamespace" id="ref-for-LegacyNamespace⑤"><c- g>LegacyNamespace</c-></a>=<a data-link-type="idl-name" href="#namespacedef-webassembly" id="ref-for-namespacedef-webassembly⑥"><c- n>WebAssembly</c-></a>, <a class="idl-code" data-link-type="extended-attribute" href="https://webidl.spec.whatwg.org/#Exposed" id="ref-for-Exposed"><c- g>Exposed</c-></a>=(<c- n>Window</c->,<c- n>Worker</c->,<c- n>Worklet</c->)]
<c- b>interface</c-> <dfn class="dfn-paneled idl-code" data-dfn-type="interface" data-export id="tag"><code><c- g>Tag</c-></code></dfn> {
<a class="idl-code" data-link-type="constructor" href="#dom-tag-tag" id="ref-for-dom-tag-tag"><c- g>constructor</c-></a>(<a data-link-type="idl-name" href="#dictdef-tagtype" id="ref-for-dictdef-tagtype"><c- n>TagType</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="Tag/Tag(type), Tag/constructor(type)" data-dfn-type="argument" data-export id="dom-tag-tag-type-type"><code><c- g>type</c-></code></dfn>);
};
</pre>
<p>A <code class="idl"><a data-link-type="idl" href="#tag" id="ref-for-tag③">Tag</a></code> value represents an exception tag.</p>
<div class="algorithm" data-algorithm="initialize a Tag object">
<p>To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="initialize-a-tag-object">initialize a Tag object</dfn> <var>tag</var> from a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-tagaddr" id="ref-for-syntax-tagaddr③">tag address</a> <var>tagAddress</var>, perform the following steps:</p>
<ol>
<li data-md>
<p>Let <var>map</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent③⑦">surrounding agent</a>’s associated <a data-link-type="dfn" href="#tag-object-cache" id="ref-for-tag-object-cache">Tag object cache</a>.</p>
<li data-md>
<p class="assertion">Assert: <var>map</var>[<var>tagAddress</var>] doesn’t <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-exists" id="ref-for-map-exists①⑥">exist</a>.</p>
<li data-md>
<p>Set <var>tag</var>.[[Address]] to <var>tagAddress</var>.</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-set" id="ref-for-map-set⑦">Set</a> <var>map</var>[<var>tagAddress</var>] to <var>tag</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="create a Tag object">
To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="create-a-tag-object">create a Tag object</dfn> from a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-tagaddr" id="ref-for-syntax-tagaddr④">tag address</a> <var>tagAddress</var>, perform the following steps:
<ol>
<li data-md>
<p>Let <var>map</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent③⑧">surrounding agent</a>’s associated <a data-link-type="dfn" href="#tag-object-cache" id="ref-for-tag-object-cache①">Tag object cache</a>.</p>
<li data-md>
<p>If <var>map</var>[<var>tagAddress</var>] <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-exists" id="ref-for-map-exists①⑦">exists</a>,</p>
<ol>
<li data-md>
<p>Return <var>map</var>[<var>tagAddress</var>].</p>
</ol>
<li data-md>
<p>Let <var>tag</var> be a <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#new" id="ref-for-new④">new</a> <code class="idl"><a data-link-type="idl" href="#tag" id="ref-for-tag④">Tag</a></code>.</p>
<li data-md>
<p><a data-link-type="dfn" href="#initialize-a-tag-object" id="ref-for-initialize-a-tag-object">Initialize</a> <var>tag</var> from <var>tagAddress</var>.</p>
<li data-md>
<p>Return <var>tag</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="Tag(type)" data-algorithm-for="Tag">
<p>The <dfn class="dfn-paneled idl-code" data-dfn-for="Tag" data-dfn-type="constructor" data-export data-lt="Tag(type)|constructor(type)" id="dom-tag-tag"><code>new Tag(<var>type</var>)</code></dfn> constructor steps are:</p>
<ol>
<li data-md>
<p>Let <var>parameters</var> be <var>type</var>["parameters"].</p>
<li data-md>
<p>Let <var>wasmParameters</var> be «».</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-iterate" id="ref-for-list-iterate①①">For each</a> <var>type</var> of <var>parameters</var>,</p>
<ol>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-append" id="ref-for-list-append①②">Append</a> <a data-link-type="dfn" href="#tovaluetype" id="ref-for-tovaluetype②">ToValueType</a>(<var>type</var>) to <var>wasmParameters</var>.</p>
</ol>
<li data-md>
<p>Let <var>store</var> be the current agent’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store③②">associated store</a>.</p>
<li data-md>
<p>Let (<var>store</var>, <var>tagAddress</var>) be <a data-link-type="dfn" href="#tag_alloc" id="ref-for-tag_alloc">tag_alloc</a>(<var>store</var>, <var>wasmParameters</var>).</p>
<li data-md>
<p>Set the current agent’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store③③">associated store</a> to <var>store</var>.</p>
<li data-md>
<p><a data-link-type="dfn" href="#initialize-a-tag-object" id="ref-for-initialize-a-tag-object①">Initialize</a> <strong>this</strong> from <var>tagAddress</var>.</p>
</ol>
</div>
<h3 class="heading settled" data-level="5.8" id="gc-exotic-objects"><span class="secno">5.8. </span><span class="content">Garbage Collected Objects</span><a class="self-link" href="#gc-exotic-objects"></a></h3>
<p>A WebAssembly struct or array is made available in JavaScript as an <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="exported-gc-object">Exported GC Object</dfn>.
An <a data-link-type="dfn" href="#exported-gc-object" id="ref-for-exported-gc-object②">Exported GC Object</a> is an exotic object that wraps a garbage collected WebAssembly reference value.
Most JavaScript operations on an <a data-link-type="dfn" href="#exported-gc-object" id="ref-for-exported-gc-object③">Exported GC Object</a> will throw an exception or return undefined.</p>
<p class="note" role="note"><span class="marker">Note:</span> These operations may be refined in the future to allow richer interactions in JavaScript with WebAssembly structs and arrays.</p>
<p>An <a data-link-type="dfn" href="#exported-gc-object" id="ref-for-exported-gc-object④">Exported GC Object</a> contains an [[ObjectAddress]] internal slot, which holds a <u class="link-error" data-lt="object address" title="LINK ERROR: No &apos;dfn&apos; refs found for &apos;object address&apos;.">object address</u> relative to the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent③⑨">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store③④">associated store</a>,
and an [[ObjectKind]] internal slot, which holds the string value "struct" or "array".</p>
<p>The internal methods of an <a data-link-type="dfn" href="#exported-gc-object" id="ref-for-exported-gc-object⑤">Exported GC Object</a> use the following implementations.</p>
<div class="algorithm" data-algorithm="[[GetPrototypeOf]] internal method of an Exported GC Object">
The <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="getprototypeof-internal-method-of-an-exported-gc-object">[[GetPrototypeOf]] internal method of an Exported GC Object</dfn> <var>O</var> takes no arguments and returns null. It performs the following steps when called:
<ol>
<li data-md>
<p>Return null.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="[[SetPrototypeOf]] internal method of an Exported GC Object">
The <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="setprototypeof-internal-method-of-an-exported-gc-object">[[SetPrototypeOf]] internal method of an Exported GC Object</dfn> <var>O</var> takes argument <var>V</var> (an Object or null) and returns a boolean. It performs the following steps when called:
<ol>
<li data-md>
<p>Return false.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="[[IsExtensible]] internal method of an Exported GC Object">
The <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="isextensible-internal-method-of-an-exported-gc-object">[[IsExtensible]] internal method of an Exported GC Object</dfn> <var>O</var> takes no arguments and returns a boolean. It performs the following steps when called:
<ol>
<li data-md>
<p>Return false.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="[[PreventExtensions]] internal method of an Exported GC Object">
The <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="preventextensions-internal-method-of-an-exported-gc-object">[[PreventExtensions]] internal method of an Exported GC Object</dfn> <var>O</var> takes no arguments and returns a boolean. It performs the following steps when called:
<ol>
<li data-md>
<p>Return false.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="[[GetOwnProperty]] internal method of an Exported GC Object">
The <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="getownproperty-internal-method-of-an-exported-gc-object">[[GetOwnProperty]] internal method of an Exported GC Object</dfn> <var>O</var> takes argument <var>P</var> (a property key) and returns undefined. It performs the following steps when called:
<ol>
<li data-md>
<p>Return undefined.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="[[DefineOwnProperty]] internal method of an Exported GC Object">
The <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="defineownproperty-internal-method-of-an-exported-gc-object">[[DefineOwnProperty]] internal method of an Exported GC Object</dfn> <var>O</var> takes arguments <var>P</var> (a property key) and <var>Desc</var> (a property descriptor) and returns a boolean. It performs the following steps when called:
<ol>
<li data-md>
<p>Return false.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="[[HasProperty]] internal method of an Exported GC Object">
The <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="hasproperty-internal-method-of-an-exported-gc-object">[[HasProperty]] internal method of an Exported GC Object</dfn> <var>O</var> takes argument <var>P</var> (a property key) and returns a boolean. It performs the following steps when called:
<ol>
<li data-md>
<p>Return false.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="[[Get]] internal method of an Exported GC Object">
The <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="get-internal-method-of-an-exported-gc-object">[[Get]] internal method of an Exported GC Object</dfn> <var>O</var> takes arguments <var>P</var> (a property key) and <var>Receiver</var> (an ECMAScript language value) and returns undefined. It performs the following steps when called:
<ol>
<li data-md>
<p>Return undefined.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="[[Set]] internal method of an Exported GC Object">
The <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="set-internal-method-of-an-exported-gc-object">[[Set]] internal method of an Exported GC Object</dfn> <var>O</var> takes arguments <var>P</var> (a property key), <var>V</var> (an ECMAScript language value), and <var>Receiver</var> (an ECMAScript language value) and throws an exception. It performs the following steps when called:
<ol>
<li data-md>
<p>Throw a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-typeerror" id="ref-for-sec-native-error-types-used-in-this-standard-typeerror①⑨">TypeError</a></code>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="[[Delete]] internal method of an Exported GC Object">
The <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="delete-internal-method-of-an-exported-gc-object">[[Delete]] internal method of an Exported GC Object</dfn> <var>O</var> takes argument <var>P</var> (a property key) and throws an exception. It performs the following steps when called:
<ol>
<li data-md>
<p>Throw a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-typeerror" id="ref-for-sec-native-error-types-used-in-this-standard-typeerror②⓪">TypeError</a></code>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="[[OwnPropertyKeys]] internal method of an Exported GC Object">
The <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="ownpropertykeys-internal-method-of-an-exported-gc-object">[[OwnPropertyKeys]] internal method of an Exported GC Object</dfn> <var>O</var> takes no arguments and returns a list. It performs the following steps when called:
<ol>
<li data-md>
<p>Let keys be a new empty list.</p>
<li data-md>
<p>Return keys.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="a new Exported GC Object">
To create <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="a-new-exported-gc-object">a new Exported GC Object</dfn> from a WebAssembly <u class="link-error" data-lt="object address" title="LINK ERROR: No &apos;dfn&apos; refs found for &apos;object address&apos;.">object address</u> <var>objectaddr</var> and a string <var>objectkind</var>, perform the following steps:
<ol>
<li data-md>
<p class="assertion">Assert: <var>objectkind</var> is either "array" or "struct".</p>
<li data-md>
<p>Let <var>map</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent④⓪">surrounding agent</a>’s associated <a data-link-type="dfn" href="#exported-gc-object-cache" id="ref-for-exported-gc-object-cache">exported GC object cache</a>.</p>
<li data-md>
<p>If <var>map</var>[<var>objectaddr</var>] <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-exists" id="ref-for-map-exists①⑧">exists</a>,</p>
<ol>
<li data-md>
<p>Return <var>map</var>[<var>objectaddr</var>].</p>
</ol>
<li data-md>
<p>Let <var>object</var> be <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-makebasicobject" id="ref-for-sec-makebasicobject">MakeBasicObject</a>(« [[ObjectAddress]] »).</p>
<li data-md>
<p>Set <var>object</var>.[[ObjectAddress]] to <var>objectaddr</var>.</p>
<li data-md>
<p>Set <var>object</var>.[[ObjectKind]] to <var>objectkind</var>.</p>
<li data-md>
<p>Set <var>object</var>.[[GetPrototypeOf]] as specified in <a data-link-type="dfn" href="#getprototypeof-internal-method-of-an-exported-gc-object" id="ref-for-getprototypeof-internal-method-of-an-exported-gc-object">[[GetPrototypeOf]] internal method of an Exported GC Object</a>.</p>
<li data-md>
<p>Set <var>object</var>.[[SetPrototypeOf]] as specified in <a data-link-type="dfn" href="#setprototypeof-internal-method-of-an-exported-gc-object" id="ref-for-setprototypeof-internal-method-of-an-exported-gc-object">[[SetPrototypeOf]] internal method of an Exported GC Object</a>.</p>
<li data-md>
<p>Set <var>object</var>.[[IsExtensible]] as specified in <a data-link-type="dfn" href="#isextensible-internal-method-of-an-exported-gc-object" id="ref-for-isextensible-internal-method-of-an-exported-gc-object">[[IsExtensible]] internal method of an Exported GC Object</a>.</p>
<li data-md>
<p>Set <var>object</var>.[[PreventExtensions]] as specified in <a data-link-type="dfn" href="#preventextensions-internal-method-of-an-exported-gc-object" id="ref-for-preventextensions-internal-method-of-an-exported-gc-object">[[PreventExtensions]] internal method of an Exported GC Object</a>.</p>
<li data-md>
<p>Set <var>object</var>.[[GetOwnProperty]] as specified in <a data-link-type="dfn" href="#getownproperty-internal-method-of-an-exported-gc-object" id="ref-for-getownproperty-internal-method-of-an-exported-gc-object">[[GetOwnProperty]] internal method of an Exported GC Object</a>.</p>
<li data-md>
<p>Set <var>object</var>.[[DefineOwnProperty]] as specified in <a data-link-type="dfn" href="#defineownproperty-internal-method-of-an-exported-gc-object" id="ref-for-defineownproperty-internal-method-of-an-exported-gc-object">[[DefineOwnProperty]] internal method of an Exported GC Object</a>.</p>
<li data-md>
<p>Set <var>object</var>.[[HasProperty]] as specified in <a data-link-type="dfn" href="#hasproperty-internal-method-of-an-exported-gc-object" id="ref-for-hasproperty-internal-method-of-an-exported-gc-object">[[HasProperty]] internal method of an Exported GC Object</a>.</p>
<li data-md>
<p>Set <var>object</var>.[[Get]] as specified in <a data-link-type="dfn" href="#get-internal-method-of-an-exported-gc-object" id="ref-for-get-internal-method-of-an-exported-gc-object">[[Get]] internal method of an Exported GC Object</a>.</p>
<li data-md>
<p>Set <var>object</var>.[[Set]] as specified in <a data-link-type="dfn" href="#set-internal-method-of-an-exported-gc-object" id="ref-for-set-internal-method-of-an-exported-gc-object">[[Set]] internal method of an Exported GC Object</a>.</p>
<li data-md>
<p>Set <var>object</var>.[[Delete]] as specified in <a data-link-type="dfn" href="#delete-internal-method-of-an-exported-gc-object" id="ref-for-delete-internal-method-of-an-exported-gc-object">[[Delete]] internal method of an Exported GC Object</a>.</p>
<li data-md>
<p>Set <var>object</var>.[[OwnPropertyKeys]] as specified in <a data-link-type="dfn" href="#ownpropertykeys-internal-method-of-an-exported-gc-object" id="ref-for-ownpropertykeys-internal-method-of-an-exported-gc-object">[[OwnPropertyKeys]] internal method of an Exported GC Object</a>.</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-set" id="ref-for-map-set⑧">Set</a> <var>map</var>[<var>objectaddr</var>] to <var>object</var>.</p>
<li data-md>
<p>Return <var>object</var>.</p>
</ol>
</div>
<h3 class="heading settled" data-level="5.9" id="exceptions"><span class="secno">5.9. </span><span class="content">Exceptions</span><a class="self-link" href="#exceptions"></a></h3>
<pre class="idl highlight def"><c- b>dictionary</c-> <dfn class="dfn-paneled idl-code" data-dfn-type="dictionary" data-export id="dictdef-exceptionoptions"><code><c- g>ExceptionOptions</c-></code></dfn> {
<a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-boolean" id="ref-for-idl-boolean②"><c- b>boolean</c-></a> <dfn class="dfn-paneled idl-code" data-default="false" data-dfn-for="ExceptionOptions" data-dfn-type="dict-member" data-export data-type="boolean" id="dom-exceptionoptions-tracestack"><code><c- g>traceStack</c-></code></dfn> = <c- b>false</c->;
};
[<a class="idl-code" data-link-type="extended-attribute" href="https://webidl.spec.whatwg.org/#LegacyNamespace" id="ref-for-LegacyNamespace⑥"><c- g>LegacyNamespace</c-></a>=<a data-link-type="idl-name" href="#namespacedef-webassembly" id="ref-for-namespacedef-webassembly⑦"><c- n>WebAssembly</c-></a>, <a class="idl-code" data-link-type="extended-attribute" href="https://webidl.spec.whatwg.org/#Exposed" id="ref-for-Exposed①"><c- g>Exposed</c-></a>=(<c- n>Window</c->,<c- n>Worker</c->,<c- n>Worklet</c->)]
<c- b>interface</c-> <dfn class="dfn-paneled idl-code" data-dfn-type="interface" data-export id="exception"><code><c- g>Exception</c-></code></dfn> {
<a class="idl-code" data-link-type="constructor" href="#dom-exception-exception" id="ref-for-dom-exception-exception"><c- g>constructor</c-></a>(<a data-link-type="idl-name" href="#tag" id="ref-for-tag⑤"><c- n>Tag</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="Exception/Exception(exceptionTag, payload, options), Exception/constructor(exceptionTag, payload, options), Exception/Exception(exceptionTag, payload), Exception/constructor(exceptionTag, payload)" data-dfn-type="argument" data-export id="dom-exception-exception-exceptiontag-payload-options-exceptiontag"><code><c- g>exceptionTag</c-></code></dfn>, <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#idl-sequence" id="ref-for-idl-sequence⑤"><c- b>sequence</c-></a>&lt;<a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-any" id="ref-for-idl-any⑧"><c- b>any</c-></a>> <dfn class="dfn-paneled idl-code" data-dfn-for="Exception/Exception(exceptionTag, payload, options), Exception/constructor(exceptionTag, payload, options), Exception/Exception(exceptionTag, payload), Exception/constructor(exceptionTag, payload)" data-dfn-type="argument" data-export id="dom-exception-exception-exceptiontag-payload-options-payload"><code><c- g>payload</c-></code></dfn>, <c- b>optional</c-> <a data-link-type="idl-name" href="#dictdef-exceptionoptions" id="ref-for-dictdef-exceptionoptions"><c- n>ExceptionOptions</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="Exception/Exception(exceptionTag, payload, options), Exception/constructor(exceptionTag, payload, options), Exception/Exception(exceptionTag, payload), Exception/constructor(exceptionTag, payload)" data-dfn-type="argument" data-export id="dom-exception-exception-exceptiontag-payload-options-options"><code><c- g>options</c-></code></dfn> = {});
<a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-any" id="ref-for-idl-any⑨"><c- b>any</c-></a> <a class="idl-code" data-link-type="method" href="#dom-exception-getarg" id="ref-for-dom-exception-getarg"><c- g>getArg</c-></a>([<a class="idl-code" data-link-type="extended-attribute" href="https://webidl.spec.whatwg.org/#EnforceRange" id="ref-for-EnforceRange④"><c- g>EnforceRange</c-></a>] <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-unsigned-long" id="ref-for-idl-unsigned-long②"><c- b>unsigned</c-> <c- b>long</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="Exception/getArg(index)" data-dfn-type="argument" data-export id="dom-exception-getarg-index-index"><code><c- g>index</c-></code></dfn>);
<a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-boolean" id="ref-for-idl-boolean③"><c- b>boolean</c-></a> <a class="idl-code" data-link-type="method" href="#dom-exception-is" id="ref-for-dom-exception-is"><c- g>is</c-></a>(<a data-link-type="idl-name" href="#tag" id="ref-for-tag⑥"><c- n>Tag</c-></a> <dfn class="dfn-paneled idl-code" data-dfn-for="Exception/is(exceptionTag)" data-dfn-type="argument" data-export id="dom-exception-is-exceptiontag-exceptiontag"><code><c- g>exceptionTag</c-></code></dfn>);
<c- b>readonly</c-> <c- b>attribute</c-> (<a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-DOMString" id="ref-for-idl-DOMString①"><c- b>DOMString</c-></a> <c- b>or</c-> <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-undefined" id="ref-for-idl-undefined①"><c- b>undefined</c-></a>) <a class="idl-code" data-link-type="attribute" data-readonly data-type="(DOMString or undefined)" href="#dom-exception-stack" id="ref-for-dom-exception-stack"><c- g>stack</c-></a>;
};
</pre>
<p>An <code class="idl"><a data-link-type="idl" href="#exception" id="ref-for-exception②">Exception</a></code> value represents an exception.</p>
<div class="algorithm" data-algorithm="initialize an Exception object">
<p>To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="initialize-an-exception-object">initialize an Exception object</dfn> <var>exn</var> from an <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-exnaddr" id="ref-for-syntax-exnaddr①">Exception address</a> <var>exnAddress</var>, perform the following steps:</p>
<ol>
<li data-md>
<p>Let <var>map</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent④①">surrounding agent</a>’s associated <a data-link-type="dfn" href="#exception-object-cache" id="ref-for-exception-object-cache">Exception object cache</a>.</p>
<li data-md>
<p class="assertion">Assert: <var>map</var>[<var>exnAddress</var>] doesn’t <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-exists" id="ref-for-map-exists①⑨">exist</a>.</p>
<li data-md>
<p>Set <var>exn</var>.[[Address]] to <var>exnAddress</var>.</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-set" id="ref-for-map-set⑨">Set</a> <var>map</var>[<var>exnAddress</var>] to <var>exn</var>.</p>
<li data-md>
<p>Let <var>store</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent④②">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store③⑤">associated store</a>.</p>
<li data-md>
<p>Let <var>tagaddr</var> be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-exn-tag" id="ref-for-embed-exn-tag①">exn_tag</a>(<var>store</var>, <var>exnAddress</var>).</p>
<li data-md>
<p>Let <var>payload</var> be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-exn-read" id="ref-for-embed-exn-read①">exn_read</a>(<var>store</var>, <var>exnAddress</var>).</p>
<li data-md>
<p>Set <var>exn</var>.[[Type]] to <var>tagaddr</var>.</p>
<li data-md>
<p>Set <var>exn</var>.[[Payload]] to <var>payload</var>.</p>
<li data-md>
<p>Set <var>exn</var>.[[Stack]] to undefined.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="create an Exception object">
<p>To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="create-an-exception-object">create an Exception object</dfn> from a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-exnaddr" id="ref-for-syntax-exnaddr②">exception address</a> <var>exnAddress</var>, perform the following steps:</p>
<ol>
<li data-md>
<p>Let <var>map</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent④③">surrounding agent</a>’s associated <a data-link-type="dfn" href="#exception-object-cache" id="ref-for-exception-object-cache①">Exception object cache</a>.</p>
<li data-md>
<p>If <var>map</var>[<var>exnAddress</var>] <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-exists" id="ref-for-map-exists②⓪">exists</a>,</p>
<ol>
<li data-md>
<p>Return <var>map</var>[<var>exnAddress</var>].</p>
</ol>
<li data-md>
<p>Let <var>exn</var> be a <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#new" id="ref-for-new⑤">new</a> <code class="idl"><a data-link-type="idl" href="#exception" id="ref-for-exception③">Exception</a></code>.</p>
<li data-md>
<p><a data-link-type="dfn" href="#initialize-an-exception-object" id="ref-for-initialize-an-exception-object">Initialize</a> <var>exn</var> from <var>exnAddress</var>.</p>
<li data-md>
<p>Return <var>exn</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="Exception(exceptionTag, payload, options)" data-algorithm-for="Exception">
<p>The <dfn class="dfn-paneled idl-code" data-dfn-for="Exception" data-dfn-type="constructor" data-export data-lt="Exception(exceptionTag, payload, options)|constructor(exceptionTag, payload, options)|Exception(exceptionTag, payload)|constructor(exceptionTag, payload)" id="dom-exception-exception"><code>new Exception(<var>exceptionTag</var>, <var>payload</var>, <var>options</var>)</code></dfn>
constructor steps are:</p>
<ol>
<li data-md>
<p>Let <var>JSTagAddr</var> be the result of <a data-link-type="dfn" href="#get-the-javascript-exception-tag" id="ref-for-get-the-javascript-exception-tag③">getting the JavaScript exception tag</a>.</p>
<li data-md>
<p>If <var>exceptionTag</var>.[[Address]] is equal to <var>JSTagAddr</var>,</p>
<ol>
<li data-md>
<p>Throw a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-typeerror" id="ref-for-sec-native-error-types-used-in-this-standard-typeerror②①">TypeError</a></code>.</p>
</ol>
<li data-md>
<p>Let <var>store</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent④④">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store③⑥">associated store</a>.</p>
<li data-md>
<p>Let [<var>types</var>] → [] be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-tag-type" id="ref-for-embed-tag-type">tag_type</a>(<var>store</var>, <var>exceptionTag</var>.[[Address]]).</p>
<li data-md>
<p>If <var>types</var>’s <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-size" id="ref-for-list-size⑤">size</a> is not <var>payload</var>’s <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-size" id="ref-for-list-size⑥">size</a>,</p>
<ol>
<li data-md>
<p>Throw a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-typeerror" id="ref-for-sec-native-error-types-used-in-this-standard-typeerror②②">TypeError</a></code>.</p>
</ol>
<li data-md>
<p>Let <var>wasmPayload</var> be « ».</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-iterate" id="ref-for-list-iterate①②">For each</a> <var>value</var> and <var>resultType</var> of <var>payload</var> and <var>types</var>, paired linearly,</p>
<ol>
<li data-md>
<p>If <var>resultType</var> <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/valid/matching.html#match-valtype" id="ref-for-match-valtype⑥">matches</a> <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#vector-types" id="ref-for-vector-types⑧">v128</a> or <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype" id="ref-for-syntax-reftype①⑥">exnref</a>,</p>
<ol>
<li data-md>
<p>Throw a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-typeerror" id="ref-for-sec-native-error-types-used-in-this-standard-typeerror②③">TypeError</a></code>.</p>
</ol>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-append" id="ref-for-list-append①③">Append</a> <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands③⑨">?</a> <a data-link-type="dfn" href="#towebassemblyvalue" id="ref-for-towebassemblyvalue①②">ToWebAssemblyValue</a>(<var>value</var>, <var>resultType</var>) to <var>wasmPayload</var>.</p>
</ol>
<li data-md>
<p>Let (<var>store</var>, <var>exceptionAddr</var>) be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-exn-alloc" id="ref-for-embed-exn-alloc①">exn_alloc</a>(<var>store</var>, <var>exceptionTag</var>.[[Address]], <var>wasmPayload</var>)</p>
<li data-md>
<p>Set the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent④⑤">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store③⑦">associated store</a> to <var>store</var>.</p>
<li data-md>
<p><a data-link-type="dfn" href="#initialize-an-exception-object" id="ref-for-initialize-an-exception-object①">Initialize</a> <strong>this</strong> from <var>exceptionAddr</var>.</p>
<li data-md>
<p>If <var>options</var>["traceStack"] is true,</p>
<ol>
<li data-md>
<p>Set <strong>this</strong>.[[Stack]] to either a <code class="idl"><a data-link-type="idl" href="https://webidl.spec.whatwg.org/#idl-DOMString" id="ref-for-idl-DOMString②">DOMString</a></code> representation of the current call stack or undefined.</p>
</ol>
</ol>
</div>
<div class="algorithm" data-algorithm="getArg(index)" data-algorithm-for="Exception">
<p>The <dfn class="dfn-paneled idl-code" data-dfn-for="Exception" data-dfn-type="method" data-export id="dom-exception-getarg"><code>getArg(<var>index</var>)</code></dfn> method steps are:</p>
<ol>
<li data-md>
<p>Let <var>store</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent④⑥">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store③⑧">associated store</a>.</p>
<li data-md>
<p>Let <var>tagaddr</var> be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-exn-tag" id="ref-for-embed-exn-tag②">exn_tag</a>(<var>store</var>, <strong>this</strong>.[[Address]]).</p>
<li data-md>
<p>Let <var>payload</var> be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-exn-read" id="ref-for-embed-exn-read②">exn_read</a>(<var>store</var>, <strong>this</strong>.[[Address]]).</p>
<li data-md>
<p class="assertion">Assert: <var>tagaddr</var> is equal to <strong>this</strong>.[[Type]].</p>
<li data-md>
<p>If <var>index</var><var>payload</var>’s <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-size" id="ref-for-list-size⑦">size</a>,</p>
<ol>
<li data-md>
<p>Throw a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-rangeerror" id="ref-for-sec-native-error-types-used-in-this-standard-rangeerror①⓪">RangeError</a></code>.</p>
</ol>
<li data-md>
<p>Let [<var>types</var>] → [] be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-tag-type" id="ref-for-embed-tag-type①">tag_type</a>(<var>store</var>, <var>tagaddr</var>).</p>
<li data-md>
<p>If <var>types</var>[<var>index</var>] <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/valid/matching.html#match-valtype" id="ref-for-match-valtype⑦">matches</a> <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#vector-types" id="ref-for-vector-types⑨">v128</a> or <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype" id="ref-for-syntax-reftype①⑦">exnref</a>,</p>
<ol>
<li data-md>
<p>Throw a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-typeerror" id="ref-for-sec-native-error-types-used-in-this-standard-typeerror②④">TypeError</a></code>.</p>
</ol>
<li data-md>
<p>Return <a data-link-type="dfn" href="#tojsvalue" id="ref-for-tojsvalue⑥">ToJSValue</a>(<var>payload</var>[<var>index</var>]).</p>
</ol>
</div>
<div class="algorithm" data-algorithm="is(exceptionTag)" data-algorithm-for="Exception">
<p>The <dfn class="dfn-paneled idl-code" data-dfn-for="Exception" data-dfn-type="method" data-export id="dom-exception-is"><code>is(<var>exceptionTag</var>)</code></dfn> method steps are:</p>
<ol>
<li data-md>
<p>If <strong>this</strong>.[[Type]] is not equal to <var>exceptionTag</var>.[[Address]],</p>
<ol>
<li data-md>
<p>Return false.</p>
</ol>
<li data-md>
<p>Return true.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="stack" data-algorithm-for="Exception">
<p>The <dfn class="dfn-paneled idl-code" data-dfn-for="Exception" data-dfn-type="attribute" data-export id="dom-exception-stack"><code>stack</code></dfn> getter steps are:</p>
<ol>
<li data-md>
<p>Return <strong>this</strong>.[[Stack]].</p>
</ol>
</div>
<h4 class="heading settled" data-level="5.9.1" id="js-exceptions"><span class="secno">5.9.1. </span><span class="content">JavaScript exceptions</span><a class="self-link" href="#js-exceptions"></a></h4>
<p>The <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="javascript-exception-tag">JavaScript exception tag</dfn> is a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-tagaddr" id="ref-for-syntax-tagaddr⑤">tag address</a> associated with
the surrounding agent. It is allocated in the agent’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store③⑨">associated store</a> on
first use and cached. It always has the <a data-link-type="dfn" data-refhint-key="60f810ad" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-tagtype" id="ref-for-syntax-tagtype②">tag type</a> « <a data-link-type="dfn" data-refhint-key="92193adb" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype" id="ref-for-syntax-reftype①⑧">externref</a> » → « ».</p>
<div class="algorithm" data-algorithm="get the JavaScript exception tag">
<p>To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="get-the-javascript-exception-tag">get the JavaScript exception tag</dfn>, perform the following steps:</p>
<ol>
<li data-md>
<p>If the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent④⑦">surrounding agent</a>’s associated <a data-link-type="dfn" href="#javascript-exception-tag" id="ref-for-javascript-exception-tag">JavaScript exception tag</a> has been initialized,</p>
<ol>
<li data-md>
<p>return the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent④⑧">surrounding agent</a>’s associated <a data-link-type="dfn" href="#javascript-exception-tag" id="ref-for-javascript-exception-tag①">JavaScript exception tag</a></p>
</ol>
<li data-md>
<p>Let <var>store</var> be the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent④⑨">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store④⓪">associated store</a>.</p>
<li data-md>
<p>Let (<var>store</var>, <var>tagAddress</var>) be <a data-link-type="dfn" href="#tag_alloc" id="ref-for-tag_alloc①">tag_alloc</a>(<var>store</var>, « <a data-link-type="dfn" data-refhint-key="92193adb" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype" id="ref-for-syntax-reftype①⑨">externref</a> » → « »).</p>
<li data-md>
<p>Set the current agent’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store④①">associated store</a> to <var>store</var>.</p>
<li data-md>
<p>Set the current agent’s associated <a data-link-type="dfn" href="#javascript-exception-tag" id="ref-for-javascript-exception-tag②">JavaScript exception tag</a> to <var>tagAddress</var>.</p>
<li data-md>
<p>return <var>tagAddress</var>.</p>
</ol>
</div>
<h3 class="heading settled" data-level="5.10" id="error-objects"><span class="secno">5.10. </span><span class="content">Error Objects</span><a class="self-link" href="#error-objects"></a></h3>
<p>WebAssembly defines the following Error classes: <dfn class="dfn-paneled idl-code" data-dfn-type="exception" data-export id="exceptiondef-compileerror"><code>CompileError</code></dfn>, <dfn class="dfn-paneled idl-code" data-dfn-type="exception" data-export id="exceptiondef-linkerror"><code>LinkError</code></dfn>, and <dfn class="dfn-paneled idl-code" data-dfn-type="exception" data-export id="exceptiondef-runtimeerror"><code>RuntimeError</code></dfn>.</p>
<div class="algorithm" data-algorithm="create the WebAssembly namespace object">
When the <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#dfn-namespace-object" id="ref-for-dfn-namespace-object">namespace object</a> for the <code class="idl"><a data-link-type="idl" href="#namespacedef-webassembly" id="ref-for-namespacedef-webassembly⑧">WebAssembly</a></code> namespace is <a data-link-type="dfn" href="https://heycam.github.io/webidl/#create-a-namespace-object" id="ref-for-create-a-namespace-object">created</a>, the following steps must be run:
<ol>
<li data-md>
<p>Let <var>namespaceObject</var> be the <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#dfn-namespace-object" id="ref-for-dfn-namespace-object①">namespace object</a>.</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-iterate" id="ref-for-list-iterate①③">For each</a> <var>error</var> of « "CompileError", "LinkError", "RuntimeError" »,</p>
<ol>
<li data-md>
<p>Let <var>constructor</var> be a new object, implementing the <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-nativeerror-object-structure" id="ref-for-sec-nativeerror-object-structure">NativeError Object Structure</a>, with <var>NativeError</var> set to <var>error</var>.</p>
<li data-md>
<p><a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands④⓪">!</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/ordinary-and-exotic-objects-behaviours.html#sec-definemethodproperty" id="ref-for-sec-definemethodproperty">DefineMethodProperty</a>(<var>namespaceObject</var>, <var>error</var>, <var>constructor</var>, false).</p>
</ol>
</ol>
</div>
<p class="note" role="note"><span class="marker">Note:</span> This defines <code class="idl"><a data-link-type="idl" href="#exceptiondef-compileerror" id="ref-for-exceptiondef-compileerror④">CompileError</a></code>, <code class="idl"><a data-link-type="idl" href="#exceptiondef-linkerror" id="ref-for-exceptiondef-linkerror⑨">LinkError</a></code>, and <code class="idl"><a data-link-type="idl" href="#exceptiondef-runtimeerror" id="ref-for-exceptiondef-runtimeerror②">RuntimeError</a></code> classes on the <code class="idl"><a data-link-type="idl" href="#namespacedef-webassembly" id="ref-for-namespacedef-webassembly⑨">WebAssembly</a></code> namespace, which are produced by the APIs defined in this specification.
They expose the same interface as native JavaScript errors like <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-typeerror" id="ref-for-sec-native-error-types-used-in-this-standard-typeerror②⑤">TypeError</a></code> and <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-rangeerror" id="ref-for-sec-native-error-types-used-in-this-standard-rangeerror①①">RangeError</a></code>.</p>
<p class="note" role="note"><span class="marker">Note:</span> It is not currently possible to define this behavior using Web IDL.</p>
<h2 class="heading settled" data-level="6" id="builtins"><span class="secno">6. </span><span class="content">Builtins</span><a class="self-link" href="#builtins"></a></h2>
<p>The JS-API defines sets of builtin functions which can be imported through <code class="idl"><a data-link-type="idl" href="#dictdef-webassemblycompileoptions" id="ref-for-dictdef-webassemblycompileoptions⑤">options</a></code> when compiling a module. WebAssembly builtin functions mirror existing JavaScript builtins, but adapt them to be useable directly as WebAssembly functions with minimal overhead.</p>
<p>All builtin functions are grouped into sets. Every builtin set has a <dfn class="dfn-paneled" data-dfn-for="builtin-set" data-dfn-type="dfn" data-noexport id="builtin-set-name"><var>name</var></dfn> that is used in <code class="idl"><a data-link-type="idl" href="#dictdef-webassemblycompileoptions" id="ref-for-dictdef-webassemblycompileoptions⑥">WebAssemblyCompileOptions</a></code>, and a <dfn class="dfn-paneled" data-dfn-for="builtin-set" data-dfn-type="dfn" data-noexport id="builtin-set-qualified-name"><var>qualified name</var></dfn> with a <code>wasm:</code> prefix that <a data-link-type="dfn" href="#read-the-imports" id="ref-for-read-the-imports②">is used during import lookup</a>.</p>
<div class="algorithm" data-algorithm="get the builtins for a builtin set">
<p>To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="get-the-builtins-for-a-builtin-set">get the builtins for a builtin set</dfn> with <var>builtinSetName</var>, perform the following steps:</p>
<ol>
<li data-md>
<p>Return a list of (<var>name</var>, <var>funcType</var>, <var>steps</var>) for the set with name <var>builtinSetName</var> defined within this section.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="find a builtin">
<p>To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="find-a-builtin">find a builtin</dfn> with <var>import</var> and enabled builtins <var>builtinSetNames</var>, perform the following steps:</p>
<ol>
<li data-md>
<p class="assertion">Assert: <a data-link-type="dfn" href="#validate-builtin-set-names" id="ref-for-validate-builtin-set-names①">validate builtin set names</a> <var>builtinSetNames</var> is true.</p>
<li data-md>
<p>Let <var>importModuleName</var> be <var>import</var>[0].</p>
<li data-md>
<p>Let <var>importName</var> be <var>import</var>[1].</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-iterate" id="ref-for-list-iterate①④">For each</a> <var>builtinSetName</var> of <var>builtinSetNames</var>,</p>
<ol>
<li data-md>
<p>If <var>builtinSetName</var> does not refer to a builtin set, then <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#iteration-continue" id="ref-for-iteration-continue④">continue</a>.</p>
<li data-md>
<p>Let <var>builtinSetQualifiedName</var> be <var>builtinSetName</var> prefixed with "wasm:".</p>
<li data-md>
<p>If <var>importModuleName</var> equals <var>builtinSetQualifiedName</var>,</p>
<ol>
<li data-md>
<p>Let <var>builtins</var> be the result of <a data-link-type="dfn" href="#get-the-builtins-for-a-builtin-set" id="ref-for-get-the-builtins-for-a-builtin-set">get the builtins for a builtin set</a> <var>builtinSetName</var>.</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-iterate" id="ref-for-list-iterate①⑤">For each</a> <var>builtin</var> of <var>builtins</var>,</p>
<ol>
<li data-md>
<p>Let <var>builtinName</var> be <var>builtin</var>[0].</p>
<li data-md>
<p>If <var>importName</var> equals <var>builtinName</var>, return (<var>builtinSetName</var>, <var>builtin</var>).</p>
</ol>
</ol>
</ol>
<li data-md>
<p>Return null.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="validate builtin set names">
<p>To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="validate-builtin-set-names">validate builtin set names</dfn> with <var>builtinSetNames</var>, perform the following steps:</p>
<ol>
<li data-md>
<p>If <var>builtinSetNames</var> contains any duplicates, return false.</p>
<li data-md>
<p>Return true.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="create a builtin function">
<p>To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="create-a-builtin-function">create a builtin function</dfn> from type <var>funcType</var> and execution steps <var>steps</var>, perform the following steps:</p>
<ol>
<li data-md>
<p>Let <var>hostfunc</var> be a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-hostfunc" id="ref-for-syntax-hostfunc①">host function</a> which executes <var>steps</var> when called.</p>
<li data-md>
<p>Let (<var>store</var>, <var>funcaddr</var>) be <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-func-alloc" id="ref-for-embed-func-alloc①">func_alloc</a>(<var>store</var>, <var>functype</var>, <var>hostfunc</var>).</p>
<li data-md>
<p>Set the <a data-link-type="dfn" href="https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent" id="ref-for-surrounding-agent⑤⓪">surrounding agent</a>’s <a data-link-type="dfn" href="#associated-store" id="ref-for-associated-store④②">associated store</a> to <var>store</var>.</p>
<li data-md>
<p>Return <var>funcaddr</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="instantiate a builtin set">
<p>To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="instantiate-a-builtin-set">instantiate a builtin set</dfn> with name <var>builtinSetName</var>, perform the following steps:</p>
<ol>
<li data-md>
<p>Let <var>builtins</var> be the result of <a data-link-type="dfn" href="#get-the-builtins-for-a-builtin-set" id="ref-for-get-the-builtins-for-a-builtin-set①">get the builtins for a builtin set</a> <var>builtinSetName</var>.</p>
<li data-md>
<p>Let <var>exportsObject</var> be <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands④①">!</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/ordinary-and-exotic-objects-behaviours.html#sec-ordinaryobjectcreate" id="ref-for-sec-ordinaryobjectcreate②">OrdinaryObjectCreate</a>(null).</p>
<li data-md>
<p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-iterate" id="ref-for-list-iterate①⑥">For each</a> (<var>name</var>, <var>funcType</var>, <var>steps</var>) of <var>builtins</var>,</p>
<ol>
<li data-md>
<p>Let <var>funcaddr</var> be the result fo <a data-link-type="dfn" href="#create-a-builtin-function" id="ref-for-create-a-builtin-function">create a builtin function</a> with <var>funcType</var> and <var>steps</var>.</p>
<li data-md>
<p>Let <var>func</var> be the result of creating <a data-link-type="dfn" href="#a-new-exported-function" id="ref-for-a-new-exported-function②">a new Exported Function</a> from <var>funcaddr</var>.</p>
<li data-md>
<p>Let <var>value</var> be <var>func</var>.</p>
<li data-md>
<p>Let <var>status</var> be <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands④②">!</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/abstract-operations.html#sec-createdataproperty" id="ref-for-sec-createdataproperty②">CreateDataProperty</a>(<var>exportsObject</var>, <var>name</var>, <var>value</var>).</p>
<li data-md>
<p class="assertion">Assert: <var>status</var> is true.</p>
</ol>
<li data-md>
<p>Return <var>exportsObject</var>.</p>
</ol>
</div>
<div class="algorithm" data-algorithm="validate an import for builtins">
<p>To <dfn class="dfn-paneled" data-dfn-type="dfn" data-noexport id="validate-an-import-for-builtins">validate an import for builtins</dfn> with <var>import</var>, enabled builtins <var>builtinSetNames</var>, perform the following steps:</p>
<ol>
<li data-md>
<p class="assertion">Assert: <a data-link-type="dfn" href="#validate-builtin-set-names" id="ref-for-validate-builtin-set-names②">validate builtin set names</a> <var>builtinSetNames</var> is true.</p>
<li data-md>
<p>Let <var>maybeBuiltin</var> be the result of <a data-link-type="dfn" href="#find-a-builtin" id="ref-for-find-a-builtin①">finding a builtin</a> for <var>import</var> and <var>builtinSetNames</var>.</p>
<li data-md>
<p>If <var>maybeBuiltin</var> is null, return true.</p>
<li data-md>
<p>Let <var>importExternType</var> be <var>import</var>[2].</p>
<li data-md>
<p>Let <var>builtinFuncType</var> be <var>maybeBuiltin</var>[0][1].</p>
<li data-md>
<p>Let <var>builtinExternType</var> be <code>func |builtinFuncType|</code>.</p>
<li data-md>
<p>Return <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/appendix/embedding.html#embed-match-externtype" id="ref-for-embed-match-externtype①">match_externtype</a>(<var>builtinExternType</var>, <var>importExternType</var>).</p>
</ol>
</div>
<h3 class="heading settled" data-level="6.1" id="builtins-js-string"><span class="secno">6.1. </span><span class="content">String Builtins</span><a class="self-link" href="#builtins-js-string"></a></h3>
<p>String builtins adapt the interface of the <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-string-object" id="ref-for-sec-string-object">String</a> builtin object. The <a data-link-type="dfn" href="#builtin-set-name" id="ref-for-builtin-set-name">name</a> for this set is <code>js-string</code>, and the <a data-link-type="dfn" href="#builtin-set-qualified-name" id="ref-for-builtin-set-qualified-name">qualified name</a> is <code>wasm:js-string</code>.</p>
<p class="note" role="note"><span class="marker">Note:</span> The algorithms in this section refer to JS builtins defined on <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-string-object" id="ref-for-sec-string-object①">String</a>. These refer to the actual builtin and do not perform a dynamic lookup on the <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-string-object" id="ref-for-sec-string-object②">String</a> object.</p>
<h4 class="heading settled" data-level="6.1.1" id="builtins-js-string-abstract-ops"><span class="secno">6.1.1. </span><span class="content">Abstract operations</span><a class="self-link" href="#builtins-js-string-abstract-ops"></a></h4>
<div class="algorithm" data-algorithm="UnwrapString">
<p>The <dfn class="dfn-paneled" data-dfn-type="abstract-op" data-export data-lt="UnwrapString" id="abstract-opdef-unwrapstring">UnwrapString(<var>v</var>)</dfn> abstract operation, when invoked, performs the following steps:</p>
<ol>
<li data-md>
<p>If <var>v</var> <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-ecmascript-language-types-string-type" id="ref-for-sec-ecmascript-language-types-string-type">is not a String</a>,</p>
<ol>
<li data-md>
<p>Throw a <code class="idl"><a data-link-type="idl" href="#exceptiondef-runtimeerror" id="ref-for-exceptiondef-runtimeerror③">RuntimeError</a></code> exception as if a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-trap" id="ref-for-syntax-trap">trap</a> was executed.</p>
</ol>
<li data-md>
<p>Return <var>v</var></p>
</ol>
</div>
<div class="algorithm" data-algorithm="FromCharCode">
<p>The <dfn class="dfn-paneled" data-dfn-type="abstract-op" data-export data-lt="FromCharCode" id="abstract-opdef-fromcharcode">FromCharCode(<var>v</var>)</dfn> abstract operation, when invoked, performs the following steps:</p>
<ol>
<li data-md>
<p class="assertion">Assert: <var>v</var> is of type <a data-link-type="dfn" data-refhint-key="1eccdce5" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-numtype" id="ref-for-syntax-numtype①②">i32</a>.</p>
<li data-md>
<p>Return <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands④③">!</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/abstract-operations.html#sec-call" id="ref-for-sec-call①">Call</a>(<a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-string.fromcharcode" id="ref-for-sec-string.fromcharcode">String.fromCharCode</a>, undefined, « <a data-link-type="dfn" href="#tojsvalue" id="ref-for-tojsvalue⑦">ToJSValue</a>(<var>v</var>) »).</p>
</ol>
</div>
<div class="algorithm" data-algorithm="CharCodeAt">
<p>The <dfn class="dfn-paneled" data-dfn-type="abstract-op" data-export data-lt="CharCodeAt" id="abstract-opdef-charcodeat">CharCodeAt(<var>string</var>, <var>index</var>)</dfn> abstract operation, when invoked, performs the following steps:</p>
<ol>
<li data-md>
<p class="assertion">Assert: <var>index</var> is of type <a data-link-type="dfn" data-refhint-key="1eccdce5" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-numtype" id="ref-for-syntax-numtype①③">i32</a>.</p>
<li data-md>
<p>Return <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands④④">!</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/abstract-operations.html#sec-call" id="ref-for-sec-call②">Call</a>(<a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-string.prototype.charcodeat" id="ref-for-sec-string.prototype.charcodeat">String.prototype.charCodeAt</a>, <var>string</var>, « <a data-link-type="dfn" href="#tojsvalue" id="ref-for-tojsvalue⑧">ToJSValue</a>(<var>index</var>) »).</p>
</ol>
</div>
<h4 class="heading settled" data-level="6.1.2" id="js-string-cast"><span class="secno">6.1.2. </span><span class="content">cast</span><a class="self-link" href="#js-string-cast"></a></h4>
<p>The <var>funcType</var> of this builtin is <code>(rec (type (func (param externref) (result externref)))).0</code>.</p>
<div class="algorithm" data-algorithm="js-string-cast">
<p>When this builtin is invoked with parameter <var>v</var>, the following steps must be run:</p>
<ol>
<li data-md>
<p>Return <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands④⑤">?</a> <a data-link-type="abstract-op" href="#abstract-opdef-unwrapstring" id="ref-for-abstract-opdef-unwrapstring">UnwrapString</a>(<var>v</var>)</p>
</ol>
</div>
<h4 class="heading settled" data-level="6.1.3" id="js-string-test"><span class="secno">6.1.3. </span><span class="content">test</span><a class="self-link" href="#js-string-test"></a></h4>
<p>The <var>funcType</var> of this builtin is <code>(rec (type (func (param externref) (result i32)))).0</code>.</p>
<div class="algorithm" data-algorithm="js-string-test">
<p>When this builtin is invoked with parameter <var>v</var>, the following steps must be run:</p>
<ol>
<li data-md>
<p>If <var>v</var> <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-ecmascript-language-types-string-type" id="ref-for-sec-ecmascript-language-types-string-type①">is not a String</a>,</p>
<ol>
<li data-md>
<p>Return 0.</p>
</ol>
<li data-md>
<p>Return 1.</p>
</ol>
</div>
<h4 class="heading settled" data-level="6.1.4" id="js-string-fromCharCodeArray"><span class="secno">6.1.4. </span><span class="content">fromCharCodeArray</span><a class="self-link" href="#js-string-fromCharCodeArray"></a></h4>
<p>Let <var>arrayType</var> be <code>(rec (type (array (mut i16)))).0</code>.</p>
<p>The <var>funcType</var> of this builtin is <code>(rec (type (func (param (ref null arrayType) i32 i32) (result externref)))).0</code>.</p>
<div class="algorithm" data-algorithm="js-string-fromCharCodeArray">
<p>When this builtin is invoked with parameters <var>array</var>, <var>start</var>, and <var>end</var>, the following steps must be run:</p>
<ol>
<li data-md>
<p>If <var>array</var> is null,</p>
<ol>
<li data-md>
<p>Throw a <code class="idl"><a data-link-type="idl" href="#exceptiondef-runtimeerror" id="ref-for-exceptiondef-runtimeerror④">RuntimeError</a></code> exception as if a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-trap" id="ref-for-syntax-trap①">trap</a> was executed.</p>
</ol>
<li data-md>
<p>Let <var>length</var> be the number of elements in <var>array</var>.</p>
<li data-md>
<p>If <var>start</var> > <var>end</var> or <var>end</var> > <var>length</var>,</p>
<ol>
<li data-md>
<p>Throw a <code class="idl"><a data-link-type="idl" href="#exceptiondef-runtimeerror" id="ref-for-exceptiondef-runtimeerror⑤">RuntimeError</a></code> exception as if a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-trap" id="ref-for-syntax-trap②">trap</a> was executed.</p>
</ol>
<li data-md>
<p>Let <var>result</var> be the empty string.</p>
<li data-md>
<p>Let <var>i</var> be <var>start</var>.</p>
<li data-md>
<p>While <var>i</var> &lt; <var>end</var>:</p>
<ol>
<li data-md>
<p>Let <var>charCode</var> be the value of the element stored at index <var>i</var> in <var>array</var>.</p>
<li data-md>
<p>Let <var>charCodeString</var> be <a data-link-type="abstract-op" href="#abstract-opdef-fromcharcode" id="ref-for-abstract-opdef-fromcharcode">FromCharCode</a>(<var>charCode</var>).</p>
<li data-md>
<p>Let <var>result</var> be the concatenation of <var>result</var> and <var>charCodeString</var>.</p>
<li data-md>
<p>Set <var>i</var> to <var>i</var> + 1.</p>
</ol>
<li data-md>
<p>Return <var>result</var>.</p>
</ol>
</div>
<h4 class="heading settled" data-level="6.1.5" id="js-string-intoCharCodeArray"><span class="secno">6.1.5. </span><span class="content">intoCharCodeArray</span><a class="self-link" href="#js-string-intoCharCodeArray"></a></h4>
<p>Let <var>arrayType</var> be <code>(rec (type (array (mut i16)))).0</code>.</p>
<p>The <var>funcType</var> of this builtin is <code>(rec (type (func (param externref (ref null arrayType) i32) (result i32)))).0</code>.</p>
<div class="algorithm" data-algorithm="js-string-intoCharCodeArray">
<p>When this builtin is invoked with parameters <var>string</var>, <var>array</var>, and <var>start</var>, the following steps must be run:</p>
<ol>
<li data-md>
<p>If <var>array</var> is null,</p>
<ol>
<li data-md>
<p>Throw a <code class="idl"><a data-link-type="idl" href="#exceptiondef-runtimeerror" id="ref-for-exceptiondef-runtimeerror⑥">RuntimeError</a></code> exception as if a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-trap" id="ref-for-syntax-trap③">trap</a> was executed.</p>
</ol>
<li data-md>
<p>Let <var>string</var> be <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands④⑥">?</a> <a data-link-type="abstract-op" href="#abstract-opdef-unwrapstring" id="ref-for-abstract-opdef-unwrapstring①">UnwrapString</a>(<var>string</var>).</p>
<li data-md>
<p>Let <var>stringLength</var> be the <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#string-length" id="ref-for-string-length">length</a> of <var>string</var>.</p>
<li data-md>
<p>Let <var>arrayLength</var> be the number of elements in <var>array</var>.</p>
<li data-md>
<p>If <var>start</var> + <var>stringLength</var> > <var>arrayLength</var>,</p>
<ol>
<li data-md>
<p>Throw a <code class="idl"><a data-link-type="idl" href="#exceptiondef-runtimeerror" id="ref-for-exceptiondef-runtimeerror⑦">RuntimeError</a></code> exception as if a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-trap" id="ref-for-syntax-trap④">trap</a> was executed.</p>
</ol>
<li data-md>
<p>Let <var>i</var> be 0.</p>
<li data-md>
<p>While <var>i</var> &lt; <var>stringLength</var>:</p>
<ol>
<li data-md>
<p>Let <var>charCode</var> be <a data-link-type="abstract-op" href="#abstract-opdef-charcodeat" id="ref-for-abstract-opdef-charcodeat">CharCodeAt</a>(<var>string</var>, <var>i</var>).</p>
<li data-md>
<p>Set the element at index <var>start</var> + <var>i</var> in <var>array</var> to <a data-link-type="dfn" href="#towebassemblyvalue" id="ref-for-towebassemblyvalue①③">ToWebAssemblyValue</a>(<var>charCode</var>).</p>
<li data-md>
<p>Set <var>i</var> to <var>i</var> + 1.</p>
</ol>
<li data-md>
<p>Return <var>stringLength</var>.</p>
</ol>
</div>
<h4 class="heading settled" data-level="6.1.6" id="js-string-fromCharCode"><span class="secno">6.1.6. </span><span class="content">fromCharCode</span><a class="self-link" href="#js-string-fromCharCode"></a></h4>
<p>The <var>funcType</var> of this builtin is <code>(rec (type (func (param i32) (result externref)))).0</code>.</p>
<div class="algorithm" data-algorithm="js-string-fromCharCode">
<p>When this builtin is invoked with parameter <var>v</var>, the following steps must be run:</p>
<ol>
<li data-md>
<p>Return <a data-link-type="abstract-op" href="#abstract-opdef-fromcharcode" id="ref-for-abstract-opdef-fromcharcode①">FromCharCode</a>(<var>v</var>).</p>
</ol>
</div>
<h4 class="heading settled" data-level="6.1.7" id="js-string-fromCodePoint"><span class="secno">6.1.7. </span><span class="content">fromCodePoint</span><a class="self-link" href="#js-string-fromCodePoint"></a></h4>
<p>The <var>funcType</var> of this builtin is <code>(rec (type (func (param i32) (result externref)))).0</code>.</p>
<div class="algorithm" data-algorithm="js-string-fromCodePoint">
<p>When this builtin is invoked with parameter <var>v</var>, the following steps must be run:</p>
<ol>
<li data-md>
<p>If <var>v</var> > 0x10ffff,</p>
<ol>
<li data-md>
<p>Throw a <code class="idl"><a data-link-type="idl" href="#exceptiondef-runtimeerror" id="ref-for-exceptiondef-runtimeerror⑧">RuntimeError</a></code> exception as if a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-trap" id="ref-for-syntax-trap⑤">trap</a> was executed.</p>
</ol>
<li data-md>
<p>Return <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands④⑦">!</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/abstract-operations.html#sec-call" id="ref-for-sec-call③">Call</a>(<a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-string.fromcodepoint" id="ref-for-sec-string.fromcodepoint">String.fromCodePoint</a>, undefined, « <a data-link-type="dfn" href="#tojsvalue" id="ref-for-tojsvalue⑨">ToJSValue</a>(<var>v</var>) »).</p>
</ol>
</div>
<h4 class="heading settled" data-level="6.1.8" id="js-string-charCodeAt"><span class="secno">6.1.8. </span><span class="content">charCodeAt</span><a class="self-link" href="#js-string-charCodeAt"></a></h4>
<p>The type of this function is <code>(rec (type (func (param externref i32) (result i32)))).0</code>.</p>
<div class="algorithm" data-algorithm="js-string-charCodeAt">
<p>When this builtin is invoked with parameters <var>string</var> and <var>index</var>, the following steps must be run:</p>
<ol>
<li data-md>
<p>Let <var>string</var> be <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands④⑧">?</a> <a data-link-type="abstract-op" href="#abstract-opdef-unwrapstring" id="ref-for-abstract-opdef-unwrapstring②">UnwrapString</a>(<var>string</var>).</p>
<li data-md>
<p>Let <var>length</var> be the <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#string-length" id="ref-for-string-length①">length</a> of <var>string</var>.</p>
<li data-md>
<p>If <var>index</var> >= <var>length</var>,</p>
<ol>
<li data-md>
<p>Throw a <code class="idl"><a data-link-type="idl" href="#exceptiondef-runtimeerror" id="ref-for-exceptiondef-runtimeerror⑨">RuntimeError</a></code> exception as if a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-trap" id="ref-for-syntax-trap⑥">trap</a> was executed.</p>
</ol>
<li data-md>
<p>Return <a data-link-type="abstract-op" href="#abstract-opdef-charcodeat" id="ref-for-abstract-opdef-charcodeat①">CharCodeAt</a>(<var>string</var>, <var>index</var>).</p>
</ol>
</div>
<h4 class="heading settled" data-level="6.1.9" id="js-string-codePointAt"><span class="secno">6.1.9. </span><span class="content">codePointAt</span><a class="self-link" href="#js-string-codePointAt"></a></h4>
<p>The type of this function is <code>(rec (type (func (param externref i32) (result i32)))).0</code>.</p>
<div class="algorithm" data-algorithm="js-string-codePointAt">
<p>When this builtin is invoked with parameters <var>string</var> and <var>index</var>, the following steps must be run:</p>
<ol>
<li data-md>
<p>Let <var>string</var> be <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands④⑨">?</a> <a data-link-type="abstract-op" href="#abstract-opdef-unwrapstring" id="ref-for-abstract-opdef-unwrapstring③">UnwrapString</a>(<var>string</var>).</p>
<li data-md>
<p>Let <var>length</var> be the <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#string-length" id="ref-for-string-length②">length</a> of <var>string</var>.</p>
<li data-md>
<p>If <var>index</var> >= <var>length</var>,</p>
<ol>
<li data-md>
<p>Throw a <code class="idl"><a data-link-type="idl" href="#exceptiondef-runtimeerror" id="ref-for-exceptiondef-runtimeerror①⓪">RuntimeError</a></code> exception as if a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-trap" id="ref-for-syntax-trap⑦">trap</a> was executed.</p>
</ol>
<li data-md>
<p>Return <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands⑤⓪">!</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/abstract-operations.html#sec-call" id="ref-for-sec-call④">Call</a>(<a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-string.prototype.codepointat" id="ref-for-sec-string.prototype.codepointat">String.prototype.codePointAt</a>, <var>string</var>, « <a data-link-type="dfn" href="#tojsvalue" id="ref-for-tojsvalue①⓪">ToJSValue</a>(<var>index</var>) »).</p>
</ol>
</div>
<h4 class="heading settled" data-level="6.1.10" id="js-string-length"><span class="secno">6.1.10. </span><span class="content">length</span><a class="self-link" href="#js-string-length"></a></h4>
<p>The <var>funcType</var> of this builtin is <code>(rec (type (func (param externref) (result i32)))).0</code>.</p>
<div class="algorithm" data-algorithm="js-string-length">
<p>When this builtin is invoked with parameter <var>v</var>, the following steps must be run:</p>
<ol>
<li data-md>
<p>Let <var>string</var> be <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands⑤①">?</a> <a data-link-type="abstract-op" href="#abstract-opdef-unwrapstring" id="ref-for-abstract-opdef-unwrapstring④">UnwrapString</a>(<var>v</var>).</p>
<li data-md>
<p>Return the <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#string-length" id="ref-for-string-length③">length</a> of <var>string</var>.</p>
</ol>
</div>
<h4 class="heading settled" data-level="6.1.11" id="js-string-concat"><span class="secno">6.1.11. </span><span class="content">concat</span><a class="self-link" href="#js-string-concat"></a></h4>
<p>The <var>funcType</var> of this builtin is <code>(rec (type (func (param externref externref) (result externref)))).0</code>.</p>
<div class="algorithm" data-algorithm="js-string-concat">
<p>When this builtin is invoked with parameters <var>first</var> and <var>second</var>, the following steps must be run:</p>
<ol>
<li data-md>
<p>Let <var>first</var> be <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands⑤②">?</a> <a data-link-type="abstract-op" href="#abstract-opdef-unwrapstring" id="ref-for-abstract-opdef-unwrapstring⑤">UnwrapString</a>(<var>first</var>).</p>
<li data-md>
<p>Let <var>second</var> be <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands⑤③">?</a> <a data-link-type="abstract-op" href="#abstract-opdef-unwrapstring" id="ref-for-abstract-opdef-unwrapstring⑥">UnwrapString</a>(<var>second</var>).</p>
<li data-md>
<p>Return <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands⑤④">!</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/abstract-operations.html#sec-call" id="ref-for-sec-call⑤">Call</a>(<a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-string.prototype.concat" id="ref-for-sec-string.prototype.concat">String.prototype.concat</a>, <var>first</var>, « <var>second</var> »).</p>
</ol>
</div>
<h4 class="heading settled" data-level="6.1.12" id="js-string-substring"><span class="secno">6.1.12. </span><span class="content">substring</span><a class="self-link" href="#js-string-substring"></a></h4>
<p>The <var>funcType</var> of this builtin is <code>(rec (type (func (param externref i32 i32) (result externref)))).0</code>.</p>
<div class="algorithm" data-algorithm="js-string-substring">
<p>When this builtin is invoked with parameters <var>string</var>, <var>start</var>, and <var>end</var>, the following steps must be run:</p>
<ol>
<li data-md>
<p>Let <var>string</var> be <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands⑤⑤">?</a> <a data-link-type="abstract-op" href="#abstract-opdef-unwrapstring" id="ref-for-abstract-opdef-unwrapstring⑦">UnwrapString</a>(<var>string</var>).</p>
<li data-md>
<p>Let <var>length</var> be the <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#string-length" id="ref-for-string-length④">length</a> of <var>string</var>.</p>
<li data-md>
<p>If <var>start</var> > <var>end</var> or <var>start</var> > <var>length</var>,</p>
<ol>
<li data-md>
<p>Return the empty string.</p>
</ol>
<li data-md>
<p>Return <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands⑤⑥">!</a> <a data-link-type="abstract-op" href="https://tc39.es/ecma262/multipage/abstract-operations.html#sec-call" id="ref-for-sec-call⑥">Call</a>(<a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-string.prototype.substring" id="ref-for-sec-string.prototype.substring">String.prototype.substring</a>, <var>string</var>, « <a data-link-type="dfn" href="#tojsvalue" id="ref-for-tojsvalue①①">ToJSValue</a>(<var>start</var>), <a data-link-type="dfn" href="#tojsvalue" id="ref-for-tojsvalue①②">ToJSValue</a>(<var>end</var>) »).</p>
</ol>
</div>
<h4 class="heading settled" data-level="6.1.13" id="js-string-equals"><span class="secno">6.1.13. </span><span class="content">equals</span><a class="self-link" href="#js-string-equals"></a></h4>
<p>The <var>funcType</var> of this builtin is <code>(rec (type (func (param externref externref) (result i32)))).0</code>.</p>
<p class="note" role="note"><span class="marker">Note:</span> Explicitly allow null strings to be compared for equality as that is meaningful.</p>
<div class="algorithm" data-algorithm="js-string-equals">
<p>When this builtin is invoked with parameters <var>first</var> and <var>second</var>, the following steps must be run:</p>
<ol>
<li data-md>
<p>If <var>first</var> is not null and <var>first</var> <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-ecmascript-language-types-string-type" id="ref-for-sec-ecmascript-language-types-string-type②">is not a String</a>,</p>
<ol>
<li data-md>
<p>Throw a <code class="idl"><a data-link-type="idl" href="#exceptiondef-runtimeerror" id="ref-for-exceptiondef-runtimeerror①①">RuntimeError</a></code> exception as if a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-trap" id="ref-for-syntax-trap⑧">trap</a> was executed.</p>
</ol>
<li data-md>
<p>If <var>second</var> is not null and <var>second</var> <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-ecmascript-language-types-string-type" id="ref-for-sec-ecmascript-language-types-string-type③">is not a String</a>,</p>
<ol>
<li data-md>
<p>Throw a <code class="idl"><a data-link-type="idl" href="#exceptiondef-runtimeerror" id="ref-for-exceptiondef-runtimeerror①②">RuntimeError</a></code> exception as if a <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/runtime.html#syntax-trap" id="ref-for-syntax-trap⑨">trap</a> was executed.</p>
</ol>
<li data-md>
<p>If <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands⑤⑦">!</a> <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-isstrictlyequal" id="ref-for-sec-isstrictlyequal">IsStrictlyEqual</a>(<var>first</var>, <var>second</var>) is true,</p>
<ol>
<li data-md>
<p>Return 1.</p>
</ol>
<li data-md>
<p>Return 0.</p>
</ol>
</div>
<h4 class="heading settled" data-level="6.1.14" id="js-string-compare"><span class="secno">6.1.14. </span><span class="content">compare</span><a class="self-link" href="#js-string-compare"></a></h4>
<p>The <var>funcType</var> of this builtin is <code>(rec (type (func (param externref externref) (result i32)))).0</code>.</p>
<div class="algorithm" data-algorithm="js-string-compare">
<p>When this builtin is invoked with parameters <var>first</var> and <var>second</var>, the following steps must be run:</p>
<ol>
<li data-md>
<p>Let <var>first</var> be <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands⑤⑧">?</a> <a data-link-type="abstract-op" href="#abstract-opdef-unwrapstring" id="ref-for-abstract-opdef-unwrapstring⑧">UnwrapString</a>(<var>first</var>).</p>
<li data-md>
<p>Let <var>second</var> be <a data-link-type="dfn" data-refhint-key="e09fca85" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands⑤⑨">?</a> <a data-link-type="abstract-op" href="#abstract-opdef-unwrapstring" id="ref-for-abstract-opdef-unwrapstring⑨">UnwrapString</a>(<var>second</var>).</p>
<li data-md>
<p>If <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands⑥⓪">!</a> <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-isstrictlyequal" id="ref-for-sec-isstrictlyequal①">IsStrictlyEqual</a>(<var>first</var>, <var>second</var>) is true,</p>
<ol>
<li data-md>
<p>Return 0.</p>
</ol>
<li data-md>
<p>If <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands" id="ref-for-sec-returnifabrupt-shorthands⑥①">!</a> <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-islessthan" id="ref-for-sec-islessthan">IsLessThan</a>(<var>first</var>, <var>second</var>, true) is true,</p>
<ol>
<li data-md>
<p>Return -1.</p>
</ol>
<li data-md>
<p>Return 1.</p>
</ol>
</div>
<h2 class="heading settled" data-level="7" id="errors"><span class="secno">7. </span><span class="content">Error Condition Mappings to JavaScript</span><a class="self-link" href="#errors"></a></h2>
<p>Running WebAssembly programs encounter certain events which halt execution of the WebAssembly code.
WebAssembly code (currently)
has no way to catch these conditions and thus an exception will necessarily
propagate to the enclosing non-WebAssembly caller (whether it is a browser,
JavaScript or another runtime system) where it is handled like a normal JavaScript exception.</p>
<p>If WebAssembly calls JavaScript via import and the JavaScript throws an
exception, the exception is propagated through the WebAssembly activation to the
enclosing caller.</p>
<p>Because JavaScript exceptions can be handled, and JavaScript can continue to
call WebAssembly exports after a trap has been handled, traps do not, in
general, prevent future execution.</p>
<h3 class="heading settled" data-level="7.1" id="stack-overflow"><span class="secno">7.1. </span><span class="content">Stack Overflow</span><a class="self-link" href="#stack-overflow"></a></h3>
<p>Whenever a stack overflow occurs in
WebAssembly code, the same class of exception is thrown as for a stack overflow in
JavaScript. The particular exception here is implementation-defined in both cases.</p>
<p class="note" role="note"><span class="marker">Note:</span> ECMAScript doesn’t specify any sort of behavior on stack overflow; implementations have been observed to throw <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-rangeerror" id="ref-for-sec-native-error-types-used-in-this-standard-rangeerror①②">RangeError</a></code>, InternalError or Error. Any is valid here.</p>
<h3 class="heading settled" data-level="7.2" id="out-of-memory"><span class="secno">7.2. </span><span class="content">Out of Memory</span><a class="self-link" href="#out-of-memory"></a></h3>
<p>Whenever validation, compilation or instantiation run out of memory, the
same class of exception is thrown as for out of memory conditions in JavaScript.
The particular exception here is implementation-defined in both cases.</p>
<p class="note" role="note"><span class="marker">Note:</span> ECMAScript doesn’t specify any sort of behavior on out-of-memory conditions; implementations have been observed to throw OOMError and to crash. Either is valid here.</p>
<div class="issue" id="issue-7eafcf54">
<a class="self-link" href="#issue-7eafcf54"></a>
A failed allocation of a large table or memory may either result in
<ul>
<li data-md>
<p>a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-rangeerror" id="ref-for-sec-native-error-types-used-in-this-standard-rangeerror①③">RangeError</a></code>, as specified in the <code class="idl"><a data-link-type="idl" href="#memory" id="ref-for-memory⑧">Memory</a></code> <code class="idl"><a data-link-type="idl" href="#dom-memory-grow" id="ref-for-dom-memory-grow①">grow()</a></code> and <code class="idl"><a data-link-type="idl" href="#table" id="ref-for-table⑥">Table</a></code> <code class="idl"><a data-link-type="idl" href="#dom-table-grow" id="ref-for-dom-table-grow①">grow()</a></code> operations</p>
<li data-md>
<p>returning -1 as the <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/instructions.html#exec-memory-grow" id="ref-for-exec-memory-grow①">memory.grow</a> instruction</p>
<li data-md>
<p>UA-specific OOM behavior as described in this section.</p>
</ul>
In a future revision, we may reconsider more reliable and recoverable errors for allocations of large amounts of memory.
<p>See <a href="https://github.com/WebAssembly/spec/issues/879">Issue 879</a> for further discussion.</p>
</div>
<h2 class="heading settled" data-level="8" id="limits"><span class="secno">8. </span><span class="content">Implementation-defined Limits</span><a class="self-link" href="#limits"></a></h2>
<p>The WebAssembly core specification allows an implementation to define limits on the syntactic structure of the module.
While each embedding of WebAssembly may choose to define its own limits, for predictability the standard WebAssembly JavaScript Interface described in this document defines the following exact limits.
An implementation must reject a module that exceeds one of the following limits with a <code class="idl"><a data-link-type="idl" href="#exceptiondef-compileerror" id="ref-for-exceptiondef-compileerror⑤">CompileError</a></code>.
In practice, an implementation may run out of resources for valid modules below these limits.</p>
<ul>
<li>The maximum size of a module is 1,073,741,824 bytes (1 GiB).
<li>The maximum number of types defined in the types section is 1,000,000.
<li>The maximum number of recursion groups defined in the types sections is 1,000,000.
<li>The maximum number of types defined in a recursion group is 1,000,000.
<li>The maximum depth of a defined subtype hierarchy is 63 (where a type defined with no supertype has depth 0).
<li>The maximum number of functions defined in a module is 1,000,000.
<li>The maximum number of imports declared in a module is 1,000,000.
<li>The maximum number of exports declared in a module is 1,000,000.
<li>The maximum number of globals defined in a module is 1,000,000.
<li>The maximum number of tags defined in a module is 1,000,000.
<li>The maximum number of data segments defined in a module is 100,000.
<li>The maximum number of tables, including declared or imported tables, is 100,000.
<li>The maximum size of a table is 10,000,000.
<li>The maximum number of table entries in any table initialization is 10,000,000.
<li>The maximum number of memories, including defined and imported memories, is 100.
<li>The maximum <code>min</code> or <code>max</code> field of a 32-bit memory is 65,536 pages (4 GiB).
<li>The maximum <code>min</code> or <code>max</code> field of a 64-bit memory is 2^37-1 pages (2^53 - 2^16 bytes).
<li>The maximum number of parameters to any function or block is 1,000.
<li>The maximum number of return values for any function or block is 1,000.
<li>The maximum size of a function body, including locals declarations, is 7,654,321 bytes.
<li>The maximum number of locals declared in a function, including implicitly declared as parameters, is 50,000.
<li>The maximum number of fields in a struct is 10,000.
<li>The maximum number of operands to <code>array.new_fixed</code> is 10,000.
</ul>
<p>An implementation must throw a <code class="idl"><a data-link-type="idl" href="#exceptiondef-runtimeerror" id="ref-for-exceptiondef-runtimeerror①③">RuntimeError</a></code> if one of the following limits is exceeded during runtime:
In practice, an implementation may run out of resources for valid modules below these limits.</p>
<ul>
<li>The maximum size of a table is 10,000,000.
<li>The maximum size of a 32-bit memory is 65,536 pages (4 GiB).
<li>The maximum size of a 64-bit memory is 262,144 pages (16 GiB).
</ul>
<h2 class="heading settled" data-level="9" id="security-considerations"><span class="secno">9. </span><span class="content">Security and Privacy Considerations</span><a class="self-link" href="#security-considerations"></a></h2>
<p><em>This section is non-normative.</em></p>
<p>This document defines a host environment for WebAssembly. It enables a WebAssembly instance to <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/modules.html#syntax-import" id="ref-for-syntax-import">import</a> JavaScript objects and functions from an <a data-link-type="dfn" href="#read-the-imports" id="ref-for-read-the-imports③">import object</a>, but otherwise provides no access to the embedding environment. Thus a WebAssembly instance is bound to the same constraints as JavaScript.</p>
<h2 class="heading settled" data-level="10" id="change-history"><span class="secno">10. </span><span class="content">Change History</span><a class="self-link" href="#change-history"></a></h2>
<p><em>This section is non-normative.</em></p>
<p>Since the original release 1.0 of the WebAssembly specification, a number of proposals for extensions have been integrated.
The following sections provide an overview of what has changed.</p>
<h3 class="heading settled" data-level="10.1" id="release-20"><span class="secno">10.1. </span><span class="content">Release 2.0</span><a class="self-link" href="#release-20"></a></h3>
<h4 class="no-toc heading settled" id="changes-multivalue">Multiple Values<a class="self-link" href="#changes-multivalue"></a></h4>
Multiple values can be returned to and from JavaScript functions as an <a data-link-type="dfn" href="https://tc39.github.io/ecma262/#sec-array-exotic-objects" id="ref-for-sec-array-exotic-objects">Array</a> object.
<h4 class="no-toc heading settled" id="changes-bigint">BigInt Integration<a class="self-link" href="#changes-bigint"></a></h4>
WebAssembly <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-numtype" id="ref-for-syntax-numtype①④">i64</a> values can be passed to and from JavaScript (via imported or exported globals, table get or set operations, function return values or arguments) as <a data-link-type="dfn" data-refhint-key="55e2e3f1" href="https://tc39.github.io/ecma262/#sec-ecmascript-language-types-bigint-type" id="ref-for-sec-ecmascript-language-types-bigint-type①">BigInt</a> objects.
<h4 class="no-toc heading settled" id="changes-reftypes">Reference Types<a class="self-link" href="#changes-reftypes"></a></h4>
JavaScript values can be passed to and from WebAssembly (via imported or exported globals, table set or get operations, and function arguments or return values) as <a data-link-type="dfn" data-refhint-key="92193adb" href="https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype" id="ref-for-syntax-reftype②⓪">externref</a> values.
<h4 class="no-toc heading settled" id="changes-multitable">Multiple Tables<a class="self-link" href="#changes-multitable"></a></h4>
Multiple tables can be exported and imported to and from JavaScript.
<h3 class="heading settled" data-level="10.2" id="release-30"><span class="secno">10.2. </span><span class="content">Release 3.0</span><a class="self-link" href="#release-30"></a></h3>
<h4 class="no-toc heading settled" id="changes-multimemory">Multiple Memories<a class="self-link" href="#changes-multimemory"></a></h4>
Multiple memories can be exported and imported to and from JavaScript.
<h4 class="no-toc heading settled" id="changes-js-sb">JS String Builtins<a class="self-link" href="#changes-js-sb"></a></h4>
Added a builtins option when compiling a module, and a collection of builtin functions for manipulating JS Strings.
</main>
<div data-fill-with="conformance">
<h2 class="no-ref no-num heading settled" id="w3c-conformance"><span class="content">Conformance</span><a class="self-link" href="#w3c-conformance"></a></h2>
<h3 class="no-ref no-num heading settled" id="w3c-conventions"><span class="content">Document conventions</span><a class="self-link" href="#w3c-conventions"></a></h3>
<p>Conformance requirements are expressed
with a combination of descriptive assertions
and RFC 2119 terminology.
The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL”
in the normative parts of this document
are to be interpreted as described in RFC 2119.
However, for readability,
these words do not appear in all uppercase letters in this specification.
</p>
<p>All of the text of this specification is normative
except sections explicitly marked as non-normative, examples, and notes. <a data-link-type="biblio" href="#biblio-rfc2119" title="Key words for use in RFCs to Indicate Requirement Levels">[RFC2119]</a>
</p>
<p>Examples in this specification are introduced with the words “for example”
or are set apart from the normative text
with <code>class="example"</code>,
like this:
</p>
<div class="example" id="w3c-example">
<a class="self-link" href="#w3c-example"></a>
<p>This is an example of an informative example.
</p>
</div>
<p>Informative notes begin with the word “Note”
and are set apart from the normative text
with <code>class="note"</code>,
like this:
</p>
<p class="note" role="note">Note, this is an informative note.</p>
<section>
<h3 class="no-ref no-num heading settled" id="w3c-conformant-algorithms"><span class="content">Conformant Algorithms</span><a class="self-link" href="#w3c-conformant-algorithms"></a></h3>
<p>Requirements phrased in the imperative as part of algorithms
(such as "strip any leading space characters"
or "return false and abort these steps")
are to be interpreted with the meaning of the key word
("must", "should", "may", etc)
used in introducing the algorithm.
</p>
<p>Conformance requirements phrased as algorithms or specific steps
can be implemented in any manner,
so long as the end result is equivalent.
In particular, the algorithms defined in this specification
are intended to be easy to understand
and are not intended to be performant.
Implementers are encouraged to optimize.
</p>
</section>
</div>
<script src="https://www.w3.org/scripts/TR/2021/fixup.js"></script>
<h2 class="no-num no-ref heading settled" id="index"><span class="content">Index</span><a class="self-link" href="#index"></a></h2>
<h3 class="no-num no-ref heading settled" id="index-defined-here"><span class="content">Terms defined by this specification</span><a class="self-link" href="#index-defined-here"></a></h3>
<ul class="index">
<li><a href="#HostResizeArrayBuffer">abstract operation HostResizeArrayBuffer</a><span>, in § 5.3</span>
<li>
address
<ul>
<li><a href="#dom-memorydescriptor-address">dict-member for MemoryDescriptor</a><span>, in § 5.3</span>
<li><a href="#dom-tabledescriptor-address">dict-member for TableDescriptor</a><span>, in § 5.4</span>
</ul>
<li><a href="#enumdef-addresstype">AddressType</a><span>, in § 5.1</span>
<li><a href="#typedefdef-addressvalue">AddressValue</a><span>, in § 5.1</span>
<li><a href="#addressvaluetou64">AddressValueToU64</a><span>, in § 5.6</span>
<li><a href="#a-new-exported-function">a new Exported Function</a><span>, in § 5.6</span>
<li><a href="#a-new-exported-gc-object">a new Exported GC Object</a><span>, in § 5.8</span>
<li>
"anyfunc"
<ul>
<li><a href="#dom-tablekind-anyfunc">enum-value for TableKind</a><span>, in § 5.4</span>
<li><a href="#dom-valuetype-anyfunc">enum-value for ValueType</a><span>, in § 5.5</span>
</ul>
<li><a href="#associated-store">associated store</a><span>, in § 4.1</span>
<li><a href="#asynchronously-compile-a-webassembly-module">asynchronously compile a WebAssembly module</a><span>, in § 5</span>
<li><a href="#asynchronously-instantiate-a-webassembly-module">asynchronously instantiate a WebAssembly module</a><span>, in § 5</span>
<li><a href="#dom-memory-buffer">buffer</a><span>, in § 5.3</span>
<li><a href="#dom-webassemblycompileoptions-builtins">builtins</a><span>, in § 5</span>
<li><a href="#call-an-exported-function">call an Exported Function</a><span>, in § 5.6</span>
<li><a href="#abstract-opdef-charcodeat">CharCodeAt</a><span>, in § 6.1.1</span>
<li><a href="#compile-a-webassembly-module">compile a WebAssembly module</a><span>, in § 5</span>
<li><a href="#dom-webassembly-compile">compile(bytes)</a><span>, in § 5</span>
<li><a href="#dom-webassembly-compile">compile(bytes, options)</a><span>, in § 5</span>
<li><a href="#exceptiondef-compileerror">CompileError</a><span>, in § 5.10</span>
<li><a href="#construct-a-webassembly-module-object">construct a WebAssembly module object</a><span>, in § 5</span>
<li><a href="#dom-module-module">constructor(bytes)</a><span>, in § 5.1</span>
<li><a href="#dom-module-module">constructor(bytes, options)</a><span>, in § 5.1</span>
<li>
constructor(descriptor)
<ul>
<li><a href="#dom-global-global">constructor for Global</a><span>, in § 5.5</span>
<li><a href="#dom-memory-memory">constructor for Memory</a><span>, in § 5.3</span>
<li><a href="#dom-table-table">constructor for Table</a><span>, in § 5.4</span>
</ul>
<li><a href="#dom-global-global">constructor(descriptor, v)</a><span>, in § 5.5</span>
<li><a href="#dom-table-table">constructor(descriptor, value)</a><span>, in § 5.4</span>
<li><a href="#dom-exception-exception">constructor(exceptionTag, payload)</a><span>, in § 5.9</span>
<li><a href="#dom-exception-exception">constructor(exceptionTag, payload, options)</a><span>, in § 5.9</span>
<li><a href="#dom-instance-instance">constructor(module)</a><span>, in § 5.2</span>
<li><a href="#dom-instance-instance">constructor(module, importObject)</a><span>, in § 5.2</span>
<li><a href="#dom-tag-tag">constructor(type)</a><span>, in § 5.7.1</span>
<li><a href="#create-a-builtin-function">create a builtin function</a><span>, in § 6</span>
<li><a href="#create-a-fixed-length-memory-buffer">create a fixed length memory buffer</a><span>, in § 5.3</span>
<li><a href="#create-a-global-object">create a global object</a><span>, in § 5.5</span>
<li><a href="#create-a-host-function">create a host function</a><span>, in § 5.6</span>
<li><a href="#create-a-memory-object">create a memory object</a><span>, in § 5.3</span>
<li><a href="#create-an-exception-object">create an Exception object</a><span>, in § 5.9</span>
<li><a href="#create-an-exports-object">create an exports object</a><span>, in § 5</span>
<li><a href="#create-a-resizable-memory-buffer">create a resizable memory buffer</a><span>, in § 5.3</span>
<li><a href="#create-a-table-object">create a table object</a><span>, in § 5.4</span>
<li><a href="#create-a-tag-object">create a Tag object</a><span>, in § 5.7.1</span>
<li><a href="#dom-module-customsections">customSections(moduleObject, sectionName)</a><span>, in § 5.1</span>
<li><a href="#defaultvalue">DefaultValue</a><span>, in § 5.5</span>
<li><a href="#defineownproperty-internal-method-of-an-exported-gc-object">[[DefineOwnProperty]] internal method of an Exported GC Object</a><span>, in § 5.8</span>
<li><a href="#delete-internal-method-of-an-exported-gc-object">[[Delete]] internal method of an Exported GC Object</a><span>, in § 5.8</span>
<li><a href="#dom-tabledescriptor-element">element</a><span>, in § 5.4</span>
<li><a href="#exception">Exception</a><span>, in § 5.9</span>
<li><a href="#dom-exception-exception">Exception(exceptionTag, payload)</a><span>, in § 5.9</span>
<li><a href="#dom-exception-exception">Exception(exceptionTag, payload, options)</a><span>, in § 5.9</span>
<li><a href="#exception-object-cache">Exception object cache</a><span>, in § 4.2</span>
<li><a href="#dictdef-exceptionoptions">ExceptionOptions</a><span>, in § 5.9</span>
<li><a href="#exported-function">Exported Function</a><span>, in § 5.6</span>
<li><a href="#exported-function-cache">Exported Function cache</a><span>, in § 4.2</span>
<li><a href="#exported-gc-object">Exported GC Object</a><span>, in § 5.8</span>
<li><a href="#exported-gc-object-cache">Exported GC Object cache</a><span>, in § 4.2</span>
<li><a href="#dom-instance-exports">exports</a><span>, in § 5.2</span>
<li><a href="#dom-module-exports">exports(moduleObject)</a><span>, in § 5.1</span>
<li>
"externref"
<ul>
<li><a href="#dom-tablekind-externref">enum-value for TableKind</a><span>, in § 5.4</span>
<li><a href="#dom-valuetype-externref">enum-value for ValueType</a><span>, in § 5.5</span>
</ul>
<li><a href="#dom-valuetype-f32">"f32"</a><span>, in § 5.5</span>
<li><a href="#dom-valuetype-f64">"f64"</a><span>, in § 5.5</span>
<li><a href="#find-a-builtin">find a builtin</a><span>, in § 6</span>
<li><a href="#abstract-opdef-fromcharcode">FromCharCode</a><span>, in § 6.1.1</span>
<li><a href="#dom-importexportkind-function">"function"</a><span>, in § 5.1</span>
<li><a href="#dom-exception-getarg">getArg(index)</a><span>, in § 5.9</span>
<li><a href="#getglobalvalue">GetGlobalValue</a><span>, in § 5.5</span>
<li><a href="#dom-table-get">get(index)</a><span>, in § 5.4</span>
<li><a href="#get-internal-method-of-an-exported-gc-object">[[Get]] internal method of an Exported GC Object</a><span>, in § 5.8</span>
<li><a href="#getownproperty-internal-method-of-an-exported-gc-object">[[GetOwnProperty]] internal method of an Exported GC Object</a><span>, in § 5.8</span>
<li><a href="#getprototypeof-internal-method-of-an-exported-gc-object">[[GetPrototypeOf]] internal method of an Exported GC Object</a><span>, in § 5.8</span>
<li><a href="#get-the-builtins-for-a-builtin-set">get the builtins for a builtin set</a><span>, in § 6</span>
<li><a href="#get-the-javascript-exception-tag">get the JavaScript exception tag</a><span>, in § 5.9.1</span>
<li><a href="#dom-importexportkind-global">"global"</a><span>, in § 5.1</span>
<li><a href="#global">Global</a><span>, in § 5.5</span>
<li><a href="#dom-global-global">Global(descriptor)</a><span>, in § 5.5</span>
<li><a href="#dictdef-globaldescriptor">GlobalDescriptor</a><span>, in § 5.5</span>
<li><a href="#dom-global-global">Global(descriptor, v)</a><span>, in § 5.5</span>
<li><a href="#global-object-cache">Global object cache</a><span>, in § 4.2</span>
<li>
grow(delta)
<ul>
<li><a href="#dom-memory-grow">method for Memory</a><span>, in § 5.3</span>
<li><a href="#dom-table-grow">method for Table</a><span>, in § 5.4</span>
</ul>
<li><a href="#dom-table-grow">grow(delta, value)</a><span>, in § 5.4</span>
<li><a href="#grow-the-memory-buffer">grow the memory buffer</a><span>, in § 5.3</span>
<li><a href="#hasproperty-internal-method-of-an-exported-gc-object">[[HasProperty]] internal method of an Exported GC Object</a><span>, in § 5.8</span>
<li><a href="#host-value-cache">Host value cache</a><span>, in § 4.2</span>
<li>
"i32"
<ul>
<li><a href="#dom-addresstype-i32">enum-value for AddressType</a><span>, in § 5.1</span>
<li><a href="#dom-valuetype-i32">enum-value for ValueType</a><span>, in § 5.5</span>
</ul>
<li>
"i64"
<ul>
<li><a href="#dom-addresstype-i64">enum-value for AddressType</a><span>, in § 5.1</span>
<li><a href="#dom-valuetype-i64">enum-value for ValueType</a><span>, in § 5.5</span>
</ul>
<li><a href="#identified-with">identified with</a><span>, in § 4.1</span>
<li><a href="#dom-webassemblycompileoptions-importedstringconstants">importedStringConstants</a><span>, in § 5</span>
<li><a href="#enumdef-importexportkind">ImportExportKind</a><span>, in § 5.1</span>
<li><a href="#dom-module-imports">imports(moduleObject)</a><span>, in § 5.1</span>
<li><a href="#index-of-the-host-function">index of the host function</a><span>, in § 5</span>
<li>
initial
<ul>
<li><a href="#dom-memorydescriptor-initial">dict-member for MemoryDescriptor</a><span>, in § 5.3</span>
<li><a href="#dom-tabledescriptor-initial">dict-member for TableDescriptor</a><span>, in § 5.4</span>
</ul>
<li><a href="#initialize-a-global-object">initialize a global object</a><span>, in § 5.5</span>
<li><a href="#initialize-a-memory-object">initialize a memory object</a><span>, in § 5.3</span>
<li><a href="#initialize-an-exception-object">initialize an Exception object</a><span>, in § 5.9</span>
<li><a href="#initialize-an-instance-object">initialize an instance object</a><span>, in § 5</span>
<li><a href="#initialize-a-table-object">initialize a table object</a><span>, in § 5.4</span>
<li><a href="#initialize-a-tag-object">initialize a Tag object</a><span>, in § 5.7.1</span>
<li><a href="#instance">Instance</a><span>, in § 5.2</span>
<li><a href="#dom-webassemblyinstantiatedsource-instance">instance</a><span>, in § 5</span>
<li><a href="#dom-instance-instance">Instance(module)</a><span>, in § 5.2</span>
<li><a href="#dom-instance-instance">Instance(module, importObject)</a><span>, in § 5.2</span>
<li><a href="#instantiate-a-builtin-set">instantiate a builtin set</a><span>, in § 6</span>
<li><a href="#instantiate-a-promise-of-a-module">instantiate a promise of a module</a><span>, in § 5</span>
<li><a href="#dom-webassembly-instantiate">instantiate(bytes)</a><span>, in § 5</span>
<li><a href="#dom-webassembly-instantiate">instantiate(bytes, importObject)</a><span>, in § 5</span>
<li><a href="#dom-webassembly-instantiate">instantiate(bytes, importObject, options)</a><span>, in § 5</span>
<li><a href="#instantiate-imported-strings">instantiate imported strings</a><span>, in § 5</span>
<li><a href="#dom-webassembly-instantiate-moduleobject-importobject">instantiate(moduleObject)</a><span>, in § 5</span>
<li><a href="#dom-webassembly-instantiate-moduleobject-importobject">instantiate(moduleObject, importObject)</a><span>, in § 5</span>
<li><a href="#instantiate-the-core-of-a-webassembly-module">instantiate the core of a WebAssembly module</a><span>, in § 5</span>
<li><a href="#dom-exception-is">is(exceptionTag)</a><span>, in § 5.9</span>
<li><a href="#isextensible-internal-method-of-an-exported-gc-object">[[IsExtensible]] internal method of an Exported GC Object</a><span>, in § 5.8</span>
<li><a href="#javascript-exception-tag">JavaScript exception tag</a><span>, in § 5.9.1</span>
<li><a href="#dom-webassembly-jstag">JSTag</a><span>, in § 5</span>
<li>
kind
<ul>
<li><a href="#dom-moduleexportdescriptor-kind">dict-member for ModuleExportDescriptor</a><span>, in § 5.1</span>
<li><a href="#dom-moduleimportdescriptor-kind">dict-member for ModuleImportDescriptor</a><span>, in § 5.1</span>
</ul>
<li><a href="#dom-table-length">length</a><span>, in § 5.4</span>
<li><a href="#exceptiondef-linkerror">LinkError</a><span>, in § 5.10</span>
<li>
maximum
<ul>
<li><a href="#dom-memorydescriptor-maximum">dict-member for MemoryDescriptor</a><span>, in § 5.3</span>
<li><a href="#dom-tabledescriptor-maximum">dict-member for TableDescriptor</a><span>, in § 5.4</span>
</ul>
<li><a href="#dom-importexportkind-memory">"memory"</a><span>, in § 5.1</span>
<li><a href="#memory">Memory</a><span>, in § 5.3</span>
<li><a href="#dom-memory-memory">Memory(descriptor)</a><span>, in § 5.3</span>
<li><a href="#dictdef-memorydescriptor">MemoryDescriptor</a><span>, in § 5.3</span>
<li><a href="#memory-object-cache">Memory object cache</a><span>, in § 4.2</span>
<li><a href="#module">Module</a><span>, in § 5.1</span>
<li>
module
<ul>
<li><a href="#dom-moduleimportdescriptor-module">dict-member for ModuleImportDescriptor</a><span>, in § 5.1</span>
<li><a href="#dom-webassemblyinstantiatedsource-module">dict-member for WebAssemblyInstantiatedSource</a><span>, in § 5</span>
</ul>
<li><a href="#dom-module-module">Module(bytes)</a><span>, in § 5.1</span>
<li><a href="#dom-module-module">Module(bytes, options)</a><span>, in § 5.1</span>
<li><a href="#dictdef-moduleexportdescriptor">ModuleExportDescriptor</a><span>, in § 5.1</span>
<li><a href="#dictdef-moduleimportdescriptor">ModuleImportDescriptor</a><span>, in § 5.1</span>
<li><a href="#dom-globaldescriptor-mutable">mutable</a><span>, in § 5.5</span>
<li>
name
<ul>
<li><a href="#builtin-set-name">dfn for builtin-set</a><span>, in § 6</span>
<li><a href="#dom-moduleexportdescriptor-name">dict-member for ModuleExportDescriptor</a><span>, in § 5.1</span>
<li><a href="#dom-moduleimportdescriptor-name">dict-member for ModuleImportDescriptor</a><span>, in § 5.1</span>
</ul>
<li><a href="#name-of-the-webassembly-function">name of the WebAssembly function</a><span>, in § 5.6</span>
<li><a href="#ownpropertykeys-internal-method-of-an-exported-gc-object">[[OwnPropertyKeys]] internal method of an Exported GC Object</a><span>, in § 5.8</span>
<li><a href="#dom-tagtype-parameters">parameters</a><span>, in § 5.7.1</span>
<li><a href="#preventextensions-internal-method-of-an-exported-gc-object">[[PreventExtensions]] internal method of an Exported GC Object</a><span>, in § 5.8</span>
<li><a href="#builtin-set-qualified-name">qualified name</a><span>, in § 6</span>
<li><a href="#read-the-imports">read the imports</a><span>, in § 5</span>
<li><a href="#refresh-the-memory-buffer">refresh the Memory buffer</a><span>, in § 5.3</span>
<li><a href="#retrieving-a-host-value">retrieving a host value</a><span>, in § 5.6</span>
<li><a href="#run-a-host-function">run a host function</a><span>, in § 5.6</span>
<li><a href="#exceptiondef-runtimeerror">RuntimeError</a><span>, in § 5.10</span>
<li><a href="#dom-table-set">set(index)</a><span>, in § 5.4</span>
<li><a href="#dom-table-set">set(index, value)</a><span>, in § 5.4</span>
<li><a href="#set-internal-method-of-an-exported-gc-object">[[Set]] internal method of an Exported GC Object</a><span>, in § 5.8</span>
<li><a href="#setprototypeof-internal-method-of-an-exported-gc-object">[[SetPrototypeOf]] internal method of an Exported GC Object</a><span>, in § 5.8</span>
<li><a href="#dom-exception-stack">stack</a><span>, in § 5.9</span>
<li><a href="#string-value-of-the-extern-type">string value of the extern type</a><span>, in § 5.1</span>
<li><a href="#dom-importexportkind-table">"table"</a><span>, in § 5.1</span>
<li><a href="#table">Table</a><span>, in § 5.4</span>
<li><a href="#dom-table-table">Table(descriptor)</a><span>, in § 5.4</span>
<li><a href="#dictdef-tabledescriptor">TableDescriptor</a><span>, in § 5.4</span>
<li><a href="#dom-table-table">Table(descriptor, value)</a><span>, in § 5.4</span>
<li><a href="#enumdef-tablekind">TableKind</a><span>, in § 5.4</span>
<li><a href="#table-object-cache">Table object cache</a><span>, in § 4.2</span>
<li><a href="#dom-importexportkind-tag">"tag"</a><span>, in § 5.1</span>
<li><a href="#tag">Tag</a><span>, in § 5.7.1</span>
<li><a href="#tag_alloc">tag_alloc</a><span>, in § 5.7</span>
<li><a href="#tag-object-cache">Tag object cache</a><span>, in § 4.2</span>
<li><a href="#dom-tag-tag">Tag(type)</a><span>, in § 5.7.1</span>
<li><a href="#dictdef-tagtype">TagType</a><span>, in § 5.7.1</span>
<li><a href="#dom-memory-tofixedlengthbuffer">toFixedLengthBuffer()</a><span>, in § 5.3</span>
<li><a href="#tojsvalue">ToJSValue</a><span>, in § 5.6</span>
<li><a href="#dom-memory-toresizablebuffer">toResizableBuffer()</a><span>, in § 5.3</span>
<li><a href="#tovaluetype">ToValueType</a><span>, in § 5.5</span>
<li><a href="#towebassemblyvalue">ToWebAssemblyValue</a><span>, in § 5.6</span>
<li><a href="#dom-exceptionoptions-tracestack">traceStack</a><span>, in § 5.9</span>
<li><a href="#u64toaddressvalue">U64ToAddressValue</a><span>, in § 5.6</span>
<li><a href="#abstract-opdef-unwrapstring">UnwrapString</a><span>, in § 6.1.1</span>
<li><a href="#dom-valuetype-v128">"v128"</a><span>, in § 5.5</span>
<li><a href="#validate-an-import-for-builtins">validate an import for builtins</a><span>, in § 6</span>
<li><a href="#validate-builtins-and-imported-string-for-a-webassembly-module">validate builtins and imported string for a WebAssembly module</a><span>, in § 5</span>
<li><a href="#validate-builtin-set-names">validate builtin set names</a><span>, in § 6</span>
<li><a href="#dom-webassembly-validate">validate(bytes)</a><span>, in § 5</span>
<li><a href="#dom-webassembly-validate">validate(bytes, options)</a><span>, in § 5</span>
<li>
value
<ul>
<li><a href="#dom-global-value">attribute for Global</a><span>, in § 5.5</span>
<li><a href="#dom-globaldescriptor-value">dict-member for GlobalDescriptor</a><span>, in § 5.5</span>
</ul>
<li><a href="#dom-global-valueof">valueOf()</a><span>, in § 5.5</span>
<li><a href="#enumdef-valuetype">ValueType</a><span>, in § 5.5</span>
<li><a href="#namespacedef-webassembly">WebAssembly</a><span>, in § 5</span>
<li><a href="#dictdef-webassemblycompileoptions">WebAssemblyCompileOptions</a><span>, in § 5</span>
<li><a href="#dictdef-webassemblyinstantiatedsource">WebAssemblyInstantiatedSource</a><span>, in § 5</span>
</ul>
<h3 class="no-num no-ref heading settled" id="index-defined-elsewhere"><span class="content">Terms defined by reference</span><a class="self-link" href="#index-defined-elsewhere"></a></h3>
<ul class="index">
<li>
<a data-link-type="biblio">[ECMASCRIPT]</a> defines the following terms:
<ul>
<li><span class="dfn-paneled" id="cd4b1dc4">!</span>
<li><span class="dfn-paneled" id="971914e6">%Symbol.iterator%</span>
<li><span class="dfn-paneled" id="ebb4ace3">?</span>
<li><span class="dfn-paneled" id="f17862f0">ArrayBuffer</span>
<li><span class="dfn-paneled" id="81131be0">Call</span>
<li><span class="dfn-paneled" id="4c6c6f05">CreateArrayFromList</span>
<li><span class="dfn-paneled" id="6df10f44">CreateBuiltinFunction</span>
<li><span class="dfn-paneled" id="d2c61922">CreateDataProperty</span>
<li><span class="dfn-paneled" id="750115f9">DefineMethodProperty</span>
<li><span class="dfn-paneled" id="d7a47d32">DetachArrayBuffer</span>
<li><span class="dfn-paneled" id="abf85593">Get</span>
<li><span class="dfn-paneled" id="d83ccb33">GetIteratorFromMethod</span>
<li><span class="dfn-paneled" id="5b7339ce">GetMethod</span>
<li><span class="dfn-paneled" id="dc07163b">IsCallable</span>
<li><span class="dfn-paneled" id="a2df2252">IteratorToList</span>
<li><span class="dfn-paneled" id="e2fb14e5">NumericToRawBytes</span>
<li><span class="dfn-paneled" id="ebbbef34">OrdinaryObjectCreate</span>
<li><span class="dfn-paneled" id="43564950">RangeError</span>
<li><span class="dfn-paneled" id="369594bc">SetIntegrityLevel</span>
<li><span class="dfn-paneled" id="4adb26f1">ToBigInt</span>
<li><span class="dfn-paneled" id="b29f5d72">ToBigInt64</span>
<li><span class="dfn-paneled" id="06f63be9">ToInt32</span>
<li><span class="dfn-paneled" id="9ab06711">ToNumber</span>
<li><span class="dfn-paneled" id="4a854a91">ToString</span>
<li><span class="dfn-paneled" id="58788f9d">TypeError</span>
<li><span class="dfn-paneled" id="a653126b">agent</span>
<li><span class="dfn-paneled" id="fa5c4242">agent cluster</span>
<li><span class="dfn-paneled" id="886dee79">Array</span>
<li><span class="dfn-paneled" id="49bbfc32">BigInt</span>
<li><span class="dfn-paneled" id="e8f0aed3">Built-in Function Objects</span>
<li><span class="dfn-paneled" id="b107f911">current Realm</span>
<li><span class="dfn-paneled" id="eca66c99">Data Block</span>
<li><span class="dfn-paneled" id="921f1639">is a Number</span>
<li><span class="dfn-paneled" id="adc63453">is not a BigInt</span>
<li><span class="dfn-paneled" id="4380dc8b">is not a Number</span>
<li><span class="dfn-paneled" id="836ae954">is not a String</span>
<li><span class="dfn-paneled" id="ef0b8e0c">is not an Object</span>
<li><span class="dfn-paneled" id="a7b8aad7">IsLessThan</span>
<li><span class="dfn-paneled" id="f2ca6ec5">IsStrictlyEqual</span>
<li><span class="dfn-paneled" id="9b36d7ac">MakeBasicObject</span>
<li><span class="dfn-paneled" id="4f4736a6">mathematical value</span>
<li><span class="dfn-paneled" id="f9dbc1a8">NativeError Object Structure</span>
<li><span class="dfn-paneled" id="01d93e6a">SameValue</span>
<li><span class="dfn-paneled" id="c48cd0b9">String</span>
<li><span class="dfn-paneled" id="f0590fd3">String.fromCharCode</span>
<li><span class="dfn-paneled" id="288fbd68">String.fromCodePoint</span>
<li><span class="dfn-paneled" id="19a9b79b">String.prototype.charCodeAt</span>
<li><span class="dfn-paneled" id="a5e80a0a">String.prototype.codePointAt</span>
<li><span class="dfn-paneled" id="74269a03">String.prototype.concat</span>
<li><span class="dfn-paneled" id="7b8dca78">String.prototype.substring</span>
<li><span class="dfn-paneled" id="4ad913ae">surrounding agent</span>
<li><span class="dfn-paneled" id="7b8e8458"></span>
<li><span class="dfn-paneled" id="8b2a5c87"></span>
<li><span class="dfn-paneled" id="c3b271ac">𝔽</span>
</ul>
<li>
<a data-link-type="biblio">[ENCODING]</a> defines the following terms:
<ul>
<li><span class="dfn-paneled" id="f256859a">UTF-8 decode without BOM or fail</span>
</ul>
<li>
<a data-link-type="biblio">[HTML]</a> defines the following terms:
<ul>
<li><span class="dfn-paneled" id="d5ac3b38">clean up after running a callback</span>
<li><span class="dfn-paneled" id="b6a1ae3f">clean up after running script</span>
<li><span class="dfn-paneled" id="a72449dd">in parallel</span>
<li><span class="dfn-paneled" id="d7af7adc">incumbent settings object</span>
<li><span class="dfn-paneled" id="b5c3b552">prepare to run a callback</span>
<li><span class="dfn-paneled" id="c2359c09">prepare to run script</span>
<li><span class="dfn-paneled" id="9a517a7d">queue a task</span>
<li><span class="dfn-paneled" id="7deb6835">settings object</span>
<li><span class="dfn-paneled" id="c3b2d08c">task source</span>
</ul>
<li>
<a data-link-type="biblio">[INFRA]</a> defines the following terms:
<ul>
<li><span class="dfn-paneled" id="53275e46">append</span>
<li><span class="dfn-paneled" id="f937b7b6">continue</span>
<li><span class="dfn-paneled" id="1243a891">exist</span>
<li><span class="dfn-paneled" id="6b815fdd">is empty</span>
<li><span class="dfn-paneled" id="f02cd417">iterate <small>(for list)</small></span>
<li><span class="dfn-paneled" id="efe8653e">iterate <small>(for map)</small></span>
<li><span class="dfn-paneled" id="0fa357c3">length</span>
<li><span class="dfn-paneled" id="649608b9">list</span>
<li><span class="dfn-paneled" id="84b454ff">ordered map</span>
<li><span class="dfn-paneled" id="0e6b2056">set</span>
<li><span class="dfn-paneled" id="0204d188">size</span>
</ul>
<li>
<a data-link-type="biblio">[RESIZABLEARRAYBUFFER PROPOSAL]</a> defines the following terms:
<ul>
<li><span class="dfn-paneled" id="5f3abfd0">HostResizeArrayBuffer</span>
<li><span class="dfn-paneled" id="3ed14caf">IsFixedLengthArrayBuffer</span>
</ul>
<li>
<a data-link-type="biblio">[WEBASSEMBLY]</a> defines the following terms:
<ul>
<li><span class="dfn-paneled" id="0656fbb6">+∞</span>
<li><span class="dfn-paneled" id="048283eb">address</span>
<li><span class="dfn-paneled" id="815c3a81">address type</span>
<li><span class="dfn-paneled" id="190fb93b">any</span>
<li><span class="dfn-paneled" id="a7f74307">array address</span>
<li><span class="dfn-paneled" id="2ad7bc40">canon</span>
<li><span class="dfn-paneled" id="a7321e13">const</span>
<li><span class="dfn-paneled" id="98bf2453">current frame</span>
<li><span class="dfn-paneled" id="06930779">custom section</span>
<li><span class="dfn-paneled" id="a43f3aaf">customsec</span>
<li><span class="dfn-paneled" id="61356085">embedding interface</span>
<li><span class="dfn-paneled" id="c44f39b6">error</span>
<li><span class="dfn-paneled" id="fcf11545">exception</span>
<li><span class="dfn-paneled" id="361dac10">exception address</span>
<li><span class="dfn-paneled" id="f3597ae0">exn_alloc</span>
<li><span class="dfn-paneled" id="56473266">exn_read</span>
<li><span class="dfn-paneled" id="903777ae">exn_tag</span>
<li><span class="dfn-paneled" id="e03ea6cc">exnref</span>
<li><span class="dfn-paneled" id="09d78e0f">extern</span>
<li><span class="dfn-paneled" id="c8c81d72">external value</span>
<li><span class="dfn-paneled" id="ef3c2587">externref</span>
<li><span class="dfn-paneled" id="9105068d">f32</span>
<li><span class="dfn-paneled" id="bb4be968">f32.const</span>
<li><span class="dfn-paneled" id="ffa3e8fc">f64</span>
<li><span class="dfn-paneled" id="16d0e7c3">f64.const</span>
<li><span class="dfn-paneled" id="486e6f39">func <small>(for external-type)</small></span>
<li><span class="dfn-paneled" id="3435afe9">func <small>(for heap-type)</small></span>
<li><span class="dfn-paneled" id="94f4c8ee">func_alloc</span>
<li><span class="dfn-paneled" id="e4286588">func_invoke</span>
<li><span class="dfn-paneled" id="2d67382f">func_type</span>
<li><span class="dfn-paneled" id="9a03a0e9">funcref</span>
<li><span class="dfn-paneled" id="ca17d396">function address</span>
<li><span class="dfn-paneled" id="4fc7e98f">global</span>
<li><span class="dfn-paneled" id="77489c34">global address</span>
<li><span class="dfn-paneled" id="9057d48e">global instance</span>
<li><span class="dfn-paneled" id="fc0ee513">global_alloc</span>
<li><span class="dfn-paneled" id="218fe9cc">global_read</span>
<li><span class="dfn-paneled" id="24a3a894">global_type</span>
<li><span class="dfn-paneled" id="0c039093">global_write</span>
<li><span class="dfn-paneled" id="bb2af9ca">host address</span>
<li><span class="dfn-paneled" id="41c521da">host function</span>
<li><span class="dfn-paneled" id="0108e6a0">i32</span>
<li><span class="dfn-paneled" id="a6ac3d87">i32.const</span>
<li><span class="dfn-paneled" id="6bdc3470">i64</span>
<li><span class="dfn-paneled" id="93d2e53d">i64.const</span>
<li><span class="dfn-paneled" id="f0c8810c">import</span>
<li><span class="dfn-paneled" id="f56c24ad">imports</span>
<li><span class="dfn-paneled" id="3952ef8f">instance_export</span>
<li><span class="dfn-paneled" id="85bce96e">limits</span>
<li><span class="dfn-paneled" id="9dd8925c">match_externtype</span>
<li><span class="dfn-paneled" id="9233088d">match_valtype</span>
<li><span class="dfn-paneled" id="297c7b14">mem</span>
<li><span class="dfn-paneled" id="aaa7a4ae">mem_alloc</span>
<li><span class="dfn-paneled" id="84eac0df">mem_grow</span>
<li><span class="dfn-paneled" id="161ae644">mem_size</span>
<li><span class="dfn-paneled" id="a93d50a7">mem_type</span>
<li><span class="dfn-paneled" id="f06ddd8a">memaddrs</span>
<li><span class="dfn-paneled" id="fbc61d3f">memory address</span>
<li><span class="dfn-paneled" id="746f6bc3">memory instance</span>
<li><span class="dfn-paneled" id="69ce1dac">memory type</span>
<li><span class="dfn-paneled" id="0b6a1132">memory.grow</span>
<li><span class="dfn-paneled" id="97e3d406">module</span>
<li><span class="dfn-paneled" id="1f093a91">module <small>(for frame)</small></span>
<li><span class="dfn-paneled" id="6c660071">module grammar</span>
<li><span class="dfn-paneled" id="3c380f81">module_decode</span>
<li><span class="dfn-paneled" id="76674d02">module_exports</span>
<li><span class="dfn-paneled" id="8780316d">module_imports</span>
<li><span class="dfn-paneled" id="baaf40e3">module_instantiate</span>
<li><span class="dfn-paneled" id="f3aaa883">module_validate</span>
<li><span class="dfn-paneled" id="8047ff82">nan</span>
<li><span class="dfn-paneled" id="dce4d017">page size</span>
<li><span class="dfn-paneled" id="2ab6b777">ref</span>
<li><span class="dfn-paneled" id="4da9fc5c">ref.array</span>
<li><span class="dfn-paneled" id="32922d65">ref.exn</span>
<li><span class="dfn-paneled" id="339ed507">ref.extern</span>
<li><span class="dfn-paneled" id="cdfd15a5">ref.func</span>
<li><span class="dfn-paneled" id="640ee28c">ref.host</span>
<li><span class="dfn-paneled" id="679f4232">ref.i31</span>
<li><span class="dfn-paneled" id="c3871e59">ref.null</span>
<li><span class="dfn-paneled" id="cf718107">ref.struct</span>
<li><span class="dfn-paneled" id="38f8a72a">ref_type</span>
<li><span class="dfn-paneled" id="e76d80be">reftype</span>
<li><span class="dfn-paneled" id="1c3da45d">scope</span>
<li><span class="dfn-paneled" id="7c586764">sequence</span>
<li><span class="dfn-paneled" id="76ec690d">signed_31</span>
<li><span class="dfn-paneled" id="fd73fa9f">signed_32</span>
<li><span class="dfn-paneled" id="0fbe5247">signed_64</span>
<li><span class="dfn-paneled" id="019e7aeb">signif</span>
<li><span class="dfn-paneled" id="ae59bd82">store</span>
<li><span class="dfn-paneled" id="d5e3a033">store_init</span>
<li><span class="dfn-paneled" id="fafc7354">struct address</span>
<li><span class="dfn-paneled" id="c8a6c84a">table</span>
<li><span class="dfn-paneled" id="dc5b915f">table address</span>
<li><span class="dfn-paneled" id="1569346b">table instance</span>
<li><span class="dfn-paneled" id="868a40c2">table type</span>
<li><span class="dfn-paneled" id="ec2020b1">table_alloc</span>
<li><span class="dfn-paneled" id="1d2aaa85">table_grow</span>
<li><span class="dfn-paneled" id="08301a78">table_read</span>
<li><span class="dfn-paneled" id="aab848f2">table_size</span>
<li><span class="dfn-paneled" id="ab79fc0f">table_type</span>
<li><span class="dfn-paneled" id="98df36c9">table_write</span>
<li><span class="dfn-paneled" id="acea0ba2">tag <small>(for external value)</small></span>
<li><span class="dfn-paneled" id="222b8c82">tag <small>(for external-type)</small></span>
<li><span class="dfn-paneled" id="068e0385">tag address</span>
<li><span class="dfn-paneled" id="672fca90">tag type</span>
<li><span class="dfn-paneled" id="c42599d7">tag_type</span>
<li><span class="dfn-paneled" id="d388e2b5">throw_ref</span>
<li><span class="dfn-paneled" id="5672836e">trap</span>
<li><span class="dfn-paneled" id="eb54bcbb">u64</span>
<li><span class="dfn-paneled" id="25439d77">v128</span>
<li><span class="dfn-paneled" id="e18130bf">v128.const</span>
<li><span class="dfn-paneled" id="5ce71be2">val_default</span>
<li><span class="dfn-paneled" id="43b980ff">valid</span>
<li><span class="dfn-paneled" id="e07b3d97">valid memtype</span>
<li><span class="dfn-paneled" id="1b0a78b7">valid tabletype</span>
<li><span class="dfn-paneled" id="ad1c5b3c">valtype</span>
<li><span class="dfn-paneled" id="71ea3880">var</span>
<li><span class="dfn-paneled" id="31e3695a">WebAssembly module validation</span>
<li><span class="dfn-paneled" id="7ca4b8ff">WebAssembly value</span>
<li><span class="dfn-paneled" id="d39a7bec">−∞</span>
</ul>
<li>
<a data-link-type="biblio">[WEBIDL]</a> defines the following terms:
<ul>
<li><span class="dfn-paneled" id="3aff2fb3">BufferSource</span>
<li><span class="dfn-paneled" id="53306f8f">ConvertToInt</span>
<li><span class="dfn-paneled" id="8855a9aa">DOMString</span>
<li><span class="dfn-paneled" id="c01cbda0">EnforceRange</span>
<li><span class="dfn-paneled" id="889e932f">Exposed</span>
<li><span class="dfn-paneled" id="f98ab0c2">LegacyNamespace</span>
<li><span class="dfn-paneled" id="bdbd19d1">Promise</span>
<li><span class="dfn-paneled" id="b0d7f3c3">USVString</span>
<li><span class="dfn-paneled" id="31f1c810">[EnforceRange]</span>
<li><span class="dfn-paneled" id="dacde8b5">a new promise</span>
<li><span class="dfn-paneled" id="6c6b1005">any</span>
<li><span class="dfn-paneled" id="3e180d35">associated realm</span>
<li><span class="dfn-paneled" id="5372cca8">boolean</span>
<li><span class="dfn-paneled" id="bb8f2f23">create a namespace object</span>
<li><span class="dfn-paneled" id="92d13070">get a copy of the buffer source</span>
<li><span class="dfn-paneled" id="a32c65d4">implements</span>
<li><span class="dfn-paneled" id="a0559a7c">js-unsigned-long</span>
<li><span class="dfn-paneled" id="60e61e1a">namespace object</span>
<li><span class="dfn-paneled" id="56f81a8e">new</span>
<li><span class="dfn-paneled" id="efd1ec5d">object</span>
<li><span class="dfn-paneled" id="b262501e">reject</span>
<li><span class="dfn-paneled" id="3b90bdcd">resolve</span>
<li><span class="dfn-paneled" id="9cce47fd">sequence</span>
<li><span class="dfn-paneled" id="b4cfa5ce">throw</span>
<li><span class="dfn-paneled" id="5f90bbfb">undefined</span>
<li><span class="dfn-paneled" id="e97a9688">unsigned long</span>
<li><span class="dfn-paneled" id="24bd7d25">upon fulfillment</span>
<li><span class="dfn-paneled" id="f14ed351">upon rejection</span>
</ul>
</ul>
<h2 class="no-num no-ref heading settled" id="references"><span class="content">References</span><a class="self-link" href="#references"></a></h2>
<h3 class="no-num no-ref heading settled" id="normative"><span class="content">Normative References</span><a class="self-link" href="#normative"></a></h3>
<dl>
<dt id="biblio-ecmascript">[ECMASCRIPT]
<dd><a href="https://tc39.es/ecma262/multipage/"><cite>ECMAScript Language Specification</cite></a>. URL: <a href="https://tc39.es/ecma262/multipage/">https://tc39.es/ecma262/multipage/</a>
<dt id="biblio-encoding">[ENCODING]
<dd>Anne van Kesteren. <a href="https://encoding.spec.whatwg.org/"><cite>Encoding Standard</cite></a>. Living Standard. URL: <a href="https://encoding.spec.whatwg.org/">https://encoding.spec.whatwg.org/</a>
<dt id="biblio-html">[HTML]
<dd>Anne van Kesteren; et al. <a href="https://html.spec.whatwg.org/multipage/"><cite>HTML Standard</cite></a>. Living Standard. URL: <a href="https://html.spec.whatwg.org/multipage/">https://html.spec.whatwg.org/multipage/</a>
<dt id="biblio-infra">[INFRA]
<dd>Anne van Kesteren; Domenic Denicola. <a href="https://infra.spec.whatwg.org/"><cite>Infra Standard</cite></a>. Living Standard. URL: <a href="https://infra.spec.whatwg.org/">https://infra.spec.whatwg.org/</a>
<dt id="biblio-rfc2119">[RFC2119]
<dd>S. Bradner. <a href="https://datatracker.ietf.org/doc/html/rfc2119"><cite>Key words for use in RFCs to Indicate Requirement Levels</cite></a>. March 1997. Best Current Practice. URL: <a href="https://datatracker.ietf.org/doc/html/rfc2119">https://datatracker.ietf.org/doc/html/rfc2119</a>
<dt id="biblio-webassembly">[WEBASSEMBLY]
<dd><a href="https://webassembly.github.io/spec/core/"><cite>WebAssembly Core Specification</cite></a>. Draft. URL: <a href="https://webassembly.github.io/spec/core/">https://webassembly.github.io/spec/core/</a>
<dt id="biblio-webidl">[WEBIDL]
<dd>Edgar Chen; Timothy Gu. <a href="https://webidl.spec.whatwg.org/"><cite>Web IDL Standard</cite></a>. Living Standard. URL: <a href="https://webidl.spec.whatwg.org/">https://webidl.spec.whatwg.org/</a>
</dl>
<h3 class="no-num no-ref heading settled" id="informative"><span class="content">Informative References</span><a class="self-link" href="#informative"></a></h3>
<dl>
<dt id="biblio-ieee-754">[IEEE-754]
<dd><a href="https://ieeexplore.ieee.org/document/8766229"><cite>IEEE Standard for Floating-Point Arithmetic</cite></a>. 22 July 2019. URL: <a href="https://ieeexplore.ieee.org/document/8766229">https://ieeexplore.ieee.org/document/8766229</a>
<dt id="biblio-wasmweb">[WASMWEB]
<dd><a href="https://webassembly.github.io/spec/web-api/"><cite>WebAssembly Web API Specification</cite></a>. Draft. URL: <a href="https://webassembly.github.io/spec/web-api/">https://webassembly.github.io/spec/web-api/</a>
</dl>
<h2 class="no-num no-ref heading settled" id="idl-index"><span class="content">IDL Index</span><a class="self-link" href="#idl-index"></a></h2>
<pre class="idl highlight def"><c- b>dictionary</c-> <a href="#dictdef-webassemblyinstantiatedsource"><code><c- g>WebAssemblyInstantiatedSource</c-></code></a> {
<c- b>required</c-> <a data-link-type="idl-name" href="#module"><c- n>Module</c-></a> <a data-type="Module" href="#dom-webassemblyinstantiatedsource-module"><code><c- g>module</c-></code></a>;
<c- b>required</c-> <a data-link-type="idl-name" href="#instance"><c- n>Instance</c-></a> <a data-type="Instance" href="#dom-webassemblyinstantiatedsource-instance"><code><c- g>instance</c-></code></a>;
};
<c- b>dictionary</c-> <a href="#dictdef-webassemblycompileoptions"><code><c- g>WebAssemblyCompileOptions</c-></code></a> {
<a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-USVString"><c- b>USVString</c-></a>? <a data-type="USVString?" href="#dom-webassemblycompileoptions-importedstringconstants"><code><c- g>importedStringConstants</c-></code></a>;
<a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#idl-sequence"><c- b>sequence</c-></a>&lt;<a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-USVString"><c- b>USVString</c-></a>> <a data-type="sequence<USVString>" href="#dom-webassemblycompileoptions-builtins"><code><c- g>builtins</c-></code></a>;
};
[Exposed=*]
<c- b>namespace</c-> <a href="#namespacedef-webassembly"><code><c- g>WebAssembly</c-></code></a> {
<a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-boolean"><c- b>boolean</c-></a> <a class="idl-code" data-link-type="method" href="#dom-webassembly-validate"><c- g>validate</c-></a>(<a data-link-type="idl-name" href="https://webidl.spec.whatwg.org/#BufferSource"><c- n>BufferSource</c-></a> <a href="#dom-webassembly-validate-bytes-options-bytes"><code><c- g>bytes</c-></code></a>, <c- b>optional</c-> <a data-link-type="idl-name" href="#dictdef-webassemblycompileoptions"><c- n>WebAssemblyCompileOptions</c-></a> <a href="#dom-webassembly-validate-bytes-options-options"><code><c- g>options</c-></code></a> = {});
<a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-promise"><c- b>Promise</c-></a>&lt;<a data-link-type="idl-name" href="#module"><c- n>Module</c-></a>> <a class="idl-code" data-link-type="method" href="#dom-webassembly-compile"><c- g>compile</c-></a>(<a data-link-type="idl-name" href="https://webidl.spec.whatwg.org/#BufferSource"><c- n>BufferSource</c-></a> <a href="#dom-webassembly-compile-bytes-options-bytes"><code><c- g>bytes</c-></code></a>, <c- b>optional</c-> <a data-link-type="idl-name" href="#dictdef-webassemblycompileoptions"><c- n>WebAssemblyCompileOptions</c-></a> <a href="#dom-webassembly-compile-bytes-options-options"><code><c- g>options</c-></code></a> = {});
<a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-promise"><c- b>Promise</c-></a>&lt;<a data-link-type="idl-name" href="#dictdef-webassemblyinstantiatedsource"><c- n>WebAssemblyInstantiatedSource</c-></a>> <a class="idl-code" data-link-type="method" href="#dom-webassembly-instantiate"><c- g>instantiate</c-></a>(
<a data-link-type="idl-name" href="https://webidl.spec.whatwg.org/#BufferSource"><c- n>BufferSource</c-></a> <a href="#dom-webassembly-instantiate-bytes-importobject-options-bytes"><code><c- g>bytes</c-></code></a>, <c- b>optional</c-> <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-object"><c- b>object</c-></a> <a href="#dom-webassembly-instantiate-bytes-importobject-options-importobject"><code><c- g>importObject</c-></code></a>, <c- b>optional</c-> <a data-link-type="idl-name" href="#dictdef-webassemblycompileoptions"><c- n>WebAssemblyCompileOptions</c-></a> <a href="#dom-webassembly-instantiate-bytes-importobject-options-options"><code><c- g>options</c-></code></a> = {});
<a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-promise"><c- b>Promise</c-></a>&lt;<a data-link-type="idl-name" href="#instance"><c- n>Instance</c-></a>> <a class="idl-code" data-link-type="method" href="#dom-webassembly-instantiate-moduleobject-importobject"><c- g>instantiate</c-></a>(
<a data-link-type="idl-name" href="#module"><c- n>Module</c-></a> <a href="#dom-webassembly-instantiate-moduleobject-importobject-moduleobject"><code><c- g>moduleObject</c-></code></a>, <c- b>optional</c-> <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-object"><c- b>object</c-></a> <a href="#dom-webassembly-instantiate-moduleobject-importobject-importobject"><code><c- g>importObject</c-></code></a>);
<c- b>readonly</c-> <c- b>attribute</c-> <a data-link-type="idl-name" href="#tag"><c- n>Tag</c-></a> <a class="idl-code" data-link-type="attribute" data-readonly data-type="Tag" href="#dom-webassembly-jstag"><c- g>JSTag</c-></a>;
};
<c- b>enum</c-> <a href="#enumdef-importexportkind"><code><c- g>ImportExportKind</c-></code></a> {
<a href="#dom-importexportkind-function"><code><c- s>"function"</c-></code></a>,
<a href="#dom-importexportkind-table"><code><c- s>"table"</c-></code></a>,
<a href="#dom-importexportkind-memory"><code><c- s>"memory"</c-></code></a>,
<a href="#dom-importexportkind-global"><code><c- s>"global"</c-></code></a>,
<a href="#dom-importexportkind-tag"><code><c- s>"tag"</c-></code></a>
};
<c- b>enum</c-> <a href="#enumdef-addresstype"><code><c- g>AddressType</c-></code></a> {
<a href="#dom-addresstype-i32"><code><c- s>"i32"</c-></code></a>,
<a href="#dom-addresstype-i64"><code><c- s>"i64"</c-></code></a>,
};
<c- b>typedef</c-> <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-any"><c- b>any</c-></a> <a href="#typedefdef-addressvalue"><code><c- g>AddressValue</c-></code></a>;
<c- b>dictionary</c-> <a href="#dictdef-moduleexportdescriptor"><code><c- g>ModuleExportDescriptor</c-></code></a> {
<c- b>required</c-> <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-USVString"><c- b>USVString</c-></a> <a data-type="USVString" href="#dom-moduleexportdescriptor-name"><code><c- g>name</c-></code></a>;
<c- b>required</c-> <a data-link-type="idl-name" href="#enumdef-importexportkind"><c- n>ImportExportKind</c-></a> <a data-type="ImportExportKind" href="#dom-moduleexportdescriptor-kind"><code><c- g>kind</c-></code></a>;
// Note: Other fields such as signature may be added in the future.
};
<c- b>dictionary</c-> <a href="#dictdef-moduleimportdescriptor"><code><c- g>ModuleImportDescriptor</c-></code></a> {
<c- b>required</c-> <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-USVString"><c- b>USVString</c-></a> <a data-type="USVString" href="#dom-moduleimportdescriptor-module"><code><c- g>module</c-></code></a>;
<c- b>required</c-> <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-USVString"><c- b>USVString</c-></a> <a data-type="USVString" href="#dom-moduleimportdescriptor-name"><code><c- g>name</c-></code></a>;
<c- b>required</c-> <a data-link-type="idl-name" href="#enumdef-importexportkind"><c- n>ImportExportKind</c-></a> <a data-type="ImportExportKind" href="#dom-moduleimportdescriptor-kind"><code><c- g>kind</c-></code></a>;
};
[<a class="idl-code" data-link-type="extended-attribute" href="https://webidl.spec.whatwg.org/#LegacyNamespace"><c- g>LegacyNamespace</c-></a>=<a data-link-type="idl-name" href="#namespacedef-webassembly"><c- n>WebAssembly</c-></a>, Exposed=*]
<c- b>interface</c-> <a href="#module"><code><c- g>Module</c-></code></a> {
<a class="idl-code" data-link-type="constructor" href="#dom-module-module"><c- g>constructor</c-></a>(<a data-link-type="idl-name" href="https://webidl.spec.whatwg.org/#BufferSource"><c- n>BufferSource</c-></a> <a href="#dom-module-module-bytes-options-bytes"><code><c- g>bytes</c-></code></a>, <c- b>optional</c-> <a data-link-type="idl-name" href="#dictdef-webassemblycompileoptions"><c- n>WebAssemblyCompileOptions</c-></a> <a href="#dom-module-module-bytes-options-options"><code><c- g>options</c-></code></a> = {});
<c- b>static</c-> <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#idl-sequence"><c- b>sequence</c-></a>&lt;<a data-link-type="idl-name" href="#dictdef-moduleexportdescriptor"><c- n>ModuleExportDescriptor</c-></a>> <a class="idl-code" data-link-type="method" href="#dom-module-exports"><c- g>exports</c-></a>(<a data-link-type="idl-name" href="#module"><c- n>Module</c-></a> <a href="#dom-module-exports-moduleobject-moduleobject"><code><c- g>moduleObject</c-></code></a>);
<c- b>static</c-> <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#idl-sequence"><c- b>sequence</c-></a>&lt;<a data-link-type="idl-name" href="#dictdef-moduleimportdescriptor"><c- n>ModuleImportDescriptor</c-></a>> <a class="idl-code" data-link-type="method" href="#dom-module-imports"><c- g>imports</c-></a>(<a data-link-type="idl-name" href="#module"><c- n>Module</c-></a> <a href="#dom-module-imports-moduleobject-moduleobject"><code><c- g>moduleObject</c-></code></a>);
<c- b>static</c-> <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#idl-sequence"><c- b>sequence</c-></a>&lt;<a class="idl-code" data-link-type="interface" href="https://tc39.github.io/ecma262/#sec-arraybuffer-objects"><c- b>ArrayBuffer</c-></a>> <a class="idl-code" data-link-type="method" href="#dom-module-customsections"><c- g>customSections</c-></a>(<a data-link-type="idl-name" href="#module"><c- n>Module</c-></a> <a href="#dom-module-customsections-moduleobject-sectionname-moduleobject"><code><c- g>moduleObject</c-></code></a>, <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-DOMString"><c- b>DOMString</c-></a> <a href="#dom-module-customsections-moduleobject-sectionname-sectionname"><code><c- g>sectionName</c-></code></a>);
};
[<a class="idl-code" data-link-type="extended-attribute" href="https://webidl.spec.whatwg.org/#LegacyNamespace"><c- g>LegacyNamespace</c-></a>=<a data-link-type="idl-name" href="#namespacedef-webassembly"><c- n>WebAssembly</c-></a>, Exposed=*]
<c- b>interface</c-> <a href="#instance"><code><c- g>Instance</c-></code></a> {
<a class="idl-code" data-link-type="constructor" href="#dom-instance-instance"><c- g>constructor</c-></a>(<a data-link-type="idl-name" href="#module"><c- n>Module</c-></a> <a href="#dom-instance-instance-module-importobject-module"><code><c- g>module</c-></code></a>, <c- b>optional</c-> <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-object"><c- b>object</c-></a> <a href="#dom-instance-instance-module-importobject-importobject"><code><c- g>importObject</c-></code></a>);
<c- b>readonly</c-> <c- b>attribute</c-> <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-object"><c- b>object</c-></a> <a class="idl-code" data-link-type="attribute" data-readonly data-type="object" href="#dom-instance-exports"><c- g>exports</c-></a>;
};
<c- b>dictionary</c-> <a href="#dictdef-memorydescriptor"><code><c- g>MemoryDescriptor</c-></code></a> {
<c- b>required</c-> <a data-link-type="idl-name" href="#typedefdef-addressvalue"><c- n>AddressValue</c-></a> <a data-type="AddressValue" href="#dom-memorydescriptor-initial"><code><c- g>initial</c-></code></a>;
<a data-link-type="idl-name" href="#typedefdef-addressvalue"><c- n>AddressValue</c-></a> <a data-type="AddressValue" href="#dom-memorydescriptor-maximum"><code><c- g>maximum</c-></code></a>;
<a data-link-type="idl-name" href="#enumdef-addresstype"><c- n>AddressType</c-></a> <a data-type="AddressType" href="#dom-memorydescriptor-address"><code><c- g>address</c-></code></a>;
};
[<a class="idl-code" data-link-type="extended-attribute" href="https://webidl.spec.whatwg.org/#LegacyNamespace"><c- g>LegacyNamespace</c-></a>=<a data-link-type="idl-name" href="#namespacedef-webassembly"><c- n>WebAssembly</c-></a>, Exposed=*]
<c- b>interface</c-> <a href="#memory"><code><c- g>Memory</c-></code></a> {
<a class="idl-code" data-link-type="constructor" href="#dom-memory-memory"><c- g>constructor</c-></a>(<a data-link-type="idl-name" href="#dictdef-memorydescriptor"><c- n>MemoryDescriptor</c-></a> <a href="#dom-memory-memory-descriptor-descriptor"><code><c- g>descriptor</c-></code></a>);
<a data-link-type="idl-name" href="#typedefdef-addressvalue"><c- n>AddressValue</c-></a> <a class="idl-code" data-link-type="method" href="#dom-memory-grow"><c- g>grow</c-></a>(<a data-link-type="idl-name" href="#typedefdef-addressvalue"><c- n>AddressValue</c-></a> <a href="#dom-memory-grow-delta-delta"><code><c- g>delta</c-></code></a>);
<a class="idl-code" data-link-type="interface" href="https://tc39.github.io/ecma262/#sec-arraybuffer-objects"><c- b>ArrayBuffer</c-></a> <a class="idl-code" data-link-type="method" href="#dom-memory-tofixedlengthbuffer"><c- g>toFixedLengthBuffer</c-></a>();
<a class="idl-code" data-link-type="interface" href="https://tc39.github.io/ecma262/#sec-arraybuffer-objects"><c- b>ArrayBuffer</c-></a> <a class="idl-code" data-link-type="method" href="#dom-memory-toresizablebuffer"><c- g>toResizableBuffer</c-></a>();
<c- b>readonly</c-> <c- b>attribute</c-> <a class="idl-code" data-link-type="interface" href="https://tc39.github.io/ecma262/#sec-arraybuffer-objects"><c- b>ArrayBuffer</c-></a> <a class="idl-code" data-link-type="attribute" data-readonly data-type="ArrayBuffer" href="#dom-memory-buffer"><c- g>buffer</c-></a>;
};
<c- b>enum</c-> <a href="#enumdef-tablekind"><code><c- g>TableKind</c-></code></a> {
<a href="#dom-tablekind-externref"><code><c- s>"externref"</c-></code></a>,
<a href="#dom-tablekind-anyfunc"><code><c- s>"anyfunc"</c-></code></a>,
// Note: More values may be added in future iterations,
// e.g., typed function references, typed GC references
};
<c- b>dictionary</c-> <a href="#dictdef-tabledescriptor"><code><c- g>TableDescriptor</c-></code></a> {
<c- b>required</c-> <a data-link-type="idl-name" href="#enumdef-tablekind"><c- n>TableKind</c-></a> <a data-type="TableKind" href="#dom-tabledescriptor-element"><code><c- g>element</c-></code></a>;
<c- b>required</c-> <a data-link-type="idl-name" href="#typedefdef-addressvalue"><c- n>AddressValue</c-></a> <a data-type="AddressValue" href="#dom-tabledescriptor-initial"><code><c- g>initial</c-></code></a>;
<a data-link-type="idl-name" href="#typedefdef-addressvalue"><c- n>AddressValue</c-></a> <a data-type="AddressValue" href="#dom-tabledescriptor-maximum"><code><c- g>maximum</c-></code></a>;
<a data-link-type="idl-name" href="#enumdef-addresstype"><c- n>AddressType</c-></a> <a data-type="AddressType" href="#dom-tabledescriptor-address"><code><c- g>address</c-></code></a>;
};
[<a class="idl-code" data-link-type="extended-attribute" href="https://webidl.spec.whatwg.org/#LegacyNamespace"><c- g>LegacyNamespace</c-></a>=<a data-link-type="idl-name" href="#namespacedef-webassembly"><c- n>WebAssembly</c-></a>, Exposed=*]
<c- b>interface</c-> <a href="#table"><code><c- g>Table</c-></code></a> {
<a class="idl-code" data-link-type="constructor" href="#dom-table-table"><c- g>constructor</c-></a>(<a data-link-type="idl-name" href="#dictdef-tabledescriptor"><c- n>TableDescriptor</c-></a> <a href="#dom-table-table-descriptor-value-descriptor"><code><c- g>descriptor</c-></code></a>, <c- b>optional</c-> <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-any"><c- b>any</c-></a> <a href="#dom-table-table-descriptor-value-value"><code><c- g>value</c-></code></a>);
<a data-link-type="idl-name" href="#typedefdef-addressvalue"><c- n>AddressValue</c-></a> <a class="idl-code" data-link-type="method" href="#dom-table-grow"><c- g>grow</c-></a>(<a data-link-type="idl-name" href="#typedefdef-addressvalue"><c- n>AddressValue</c-></a> <a href="#dom-table-grow-delta-value-delta"><code><c- g>delta</c-></code></a>, <c- b>optional</c-> <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-any"><c- b>any</c-></a> <a href="#dom-table-grow-delta-value-value"><code><c- g>value</c-></code></a>);
<a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-any"><c- b>any</c-></a> <a class="idl-code" data-link-type="method" href="#dom-table-get"><c- g>get</c-></a>(<a data-link-type="idl-name" href="#typedefdef-addressvalue"><c- n>AddressValue</c-></a> <a href="#dom-table-get-index-index"><code><c- g>index</c-></code></a>);
<a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-undefined"><c- b>undefined</c-></a> <a class="idl-code" data-link-type="method" href="#dom-table-set"><c- g>set</c-></a>(<a data-link-type="idl-name" href="#typedefdef-addressvalue"><c- n>AddressValue</c-></a> <a href="#dom-table-set-index-value-index"><code><c- g>index</c-></code></a>, <c- b>optional</c-> <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-any"><c- b>any</c-></a> <a href="#dom-table-set-index-value-value"><code><c- g>value</c-></code></a>);
<c- b>readonly</c-> <c- b>attribute</c-> <a data-link-type="idl-name" href="#typedefdef-addressvalue"><c- n>AddressValue</c-></a> <a class="idl-code" data-link-type="attribute" data-readonly data-type="AddressValue" href="#dom-table-length"><c- g>length</c-></a>;
};
<c- b>enum</c-> <a href="#enumdef-valuetype"><code><c- g>ValueType</c-></code></a> {
<a href="#dom-valuetype-i32"><code><c- s>"i32"</c-></code></a>,
<a href="#dom-valuetype-i64"><code><c- s>"i64"</c-></code></a>,
<a href="#dom-valuetype-f32"><code><c- s>"f32"</c-></code></a>,
<a href="#dom-valuetype-f64"><code><c- s>"f64"</c-></code></a>,
<a href="#dom-valuetype-v128"><code><c- s>"v128"</c-></code></a>,
<a href="#dom-valuetype-externref"><code><c- s>"externref"</c-></code></a>,
<a href="#dom-valuetype-anyfunc"><code><c- s>"anyfunc"</c-></code></a>,
};
<c- b>dictionary</c-> <a href="#dictdef-globaldescriptor"><code><c- g>GlobalDescriptor</c-></code></a> {
<c- b>required</c-> <a data-link-type="idl-name" href="#enumdef-valuetype"><c- n>ValueType</c-></a> <a data-type="ValueType" href="#dom-globaldescriptor-value"><code><c- g>value</c-></code></a>;
<a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-boolean"><c- b>boolean</c-></a> <a data-default="false" data-type="boolean" href="#dom-globaldescriptor-mutable"><code><c- g>mutable</c-></code></a> = <c- b>false</c->;
};
[<a class="idl-code" data-link-type="extended-attribute" href="https://webidl.spec.whatwg.org/#LegacyNamespace"><c- g>LegacyNamespace</c-></a>=<a data-link-type="idl-name" href="#namespacedef-webassembly"><c- n>WebAssembly</c-></a>, Exposed=*]
<c- b>interface</c-> <a href="#global"><code><c- g>Global</c-></code></a> {
<a class="idl-code" data-link-type="constructor" href="#dom-global-global"><c- g>constructor</c-></a>(<a data-link-type="idl-name" href="#dictdef-globaldescriptor"><c- n>GlobalDescriptor</c-></a> <a href="#dom-global-global-descriptor-v-descriptor"><code><c- g>descriptor</c-></code></a>, <c- b>optional</c-> <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-any"><c- b>any</c-></a> <a href="#dom-global-global-descriptor-v-v"><code><c- g>v</c-></code></a>);
<a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-any"><c- b>any</c-></a> <a class="idl-code" data-link-type="method" href="#dom-global-valueof"><c- g>valueOf</c-></a>();
<c- b>attribute</c-> <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-any"><c- b>any</c-></a> <a class="idl-code" data-link-type="attribute" data-type="any" href="#dom-global-value"><c- g>value</c-></a>;
};
<c- b>dictionary</c-> <a href="#dictdef-tagtype"><code><c- g>TagType</c-></code></a> {
<c- b>required</c-> <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#idl-sequence"><c- b>sequence</c-></a>&lt;<a data-link-type="idl-name" href="#enumdef-valuetype"><c- n>ValueType</c-></a>> <a data-type="sequence<ValueType>" href="#dom-tagtype-parameters"><code><c- g>parameters</c-></code></a>;
};
[<a class="idl-code" data-link-type="extended-attribute" href="https://webidl.spec.whatwg.org/#LegacyNamespace"><c- g>LegacyNamespace</c-></a>=<a data-link-type="idl-name" href="#namespacedef-webassembly"><c- n>WebAssembly</c-></a>, <a class="idl-code" data-link-type="extended-attribute" href="https://webidl.spec.whatwg.org/#Exposed"><c- g>Exposed</c-></a>=(<c- n>Window</c->,<c- n>Worker</c->,<c- n>Worklet</c->)]
<c- b>interface</c-> <a href="#tag"><code><c- g>Tag</c-></code></a> {
<a class="idl-code" data-link-type="constructor" href="#dom-tag-tag"><c- g>constructor</c-></a>(<a data-link-type="idl-name" href="#dictdef-tagtype"><c- n>TagType</c-></a> <a href="#dom-tag-tag-type-type"><code><c- g>type</c-></code></a>);
};
<c- b>dictionary</c-> <a href="#dictdef-exceptionoptions"><code><c- g>ExceptionOptions</c-></code></a> {
<a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-boolean"><c- b>boolean</c-></a> <a data-default="false" data-type="boolean" href="#dom-exceptionoptions-tracestack"><code><c- g>traceStack</c-></code></a> = <c- b>false</c->;
};
[<a class="idl-code" data-link-type="extended-attribute" href="https://webidl.spec.whatwg.org/#LegacyNamespace"><c- g>LegacyNamespace</c-></a>=<a data-link-type="idl-name" href="#namespacedef-webassembly"><c- n>WebAssembly</c-></a>, <a class="idl-code" data-link-type="extended-attribute" href="https://webidl.spec.whatwg.org/#Exposed"><c- g>Exposed</c-></a>=(<c- n>Window</c->,<c- n>Worker</c->,<c- n>Worklet</c->)]
<c- b>interface</c-> <a href="#exception"><code><c- g>Exception</c-></code></a> {
<a class="idl-code" data-link-type="constructor" href="#dom-exception-exception"><c- g>constructor</c-></a>(<a data-link-type="idl-name" href="#tag"><c- n>Tag</c-></a> <a href="#dom-exception-exception-exceptiontag-payload-options-exceptiontag"><code><c- g>exceptionTag</c-></code></a>, <a data-link-type="dfn" href="https://webidl.spec.whatwg.org/#idl-sequence"><c- b>sequence</c-></a>&lt;<a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-any"><c- b>any</c-></a>> <a href="#dom-exception-exception-exceptiontag-payload-options-payload"><code><c- g>payload</c-></code></a>, <c- b>optional</c-> <a data-link-type="idl-name" href="#dictdef-exceptionoptions"><c- n>ExceptionOptions</c-></a> <a href="#dom-exception-exception-exceptiontag-payload-options-options"><code><c- g>options</c-></code></a> = {});
<a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-any"><c- b>any</c-></a> <a class="idl-code" data-link-type="method" href="#dom-exception-getarg"><c- g>getArg</c-></a>([<a class="idl-code" data-link-type="extended-attribute" href="https://webidl.spec.whatwg.org/#EnforceRange"><c- g>EnforceRange</c-></a>] <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-unsigned-long"><c- b>unsigned</c-> <c- b>long</c-></a> <a href="#dom-exception-getarg-index-index"><code><c- g>index</c-></code></a>);
<a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-boolean"><c- b>boolean</c-></a> <a class="idl-code" data-link-type="method" href="#dom-exception-is"><c- g>is</c-></a>(<a data-link-type="idl-name" href="#tag"><c- n>Tag</c-></a> <a href="#dom-exception-is-exceptiontag-exceptiontag"><code><c- g>exceptionTag</c-></code></a>);
<c- b>readonly</c-> <c- b>attribute</c-> (<a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-DOMString"><c- b>DOMString</c-></a> <c- b>or</c-> <a class="idl-code" data-link-type="interface" href="https://webidl.spec.whatwg.org/#idl-undefined"><c- b>undefined</c-></a>) <a class="idl-code" data-link-type="attribute" data-readonly data-type="(DOMString or undefined)" href="#dom-exception-stack"><c- g>stack</c-></a>;
};
</pre>
<h2 class="no-num no-ref heading settled" id="issues-index"><span class="content">Issues Index</span><a class="self-link" href="#issues-index"></a></h2>
<div style="counter-reset:issue">
<div class="issue">
A failed allocation of a large table or memory may either result in
<ul>
<li data-md>
<p>a <code class="idl"><a data-link-type="idl" href="https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-rangeerror">RangeError</a></code>, as specified in the <code class="idl"><a data-link-type="idl" href="#memory">Memory</a></code> <code class="idl"><a data-link-type="idl" href="#dom-memory-grow">grow()</a></code> and <code class="idl"><a data-link-type="idl" href="#table">Table</a></code> <code class="idl"><a data-link-type="idl" href="#dom-table-grow">grow()</a></code> operations</p>
<li data-md>
<p>returning -1 as the <a data-link-type="dfn" href="https://webassembly.github.io/spec/core/exec/instructions.html#exec-memory-grow">memory.grow</a> instruction</p>
<li data-md>
<p>UA-specific OOM behavior as described in this section.</p>
</ul>
In a future revision, we may reconsider more reliable and recoverable errors for allocations of large amounts of memory.
<p>See <a href="https://github.com/WebAssembly/spec/issues/879">Issue 879</a> for further discussion.</p>
<a class="issue-return" href="#issue-7eafcf54" title="Jump to section"></a>
</div>
</div>
<script>/* Boilerplate: script-dom-helper */
"use strict";
function query(sel) { return document.querySelector(sel); }
function queryAll(sel) { return [...document.querySelectorAll(sel)]; }
function iter(obj) {
if(!obj) return [];
var it = obj[Symbol.iterator];
if(it) return it;
return Object.entries(obj);
}
function mk(tagname, attrs, ...children) {
const el = document.createElement(tagname);
for(const [k,v] of iter(attrs)) {
if(k.slice(0,3) == "_on") {
const eventName = k.slice(3);
el.addEventListener(eventName, v);
} else if(k[0] == "_") {
// property, not attribute
el[k.slice(1)] = v;
} else {
if(v === false || v == null) {
continue;
} else if(v === true) {
el.setAttribute(k, "");
continue;
} else {
el.setAttribute(k, v);
}
}
}
append(el, children);
return el;
}
/* Create shortcuts for every known HTML element */
[
"a",
"abbr",
"acronym",
"address",
"applet",
"area",
"article",
"aside",
"audio",
"b",
"base",
"basefont",
"bdo",
"big",
"blockquote",
"body",
"br",
"button",
"canvas",
"caption",
"center",
"cite",
"code",
"col",
"colgroup",
"datalist",
"dd",
"del",
"details",
"dfn",
"dialog",
"div",
"dl",
"dt",
"em",
"embed",
"fieldset",
"figcaption",
"figure",
"font",
"footer",
"form",
"frame",
"frameset",
"head",
"header",
"h1",
"h2",
"h3",
"h4",
"h5",
"h6",
"hr",
"html",
"i",
"iframe",
"img",
"input",
"ins",
"kbd",
"label",
"legend",
"li",
"link",
"main",
"map",
"mark",
"meta",
"meter",
"nav",
"nobr",
"noscript",
"object",
"ol",
"optgroup",
"option",
"output",
"p",
"param",
"pre",
"progress",
"q",
"s",
"samp",
"script",
"section",
"select",
"small",
"source",
"span",
"strike",
"strong",
"style",
"sub",
"summary",
"sup",
"table",
"tbody",
"td",
"template",
"textarea",
"tfoot",
"th",
"thead",
"time",
"title",
"tr",
"u",
"ul",
"var",
"video",
"wbr",
"xmp",
].forEach(tagname=>{
mk[tagname] = (...args) => mk(tagname, ...args);
});
function* nodesFromChildList(children) {
for(const child of children.flat(Infinity)) {
if(child instanceof Node) {
yield child;
} else {
yield new Text(child);
}
}
}
function append(el, ...children) {
for(const child of nodesFromChildList(children)) {
if(el instanceof Node) el.appendChild(child);
else el.push(child);
}
return el;
}
function insertAfter(el, ...children) {
for(const child of nodesFromChildList(children)) {
el.parentNode.insertBefore(child, el.nextSibling);
}
return el;
}
function clearContents(el) {
el.innerHTML = "";
return el;
}
function parseHTML(markup) {
if(markup.toLowerCase().trim().indexOf('<!doctype') === 0) {
const doc = document.implementation.createHTMLDocument("");
doc.documentElement.innerHTML = markup;
return doc;
} else {
const el = mk.template({});
el.innerHTML = markup;
return el.content;
}
}</script>
<script>/* Boilerplate: script-dfn-panel */
"use strict";
{
let dfnPanelData = {
"0108e6a0": {"dfnID":"0108e6a0","dfnText":"i32","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-numtype"},{"id":"ref-for-syntax-numtype\u2460"},{"id":"ref-for-syntax-numtype\u2461"},{"id":"ref-for-syntax-numtype\u2462"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-syntax-numtype\u2463"},{"id":"ref-for-syntax-numtype\u2464"},{"id":"ref-for-syntax-numtype\u2465"},{"id":"ref-for-syntax-numtype\u2466"}],"title":"5.5. Globals"},{"refs":[{"id":"ref-for-syntax-numtype\u2467"},{"id":"ref-for-syntax-numtype\u2468"},{"id":"ref-for-syntax-numtype\u2460\u24ea"},{"id":"ref-for-syntax-numtype\u2460\u2460"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-syntax-numtype\u2460\u2461"},{"id":"ref-for-syntax-numtype\u2460\u2462"}],"title":"6.1.1. Abstract operations"},{"refs":[{"id":"ref-for-syntax-numtype\u2460\u2463"}],"title":"BigInt Integration"}],"url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-numtype"},
"019e7aeb": {"dfnID":"019e7aeb","dfnText":"signif","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-float"},{"id":"ref-for-syntax-float\u2460"},{"id":"ref-for-syntax-float\u2461"},{"id":"ref-for-syntax-float\u2462"},{"id":"ref-for-syntax-float\u2463"},{"id":"ref-for-syntax-float\u2464"},{"id":"ref-for-syntax-float\u2465"},{"id":"ref-for-syntax-float\u2466"},{"id":"ref-for-syntax-float\u2467"},{"id":"ref-for-syntax-float\u2468"},{"id":"ref-for-syntax-float\u2460\u24ea"},{"id":"ref-for-syntax-float\u2460\u2460"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/syntax/values.html#syntax-float"},
"01d93e6a": {"dfnID":"01d93e6a","dfnText":"SameValue","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-samevalue"}],"title":"5.3. Memories"}],"url":"https://tc39.github.io/ecma262/#sec-samevalue"},
"0204d188": {"dfnID":"0204d188","dfnText":"size","external":true,"refSections":[{"refs":[{"id":"ref-for-list-size"},{"id":"ref-for-list-size\u2460"},{"id":"ref-for-list-size\u2461"},{"id":"ref-for-list-size\u2462"},{"id":"ref-for-list-size\u2463"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-list-size\u2464"},{"id":"ref-for-list-size\u2465"},{"id":"ref-for-list-size\u2466"}],"title":"5.9. Exceptions"}],"url":"https://infra.spec.whatwg.org/#list-size"},
"048283eb": {"dfnID":"048283eb","dfnText":"address","external":true,"refSections":[{"refs":[{"id":"ref-for-addresses"}],"title":"4.2. WebAssembly JS Object Caches"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#addresses"},
"0656fbb6": {"dfnID":"0656fbb6","dfnText":"+\u221e","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-float"},{"id":"ref-for-syntax-float\u2460"},{"id":"ref-for-syntax-float\u2461"},{"id":"ref-for-syntax-float\u2462"},{"id":"ref-for-syntax-float\u2463"},{"id":"ref-for-syntax-float\u2464"},{"id":"ref-for-syntax-float\u2465"},{"id":"ref-for-syntax-float\u2466"},{"id":"ref-for-syntax-float\u2467"},{"id":"ref-for-syntax-float\u2468"},{"id":"ref-for-syntax-float\u2460\u24ea"},{"id":"ref-for-syntax-float\u2460\u2460"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/syntax/values.html#syntax-float"},
"068e0385": {"dfnID":"068e0385","dfnText":"tag address","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-tagaddr"}],"title":"4.2. WebAssembly JS Object Caches"},{"refs":[{"id":"ref-for-syntax-tagaddr\u2460"},{"id":"ref-for-syntax-tagaddr\u2461"}],"title":"5.7. Tags"},{"refs":[{"id":"ref-for-syntax-tagaddr\u2462"},{"id":"ref-for-syntax-tagaddr\u2463"}],"title":"5.7.1. Tag types"},{"refs":[{"id":"ref-for-syntax-tagaddr\u2464"}],"title":"5.9.1. JavaScript exceptions"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-tagaddr"},
"06930779": {"dfnID":"06930779","dfnText":"custom section","external":true,"refSections":[{"refs":[{"id":"ref-for-custom-section"}],"title":"5.1. Modules"}],"url":"https://webassembly.github.io/spec/core/binary/modules.html#custom-section"},
"06f63be9": {"dfnID":"06f63be9","dfnText":"ToInt32","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-toint32"},{"id":"ref-for-sec-toint32\u2460"},{"id":"ref-for-sec-toint32\u2461"}],"title":"5.6. Exported Functions"}],"url":"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-toint32"},
"08301a78": {"dfnID":"08301a78","dfnText":"table_read","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-table-read"}],"title":"5.4. Tables"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-table-read"},
"09d78e0f": {"dfnID":"09d78e0f","dfnText":"extern","external":true,"refSections":[{"refs":[{"id":"ref-for-heap-types"},{"id":"ref-for-heap-types\u2460"},{"id":"ref-for-heap-types\u2461"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/syntax/types.html#heap-types"},
"0b6a1132": {"dfnID":"0b6a1132","dfnText":"memory.grow","external":true,"refSections":[{"refs":[{"id":"ref-for-exec-memory-grow"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-exec-memory-grow\u2460"}],"title":"7.2. Out of Memory"}],"url":"https://webassembly.github.io/spec/core/exec/instructions.html#exec-memory-grow"},
"0c039093": {"dfnID":"0c039093","dfnText":"global_write","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-global-write"}],"title":"5.5. Globals"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-global-write"},
"0e6b2056": {"dfnID":"0e6b2056","dfnText":"set","external":true,"refSections":[{"refs":[{"id":"ref-for-map-set"},{"id":"ref-for-map-set\u2460"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-map-set\u2461"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-map-set\u2462"}],"title":"5.4. Tables"},{"refs":[{"id":"ref-for-map-set\u2463"}],"title":"5.5. Globals"},{"refs":[{"id":"ref-for-map-set\u2464"},{"id":"ref-for-map-set\u2465"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-map-set\u2466"}],"title":"5.7.1. Tag types"},{"refs":[{"id":"ref-for-map-set\u2467"}],"title":"5.8. Garbage Collected Objects"},{"refs":[{"id":"ref-for-map-set\u2468"}],"title":"5.9. Exceptions"}],"url":"https://infra.spec.whatwg.org/#map-set"},
"0fa357c3": {"dfnID":"0fa357c3","dfnText":"length","external":true,"refSections":[{"refs":[{"id":"ref-for-string-length"}],"title":"6.1.5. intoCharCodeArray"},{"refs":[{"id":"ref-for-string-length\u2460"}],"title":"6.1.8. charCodeAt"},{"refs":[{"id":"ref-for-string-length\u2461"}],"title":"6.1.9. codePointAt"},{"refs":[{"id":"ref-for-string-length\u2462"}],"title":"6.1.10. length"},{"refs":[{"id":"ref-for-string-length\u2463"}],"title":"6.1.12. substring"}],"url":"https://infra.spec.whatwg.org/#string-length"},
"0fbe5247": {"dfnID":"0fbe5247","dfnText":"signed_64","external":true,"refSections":[{"refs":[{"id":"ref-for-aux-signed"},{"id":"ref-for-aux-signed\u2460"},{"id":"ref-for-aux-signed\u2461"},{"id":"ref-for-aux-signed\u2462"},{"id":"ref-for-aux-signed\u2463"},{"id":"ref-for-aux-signed\u2464"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/exec/numerics.html#aux-signed"},
"1243a891": {"dfnID":"1243a891","dfnText":"exist","external":true,"refSections":[{"refs":[{"id":"ref-for-map-exists"},{"id":"ref-for-map-exists\u2460"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-map-exists\u2461"},{"id":"ref-for-map-exists\u2462"},{"id":"ref-for-map-exists\u2463"},{"id":"ref-for-map-exists\u2464"},{"id":"ref-for-map-exists\u2465"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-map-exists\u2466"},{"id":"ref-for-map-exists\u2467"},{"id":"ref-for-map-exists\u2468"},{"id":"ref-for-map-exists\u2460\u24ea"}],"title":"5.4. Tables"},{"refs":[{"id":"ref-for-map-exists\u2460\u2460"},{"id":"ref-for-map-exists\u2460\u2461"}],"title":"5.5. Globals"},{"refs":[{"id":"ref-for-map-exists\u2460\u2462"},{"id":"ref-for-map-exists\u2460\u2463"},{"id":"ref-for-map-exists\u2460\u2464"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-map-exists\u2460\u2465"},{"id":"ref-for-map-exists\u2460\u2466"}],"title":"5.7.1. Tag types"},{"refs":[{"id":"ref-for-map-exists\u2460\u2467"}],"title":"5.8. Garbage Collected Objects"},{"refs":[{"id":"ref-for-map-exists\u2460\u2468"},{"id":"ref-for-map-exists\u2461\u24ea"}],"title":"5.9. Exceptions"}],"url":"https://infra.spec.whatwg.org/#map-exists"},
"1569346b": {"dfnID":"1569346b","dfnText":"table instance","external":true,"refSections":[{"refs":[{"id":"ref-for-table-instances"}],"title":"5.4. Tables"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#table-instances"},
"161ae644": {"dfnID":"161ae644","dfnText":"mem_size","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-mem-size"}],"title":"5.3. Memories"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-mem-size"},
"16d0e7c3": {"dfnID":"16d0e7c3","dfnText":"f64.const","external":true,"refSections":[{"refs":[{"id":"ref-for-values"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-values\u2460"},{"id":"ref-for-values\u2461"},{"id":"ref-for-values\u2462"},{"id":"ref-for-values\u2463"},{"id":"ref-for-values\u2464"},{"id":"ref-for-values\u2465"},{"id":"ref-for-values\u2466"},{"id":"ref-for-values\u2467"},{"id":"ref-for-values\u2468"},{"id":"ref-for-values\u2460\u24ea"},{"id":"ref-for-values\u2460\u2460"},{"id":"ref-for-values\u2460\u2461"},{"id":"ref-for-values\u2460\u2462"},{"id":"ref-for-values\u2460\u2463"},{"id":"ref-for-values\u2460\u2464"},{"id":"ref-for-values\u2460\u2465"},{"id":"ref-for-values\u2460\u2466"},{"id":"ref-for-values\u2460\u2467"},{"id":"ref-for-values\u2460\u2468"},{"id":"ref-for-values\u2461\u24ea"},{"id":"ref-for-values\u2461\u2460"},{"id":"ref-for-values\u2461\u2461"},{"id":"ref-for-values\u2461\u2462"},{"id":"ref-for-values\u2461\u2463"},{"id":"ref-for-values\u2461\u2464"},{"id":"ref-for-values\u2461\u2465"},{"id":"ref-for-values\u2461\u2466"},{"id":"ref-for-values\u2461\u2467"},{"id":"ref-for-values\u2461\u2468"},{"id":"ref-for-values\u2462\u24ea"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#values"},
"190fb93b": {"dfnID":"190fb93b","dfnText":"any","external":true,"refSections":[{"refs":[{"id":"ref-for-heap-types"},{"id":"ref-for-heap-types\u2460"},{"id":"ref-for-heap-types\u2461"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/syntax/types.html#heap-types"},
"19a9b79b": {"dfnID":"19a9b79b","dfnText":"String.prototype.charCodeAt","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-string.prototype.charcodeat"}],"title":"6.1.1. Abstract operations"}],"url":"https://tc39.github.io/ecma262/#sec-string.prototype.charcodeat"},
"1b0a78b7": {"dfnID":"1b0a78b7","dfnText":"valid tabletype","external":true,"refSections":[{"refs":[{"id":"ref-for-valid-tabletype"}],"title":"5.4. Tables"}],"url":"https://webassembly.github.io/spec/core/valid/types.html#valid-tabletype"},
"1c3da45d": {"dfnID":"1c3da45d","dfnText":"scope","external":true,"refSections":[{"refs":[{"id":"ref-for-scope"}],"title":"1. Introduction"}],"url":"https://webassembly.github.io/spec/core/intro/introduction.html#scope"},
"1d2aaa85": {"dfnID":"1d2aaa85","dfnText":"table_grow","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-table-grow"}],"title":"5.4. Tables"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-table-grow"},
"1f093a91": {"dfnID":"1f093a91","dfnText":"module (for frame)","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-frame"},{"id":"ref-for-syntax-frame\u2460"}],"title":"5.3. Memories"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-frame"},
"218fe9cc": {"dfnID":"218fe9cc","dfnText":"global_read","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-global-read"}],"title":"5.5. Globals"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-global-read"},
"222b8c82": {"dfnID":"222b8c82","dfnText":"tag (for external-type)","external":true,"refSections":[{"refs":[{"id":"ref-for-external-types"},{"id":"ref-for-external-types\u2460"},{"id":"ref-for-external-types\u2461"},{"id":"ref-for-external-types\u2462"},{"id":"ref-for-external-types\u2463"},{"id":"ref-for-external-types\u2464"},{"id":"ref-for-external-types\u2465"},{"id":"ref-for-external-types\u2466"},{"id":"ref-for-external-types\u2467"},{"id":"ref-for-external-types\u2468"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-external-types\u2460\u24ea"},{"id":"ref-for-external-types\u2460\u2460"},{"id":"ref-for-external-types\u2460\u2461"},{"id":"ref-for-external-types\u2460\u2462"},{"id":"ref-for-external-types\u2460\u2463"}],"title":"5.1. Modules"}],"url":"https://webassembly.github.io/spec/core/syntax/types.html#external-types"},
"24a3a894": {"dfnID":"24a3a894","dfnText":"global_type","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-global-type"},{"id":"ref-for-embed-global-type\u2460"}],"title":"5.5. Globals"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-global-type"},
"24bd7d25": {"dfnID":"24bd7d25","dfnText":"upon fulfillment","external":true,"refSections":[{"refs":[{"id":"ref-for-upon-fulfillment"},{"id":"ref-for-upon-fulfillment\u2460"}],"title":"5. The WebAssembly Namespace"}],"url":"https://webidl.spec.whatwg.org/#upon-fulfillment"},
"25439d77": {"dfnID":"25439d77","dfnText":"v128","external":true,"refSections":[{"refs":[{"id":"ref-for-vector-types"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-vector-types\u2460"},{"id":"ref-for-vector-types\u2461"},{"id":"ref-for-vector-types\u2462"},{"id":"ref-for-vector-types\u2463"}],"title":"5.5. Globals"},{"refs":[{"id":"ref-for-vector-types\u2464"},{"id":"ref-for-vector-types\u2465"},{"id":"ref-for-vector-types\u2466"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-vector-types\u2467"},{"id":"ref-for-vector-types\u2468"}],"title":"5.9. Exceptions"}],"url":"https://webassembly.github.io/spec/core/syntax/types.html#vector-types"},
"288fbd68": {"dfnID":"288fbd68","dfnText":"String.fromCodePoint","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-string.fromcodepoint"}],"title":"6.1.7. fromCodePoint"}],"url":"https://tc39.github.io/ecma262/#sec-string.fromcodepoint"},
"297c7b14": {"dfnID":"297c7b14","dfnText":"mem","external":true,"refSections":[{"refs":[{"id":"ref-for-external-types"},{"id":"ref-for-external-types\u2460"},{"id":"ref-for-external-types\u2461"},{"id":"ref-for-external-types\u2462"},{"id":"ref-for-external-types\u2463"},{"id":"ref-for-external-types\u2464"},{"id":"ref-for-external-types\u2465"},{"id":"ref-for-external-types\u2466"},{"id":"ref-for-external-types\u2467"},{"id":"ref-for-external-types\u2468"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-external-types\u2460\u24ea"},{"id":"ref-for-external-types\u2460\u2460"},{"id":"ref-for-external-types\u2460\u2461"},{"id":"ref-for-external-types\u2460\u2462"},{"id":"ref-for-external-types\u2460\u2463"}],"title":"5.1. Modules"}],"url":"https://webassembly.github.io/spec/core/syntax/types.html#external-types"},
"2ab6b777": {"dfnID":"2ab6b777","dfnText":"ref","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-reftype"},{"id":"ref-for-syntax-reftype\u2460"}],"title":"5.4. Tables"},{"refs":[{"id":"ref-for-syntax-reftype\u2461"},{"id":"ref-for-syntax-reftype\u2462"},{"id":"ref-for-syntax-reftype\u2463"},{"id":"ref-for-syntax-reftype\u2464"},{"id":"ref-for-syntax-reftype\u2465"},{"id":"ref-for-syntax-reftype\u2466"}],"title":"5.5. Globals"},{"refs":[{"id":"ref-for-syntax-reftype\u2467"},{"id":"ref-for-syntax-reftype\u2468"},{"id":"ref-for-syntax-reftype\u2460\u24ea"},{"id":"ref-for-syntax-reftype\u2460\u2460"},{"id":"ref-for-syntax-reftype\u2460\u2461"},{"id":"ref-for-syntax-reftype\u2460\u2462"},{"id":"ref-for-syntax-reftype\u2460\u2463"},{"id":"ref-for-syntax-reftype\u2460\u2464"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-syntax-reftype\u2460\u2465"},{"id":"ref-for-syntax-reftype\u2460\u2466"}],"title":"5.9. Exceptions"},{"refs":[{"id":"ref-for-syntax-reftype\u2460\u2467"},{"id":"ref-for-syntax-reftype\u2460\u2468"}],"title":"5.9.1. JavaScript exceptions"},{"refs":[{"id":"ref-for-syntax-reftype\u2461\u24ea"}],"title":"Reference Types"}],"url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype"},
"2ad7bc40": {"dfnID":"2ad7bc40","dfnText":"canon","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-float"},{"id":"ref-for-syntax-float\u2460"},{"id":"ref-for-syntax-float\u2461"},{"id":"ref-for-syntax-float\u2462"},{"id":"ref-for-syntax-float\u2463"},{"id":"ref-for-syntax-float\u2464"},{"id":"ref-for-syntax-float\u2465"},{"id":"ref-for-syntax-float\u2466"},{"id":"ref-for-syntax-float\u2467"},{"id":"ref-for-syntax-float\u2468"},{"id":"ref-for-syntax-float\u2460\u24ea"},{"id":"ref-for-syntax-float\u2460\u2460"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/syntax/values.html#syntax-float"},
"2d67382f": {"dfnID":"2d67382f","dfnText":"func_type","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-func-type"},{"id":"ref-for-embed-func-type\u2460"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-func-type"},
"31e3695a": {"dfnID":"31e3695a","dfnText":"WebAssembly module validation","external":true,"refSections":[{"refs":[{"id":"ref-for-valid-module"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-valid-module\u2460"}],"title":"5.1. Modules"}],"url":"https://webassembly.github.io/spec/core/valid/modules.html#valid-module"},
"31f1c810": {"dfnID":"31f1c810","dfnText":"[EnforceRange]","external":true,"refSections":[{"refs":[{"id":"ref-for-EnforceRange"},{"id":"ref-for-EnforceRange\u2460"},{"id":"ref-for-EnforceRange\u2461"},{"id":"ref-for-EnforceRange\u2462"}],"title":"5.6. Exported Functions"}],"url":"https://heycam.github.io/webidl/#EnforceRange"},
"32922d65": {"dfnID":"32922d65","dfnText":"ref.exn","external":true,"refSections":[{"refs":[{"id":"ref-for-values"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-values\u2460"},{"id":"ref-for-values\u2461"},{"id":"ref-for-values\u2462"},{"id":"ref-for-values\u2463"},{"id":"ref-for-values\u2464"},{"id":"ref-for-values\u2465"},{"id":"ref-for-values\u2466"},{"id":"ref-for-values\u2467"},{"id":"ref-for-values\u2468"},{"id":"ref-for-values\u2460\u24ea"},{"id":"ref-for-values\u2460\u2460"},{"id":"ref-for-values\u2460\u2461"},{"id":"ref-for-values\u2460\u2462"},{"id":"ref-for-values\u2460\u2463"},{"id":"ref-for-values\u2460\u2464"},{"id":"ref-for-values\u2460\u2465"},{"id":"ref-for-values\u2460\u2466"},{"id":"ref-for-values\u2460\u2467"},{"id":"ref-for-values\u2460\u2468"},{"id":"ref-for-values\u2461\u24ea"},{"id":"ref-for-values\u2461\u2460"},{"id":"ref-for-values\u2461\u2461"},{"id":"ref-for-values\u2461\u2462"},{"id":"ref-for-values\u2461\u2463"},{"id":"ref-for-values\u2461\u2464"},{"id":"ref-for-values\u2461\u2465"},{"id":"ref-for-values\u2461\u2466"},{"id":"ref-for-values\u2461\u2467"},{"id":"ref-for-values\u2461\u2468"},{"id":"ref-for-values\u2462\u24ea"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#values"},
"339ed507": {"dfnID":"339ed507","dfnText":"ref.extern","external":true,"refSections":[{"refs":[{"id":"ref-for-values"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-values\u2460"},{"id":"ref-for-values\u2461"},{"id":"ref-for-values\u2462"},{"id":"ref-for-values\u2463"},{"id":"ref-for-values\u2464"},{"id":"ref-for-values\u2465"},{"id":"ref-for-values\u2466"},{"id":"ref-for-values\u2467"},{"id":"ref-for-values\u2468"},{"id":"ref-for-values\u2460\u24ea"},{"id":"ref-for-values\u2460\u2460"},{"id":"ref-for-values\u2460\u2461"},{"id":"ref-for-values\u2460\u2462"},{"id":"ref-for-values\u2460\u2463"},{"id":"ref-for-values\u2460\u2464"},{"id":"ref-for-values\u2460\u2465"},{"id":"ref-for-values\u2460\u2466"},{"id":"ref-for-values\u2460\u2467"},{"id":"ref-for-values\u2460\u2468"},{"id":"ref-for-values\u2461\u24ea"},{"id":"ref-for-values\u2461\u2460"},{"id":"ref-for-values\u2461\u2461"},{"id":"ref-for-values\u2461\u2462"},{"id":"ref-for-values\u2461\u2463"},{"id":"ref-for-values\u2461\u2464"},{"id":"ref-for-values\u2461\u2465"},{"id":"ref-for-values\u2461\u2466"},{"id":"ref-for-values\u2461\u2467"},{"id":"ref-for-values\u2461\u2468"},{"id":"ref-for-values\u2462\u24ea"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#values"},
"3435afe9": {"dfnID":"3435afe9","dfnText":"func (for heap-type)","external":true,"refSections":[{"refs":[{"id":"ref-for-heap-types"},{"id":"ref-for-heap-types\u2460"},{"id":"ref-for-heap-types\u2461"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/syntax/types.html#heap-types"},
"361dac10": {"dfnID":"361dac10","dfnText":"exception address","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-exnaddr"}],"title":"4.2. WebAssembly JS Object Caches"},{"refs":[{"id":"ref-for-syntax-exnaddr\u2460"},{"id":"ref-for-syntax-exnaddr\u2461"}],"title":"5.9. Exceptions"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-exnaddr"},
"369594bc": {"dfnID":"369594bc","dfnText":"SetIntegrityLevel","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-setintegritylevel"}],"title":"5. The WebAssembly Namespace"}],"url":"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-setintegritylevel"},
"38f8a72a": {"dfnID":"38f8a72a","dfnText":"ref_type","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-ref-type"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-ref-type"},
"3952ef8f": {"dfnID":"3952ef8f","dfnText":"instance_export","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-instance-export"}],"title":"5. The WebAssembly Namespace"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-instance-export"},
"3aff2fb3": {"dfnID":"3aff2fb3","dfnText":"BufferSource","external":true,"refSections":[{"refs":[{"id":"ref-for-BufferSource"},{"id":"ref-for-BufferSource\u2460"},{"id":"ref-for-BufferSource\u2461"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-BufferSource\u2462"}],"title":"5.1. Modules"}],"url":"https://webidl.spec.whatwg.org/#BufferSource"},
"3b90bdcd": {"dfnID":"3b90bdcd","dfnText":"resolve","external":true,"refSections":[{"refs":[{"id":"ref-for-resolve"},{"id":"ref-for-resolve\u2460"},{"id":"ref-for-resolve\u2461"}],"title":"5. The WebAssembly Namespace"}],"url":"https://webidl.spec.whatwg.org/#resolve"},
"3c380f81": {"dfnID":"3c380f81","dfnText":"module_decode","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-module-decode"}],"title":"5. The WebAssembly Namespace"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-module-decode"},
"3e180d35": {"dfnID":"3e180d35","dfnText":"associated realm","external":true,"refSections":[{"refs":[{"id":"ref-for-dfn-associated-realm"}],"title":"5.6. Exported Functions"}],"url":"https://webidl.spec.whatwg.org/#dfn-associated-realm"},
"3ed14caf": {"dfnID":"3ed14caf","dfnText":"IsFixedLengthArrayBuffer","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-isfixedarraybuffer"},{"id":"ref-for-sec-isfixedarraybuffer\u2460"},{"id":"ref-for-sec-isfixedarraybuffer\u2461"}],"title":"5.3. Memories"}],"url":"https://tc39.es/proposal-resizablearraybuffer/#sec-isfixedarraybuffer"},
"41c521da": {"dfnID":"41c521da","dfnText":"host function","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-hostfunc"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-syntax-hostfunc\u2460"}],"title":"6. Builtins"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-hostfunc"},
"43564950": {"dfnID":"43564950","dfnText":"RangeError","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-native-error-types-used-in-this-standard-rangeerror"},{"id":"ref-for-sec-native-error-types-used-in-this-standard-rangeerror\u2460"},{"id":"ref-for-sec-native-error-types-used-in-this-standard-rangeerror\u2461"},{"id":"ref-for-sec-native-error-types-used-in-this-standard-rangeerror\u2462"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-sec-native-error-types-used-in-this-standard-rangeerror\u2463"},{"id":"ref-for-sec-native-error-types-used-in-this-standard-rangeerror\u2464"},{"id":"ref-for-sec-native-error-types-used-in-this-standard-rangeerror\u2465"},{"id":"ref-for-sec-native-error-types-used-in-this-standard-rangeerror\u2466"},{"id":"ref-for-sec-native-error-types-used-in-this-standard-rangeerror\u2467"}],"title":"5.4. Tables"},{"refs":[{"id":"ref-for-sec-native-error-types-used-in-this-standard-rangeerror\u2468"}],"title":"5.5. Globals"},{"refs":[{"id":"ref-for-sec-native-error-types-used-in-this-standard-rangeerror\u2460\u24ea"}],"title":"5.9. Exceptions"},{"refs":[{"id":"ref-for-sec-native-error-types-used-in-this-standard-rangeerror\u2460\u2460"}],"title":"5.10. Error Objects"},{"refs":[{"id":"ref-for-sec-native-error-types-used-in-this-standard-rangeerror\u2460\u2461"}],"title":"7.1. Stack Overflow"},{"refs":[{"id":"ref-for-sec-native-error-types-used-in-this-standard-rangeerror\u2460\u2462"}],"title":"7.2. Out of Memory"}],"url":"https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-rangeerror"},
"4380dc8b": {"dfnID":"4380dc8b","dfnText":"is not a Number","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-ecmascript-language-types-number-type"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-sec-ecmascript-language-types-number-type\u2460"}],"title":"5.6. Exported Functions"}],"url":"https://tc39.github.io/ecma262/#sec-ecmascript-language-types-number-type"},
"43b980ff": {"dfnID":"43b980ff","dfnText":"valid","external":true,"refSections":[{"refs":[{"id":"ref-for-valid-module"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-valid-module\u2460"}],"title":"5.1. Modules"}],"url":"https://webassembly.github.io/spec/core/valid/modules.html#valid-module"},
"486e6f39": {"dfnID":"486e6f39","dfnText":"func (for external-type)","external":true,"refSections":[{"refs":[{"id":"ref-for-external-types"},{"id":"ref-for-external-types\u2460"},{"id":"ref-for-external-types\u2461"},{"id":"ref-for-external-types\u2462"},{"id":"ref-for-external-types\u2463"},{"id":"ref-for-external-types\u2464"},{"id":"ref-for-external-types\u2465"},{"id":"ref-for-external-types\u2466"},{"id":"ref-for-external-types\u2467"},{"id":"ref-for-external-types\u2468"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-external-types\u2460\u24ea"},{"id":"ref-for-external-types\u2460\u2460"},{"id":"ref-for-external-types\u2460\u2461"},{"id":"ref-for-external-types\u2460\u2462"},{"id":"ref-for-external-types\u2460\u2463"}],"title":"5.1. Modules"}],"url":"https://webassembly.github.io/spec/core/syntax/types.html#external-types"},
"49bbfc32": {"dfnID":"49bbfc32","dfnText":"BigInt","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-ecmascript-language-types-bigint-type"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-sec-ecmascript-language-types-bigint-type\u2460"}],"title":"BigInt Integration"}],"url":"https://tc39.github.io/ecma262/#sec-ecmascript-language-types-bigint-type"},
"4a854a91": {"dfnID":"4a854a91","dfnText":"ToString","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-tostring"}],"title":"5.6. Exported Functions"}],"url":"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-tostring"},
"4ad913ae": {"dfnID":"4ad913ae","dfnText":"surrounding agent","external":true,"refSections":[{"refs":[{"id":"ref-for-surrounding-agent"},{"id":"ref-for-surrounding-agent\u2460"},{"id":"ref-for-surrounding-agent\u2461"},{"id":"ref-for-surrounding-agent\u2462"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-surrounding-agent\u2463"},{"id":"ref-for-surrounding-agent\u2464"},{"id":"ref-for-surrounding-agent\u2465"},{"id":"ref-for-surrounding-agent\u2466"},{"id":"ref-for-surrounding-agent\u2467"},{"id":"ref-for-surrounding-agent\u2468"},{"id":"ref-for-surrounding-agent\u2460\u24ea"},{"id":"ref-for-surrounding-agent\u2460\u2460"},{"id":"ref-for-surrounding-agent\u2460\u2461"},{"id":"ref-for-surrounding-agent\u2460\u2462"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-surrounding-agent\u2460\u2463"},{"id":"ref-for-surrounding-agent\u2460\u2464"},{"id":"ref-for-surrounding-agent\u2460\u2465"},{"id":"ref-for-surrounding-agent\u2460\u2466"},{"id":"ref-for-surrounding-agent\u2460\u2467"},{"id":"ref-for-surrounding-agent\u2460\u2468"},{"id":"ref-for-surrounding-agent\u2461\u24ea"},{"id":"ref-for-surrounding-agent\u2461\u2460"},{"id":"ref-for-surrounding-agent\u2461\u2461"},{"id":"ref-for-surrounding-agent\u2461\u2462"}],"title":"5.4. Tables"},{"refs":[{"id":"ref-for-surrounding-agent\u2461\u2463"},{"id":"ref-for-surrounding-agent\u2461\u2464"}],"title":"5.5. Globals"},{"refs":[{"id":"ref-for-surrounding-agent\u2461\u2465"},{"id":"ref-for-surrounding-agent\u2461\u2466"},{"id":"ref-for-surrounding-agent\u2461\u2467"},{"id":"ref-for-surrounding-agent\u2461\u2468"},{"id":"ref-for-surrounding-agent\u2462\u24ea"},{"id":"ref-for-surrounding-agent\u2462\u2460"},{"id":"ref-for-surrounding-agent\u2462\u2461"},{"id":"ref-for-surrounding-agent\u2462\u2462"},{"id":"ref-for-surrounding-agent\u2462\u2463"},{"id":"ref-for-surrounding-agent\u2462\u2464"},{"id":"ref-for-surrounding-agent\u2462\u2465"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-surrounding-agent\u2462\u2466"},{"id":"ref-for-surrounding-agent\u2462\u2467"}],"title":"5.7.1. Tag types"},{"refs":[{"id":"ref-for-surrounding-agent\u2462\u2468"},{"id":"ref-for-surrounding-agent\u2463\u24ea"}],"title":"5.8. Garbage Collected Objects"},{"refs":[{"id":"ref-for-surrounding-agent\u2463\u2460"},{"id":"ref-for-surrounding-agent\u2463\u2461"},{"id":"ref-for-surrounding-agent\u2463\u2462"},{"id":"ref-for-surrounding-agent\u2463\u2463"},{"id":"ref-for-surrounding-agent\u2463\u2464"},{"id":"ref-for-surrounding-agent\u2463\u2465"}],"title":"5.9. Exceptions"},{"refs":[{"id":"ref-for-surrounding-agent\u2463\u2466"},{"id":"ref-for-surrounding-agent\u2463\u2467"},{"id":"ref-for-surrounding-agent\u2463\u2468"}],"title":"5.9.1. JavaScript exceptions"},{"refs":[{"id":"ref-for-surrounding-agent\u2464\u24ea"}],"title":"6. Builtins"}],"url":"https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent"},
"4adb26f1": {"dfnID":"4adb26f1","dfnText":"ToBigInt","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-tobigint"}],"title":"5.6. Exported Functions"}],"url":"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-tobigint"},
"4c6c6f05": {"dfnID":"4c6c6f05","dfnText":"CreateArrayFromList","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-createarrayfromlist"}],"title":"5.6. Exported Functions"}],"url":"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-createarrayfromlist"},
"4da9fc5c": {"dfnID":"4da9fc5c","dfnText":"ref.array","external":true,"refSections":[{"refs":[{"id":"ref-for-values"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-values\u2460"},{"id":"ref-for-values\u2461"},{"id":"ref-for-values\u2462"},{"id":"ref-for-values\u2463"},{"id":"ref-for-values\u2464"},{"id":"ref-for-values\u2465"},{"id":"ref-for-values\u2466"},{"id":"ref-for-values\u2467"},{"id":"ref-for-values\u2468"},{"id":"ref-for-values\u2460\u24ea"},{"id":"ref-for-values\u2460\u2460"},{"id":"ref-for-values\u2460\u2461"},{"id":"ref-for-values\u2460\u2462"},{"id":"ref-for-values\u2460\u2463"},{"id":"ref-for-values\u2460\u2464"},{"id":"ref-for-values\u2460\u2465"},{"id":"ref-for-values\u2460\u2466"},{"id":"ref-for-values\u2460\u2467"},{"id":"ref-for-values\u2460\u2468"},{"id":"ref-for-values\u2461\u24ea"},{"id":"ref-for-values\u2461\u2460"},{"id":"ref-for-values\u2461\u2461"},{"id":"ref-for-values\u2461\u2462"},{"id":"ref-for-values\u2461\u2463"},{"id":"ref-for-values\u2461\u2464"},{"id":"ref-for-values\u2461\u2465"},{"id":"ref-for-values\u2461\u2466"},{"id":"ref-for-values\u2461\u2467"},{"id":"ref-for-values\u2461\u2468"},{"id":"ref-for-values\u2462\u24ea"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#values"},
"4f4736a6": {"dfnID":"4f4736a6","dfnText":"mathematical value","external":true,"refSections":[{"refs":[{"id":"ref-for-mathematical-value"},{"id":"ref-for-mathematical-value\u2460"},{"id":"ref-for-mathematical-value\u2461"},{"id":"ref-for-mathematical-value\u2462"},{"id":"ref-for-mathematical-value\u2463"},{"id":"ref-for-mathematical-value\u2464"}],"title":"5.6. Exported Functions"}],"url":"https://tc39.github.io/ecma262/#mathematical-value"},
"4fc7e98f": {"dfnID":"4fc7e98f","dfnText":"global","external":true,"refSections":[{"refs":[{"id":"ref-for-external-types"},{"id":"ref-for-external-types\u2460"},{"id":"ref-for-external-types\u2461"},{"id":"ref-for-external-types\u2462"},{"id":"ref-for-external-types\u2463"},{"id":"ref-for-external-types\u2464"},{"id":"ref-for-external-types\u2465"},{"id":"ref-for-external-types\u2466"},{"id":"ref-for-external-types\u2467"},{"id":"ref-for-external-types\u2468"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-external-types\u2460\u24ea"},{"id":"ref-for-external-types\u2460\u2460"},{"id":"ref-for-external-types\u2460\u2461"},{"id":"ref-for-external-types\u2460\u2462"},{"id":"ref-for-external-types\u2460\u2463"}],"title":"5.1. Modules"}],"url":"https://webassembly.github.io/spec/core/syntax/types.html#external-types"},
"53275e46": {"dfnID":"53275e46","dfnText":"append","external":true,"refSections":[{"refs":[{"id":"ref-for-list-append"},{"id":"ref-for-list-append\u2460"},{"id":"ref-for-list-append\u2461"},{"id":"ref-for-list-append\u2462"},{"id":"ref-for-list-append\u2463"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-list-append\u2464"},{"id":"ref-for-list-append\u2465"},{"id":"ref-for-list-append\u2466"}],"title":"5.1. Modules"},{"refs":[{"id":"ref-for-list-append\u2467"},{"id":"ref-for-list-append\u2468"},{"id":"ref-for-list-append\u2460\u24ea"},{"id":"ref-for-list-append\u2460\u2460"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-list-append\u2460\u2461"}],"title":"5.7.1. Tag types"},{"refs":[{"id":"ref-for-list-append\u2460\u2462"}],"title":"5.9. Exceptions"}],"url":"https://infra.spec.whatwg.org/#list-append"},
"53306f8f": {"dfnID":"53306f8f","dfnText":"ConvertToInt","external":true,"refSections":[{"refs":[{"id":"ref-for-abstract-opdef-converttoint"}],"title":"5.6. Exported Functions"}],"url":"https://webidl.spec.whatwg.org/#abstract-opdef-converttoint"},
"5372cca8": {"dfnID":"5372cca8","dfnText":"boolean","external":true,"refSections":[{"refs":[{"id":"ref-for-idl-boolean"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-idl-boolean\u2460"}],"title":"5.5. Globals"},{"refs":[{"id":"ref-for-idl-boolean\u2461"},{"id":"ref-for-idl-boolean\u2462"}],"title":"5.9. Exceptions"}],"url":"https://webidl.spec.whatwg.org/#idl-boolean"},
"56473266": {"dfnID":"56473266","dfnText":"exn_read","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-exn-read"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-embed-exn-read\u2460"},{"id":"ref-for-embed-exn-read\u2461"}],"title":"5.9. Exceptions"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-exn-read"},
"5672836e": {"dfnID":"5672836e","dfnText":"trap","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-trap"}],"title":"6.1.1. Abstract operations"},{"refs":[{"id":"ref-for-syntax-trap\u2460"},{"id":"ref-for-syntax-trap\u2461"}],"title":"6.1.4. fromCharCodeArray"},{"refs":[{"id":"ref-for-syntax-trap\u2462"},{"id":"ref-for-syntax-trap\u2463"}],"title":"6.1.5. intoCharCodeArray"},{"refs":[{"id":"ref-for-syntax-trap\u2464"}],"title":"6.1.7. fromCodePoint"},{"refs":[{"id":"ref-for-syntax-trap\u2465"}],"title":"6.1.8. charCodeAt"},{"refs":[{"id":"ref-for-syntax-trap\u2466"}],"title":"6.1.9. codePointAt"},{"refs":[{"id":"ref-for-syntax-trap\u2467"},{"id":"ref-for-syntax-trap\u2468"}],"title":"6.1.13. equals"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-trap"},
"56f81a8e": {"dfnID":"56f81a8e","dfnText":"new","external":true,"refSections":[{"refs":[{"id":"ref-for-new"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-new\u2460"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-new\u2461"}],"title":"5.4. Tables"},{"refs":[{"id":"ref-for-new\u2462"}],"title":"5.5. Globals"},{"refs":[{"id":"ref-for-new\u2463"}],"title":"5.7.1. Tag types"},{"refs":[{"id":"ref-for-new\u2464"}],"title":"5.9. Exceptions"}],"url":"https://webidl.spec.whatwg.org/#new"},
"58788f9d": {"dfnID":"58788f9d","dfnText":"TypeError","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-native-error-types-used-in-this-standard-typeerror"},{"id":"ref-for-sec-native-error-types-used-in-this-standard-typeerror\u2460"},{"id":"ref-for-sec-native-error-types-used-in-this-standard-typeerror\u2461"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-sec-native-error-types-used-in-this-standard-typeerror\u2462"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-sec-native-error-types-used-in-this-standard-typeerror\u2463"},{"id":"ref-for-sec-native-error-types-used-in-this-standard-typeerror\u2464"},{"id":"ref-for-sec-native-error-types-used-in-this-standard-typeerror\u2465"},{"id":"ref-for-sec-native-error-types-used-in-this-standard-typeerror\u2466"},{"id":"ref-for-sec-native-error-types-used-in-this-standard-typeerror\u2467"}],"title":"5.4. Tables"},{"refs":[{"id":"ref-for-sec-native-error-types-used-in-this-standard-typeerror\u2468"},{"id":"ref-for-sec-native-error-types-used-in-this-standard-typeerror\u2460\u24ea"},{"id":"ref-for-sec-native-error-types-used-in-this-standard-typeerror\u2460\u2460"},{"id":"ref-for-sec-native-error-types-used-in-this-standard-typeerror\u2460\u2461"}],"title":"5.5. Globals"},{"refs":[{"id":"ref-for-sec-native-error-types-used-in-this-standard-typeerror\u2460\u2462"},{"id":"ref-for-sec-native-error-types-used-in-this-standard-typeerror\u2460\u2463"},{"id":"ref-for-sec-native-error-types-used-in-this-standard-typeerror\u2460\u2464"},{"id":"ref-for-sec-native-error-types-used-in-this-standard-typeerror\u2460\u2465"},{"id":"ref-for-sec-native-error-types-used-in-this-standard-typeerror\u2460\u2466"},{"id":"ref-for-sec-native-error-types-used-in-this-standard-typeerror\u2460\u2467"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-sec-native-error-types-used-in-this-standard-typeerror\u2460\u2468"},{"id":"ref-for-sec-native-error-types-used-in-this-standard-typeerror\u2461\u24ea"}],"title":"5.8. Garbage Collected Objects"},{"refs":[{"id":"ref-for-sec-native-error-types-used-in-this-standard-typeerror\u2461\u2460"},{"id":"ref-for-sec-native-error-types-used-in-this-standard-typeerror\u2461\u2461"},{"id":"ref-for-sec-native-error-types-used-in-this-standard-typeerror\u2461\u2462"},{"id":"ref-for-sec-native-error-types-used-in-this-standard-typeerror\u2461\u2463"}],"title":"5.9. Exceptions"},{"refs":[{"id":"ref-for-sec-native-error-types-used-in-this-standard-typeerror\u2461\u2464"}],"title":"5.10. Error Objects"}],"url":"https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-typeerror"},
"5b7339ce": {"dfnID":"5b7339ce","dfnText":"GetMethod","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-getmethod"}],"title":"5.6. Exported Functions"}],"url":"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-getmethod"},
"5ce71be2": {"dfnID":"5ce71be2","dfnText":"val_default","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-val-default"}],"title":"5.5. Globals"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-val-default"},
"5f3abfd0": {"dfnID":"5f3abfd0","dfnText":"HostResizeArrayBuffer","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-hostresizearraybuffer"},{"id":"ref-for-sec-hostresizearraybuffer\u2460"}],"title":"5.3. Memories"}],"url":"https://tc39.es/proposal-resizablearraybuffer/#sec-hostresizearraybuffer"},
"5f90bbfb": {"dfnID":"5f90bbfb","dfnText":"undefined","external":true,"refSections":[{"refs":[{"id":"ref-for-idl-undefined"}],"title":"5.4. Tables"},{"refs":[{"id":"ref-for-idl-undefined\u2460"}],"title":"5.9. Exceptions"}],"url":"https://webidl.spec.whatwg.org/#idl-undefined"},
"60e61e1a": {"dfnID":"60e61e1a","dfnText":"namespace object","external":true,"refSections":[{"refs":[{"id":"ref-for-dfn-namespace-object"},{"id":"ref-for-dfn-namespace-object\u2460"}],"title":"5.10. Error Objects"}],"url":"https://webidl.spec.whatwg.org/#dfn-namespace-object"},
"61356085": {"dfnID":"61356085","dfnText":"embedding interface","external":true,"refSections":[{"refs":[{"id":"ref-for-appending/embedding.html"}],"title":"1. Introduction"}],"url":"https://webassembly.github.io/spec/core/#appending/embedding.html"},
"640ee28c": {"dfnID":"640ee28c","dfnText":"ref.host","external":true,"refSections":[{"refs":[{"id":"ref-for-values"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-values\u2460"},{"id":"ref-for-values\u2461"},{"id":"ref-for-values\u2462"},{"id":"ref-for-values\u2463"},{"id":"ref-for-values\u2464"},{"id":"ref-for-values\u2465"},{"id":"ref-for-values\u2466"},{"id":"ref-for-values\u2467"},{"id":"ref-for-values\u2468"},{"id":"ref-for-values\u2460\u24ea"},{"id":"ref-for-values\u2460\u2460"},{"id":"ref-for-values\u2460\u2461"},{"id":"ref-for-values\u2460\u2462"},{"id":"ref-for-values\u2460\u2463"},{"id":"ref-for-values\u2460\u2464"},{"id":"ref-for-values\u2460\u2465"},{"id":"ref-for-values\u2460\u2466"},{"id":"ref-for-values\u2460\u2467"},{"id":"ref-for-values\u2460\u2468"},{"id":"ref-for-values\u2461\u24ea"},{"id":"ref-for-values\u2461\u2460"},{"id":"ref-for-values\u2461\u2461"},{"id":"ref-for-values\u2461\u2462"},{"id":"ref-for-values\u2461\u2463"},{"id":"ref-for-values\u2461\u2464"},{"id":"ref-for-values\u2461\u2465"},{"id":"ref-for-values\u2461\u2466"},{"id":"ref-for-values\u2461\u2467"},{"id":"ref-for-values\u2461\u2468"},{"id":"ref-for-values\u2462\u24ea"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#values"},
"649608b9": {"dfnID":"649608b9","dfnText":"list","external":true,"refSections":[{"refs":[{"id":"ref-for-list"}],"title":"3. Notation"},{"refs":[{"id":"ref-for-list\u2460"},{"id":"ref-for-list\u2461"},{"id":"ref-for-list\u2462"}],"title":"5.6. Exported Functions"}],"url":"https://infra.spec.whatwg.org/#list"},
"672fca90": {"dfnID":"672fca90","dfnText":"tag type","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-tagtype"},{"id":"ref-for-syntax-tagtype\u2460"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-syntax-tagtype\u2461"}],"title":"5.9.1. JavaScript exceptions"}],"url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-tagtype"},
"679f4232": {"dfnID":"679f4232","dfnText":"ref.i31","external":true,"refSections":[{"refs":[{"id":"ref-for-values"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-values\u2460"},{"id":"ref-for-values\u2461"},{"id":"ref-for-values\u2462"},{"id":"ref-for-values\u2463"},{"id":"ref-for-values\u2464"},{"id":"ref-for-values\u2465"},{"id":"ref-for-values\u2466"},{"id":"ref-for-values\u2467"},{"id":"ref-for-values\u2468"},{"id":"ref-for-values\u2460\u24ea"},{"id":"ref-for-values\u2460\u2460"},{"id":"ref-for-values\u2460\u2461"},{"id":"ref-for-values\u2460\u2462"},{"id":"ref-for-values\u2460\u2463"},{"id":"ref-for-values\u2460\u2464"},{"id":"ref-for-values\u2460\u2465"},{"id":"ref-for-values\u2460\u2466"},{"id":"ref-for-values\u2460\u2467"},{"id":"ref-for-values\u2460\u2468"},{"id":"ref-for-values\u2461\u24ea"},{"id":"ref-for-values\u2461\u2460"},{"id":"ref-for-values\u2461\u2461"},{"id":"ref-for-values\u2461\u2462"},{"id":"ref-for-values\u2461\u2463"},{"id":"ref-for-values\u2461\u2464"},{"id":"ref-for-values\u2461\u2465"},{"id":"ref-for-values\u2461\u2466"},{"id":"ref-for-values\u2461\u2467"},{"id":"ref-for-values\u2461\u2468"},{"id":"ref-for-values\u2462\u24ea"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#values"},
"69ce1dac": {"dfnID":"69ce1dac","dfnText":"memory type","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-memtype"}],"title":"5.3. Memories"}],"url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-memtype"},
"6b815fdd": {"dfnID":"6b815fdd","dfnText":"is empty","external":true,"refSections":[{"refs":[{"id":"ref-for-list-is-empty"}],"title":"5. The WebAssembly Namespace"}],"url":"https://infra.spec.whatwg.org/#list-is-empty"},
"6bdc3470": {"dfnID":"6bdc3470","dfnText":"i64","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-numtype"},{"id":"ref-for-syntax-numtype\u2460"},{"id":"ref-for-syntax-numtype\u2461"},{"id":"ref-for-syntax-numtype\u2462"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-syntax-numtype\u2463"},{"id":"ref-for-syntax-numtype\u2464"},{"id":"ref-for-syntax-numtype\u2465"},{"id":"ref-for-syntax-numtype\u2466"}],"title":"5.5. Globals"},{"refs":[{"id":"ref-for-syntax-numtype\u2467"},{"id":"ref-for-syntax-numtype\u2468"},{"id":"ref-for-syntax-numtype\u2460\u24ea"},{"id":"ref-for-syntax-numtype\u2460\u2460"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-syntax-numtype\u2460\u2461"},{"id":"ref-for-syntax-numtype\u2460\u2462"}],"title":"6.1.1. Abstract operations"},{"refs":[{"id":"ref-for-syntax-numtype\u2460\u2463"}],"title":"BigInt Integration"}],"url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-numtype"},
"6c660071": {"dfnID":"6c660071","dfnText":"module grammar","external":true,"refSections":[{"refs":[{"id":"ref-for-binary-module"}],"title":"5.1. Modules"}],"url":"https://webassembly.github.io/spec/core/binary/modules.html#binary-module"},
"6c6b1005": {"dfnID":"6c6b1005","dfnText":"any","external":true,"refSections":[{"refs":[{"id":"ref-for-idl-any"}],"title":"5.1. Modules"},{"refs":[{"id":"ref-for-idl-any\u2460"},{"id":"ref-for-idl-any\u2461"},{"id":"ref-for-idl-any\u2462"},{"id":"ref-for-idl-any\u2463"}],"title":"5.4. Tables"},{"refs":[{"id":"ref-for-idl-any\u2464"},{"id":"ref-for-idl-any\u2465"},{"id":"ref-for-idl-any\u2466"}],"title":"5.5. Globals"},{"refs":[{"id":"ref-for-idl-any\u2467"},{"id":"ref-for-idl-any\u2468"}],"title":"5.9. Exceptions"}],"url":"https://webidl.spec.whatwg.org/#idl-any"},
"6df10f44": {"dfnID":"6df10f44","dfnText":"CreateBuiltinFunction","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-createbuiltinfunction"}],"title":"5.6. Exported Functions"}],"url":"https://tc39.es/ecma262/multipage/ordinary-and-exotic-objects-behaviours.html#sec-createbuiltinfunction"},
"71ea3880": {"dfnID":"71ea3880","dfnText":"var","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-mut"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-syntax-mut\u2460"},{"id":"ref-for-syntax-mut\u2461"},{"id":"ref-for-syntax-mut\u2462"}],"title":"5.5. Globals"}],"url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-mut"},
"74269a03": {"dfnID":"74269a03","dfnText":"String.prototype.concat","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-string.prototype.concat"}],"title":"6.1.11. concat"}],"url":"https://tc39.github.io/ecma262/#sec-string.prototype.concat"},
"746f6bc3": {"dfnID":"746f6bc3","dfnText":"memory instance","external":true,"refSections":[{"refs":[{"id":"ref-for-memory-instances"}],"title":"4.1. Interaction of the WebAssembly Store with JavaScript"},{"refs":[{"id":"ref-for-memory-instances\u2460"}],"title":"5.3. Memories"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#memory-instances"},
"750115f9": {"dfnID":"750115f9","dfnText":"DefineMethodProperty","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-definemethodproperty"}],"title":"5.10. Error Objects"}],"url":"https://tc39.es/ecma262/multipage/ordinary-and-exotic-objects-behaviours.html#sec-definemethodproperty"},
"76674d02": {"dfnID":"76674d02","dfnText":"module_exports","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-module-exports"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-embed-module-exports\u2460"}],"title":"5.1. Modules"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-module-exports"},
"76ec690d": {"dfnID":"76ec690d","dfnText":"signed_31","external":true,"refSections":[{"refs":[{"id":"ref-for-aux-signed"},{"id":"ref-for-aux-signed\u2460"},{"id":"ref-for-aux-signed\u2461"},{"id":"ref-for-aux-signed\u2462"},{"id":"ref-for-aux-signed\u2463"},{"id":"ref-for-aux-signed\u2464"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/exec/numerics.html#aux-signed"},
"77489c34": {"dfnID":"77489c34","dfnText":"global address","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-globaladdr"}],"title":"4.2. WebAssembly JS Object Caches"},{"refs":[{"id":"ref-for-syntax-globaladdr\u2460"},{"id":"ref-for-syntax-globaladdr\u2461"},{"id":"ref-for-syntax-globaladdr\u2462"}],"title":"5.5. Globals"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-globaladdr"},
"7b8dca78": {"dfnID":"7b8dca78","dfnText":"String.prototype.substring","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-string.prototype.substring"}],"title":"6.1.12. substring"}],"url":"https://tc39.github.io/ecma262/#sec-string.prototype.substring"},
"7b8e8458": {"dfnID":"7b8e8458","dfnText":"\u211d","external":true,"refSections":[{"refs":[{"id":"ref-for-\u211d"},{"id":"ref-for-\u211d\u2460"},{"id":"ref-for-\u211d\u2461"},{"id":"ref-for-\u211d\u2462"}],"title":"5.6. Exported Functions"}],"url":"https://tc39.github.io/ecma262/#\u211d"},
"7c586764": {"dfnID":"7c586764","dfnText":"sequence","external":true,"refSections":[{"refs":[{"id":"ref-for-grammar-notation"}],"title":"3. Notation"}],"url":"https://webassembly.github.io/spec/core/syntax/conventions.html#grammar-notation"},
"7ca4b8ff": {"dfnID":"7ca4b8ff","dfnText":"WebAssembly value","external":true,"refSections":[{"refs":[{"id":"ref-for-values"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-values\u2460"},{"id":"ref-for-values\u2461"},{"id":"ref-for-values\u2462"},{"id":"ref-for-values\u2463"},{"id":"ref-for-values\u2464"},{"id":"ref-for-values\u2465"},{"id":"ref-for-values\u2466"},{"id":"ref-for-values\u2467"},{"id":"ref-for-values\u2468"},{"id":"ref-for-values\u2460\u24ea"},{"id":"ref-for-values\u2460\u2460"},{"id":"ref-for-values\u2460\u2461"},{"id":"ref-for-values\u2460\u2462"},{"id":"ref-for-values\u2460\u2463"},{"id":"ref-for-values\u2460\u2464"},{"id":"ref-for-values\u2460\u2465"},{"id":"ref-for-values\u2460\u2466"},{"id":"ref-for-values\u2460\u2467"},{"id":"ref-for-values\u2460\u2468"},{"id":"ref-for-values\u2461\u24ea"},{"id":"ref-for-values\u2461\u2460"},{"id":"ref-for-values\u2461\u2461"},{"id":"ref-for-values\u2461\u2462"},{"id":"ref-for-values\u2461\u2463"},{"id":"ref-for-values\u2461\u2464"},{"id":"ref-for-values\u2461\u2465"},{"id":"ref-for-values\u2461\u2466"},{"id":"ref-for-values\u2461\u2467"},{"id":"ref-for-values\u2461\u2468"},{"id":"ref-for-values\u2462\u24ea"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#values"},
"7deb6835": {"dfnID":"7deb6835","dfnText":"settings object","external":true,"refSections":[{"refs":[{"id":"ref-for-concept-realm-settings-object"}],"title":"5.6. Exported Functions"}],"url":"https://html.spec.whatwg.org/multipage/webappapis.html#concept-realm-settings-object"},
"8047ff82": {"dfnID":"8047ff82","dfnText":"nan","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-float"},{"id":"ref-for-syntax-float\u2460"},{"id":"ref-for-syntax-float\u2461"},{"id":"ref-for-syntax-float\u2462"},{"id":"ref-for-syntax-float\u2463"},{"id":"ref-for-syntax-float\u2464"},{"id":"ref-for-syntax-float\u2465"},{"id":"ref-for-syntax-float\u2466"},{"id":"ref-for-syntax-float\u2467"},{"id":"ref-for-syntax-float\u2468"},{"id":"ref-for-syntax-float\u2460\u24ea"},{"id":"ref-for-syntax-float\u2460\u2460"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/syntax/values.html#syntax-float"},
"81131be0": {"dfnID":"81131be0","dfnText":"Call","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-call"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-sec-call\u2460"},{"id":"ref-for-sec-call\u2461"}],"title":"6.1.1. Abstract operations"},{"refs":[{"id":"ref-for-sec-call\u2462"}],"title":"6.1.7. fromCodePoint"},{"refs":[{"id":"ref-for-sec-call\u2463"}],"title":"6.1.9. codePointAt"},{"refs":[{"id":"ref-for-sec-call\u2464"}],"title":"6.1.11. concat"},{"refs":[{"id":"ref-for-sec-call\u2465"}],"title":"6.1.12. substring"}],"url":"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-call"},
"815c3a81": {"dfnID":"815c3a81","dfnText":"address type","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-addrtype"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-syntax-addrtype\u2460"}],"title":"5.4. Tables"}],"url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-addrtype"},
"836ae954": {"dfnID":"836ae954","dfnText":"is not a String","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-ecmascript-language-types-string-type"}],"title":"6.1.1. Abstract operations"},{"refs":[{"id":"ref-for-sec-ecmascript-language-types-string-type\u2460"}],"title":"6.1.3. test"},{"refs":[{"id":"ref-for-sec-ecmascript-language-types-string-type\u2461"},{"id":"ref-for-sec-ecmascript-language-types-string-type\u2462"}],"title":"6.1.13. equals"}],"url":"https://tc39.github.io/ecma262/#sec-ecmascript-language-types-string-type"},
"84b454ff": {"dfnID":"84b454ff","dfnText":"ordered map","external":true,"refSections":[{"refs":[{"id":"ref-for-ordered-map"}],"title":"4.2. WebAssembly JS Object Caches"}],"url":"https://infra.spec.whatwg.org/#ordered-map"},
"84eac0df": {"dfnID":"84eac0df","dfnText":"mem_grow","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-mem-grow"}],"title":"5.3. Memories"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-mem-grow"},
"85bce96e": {"dfnID":"85bce96e","dfnText":"limits","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-limits"},{"id":"ref-for-syntax-limits\u2460"}],"title":"5.4. Tables"}],"url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-limits"},
"868a40c2": {"dfnID":"868a40c2","dfnText":"table type","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-tabletype"}],"title":"5.4. Tables"}],"url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-tabletype"},
"8780316d": {"dfnID":"8780316d","dfnText":"module_imports","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-module-imports"},{"id":"ref-for-embed-module-imports\u2460"},{"id":"ref-for-embed-module-imports\u2461"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-embed-module-imports\u2462"}],"title":"5.1. Modules"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-module-imports"},
"8855a9aa": {"dfnID":"8855a9aa","dfnText":"DOMString","external":true,"refSections":[{"refs":[{"id":"ref-for-idl-DOMString"}],"title":"5.1. Modules"},{"refs":[{"id":"ref-for-idl-DOMString\u2460"},{"id":"ref-for-idl-DOMString\u2461"}],"title":"5.9. Exceptions"}],"url":"https://webidl.spec.whatwg.org/#idl-DOMString"},
"886dee79": {"dfnID":"886dee79","dfnText":"Array","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-array-exotic-objects"}],"title":"Multiple Values"}],"url":"https://tc39.github.io/ecma262/#sec-array-exotic-objects"},
"889e932f": {"dfnID":"889e932f","dfnText":"Exposed","external":true,"refSections":[{"refs":[{"id":"ref-for-Exposed"}],"title":"5.7.1. Tag types"},{"refs":[{"id":"ref-for-Exposed\u2460"}],"title":"5.9. Exceptions"}],"url":"https://webidl.spec.whatwg.org/#Exposed"},
"8b2a5c87": {"dfnID":"8b2a5c87","dfnText":"\u2124","external":true,"refSections":[{"refs":[{"id":"ref-for-\u2124"},{"id":"ref-for-\u2124\u2460"}],"title":"5.6. Exported Functions"}],"url":"https://tc39.github.io/ecma262/#\u2124"},
"903777ae": {"dfnID":"903777ae","dfnText":"exn_tag","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-exn-tag"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-embed-exn-tag\u2460"},{"id":"ref-for-embed-exn-tag\u2461"}],"title":"5.9. Exceptions"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-exn-tag"},
"9057d48e": {"dfnID":"9057d48e","dfnText":"global instance","external":true,"refSections":[{"refs":[{"id":"ref-for-global-instances"}],"title":"5.5. Globals"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#global-instances"},
"9105068d": {"dfnID":"9105068d","dfnText":"f32","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-numtype"},{"id":"ref-for-syntax-numtype\u2460"},{"id":"ref-for-syntax-numtype\u2461"},{"id":"ref-for-syntax-numtype\u2462"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-syntax-numtype\u2463"},{"id":"ref-for-syntax-numtype\u2464"},{"id":"ref-for-syntax-numtype\u2465"},{"id":"ref-for-syntax-numtype\u2466"}],"title":"5.5. Globals"},{"refs":[{"id":"ref-for-syntax-numtype\u2467"},{"id":"ref-for-syntax-numtype\u2468"},{"id":"ref-for-syntax-numtype\u2460\u24ea"},{"id":"ref-for-syntax-numtype\u2460\u2460"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-syntax-numtype\u2460\u2461"},{"id":"ref-for-syntax-numtype\u2460\u2462"}],"title":"6.1.1. Abstract operations"},{"refs":[{"id":"ref-for-syntax-numtype\u2460\u2463"}],"title":"BigInt Integration"}],"url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-numtype"},
"921f1639": {"dfnID":"921f1639","dfnText":"is a Number","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-ecmascript-language-types-number-type"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-sec-ecmascript-language-types-number-type\u2460"}],"title":"5.6. Exported Functions"}],"url":"https://tc39.github.io/ecma262/#sec-ecmascript-language-types-number-type"},
"9233088d": {"dfnID":"9233088d","dfnText":"match_valtype","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-match-valtype"},{"id":"ref-for-embed-match-valtype\u2460"},{"id":"ref-for-embed-match-valtype\u2461"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-match-valtype"},
"92d13070": {"dfnID":"92d13070","dfnText":"get a copy of the buffer source","external":true,"refSections":[{"refs":[{"id":"ref-for-dfn-get-buffer-source-copy"},{"id":"ref-for-dfn-get-buffer-source-copy\u2460"},{"id":"ref-for-dfn-get-buffer-source-copy\u2461"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-dfn-get-buffer-source-copy\u2462"}],"title":"5.1. Modules"}],"url":"https://webidl.spec.whatwg.org/#dfn-get-buffer-source-copy"},
"93d2e53d": {"dfnID":"93d2e53d","dfnText":"i64.const","external":true,"refSections":[{"refs":[{"id":"ref-for-values"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-values\u2460"},{"id":"ref-for-values\u2461"},{"id":"ref-for-values\u2462"},{"id":"ref-for-values\u2463"},{"id":"ref-for-values\u2464"},{"id":"ref-for-values\u2465"},{"id":"ref-for-values\u2466"},{"id":"ref-for-values\u2467"},{"id":"ref-for-values\u2468"},{"id":"ref-for-values\u2460\u24ea"},{"id":"ref-for-values\u2460\u2460"},{"id":"ref-for-values\u2460\u2461"},{"id":"ref-for-values\u2460\u2462"},{"id":"ref-for-values\u2460\u2463"},{"id":"ref-for-values\u2460\u2464"},{"id":"ref-for-values\u2460\u2465"},{"id":"ref-for-values\u2460\u2466"},{"id":"ref-for-values\u2460\u2467"},{"id":"ref-for-values\u2460\u2468"},{"id":"ref-for-values\u2461\u24ea"},{"id":"ref-for-values\u2461\u2460"},{"id":"ref-for-values\u2461\u2461"},{"id":"ref-for-values\u2461\u2462"},{"id":"ref-for-values\u2461\u2463"},{"id":"ref-for-values\u2461\u2464"},{"id":"ref-for-values\u2461\u2465"},{"id":"ref-for-values\u2461\u2466"},{"id":"ref-for-values\u2461\u2467"},{"id":"ref-for-values\u2461\u2468"},{"id":"ref-for-values\u2462\u24ea"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#values"},
"94f4c8ee": {"dfnID":"94f4c8ee","dfnText":"func_alloc","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-func-alloc"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-embed-func-alloc\u2460"}],"title":"6. Builtins"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-func-alloc"},
"971914e6": {"dfnID":"971914e6","dfnText":"%Symbol.iterator%","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-well-known-symbols"}],"title":"5.6. Exported Functions"}],"url":"https://tc39.es/ecma262/multipage/ecmascript-data-types-and-values.html#sec-well-known-symbols"},
"97e3d406": {"dfnID":"97e3d406","dfnText":"module","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-module"},{"id":"ref-for-syntax-module\u2460"}],"title":"5. The WebAssembly Namespace"}],"url":"https://webassembly.github.io/spec/core/syntax/modules.html#syntax-module"},
"98bf2453": {"dfnID":"98bf2453","dfnText":"current frame","external":true,"refSections":[{"refs":[{"id":"ref-for-exec-notation-textual"}],"title":"5.3. Memories"}],"url":"https://webassembly.github.io/spec/core/exec/conventions.html#exec-notation-textual"},
"98df36c9": {"dfnID":"98df36c9","dfnText":"table_write","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-table-write"}],"title":"5.4. Tables"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-table-write"},
"9a03a0e9": {"dfnID":"9a03a0e9","dfnText":"funcref","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-reftype"},{"id":"ref-for-syntax-reftype\u2460"}],"title":"5.4. Tables"},{"refs":[{"id":"ref-for-syntax-reftype\u2461"},{"id":"ref-for-syntax-reftype\u2462"},{"id":"ref-for-syntax-reftype\u2463"},{"id":"ref-for-syntax-reftype\u2464"},{"id":"ref-for-syntax-reftype\u2465"},{"id":"ref-for-syntax-reftype\u2466"}],"title":"5.5. Globals"},{"refs":[{"id":"ref-for-syntax-reftype\u2467"},{"id":"ref-for-syntax-reftype\u2468"},{"id":"ref-for-syntax-reftype\u2460\u24ea"},{"id":"ref-for-syntax-reftype\u2460\u2460"},{"id":"ref-for-syntax-reftype\u2460\u2461"},{"id":"ref-for-syntax-reftype\u2460\u2462"},{"id":"ref-for-syntax-reftype\u2460\u2463"},{"id":"ref-for-syntax-reftype\u2460\u2464"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-syntax-reftype\u2460\u2465"},{"id":"ref-for-syntax-reftype\u2460\u2466"}],"title":"5.9. Exceptions"},{"refs":[{"id":"ref-for-syntax-reftype\u2460\u2467"},{"id":"ref-for-syntax-reftype\u2460\u2468"}],"title":"5.9.1. JavaScript exceptions"},{"refs":[{"id":"ref-for-syntax-reftype\u2461\u24ea"}],"title":"Reference Types"}],"url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype"},
"9a517a7d": {"dfnID":"9a517a7d","dfnText":"queue a task","external":true,"refSections":[{"refs":[{"id":"ref-for-queue-a-task"},{"id":"ref-for-queue-a-task\u2460"}],"title":"5. The WebAssembly Namespace"}],"url":"https://html.spec.whatwg.org/multipage/webappapis.html#queue-a-task"},
"9ab06711": {"dfnID":"9ab06711","dfnText":"ToNumber","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-tonumber"},{"id":"ref-for-sec-tonumber\u2460"}],"title":"5.6. Exported Functions"}],"url":"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-tonumber"},
"9b36d7ac": {"dfnID":"9b36d7ac","dfnText":"MakeBasicObject","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-makebasicobject"}],"title":"5.8. Garbage Collected Objects"}],"url":"https://tc39.github.io/ecma262/#sec-makebasicobject"},
"9cce47fd": {"dfnID":"9cce47fd","dfnText":"sequence","external":true,"refSections":[{"refs":[{"id":"ref-for-idl-sequence"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-idl-sequence\u2460"},{"id":"ref-for-idl-sequence\u2461"},{"id":"ref-for-idl-sequence\u2462"}],"title":"5.1. Modules"},{"refs":[{"id":"ref-for-idl-sequence\u2463"}],"title":"5.7.1. Tag types"},{"refs":[{"id":"ref-for-idl-sequence\u2464"}],"title":"5.9. Exceptions"}],"url":"https://webidl.spec.whatwg.org/#idl-sequence"},
"9dd8925c": {"dfnID":"9dd8925c","dfnText":"match_externtype","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-match-externtype"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-embed-match-externtype\u2460"}],"title":"6. Builtins"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-match-externtype"},
"HostResizeArrayBuffer": {"dfnID":"HostResizeArrayBuffer","dfnText":"abstract operation HostResizeArrayBuffer","external":false,"refSections":[],"url":"#HostResizeArrayBuffer"},
"a-new-exported-function": {"dfnID":"a-new-exported-function","dfnText":"a new Exported Function","external":false,"refSections":[{"refs":[{"id":"ref-for-a-new-exported-function"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-a-new-exported-function\u2460"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-a-new-exported-function\u2461"}],"title":"6. Builtins"}],"url":"#a-new-exported-function"},
"a-new-exported-gc-object": {"dfnID":"a-new-exported-gc-object","dfnText":"a new Exported GC Object","external":false,"refSections":[{"refs":[{"id":"ref-for-a-new-exported-gc-object"},{"id":"ref-for-a-new-exported-gc-object\u2460"}],"title":"5.6. Exported Functions"}],"url":"#a-new-exported-gc-object"},
"a0559a7c": {"dfnID":"a0559a7c","dfnText":"js-unsigned-long","external":true,"refSections":[{"refs":[{"id":"ref-for-js-unsigned-long"}],"title":"5.6. Exported Functions"}],"url":"https://heycam.github.io/webidl/#js-unsigned-long"},
"a2df2252": {"dfnID":"a2df2252","dfnText":"IteratorToList","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-iteratortolist"}],"title":"5.6. Exported Functions"}],"url":"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-iteratortolist"},
"a32c65d4": {"dfnID":"a32c65d4","dfnText":"implements","external":true,"refSections":[{"refs":[{"id":"ref-for-implements"},{"id":"ref-for-implements\u2460"},{"id":"ref-for-implements\u2461"},{"id":"ref-for-implements\u2462"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-implements\u2463"}],"title":"5.6. Exported Functions"}],"url":"https://webidl.spec.whatwg.org/#implements"},
"a43f3aaf": {"dfnID":"a43f3aaf","dfnText":"customsec","external":true,"refSections":[{"refs":[{"id":"ref-for-binary-customsec"}],"title":"5.1. Modules"}],"url":"https://webassembly.github.io/spec/core/binary/modules.html#binary-customsec"},
"a5e80a0a": {"dfnID":"a5e80a0a","dfnText":"String.prototype.codePointAt","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-string.prototype.codepointat"}],"title":"6.1.9. codePointAt"}],"url":"https://tc39.github.io/ecma262/#sec-string.prototype.codepointat"},
"a653126b": {"dfnID":"a653126b","dfnText":"agent","external":true,"refSections":[{"refs":[{"id":"ref-for-agent"}],"title":"4.1. Interaction of the WebAssembly Store with JavaScript"},{"refs":[{"id":"ref-for-agent\u2460"},{"id":"ref-for-agent\u2461"}],"title":"4.2. WebAssembly JS Object Caches"}],"url":"https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#agent"},
"a6ac3d87": {"dfnID":"a6ac3d87","dfnText":"i32.const","external":true,"refSections":[{"refs":[{"id":"ref-for-values"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-values\u2460"},{"id":"ref-for-values\u2461"},{"id":"ref-for-values\u2462"},{"id":"ref-for-values\u2463"},{"id":"ref-for-values\u2464"},{"id":"ref-for-values\u2465"},{"id":"ref-for-values\u2466"},{"id":"ref-for-values\u2467"},{"id":"ref-for-values\u2468"},{"id":"ref-for-values\u2460\u24ea"},{"id":"ref-for-values\u2460\u2460"},{"id":"ref-for-values\u2460\u2461"},{"id":"ref-for-values\u2460\u2462"},{"id":"ref-for-values\u2460\u2463"},{"id":"ref-for-values\u2460\u2464"},{"id":"ref-for-values\u2460\u2465"},{"id":"ref-for-values\u2460\u2466"},{"id":"ref-for-values\u2460\u2467"},{"id":"ref-for-values\u2460\u2468"},{"id":"ref-for-values\u2461\u24ea"},{"id":"ref-for-values\u2461\u2460"},{"id":"ref-for-values\u2461\u2461"},{"id":"ref-for-values\u2461\u2462"},{"id":"ref-for-values\u2461\u2463"},{"id":"ref-for-values\u2461\u2464"},{"id":"ref-for-values\u2461\u2465"},{"id":"ref-for-values\u2461\u2466"},{"id":"ref-for-values\u2461\u2467"},{"id":"ref-for-values\u2461\u2468"},{"id":"ref-for-values\u2462\u24ea"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#values"},
"a72449dd": {"dfnID":"a72449dd","dfnText":"in parallel","external":true,"refSections":[{"refs":[{"id":"ref-for-in-parallel"},{"id":"ref-for-in-parallel\u2460"}],"title":"5. The WebAssembly Namespace"}],"url":"https://html.spec.whatwg.org/multipage/infrastructure.html#in-parallel"},
"a7321e13": {"dfnID":"a7321e13","dfnText":"const","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-mut"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-syntax-mut\u2460"},{"id":"ref-for-syntax-mut\u2461"},{"id":"ref-for-syntax-mut\u2462"}],"title":"5.5. Globals"}],"url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-mut"},
"a7b8aad7": {"dfnID":"a7b8aad7","dfnText":"IsLessThan","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-islessthan"}],"title":"6.1.14. compare"}],"url":"https://tc39.github.io/ecma262/#sec-islessthan"},
"a7f74307": {"dfnID":"a7f74307","dfnText":"array address","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-arrayaddr"}],"title":"4.2. WebAssembly JS Object Caches"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-arrayaddr"},
"a93d50a7": {"dfnID":"a93d50a7","dfnText":"mem_type","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-mem-type"},{"id":"ref-for-embed-mem-type\u2460"}],"title":"5.3. Memories"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-mem-type"},
"aaa7a4ae": {"dfnID":"aaa7a4ae","dfnText":"mem_alloc","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-mem-alloc"}],"title":"5.3. Memories"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-mem-alloc"},
"aab848f2": {"dfnID":"aab848f2","dfnText":"table_size","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-table-size"},{"id":"ref-for-embed-table-size\u2460"}],"title":"5.4. Tables"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-table-size"},
"ab79fc0f": {"dfnID":"ab79fc0f","dfnText":"table_type","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-table-type"},{"id":"ref-for-embed-table-type\u2460"},{"id":"ref-for-embed-table-type\u2461"},{"id":"ref-for-embed-table-type\u2462"}],"title":"5.4. Tables"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-table-type"},
"abf85593": {"dfnID":"abf85593","dfnText":"Get","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-get-o-p"},{"id":"ref-for-sec-get-o-p\u2460"},{"id":"ref-for-sec-get-o-p\u2461"}],"title":"5. The WebAssembly Namespace"}],"url":"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-get-o-p"},
"abstract-opdef-charcodeat": {"dfnID":"abstract-opdef-charcodeat","dfnText":"CharCodeAt(string, index)","external":false,"refSections":[{"refs":[{"id":"ref-for-abstract-opdef-charcodeat"}],"title":"6.1.5. intoCharCodeArray"},{"refs":[{"id":"ref-for-abstract-opdef-charcodeat\u2460"}],"title":"6.1.8. charCodeAt"}],"url":"#abstract-opdef-charcodeat"},
"abstract-opdef-fromcharcode": {"dfnID":"abstract-opdef-fromcharcode","dfnText":"FromCharCode(v)","external":false,"refSections":[{"refs":[{"id":"ref-for-abstract-opdef-fromcharcode"}],"title":"6.1.4. fromCharCodeArray"},{"refs":[{"id":"ref-for-abstract-opdef-fromcharcode\u2460"}],"title":"6.1.6. fromCharCode"}],"url":"#abstract-opdef-fromcharcode"},
"abstract-opdef-unwrapstring": {"dfnID":"abstract-opdef-unwrapstring","dfnText":"UnwrapString(v)","external":false,"refSections":[{"refs":[{"id":"ref-for-abstract-opdef-unwrapstring"}],"title":"6.1.2. cast"},{"refs":[{"id":"ref-for-abstract-opdef-unwrapstring\u2460"}],"title":"6.1.5. intoCharCodeArray"},{"refs":[{"id":"ref-for-abstract-opdef-unwrapstring\u2461"}],"title":"6.1.8. charCodeAt"},{"refs":[{"id":"ref-for-abstract-opdef-unwrapstring\u2462"}],"title":"6.1.9. codePointAt"},{"refs":[{"id":"ref-for-abstract-opdef-unwrapstring\u2463"}],"title":"6.1.10. length"},{"refs":[{"id":"ref-for-abstract-opdef-unwrapstring\u2464"},{"id":"ref-for-abstract-opdef-unwrapstring\u2465"}],"title":"6.1.11. concat"},{"refs":[{"id":"ref-for-abstract-opdef-unwrapstring\u2466"}],"title":"6.1.12. substring"},{"refs":[{"id":"ref-for-abstract-opdef-unwrapstring\u2467"},{"id":"ref-for-abstract-opdef-unwrapstring\u2468"}],"title":"6.1.14. compare"}],"url":"#abstract-opdef-unwrapstring"},
"acea0ba2": {"dfnID":"acea0ba2","dfnText":"tag (for external value)","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-externval"},{"id":"ref-for-syntax-externval\u2460"},{"id":"ref-for-syntax-externval\u2461"},{"id":"ref-for-syntax-externval\u2462"},{"id":"ref-for-syntax-externval\u2463"},{"id":"ref-for-syntax-externval\u2464"},{"id":"ref-for-syntax-externval\u2465"},{"id":"ref-for-syntax-externval\u2466"},{"id":"ref-for-syntax-externval\u2467"},{"id":"ref-for-syntax-externval\u2468"},{"id":"ref-for-syntax-externval\u2460\u24ea"},{"id":"ref-for-syntax-externval\u2460\u2460"},{"id":"ref-for-syntax-externval\u2460\u2461"},{"id":"ref-for-syntax-externval\u2460\u2462"},{"id":"ref-for-syntax-externval\u2460\u2463"},{"id":"ref-for-syntax-externval\u2460\u2464"},{"id":"ref-for-syntax-externval\u2460\u2465"},{"id":"ref-for-syntax-externval\u2460\u2466"},{"id":"ref-for-syntax-externval\u2460\u2467"}],"title":"5. The WebAssembly Namespace"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-externval"},
"ad1c5b3c": {"dfnID":"ad1c5b3c","dfnText":"valtype","external":true,"refSections":[{"refs":[{"id":"ref-for-match-valtype"},{"id":"ref-for-match-valtype\u2460"},{"id":"ref-for-match-valtype\u2461"}],"title":"5.5. Globals"},{"refs":[{"id":"ref-for-match-valtype\u2462"},{"id":"ref-for-match-valtype\u2463"},{"id":"ref-for-match-valtype\u2464"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-match-valtype\u2465"},{"id":"ref-for-match-valtype\u2466"}],"title":"5.9. Exceptions"}],"url":"https://webassembly.github.io/spec/core/valid/matching.html#match-valtype"},
"adc63453": {"dfnID":"adc63453","dfnText":"is not a BigInt","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-ecmascript-language-types-bigint-type"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-sec-ecmascript-language-types-bigint-type\u2460"}],"title":"BigInt Integration"}],"url":"https://tc39.github.io/ecma262/#sec-ecmascript-language-types-bigint-type"},
"addressvaluetou64": {"dfnID":"addressvaluetou64","dfnText":"AddressValueToU64","external":false,"refSections":[{"refs":[{"id":"ref-for-addressvaluetou64"},{"id":"ref-for-addressvaluetou64\u2460"},{"id":"ref-for-addressvaluetou64\u2461"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-addressvaluetou64\u2462"},{"id":"ref-for-addressvaluetou64\u2463"},{"id":"ref-for-addressvaluetou64\u2464"},{"id":"ref-for-addressvaluetou64\u2465"},{"id":"ref-for-addressvaluetou64\u2466"}],"title":"5.4. Tables"}],"url":"#addressvaluetou64"},
"ae59bd82": {"dfnID":"ae59bd82","dfnText":"store","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-store"}],"title":"4.1. Interaction of the WebAssembly Store with JavaScript"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-store"},
"associated-store": {"dfnID":"associated-store","dfnText":"associated store","external":false,"refSections":[{"refs":[{"id":"ref-for-associated-store"},{"id":"ref-for-associated-store\u2460"},{"id":"ref-for-associated-store\u2461"},{"id":"ref-for-associated-store\u2462"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-associated-store\u2463"},{"id":"ref-for-associated-store\u2464"},{"id":"ref-for-associated-store\u2465"},{"id":"ref-for-associated-store\u2466"},{"id":"ref-for-associated-store\u2467"},{"id":"ref-for-associated-store\u2468"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-associated-store\u2460\u24ea"},{"id":"ref-for-associated-store\u2460\u2460"},{"id":"ref-for-associated-store\u2460\u2461"},{"id":"ref-for-associated-store\u2460\u2462"},{"id":"ref-for-associated-store\u2460\u2463"},{"id":"ref-for-associated-store\u2460\u2464"},{"id":"ref-for-associated-store\u2460\u2465"},{"id":"ref-for-associated-store\u2460\u2466"}],"title":"5.4. Tables"},{"refs":[{"id":"ref-for-associated-store\u2460\u2467"},{"id":"ref-for-associated-store\u2460\u2468"},{"id":"ref-for-associated-store\u2461\u24ea"},{"id":"ref-for-associated-store\u2461\u2460"},{"id":"ref-for-associated-store\u2461\u2461"}],"title":"5.5. Globals"},{"refs":[{"id":"ref-for-associated-store\u2461\u2462"},{"id":"ref-for-associated-store\u2461\u2463"},{"id":"ref-for-associated-store\u2461\u2464"},{"id":"ref-for-associated-store\u2461\u2465"},{"id":"ref-for-associated-store\u2461\u2466"},{"id":"ref-for-associated-store\u2461\u2467"},{"id":"ref-for-associated-store\u2461\u2468"},{"id":"ref-for-associated-store\u2462\u24ea"},{"id":"ref-for-associated-store\u2462\u2460"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-associated-store\u2462\u2461"},{"id":"ref-for-associated-store\u2462\u2462"}],"title":"5.7.1. Tag types"},{"refs":[{"id":"ref-for-associated-store\u2462\u2463"}],"title":"5.8. Garbage Collected Objects"},{"refs":[{"id":"ref-for-associated-store\u2462\u2464"},{"id":"ref-for-associated-store\u2462\u2465"},{"id":"ref-for-associated-store\u2462\u2466"},{"id":"ref-for-associated-store\u2462\u2467"}],"title":"5.9. Exceptions"},{"refs":[{"id":"ref-for-associated-store\u2462\u2468"},{"id":"ref-for-associated-store\u2463\u24ea"},{"id":"ref-for-associated-store\u2463\u2460"}],"title":"5.9.1. JavaScript exceptions"},{"refs":[{"id":"ref-for-associated-store\u2463\u2461"}],"title":"6. Builtins"}],"url":"#associated-store"},
"asynchronously-compile-a-webassembly-module": {"dfnID":"asynchronously-compile-a-webassembly-module","dfnText":"asynchronously compile a WebAssembly module","external":false,"refSections":[{"refs":[{"id":"ref-for-asynchronously-compile-a-webassembly-module"},{"id":"ref-for-asynchronously-compile-a-webassembly-module\u2460"}],"title":"5. The WebAssembly Namespace"}],"url":"#asynchronously-compile-a-webassembly-module"},
"asynchronously-instantiate-a-webassembly-module": {"dfnID":"asynchronously-instantiate-a-webassembly-module","dfnText":"asynchronously instantiate a WebAssembly module","external":false,"refSections":[{"refs":[{"id":"ref-for-asynchronously-instantiate-a-webassembly-module"},{"id":"ref-for-asynchronously-instantiate-a-webassembly-module\u2460"}],"title":"5. The WebAssembly Namespace"}],"url":"#asynchronously-instantiate-a-webassembly-module"},
"b0d7f3c3": {"dfnID":"b0d7f3c3","dfnText":"USVString","external":true,"refSections":[{"refs":[{"id":"ref-for-idl-USVString"},{"id":"ref-for-idl-USVString\u2460"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-idl-USVString\u2461"},{"id":"ref-for-idl-USVString\u2462"},{"id":"ref-for-idl-USVString\u2463"}],"title":"5.1. Modules"}],"url":"https://webidl.spec.whatwg.org/#idl-USVString"},
"b107f911": {"dfnID":"b107f911","dfnText":"current Realm","external":true,"refSections":[{"refs":[{"id":"ref-for-current-realm"}],"title":"5.6. Exported Functions"}],"url":"https://tc39.github.io/ecma262/#current-realm"},
"b262501e": {"dfnID":"b262501e","dfnText":"reject","external":true,"refSections":[{"refs":[{"id":"ref-for-reject"},{"id":"ref-for-reject\u2460"},{"id":"ref-for-reject\u2461"},{"id":"ref-for-reject\u2462"},{"id":"ref-for-reject\u2463"}],"title":"5. The WebAssembly Namespace"}],"url":"https://webidl.spec.whatwg.org/#reject"},
"b29f5d72": {"dfnID":"b29f5d72","dfnText":"ToBigInt64","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-tobigint64"}],"title":"5.6. Exported Functions"}],"url":"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-tobigint64"},
"b4cfa5ce": {"dfnID":"b4cfa5ce","dfnText":"throw","external":true,"refSections":[{"refs":[{"id":"ref-for-dfn-throw"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-dfn-throw\u2460"}],"title":"5.4. Tables"},{"refs":[{"id":"ref-for-dfn-throw\u2461"},{"id":"ref-for-dfn-throw\u2462"},{"id":"ref-for-dfn-throw\u2463"}],"title":"5.6. Exported Functions"}],"url":"https://webidl.spec.whatwg.org/#dfn-throw"},
"b5c3b552": {"dfnID":"b5c3b552","dfnText":"prepare to run a callback","external":true,"refSections":[{"refs":[{"id":"ref-for-prepare-to-run-a-callback"}],"title":"5.6. Exported Functions"}],"url":"https://html.spec.whatwg.org/multipage/webappapis.html#prepare-to-run-a-callback"},
"b6a1ae3f": {"dfnID":"b6a1ae3f","dfnText":"clean up after running script","external":true,"refSections":[{"refs":[{"id":"ref-for-clean-up-after-running-script"}],"title":"5.6. Exported Functions"}],"url":"https://html.spec.whatwg.org/multipage/webappapis.html#clean-up-after-running-script"},
"baaf40e3": {"dfnID":"baaf40e3","dfnText":"module_instantiate","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-module-instantiate"}],"title":"5. The WebAssembly Namespace"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-module-instantiate"},
"bb2af9ca": {"dfnID":"bb2af9ca","dfnText":"host address","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-hostaddr"}],"title":"4.2. WebAssembly JS Object Caches"},{"refs":[{"id":"ref-for-syntax-hostaddr\u2460"},{"id":"ref-for-syntax-hostaddr\u2461"},{"id":"ref-for-syntax-hostaddr\u2462"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-hostaddr"},
"bb4be968": {"dfnID":"bb4be968","dfnText":"f32.const","external":true,"refSections":[{"refs":[{"id":"ref-for-values"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-values\u2460"},{"id":"ref-for-values\u2461"},{"id":"ref-for-values\u2462"},{"id":"ref-for-values\u2463"},{"id":"ref-for-values\u2464"},{"id":"ref-for-values\u2465"},{"id":"ref-for-values\u2466"},{"id":"ref-for-values\u2467"},{"id":"ref-for-values\u2468"},{"id":"ref-for-values\u2460\u24ea"},{"id":"ref-for-values\u2460\u2460"},{"id":"ref-for-values\u2460\u2461"},{"id":"ref-for-values\u2460\u2462"},{"id":"ref-for-values\u2460\u2463"},{"id":"ref-for-values\u2460\u2464"},{"id":"ref-for-values\u2460\u2465"},{"id":"ref-for-values\u2460\u2466"},{"id":"ref-for-values\u2460\u2467"},{"id":"ref-for-values\u2460\u2468"},{"id":"ref-for-values\u2461\u24ea"},{"id":"ref-for-values\u2461\u2460"},{"id":"ref-for-values\u2461\u2461"},{"id":"ref-for-values\u2461\u2462"},{"id":"ref-for-values\u2461\u2463"},{"id":"ref-for-values\u2461\u2464"},{"id":"ref-for-values\u2461\u2465"},{"id":"ref-for-values\u2461\u2466"},{"id":"ref-for-values\u2461\u2467"},{"id":"ref-for-values\u2461\u2468"},{"id":"ref-for-values\u2462\u24ea"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#values"},
"bb8f2f23": {"dfnID":"bb8f2f23","dfnText":"create a namespace object","external":true,"refSections":[{"refs":[{"id":"ref-for-create-a-namespace-object"}],"title":"5.10. Error Objects"}],"url":"https://heycam.github.io/webidl/#create-a-namespace-object"},
"bdbd19d1": {"dfnID":"bdbd19d1","dfnText":"Promise","external":true,"refSections":[{"refs":[{"id":"ref-for-idl-promise"},{"id":"ref-for-idl-promise\u2460"},{"id":"ref-for-idl-promise\u2461"}],"title":"5. The WebAssembly Namespace"}],"url":"https://webidl.spec.whatwg.org/#idl-promise"},
"builtin-set-name": {"dfnID":"builtin-set-name","dfnText":"name","external":false,"refSections":[{"refs":[{"id":"ref-for-builtin-set-name"}],"title":"6.1. String Builtins"}],"url":"#builtin-set-name"},
"builtin-set-qualified-name": {"dfnID":"builtin-set-qualified-name","dfnText":"qualified name","external":false,"refSections":[{"refs":[{"id":"ref-for-builtin-set-qualified-name"}],"title":"6.1. String Builtins"}],"url":"#builtin-set-qualified-name"},
"c01cbda0": {"dfnID":"c01cbda0","dfnText":"EnforceRange","external":true,"refSections":[{"refs":[{"id":"ref-for-EnforceRange\u2463"}],"title":"5.9. Exceptions"}],"url":"https://webidl.spec.whatwg.org/#EnforceRange"},
"c2359c09": {"dfnID":"c2359c09","dfnText":"prepare to run script","external":true,"refSections":[{"refs":[{"id":"ref-for-prepare-to-run-script"}],"title":"5.6. Exported Functions"}],"url":"https://html.spec.whatwg.org/multipage/webappapis.html#prepare-to-run-script"},
"c3871e59": {"dfnID":"c3871e59","dfnText":"ref.null","external":true,"refSections":[{"refs":[{"id":"ref-for-values"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-values\u2460"},{"id":"ref-for-values\u2461"},{"id":"ref-for-values\u2462"},{"id":"ref-for-values\u2463"},{"id":"ref-for-values\u2464"},{"id":"ref-for-values\u2465"},{"id":"ref-for-values\u2466"},{"id":"ref-for-values\u2467"},{"id":"ref-for-values\u2468"},{"id":"ref-for-values\u2460\u24ea"},{"id":"ref-for-values\u2460\u2460"},{"id":"ref-for-values\u2460\u2461"},{"id":"ref-for-values\u2460\u2462"},{"id":"ref-for-values\u2460\u2463"},{"id":"ref-for-values\u2460\u2464"},{"id":"ref-for-values\u2460\u2465"},{"id":"ref-for-values\u2460\u2466"},{"id":"ref-for-values\u2460\u2467"},{"id":"ref-for-values\u2460\u2468"},{"id":"ref-for-values\u2461\u24ea"},{"id":"ref-for-values\u2461\u2460"},{"id":"ref-for-values\u2461\u2461"},{"id":"ref-for-values\u2461\u2462"},{"id":"ref-for-values\u2461\u2463"},{"id":"ref-for-values\u2461\u2464"},{"id":"ref-for-values\u2461\u2465"},{"id":"ref-for-values\u2461\u2466"},{"id":"ref-for-values\u2461\u2467"},{"id":"ref-for-values\u2461\u2468"},{"id":"ref-for-values\u2462\u24ea"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#values"},
"c3b271ac": {"dfnID":"c3b271ac","dfnText":"\ud835\udd3d","external":true,"refSections":[{"refs":[{"id":"ref-for-\ud835\udd3d"},{"id":"ref-for-\ud835\udd3d\u2460"},{"id":"ref-for-\ud835\udd3d\u2461"},{"id":"ref-for-\ud835\udd3d\u2462"},{"id":"ref-for-\ud835\udd3d\u2463"}],"title":"5.6. Exported Functions"}],"url":"https://tc39.github.io/ecma262/#\ud835\udd3d"},
"c3b2d08c": {"dfnID":"c3b2d08c","dfnText":"task source","external":true,"refSections":[{"refs":[{"id":"ref-for-task-source"}],"title":"5. The WebAssembly Namespace"}],"url":"https://html.spec.whatwg.org/multipage/webappapis.html#task-source"},
"c42599d7": {"dfnID":"c42599d7","dfnText":"tag_type","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-tag-type"},{"id":"ref-for-embed-tag-type\u2460"}],"title":"5.9. Exceptions"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-tag-type"},
"c44f39b6": {"dfnID":"c44f39b6","dfnText":"error","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-error"},{"id":"ref-for-embed-error\u2460"},{"id":"ref-for-embed-error\u2461"},{"id":"ref-for-embed-error\u2462"},{"id":"ref-for-embed-error\u2463"},{"id":"ref-for-embed-error\u2464"},{"id":"ref-for-embed-error\u2465"},{"id":"ref-for-embed-error\u2466"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-embed-error\u2467"}],"title":"5.1. Modules"},{"refs":[{"id":"ref-for-embed-error\u2468"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-embed-error\u2460\u24ea"},{"id":"ref-for-embed-error\u2460\u2460"},{"id":"ref-for-embed-error\u2460\u2461"},{"id":"ref-for-embed-error\u2460\u2462"},{"id":"ref-for-embed-error\u2460\u2463"},{"id":"ref-for-embed-error\u2460\u2464"}],"title":"5.4. Tables"},{"refs":[{"id":"ref-for-embed-error\u2460\u2465"},{"id":"ref-for-embed-error\u2460\u2466"}],"title":"5.5. Globals"},{"refs":[{"id":"ref-for-embed-error\u2460\u2467"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-error"},
"c48cd0b9": {"dfnID":"c48cd0b9","dfnText":"String","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-string-object"},{"id":"ref-for-sec-string-object\u2460"},{"id":"ref-for-sec-string-object\u2461"}],"title":"6.1. String Builtins"}],"url":"https://tc39.github.io/ecma262/#sec-string-object"},
"c8a6c84a": {"dfnID":"c8a6c84a","dfnText":"table","external":true,"refSections":[{"refs":[{"id":"ref-for-external-types"},{"id":"ref-for-external-types\u2460"},{"id":"ref-for-external-types\u2461"},{"id":"ref-for-external-types\u2462"},{"id":"ref-for-external-types\u2463"},{"id":"ref-for-external-types\u2464"},{"id":"ref-for-external-types\u2465"},{"id":"ref-for-external-types\u2466"},{"id":"ref-for-external-types\u2467"},{"id":"ref-for-external-types\u2468"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-external-types\u2460\u24ea"},{"id":"ref-for-external-types\u2460\u2460"},{"id":"ref-for-external-types\u2460\u2461"},{"id":"ref-for-external-types\u2460\u2462"},{"id":"ref-for-external-types\u2460\u2463"}],"title":"5.1. Modules"}],"url":"https://webassembly.github.io/spec/core/syntax/types.html#external-types"},
"c8c81d72": {"dfnID":"c8c81d72","dfnText":"external value","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-externval"},{"id":"ref-for-syntax-externval\u2460"},{"id":"ref-for-syntax-externval\u2461"},{"id":"ref-for-syntax-externval\u2462"},{"id":"ref-for-syntax-externval\u2463"},{"id":"ref-for-syntax-externval\u2464"},{"id":"ref-for-syntax-externval\u2465"},{"id":"ref-for-syntax-externval\u2466"},{"id":"ref-for-syntax-externval\u2467"},{"id":"ref-for-syntax-externval\u2468"},{"id":"ref-for-syntax-externval\u2460\u24ea"},{"id":"ref-for-syntax-externval\u2460\u2460"},{"id":"ref-for-syntax-externval\u2460\u2461"},{"id":"ref-for-syntax-externval\u2460\u2462"},{"id":"ref-for-syntax-externval\u2460\u2463"},{"id":"ref-for-syntax-externval\u2460\u2464"},{"id":"ref-for-syntax-externval\u2460\u2465"},{"id":"ref-for-syntax-externval\u2460\u2466"},{"id":"ref-for-syntax-externval\u2460\u2467"}],"title":"5. The WebAssembly Namespace"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-externval"},
"ca17d396": {"dfnID":"ca17d396","dfnText":"function address","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-funcaddr"}],"title":"4.2. WebAssembly JS Object Caches"},{"refs":[{"id":"ref-for-syntax-funcaddr\u2460"},{"id":"ref-for-syntax-funcaddr\u2461"},{"id":"ref-for-syntax-funcaddr\u2462"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-funcaddr"},
"call-an-exported-function": {"dfnID":"call-an-exported-function","dfnText":"call an Exported Function","external":false,"refSections":[{"refs":[{"id":"ref-for-call-an-exported-function"},{"id":"ref-for-call-an-exported-function\u2460"}],"title":"5.6. Exported Functions"}],"url":"#call-an-exported-function"},
"cd4b1dc4": {"dfnID":"cd4b1dc4","dfnText":"!","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2460"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2461"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2462"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2463"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2464"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2465"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2466"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2467"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2468"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2460\u24ea"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2460\u2460"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2460\u2461"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2460\u2462"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2460\u2463"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2460\u2464"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2460\u2465"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2460\u2466"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2460\u2467"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2460\u2468"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2461\u24ea"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2461\u2460"}],"title":"5.4. Tables"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2461\u2461"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2461\u2462"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2461\u2463"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2461\u2464"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2461\u2465"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2461\u2466"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2461\u2467"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2461\u2468"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2462\u24ea"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2462\u2460"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2462\u2461"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2462\u2462"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2462\u2463"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2462\u2464"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2462\u2465"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2462\u2466"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2462\u2467"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2462\u2468"}],"title":"5.9. Exceptions"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2463\u24ea"}],"title":"5.10. Error Objects"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2463\u2460"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2463\u2461"}],"title":"6. Builtins"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2463\u2462"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2463\u2463"}],"title":"6.1.1. Abstract operations"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2463\u2464"}],"title":"6.1.2. cast"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2463\u2465"}],"title":"6.1.5. intoCharCodeArray"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2463\u2466"}],"title":"6.1.7. fromCodePoint"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2463\u2467"}],"title":"6.1.8. charCodeAt"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2463\u2468"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2464\u24ea"}],"title":"6.1.9. codePointAt"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2464\u2460"}],"title":"6.1.10. length"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2464\u2461"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2464\u2462"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2464\u2463"}],"title":"6.1.11. concat"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2464\u2464"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2464\u2465"}],"title":"6.1.12. substring"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2464\u2466"}],"title":"6.1.13. equals"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2464\u2467"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2464\u2468"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2465\u24ea"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2465\u2460"}],"title":"6.1.14. compare"}],"url":"https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands"},
"cdfd15a5": {"dfnID":"cdfd15a5","dfnText":"ref.func","external":true,"refSections":[{"refs":[{"id":"ref-for-values"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-values\u2460"},{"id":"ref-for-values\u2461"},{"id":"ref-for-values\u2462"},{"id":"ref-for-values\u2463"},{"id":"ref-for-values\u2464"},{"id":"ref-for-values\u2465"},{"id":"ref-for-values\u2466"},{"id":"ref-for-values\u2467"},{"id":"ref-for-values\u2468"},{"id":"ref-for-values\u2460\u24ea"},{"id":"ref-for-values\u2460\u2460"},{"id":"ref-for-values\u2460\u2461"},{"id":"ref-for-values\u2460\u2462"},{"id":"ref-for-values\u2460\u2463"},{"id":"ref-for-values\u2460\u2464"},{"id":"ref-for-values\u2460\u2465"},{"id":"ref-for-values\u2460\u2466"},{"id":"ref-for-values\u2460\u2467"},{"id":"ref-for-values\u2460\u2468"},{"id":"ref-for-values\u2461\u24ea"},{"id":"ref-for-values\u2461\u2460"},{"id":"ref-for-values\u2461\u2461"},{"id":"ref-for-values\u2461\u2462"},{"id":"ref-for-values\u2461\u2463"},{"id":"ref-for-values\u2461\u2464"},{"id":"ref-for-values\u2461\u2465"},{"id":"ref-for-values\u2461\u2466"},{"id":"ref-for-values\u2461\u2467"},{"id":"ref-for-values\u2461\u2468"},{"id":"ref-for-values\u2462\u24ea"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#values"},
"cf718107": {"dfnID":"cf718107","dfnText":"ref.struct","external":true,"refSections":[{"refs":[{"id":"ref-for-values"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-values\u2460"},{"id":"ref-for-values\u2461"},{"id":"ref-for-values\u2462"},{"id":"ref-for-values\u2463"},{"id":"ref-for-values\u2464"},{"id":"ref-for-values\u2465"},{"id":"ref-for-values\u2466"},{"id":"ref-for-values\u2467"},{"id":"ref-for-values\u2468"},{"id":"ref-for-values\u2460\u24ea"},{"id":"ref-for-values\u2460\u2460"},{"id":"ref-for-values\u2460\u2461"},{"id":"ref-for-values\u2460\u2462"},{"id":"ref-for-values\u2460\u2463"},{"id":"ref-for-values\u2460\u2464"},{"id":"ref-for-values\u2460\u2465"},{"id":"ref-for-values\u2460\u2466"},{"id":"ref-for-values\u2460\u2467"},{"id":"ref-for-values\u2460\u2468"},{"id":"ref-for-values\u2461\u24ea"},{"id":"ref-for-values\u2461\u2460"},{"id":"ref-for-values\u2461\u2461"},{"id":"ref-for-values\u2461\u2462"},{"id":"ref-for-values\u2461\u2463"},{"id":"ref-for-values\u2461\u2464"},{"id":"ref-for-values\u2461\u2465"},{"id":"ref-for-values\u2461\u2466"},{"id":"ref-for-values\u2461\u2467"},{"id":"ref-for-values\u2461\u2468"},{"id":"ref-for-values\u2462\u24ea"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#values"},
"compile-a-webassembly-module": {"dfnID":"compile-a-webassembly-module","dfnText":"compile a WebAssembly module","external":false,"refSections":[{"refs":[{"id":"ref-for-compile-a-webassembly-module"},{"id":"ref-for-compile-a-webassembly-module\u2460"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-compile-a-webassembly-module\u2461"}],"title":"5.1. Modules"}],"url":"#compile-a-webassembly-module"},
"construct-a-webassembly-module-object": {"dfnID":"construct-a-webassembly-module-object","dfnText":"construct a WebAssembly module object","external":false,"refSections":[{"refs":[{"id":"ref-for-construct-a-webassembly-module-object"}],"title":"5. The WebAssembly Namespace"}],"url":"#construct-a-webassembly-module-object"},
"create-a-builtin-function": {"dfnID":"create-a-builtin-function","dfnText":"create a builtin function","external":false,"refSections":[{"refs":[{"id":"ref-for-create-a-builtin-function"}],"title":"6. Builtins"}],"url":"#create-a-builtin-function"},
"create-a-fixed-length-memory-buffer": {"dfnID":"create-a-fixed-length-memory-buffer","dfnText":"create a fixed length memory buffer","external":false,"refSections":[{"refs":[{"id":"ref-for-create-a-fixed-length-memory-buffer"},{"id":"ref-for-create-a-fixed-length-memory-buffer\u2460"},{"id":"ref-for-create-a-fixed-length-memory-buffer\u2461"}],"title":"5.3. Memories"}],"url":"#create-a-fixed-length-memory-buffer"},
"create-a-global-object": {"dfnID":"create-a-global-object","dfnText":"create a global object","external":false,"refSections":[{"refs":[{"id":"ref-for-create-a-global-object"}],"title":"5. The WebAssembly Namespace"}],"url":"#create-a-global-object"},
"create-a-host-function": {"dfnID":"create-a-host-function","dfnText":"create a host function","external":false,"refSections":[{"refs":[{"id":"ref-for-create-a-host-function"}],"title":"5. The WebAssembly Namespace"}],"url":"#create-a-host-function"},
"create-a-memory-object": {"dfnID":"create-a-memory-object","dfnText":"create a memory object","external":false,"refSections":[{"refs":[{"id":"ref-for-create-a-memory-object"}],"title":"5. The WebAssembly Namespace"}],"url":"#create-a-memory-object"},
"create-a-resizable-memory-buffer": {"dfnID":"create-a-resizable-memory-buffer","dfnText":"create a resizable memory buffer","external":false,"refSections":[{"refs":[{"id":"ref-for-create-a-resizable-memory-buffer"}],"title":"5.3. Memories"}],"url":"#create-a-resizable-memory-buffer"},
"create-a-table-object": {"dfnID":"create-a-table-object","dfnText":"create a table object","external":false,"refSections":[{"refs":[{"id":"ref-for-create-a-table-object"}],"title":"5. The WebAssembly Namespace"}],"url":"#create-a-table-object"},
"create-a-tag-object": {"dfnID":"create-a-tag-object","dfnText":"create a Tag object","external":false,"refSections":[{"refs":[{"id":"ref-for-create-a-tag-object"},{"id":"ref-for-create-a-tag-object\u2460"}],"title":"5. The WebAssembly Namespace"}],"url":"#create-a-tag-object"},
"create-an-exception-object": {"dfnID":"create-an-exception-object","dfnText":"create an Exception object","external":false,"refSections":[{"refs":[{"id":"ref-for-create-an-exception-object"}],"title":"5.6. Exported Functions"}],"url":"#create-an-exception-object"},
"create-an-exports-object": {"dfnID":"create-an-exports-object","dfnText":"create an exports object","external":false,"refSections":[{"refs":[{"id":"ref-for-create-an-exports-object"}],"title":"5. The WebAssembly Namespace"}],"url":"#create-an-exports-object"},
"d2c61922": {"dfnID":"d2c61922","dfnText":"CreateDataProperty","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-createdataproperty"},{"id":"ref-for-sec-createdataproperty\u2460"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-sec-createdataproperty\u2461"}],"title":"6. Builtins"}],"url":"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-createdataproperty"},
"d388e2b5": {"dfnID":"d388e2b5","dfnText":"throw_ref","external":true,"refSections":[{"refs":[{"id":"ref-for-exec-throw-ref"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/exec/instructions.html#exec-throw-ref"},
"d39a7bec": {"dfnID":"d39a7bec","dfnText":"\u2212\u221e","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-float"},{"id":"ref-for-syntax-float\u2460"},{"id":"ref-for-syntax-float\u2461"},{"id":"ref-for-syntax-float\u2462"},{"id":"ref-for-syntax-float\u2463"},{"id":"ref-for-syntax-float\u2464"},{"id":"ref-for-syntax-float\u2465"},{"id":"ref-for-syntax-float\u2466"},{"id":"ref-for-syntax-float\u2467"},{"id":"ref-for-syntax-float\u2468"},{"id":"ref-for-syntax-float\u2460\u24ea"},{"id":"ref-for-syntax-float\u2460\u2460"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/syntax/values.html#syntax-float"},
"d5ac3b38": {"dfnID":"d5ac3b38","dfnText":"clean up after running a callback","external":true,"refSections":[{"refs":[{"id":"ref-for-clean-up-after-running-a-callback"}],"title":"5.6. Exported Functions"}],"url":"https://html.spec.whatwg.org/multipage/webappapis.html#clean-up-after-running-a-callback"},
"d5e3a033": {"dfnID":"d5e3a033","dfnText":"store_init","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-store-init"}],"title":"4.1. Interaction of the WebAssembly Store with JavaScript"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-store-init"},
"d7a47d32": {"dfnID":"d7a47d32","dfnText":"DetachArrayBuffer","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-detacharraybuffer"},{"id":"ref-for-sec-detacharraybuffer\u2460"},{"id":"ref-for-sec-detacharraybuffer\u2461"}],"title":"5.3. Memories"}],"url":"https://tc39.es/ecma262/multipage/structured-data.html#sec-detacharraybuffer"},
"d7af7adc": {"dfnID":"d7af7adc","dfnText":"incumbent settings object","external":true,"refSections":[{"refs":[{"id":"ref-for-incumbent-settings-object"}],"title":"5.6. Exported Functions"}],"url":"https://html.spec.whatwg.org/multipage/webappapis.html#incumbent-settings-object"},
"d83ccb33": {"dfnID":"d83ccb33","dfnText":"GetIteratorFromMethod","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-getiteratorfrommethod"}],"title":"5.6. Exported Functions"}],"url":"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-getiteratorfrommethod"},
"dacde8b5": {"dfnID":"dacde8b5","dfnText":"a new promise","external":true,"refSections":[{"refs":[{"id":"ref-for-a-new-promise"},{"id":"ref-for-a-new-promise\u2460"},{"id":"ref-for-a-new-promise\u2461"}],"title":"5. The WebAssembly Namespace"}],"url":"https://webidl.spec.whatwg.org/#a-new-promise"},
"dc07163b": {"dfnID":"dc07163b","dfnText":"IsCallable","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-iscallable"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-sec-iscallable\u2460"},{"id":"ref-for-sec-iscallable\u2461"}],"title":"5.6. Exported Functions"}],"url":"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-iscallable"},
"dc5b915f": {"dfnID":"dc5b915f","dfnText":"table address","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-tableaddr"}],"title":"4.2. WebAssembly JS Object Caches"},{"refs":[{"id":"ref-for-syntax-tableaddr\u2460"},{"id":"ref-for-syntax-tableaddr\u2461"},{"id":"ref-for-syntax-tableaddr\u2462"}],"title":"5.4. Tables"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-tableaddr"},
"dce4d017": {"dfnID":"dce4d017","dfnText":"page size","external":true,"refSections":[{"refs":[{"id":"ref-for-page-size"}],"title":"5.3. Memories"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#page-size"},
"defaultvalue": {"dfnID":"defaultvalue","dfnText":"DefaultValue","external":false,"refSections":[{"refs":[{"id":"ref-for-defaultvalue"},{"id":"ref-for-defaultvalue\u2460"},{"id":"ref-for-defaultvalue\u2461"}],"title":"5.4. Tables"},{"refs":[{"id":"ref-for-defaultvalue\u2462"}],"title":"5.5. Globals"}],"url":"#defaultvalue"},
"defineownproperty-internal-method-of-an-exported-gc-object": {"dfnID":"defineownproperty-internal-method-of-an-exported-gc-object","dfnText":"[[DefineOwnProperty]] internal method of an Exported GC Object","external":false,"refSections":[{"refs":[{"id":"ref-for-defineownproperty-internal-method-of-an-exported-gc-object"}],"title":"5.8. Garbage Collected Objects"}],"url":"#defineownproperty-internal-method-of-an-exported-gc-object"},
"delete-internal-method-of-an-exported-gc-object": {"dfnID":"delete-internal-method-of-an-exported-gc-object","dfnText":"[[Delete]] internal method of an Exported GC Object","external":false,"refSections":[{"refs":[{"id":"ref-for-delete-internal-method-of-an-exported-gc-object"}],"title":"5.8. Garbage Collected Objects"}],"url":"#delete-internal-method-of-an-exported-gc-object"},
"dictdef-exceptionoptions": {"dfnID":"dictdef-exceptionoptions","dfnText":"ExceptionOptions","external":false,"refSections":[{"refs":[{"id":"ref-for-dictdef-exceptionoptions"}],"title":"5.9. Exceptions"}],"url":"#dictdef-exceptionoptions"},
"dictdef-globaldescriptor": {"dfnID":"dictdef-globaldescriptor","dfnText":"GlobalDescriptor","external":false,"refSections":[{"refs":[{"id":"ref-for-dictdef-globaldescriptor"}],"title":"5.5. Globals"}],"url":"#dictdef-globaldescriptor"},
"dictdef-memorydescriptor": {"dfnID":"dictdef-memorydescriptor","dfnText":"MemoryDescriptor","external":false,"refSections":[{"refs":[{"id":"ref-for-dictdef-memorydescriptor"}],"title":"5.3. Memories"}],"url":"#dictdef-memorydescriptor"},
"dictdef-moduleexportdescriptor": {"dfnID":"dictdef-moduleexportdescriptor","dfnText":"ModuleExportDescriptor","external":false,"refSections":[{"refs":[{"id":"ref-for-dictdef-moduleexportdescriptor"}],"title":"5.1. Modules"}],"url":"#dictdef-moduleexportdescriptor"},
"dictdef-moduleimportdescriptor": {"dfnID":"dictdef-moduleimportdescriptor","dfnText":"ModuleImportDescriptor","external":false,"refSections":[{"refs":[{"id":"ref-for-dictdef-moduleimportdescriptor"}],"title":"5.1. Modules"}],"url":"#dictdef-moduleimportdescriptor"},
"dictdef-tabledescriptor": {"dfnID":"dictdef-tabledescriptor","dfnText":"TableDescriptor","external":false,"refSections":[{"refs":[{"id":"ref-for-dictdef-tabledescriptor"}],"title":"5.4. Tables"}],"url":"#dictdef-tabledescriptor"},
"dictdef-tagtype": {"dfnID":"dictdef-tagtype","dfnText":"TagType","external":false,"refSections":[{"refs":[{"id":"ref-for-dictdef-tagtype"}],"title":"5.7.1. Tag types"}],"url":"#dictdef-tagtype"},
"dictdef-webassemblycompileoptions": {"dfnID":"dictdef-webassemblycompileoptions","dfnText":"WebAssemblyCompileOptions","external":false,"refSections":[{"refs":[{"id":"ref-for-dictdef-webassemblycompileoptions"},{"id":"ref-for-dictdef-webassemblycompileoptions\u2460"},{"id":"ref-for-dictdef-webassemblycompileoptions\u2461"},{"id":"ref-for-dictdef-webassemblycompileoptions\u2462"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-dictdef-webassemblycompileoptions\u2463"}],"title":"5.1. Modules"},{"refs":[{"id":"ref-for-dictdef-webassemblycompileoptions\u2464"},{"id":"ref-for-dictdef-webassemblycompileoptions\u2465"}],"title":"6. Builtins"}],"url":"#dictdef-webassemblycompileoptions"},
"dictdef-webassemblyinstantiatedsource": {"dfnID":"dictdef-webassemblyinstantiatedsource","dfnText":"WebAssemblyInstantiatedSource","external":false,"refSections":[{"refs":[{"id":"ref-for-dictdef-webassemblyinstantiatedsource"},{"id":"ref-for-dictdef-webassemblyinstantiatedsource\u2460"}],"title":"5. The WebAssembly Namespace"}],"url":"#dictdef-webassemblyinstantiatedsource"},
"dom-addresstype-i32": {"dfnID":"dom-addresstype-i32","dfnText":"\"i32\"","external":false,"refSections":[],"url":"#dom-addresstype-i32"},
"dom-addresstype-i64": {"dfnID":"dom-addresstype-i64","dfnText":"\"i64\"","external":false,"refSections":[],"url":"#dom-addresstype-i64"},
"dom-exception-exception": {"dfnID":"dom-exception-exception","dfnText":"new Exception(exceptionTag, payload, options)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-exception-exception"}],"title":"5.9. Exceptions"}],"url":"#dom-exception-exception"},
"dom-exception-exception-exceptiontag-payload-options-exceptiontag": {"dfnID":"dom-exception-exception-exceptiontag-payload-options-exceptiontag","dfnText":"exceptionTag","external":false,"refSections":[],"url":"#dom-exception-exception-exceptiontag-payload-options-exceptiontag"},
"dom-exception-exception-exceptiontag-payload-options-options": {"dfnID":"dom-exception-exception-exceptiontag-payload-options-options","dfnText":"options","external":false,"refSections":[],"url":"#dom-exception-exception-exceptiontag-payload-options-options"},
"dom-exception-exception-exceptiontag-payload-options-payload": {"dfnID":"dom-exception-exception-exceptiontag-payload-options-payload","dfnText":"payload","external":false,"refSections":[],"url":"#dom-exception-exception-exceptiontag-payload-options-payload"},
"dom-exception-getarg": {"dfnID":"dom-exception-getarg","dfnText":"getArg(index)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-exception-getarg"}],"title":"5.9. Exceptions"}],"url":"#dom-exception-getarg"},
"dom-exception-getarg-index-index": {"dfnID":"dom-exception-getarg-index-index","dfnText":"index","external":false,"refSections":[],"url":"#dom-exception-getarg-index-index"},
"dom-exception-is": {"dfnID":"dom-exception-is","dfnText":"is(exceptionTag)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-exception-is"}],"title":"5.9. Exceptions"}],"url":"#dom-exception-is"},
"dom-exception-is-exceptiontag-exceptiontag": {"dfnID":"dom-exception-is-exceptiontag-exceptiontag","dfnText":"exceptionTag","external":false,"refSections":[],"url":"#dom-exception-is-exceptiontag-exceptiontag"},
"dom-exception-stack": {"dfnID":"dom-exception-stack","dfnText":"stack","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-exception-stack"}],"title":"5.9. Exceptions"}],"url":"#dom-exception-stack"},
"dom-exceptionoptions-tracestack": {"dfnID":"dom-exceptionoptions-tracestack","dfnText":"traceStack","external":false,"refSections":[],"url":"#dom-exceptionoptions-tracestack"},
"dom-global-global": {"dfnID":"dom-global-global","dfnText":"Global(descriptor, v)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-global-global"}],"title":"5.5. Globals"}],"url":"#dom-global-global"},
"dom-global-global-descriptor-v-descriptor": {"dfnID":"dom-global-global-descriptor-v-descriptor","dfnText":"descriptor","external":false,"refSections":[],"url":"#dom-global-global-descriptor-v-descriptor"},
"dom-global-global-descriptor-v-v": {"dfnID":"dom-global-global-descriptor-v-v","dfnText":"v","external":false,"refSections":[],"url":"#dom-global-global-descriptor-v-v"},
"dom-global-value": {"dfnID":"dom-global-value","dfnText":"value","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-global-value"}],"title":"5.5. Globals"}],"url":"#dom-global-value"},
"dom-global-valueof": {"dfnID":"dom-global-valueof","dfnText":"valueOf()","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-global-valueof"}],"title":"5.5. Globals"}],"url":"#dom-global-valueof"},
"dom-globaldescriptor-mutable": {"dfnID":"dom-globaldescriptor-mutable","dfnText":"mutable","external":false,"refSections":[],"url":"#dom-globaldescriptor-mutable"},
"dom-globaldescriptor-value": {"dfnID":"dom-globaldescriptor-value","dfnText":"value","external":false,"refSections":[],"url":"#dom-globaldescriptor-value"},
"dom-importexportkind-function": {"dfnID":"dom-importexportkind-function","dfnText":"\"function\"","external":false,"refSections":[],"url":"#dom-importexportkind-function"},
"dom-importexportkind-global": {"dfnID":"dom-importexportkind-global","dfnText":"\"global\"","external":false,"refSections":[],"url":"#dom-importexportkind-global"},
"dom-importexportkind-memory": {"dfnID":"dom-importexportkind-memory","dfnText":"\"memory\"","external":false,"refSections":[],"url":"#dom-importexportkind-memory"},
"dom-importexportkind-table": {"dfnID":"dom-importexportkind-table","dfnText":"\"table\"","external":false,"refSections":[],"url":"#dom-importexportkind-table"},
"dom-importexportkind-tag": {"dfnID":"dom-importexportkind-tag","dfnText":"\"tag\"","external":false,"refSections":[],"url":"#dom-importexportkind-tag"},
"dom-instance-exports": {"dfnID":"dom-instance-exports","dfnText":"exports","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-instance-exports"}],"title":"5.2. Instances"}],"url":"#dom-instance-exports"},
"dom-instance-instance": {"dfnID":"dom-instance-instance","dfnText":"Instance(module, importObject)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-instance-instance"}],"title":"5.2. Instances"}],"url":"#dom-instance-instance"},
"dom-instance-instance-module-importobject-importobject": {"dfnID":"dom-instance-instance-module-importobject-importobject","dfnText":"importObject","external":false,"refSections":[],"url":"#dom-instance-instance-module-importobject-importobject"},
"dom-instance-instance-module-importobject-module": {"dfnID":"dom-instance-instance-module-importobject-module","dfnText":"module","external":false,"refSections":[],"url":"#dom-instance-instance-module-importobject-module"},
"dom-memory-buffer": {"dfnID":"dom-memory-buffer","dfnText":"buffer","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-memory-buffer"}],"title":"5.3. Memories"}],"url":"#dom-memory-buffer"},
"dom-memory-grow": {"dfnID":"dom-memory-grow","dfnText":"grow(delta)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-memory-grow"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-dom-memory-grow\u2460"}],"title":"7.2. Out of Memory"}],"url":"#dom-memory-grow"},
"dom-memory-grow-delta-delta": {"dfnID":"dom-memory-grow-delta-delta","dfnText":"delta","external":false,"refSections":[],"url":"#dom-memory-grow-delta-delta"},
"dom-memory-memory": {"dfnID":"dom-memory-memory","dfnText":"Memory(descriptor)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-memory-memory"}],"title":"5.3. Memories"}],"url":"#dom-memory-memory"},
"dom-memory-memory-descriptor-descriptor": {"dfnID":"dom-memory-memory-descriptor-descriptor","dfnText":"descriptor","external":false,"refSections":[],"url":"#dom-memory-memory-descriptor-descriptor"},
"dom-memory-tofixedlengthbuffer": {"dfnID":"dom-memory-tofixedlengthbuffer","dfnText":"toFixedLengthBuffer()","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-memory-tofixedlengthbuffer"}],"title":"5.3. Memories"}],"url":"#dom-memory-tofixedlengthbuffer"},
"dom-memory-toresizablebuffer": {"dfnID":"dom-memory-toresizablebuffer","dfnText":"toResizableBuffer()","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-memory-toresizablebuffer"}],"title":"5.3. Memories"}],"url":"#dom-memory-toresizablebuffer"},
"dom-memorydescriptor-address": {"dfnID":"dom-memorydescriptor-address","dfnText":"address","external":false,"refSections":[],"url":"#dom-memorydescriptor-address"},
"dom-memorydescriptor-initial": {"dfnID":"dom-memorydescriptor-initial","dfnText":"initial","external":false,"refSections":[],"url":"#dom-memorydescriptor-initial"},
"dom-memorydescriptor-maximum": {"dfnID":"dom-memorydescriptor-maximum","dfnText":"maximum","external":false,"refSections":[],"url":"#dom-memorydescriptor-maximum"},
"dom-module-customsections": {"dfnID":"dom-module-customsections","dfnText":"customSections(moduleObject, sectionName)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-module-customsections"}],"title":"5.1. Modules"}],"url":"#dom-module-customsections"},
"dom-module-customsections-moduleobject-sectionname-moduleobject": {"dfnID":"dom-module-customsections-moduleobject-sectionname-moduleobject","dfnText":"moduleObject","external":false,"refSections":[],"url":"#dom-module-customsections-moduleobject-sectionname-moduleobject"},
"dom-module-customsections-moduleobject-sectionname-sectionname": {"dfnID":"dom-module-customsections-moduleobject-sectionname-sectionname","dfnText":"sectionName","external":false,"refSections":[],"url":"#dom-module-customsections-moduleobject-sectionname-sectionname"},
"dom-module-exports": {"dfnID":"dom-module-exports","dfnText":"exports(moduleObject)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-module-exports"}],"title":"5.1. Modules"}],"url":"#dom-module-exports"},
"dom-module-exports-moduleobject-moduleobject": {"dfnID":"dom-module-exports-moduleobject-moduleobject","dfnText":"moduleObject","external":false,"refSections":[],"url":"#dom-module-exports-moduleobject-moduleobject"},
"dom-module-imports": {"dfnID":"dom-module-imports","dfnText":"imports(moduleObject)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-module-imports"}],"title":"5.1. Modules"}],"url":"#dom-module-imports"},
"dom-module-imports-moduleobject-moduleobject": {"dfnID":"dom-module-imports-moduleobject-moduleobject","dfnText":"moduleObject","external":false,"refSections":[],"url":"#dom-module-imports-moduleobject-moduleobject"},
"dom-module-module": {"dfnID":"dom-module-module","dfnText":"Module(bytes, options)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-module-module"}],"title":"5.1. Modules"}],"url":"#dom-module-module"},
"dom-module-module-bytes-options-bytes": {"dfnID":"dom-module-module-bytes-options-bytes","dfnText":"bytes","external":false,"refSections":[],"url":"#dom-module-module-bytes-options-bytes"},
"dom-module-module-bytes-options-options": {"dfnID":"dom-module-module-bytes-options-options","dfnText":"options","external":false,"refSections":[],"url":"#dom-module-module-bytes-options-options"},
"dom-moduleexportdescriptor-kind": {"dfnID":"dom-moduleexportdescriptor-kind","dfnText":"kind","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-moduleexportdescriptor-kind"}],"title":"5.1. Modules"}],"url":"#dom-moduleexportdescriptor-kind"},
"dom-moduleexportdescriptor-name": {"dfnID":"dom-moduleexportdescriptor-name","dfnText":"name","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-moduleexportdescriptor-name"}],"title":"5.1. Modules"}],"url":"#dom-moduleexportdescriptor-name"},
"dom-moduleimportdescriptor-kind": {"dfnID":"dom-moduleimportdescriptor-kind","dfnText":"kind","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-moduleimportdescriptor-kind"}],"title":"5.1. Modules"}],"url":"#dom-moduleimportdescriptor-kind"},
"dom-moduleimportdescriptor-module": {"dfnID":"dom-moduleimportdescriptor-module","dfnText":"module","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-moduleimportdescriptor-module"}],"title":"5.1. Modules"}],"url":"#dom-moduleimportdescriptor-module"},
"dom-moduleimportdescriptor-name": {"dfnID":"dom-moduleimportdescriptor-name","dfnText":"name","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-moduleimportdescriptor-name"}],"title":"5.1. Modules"}],"url":"#dom-moduleimportdescriptor-name"},
"dom-table-get": {"dfnID":"dom-table-get","dfnText":"get(index)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-table-get"}],"title":"5.4. Tables"}],"url":"#dom-table-get"},
"dom-table-get-index-index": {"dfnID":"dom-table-get-index-index","dfnText":"index","external":false,"refSections":[],"url":"#dom-table-get-index-index"},
"dom-table-grow": {"dfnID":"dom-table-grow","dfnText":"grow(delta, value)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-table-grow"}],"title":"5.4. Tables"},{"refs":[{"id":"ref-for-dom-table-grow\u2460"}],"title":"7.2. Out of Memory"}],"url":"#dom-table-grow"},
"dom-table-grow-delta-value-delta": {"dfnID":"dom-table-grow-delta-value-delta","dfnText":"delta","external":false,"refSections":[],"url":"#dom-table-grow-delta-value-delta"},
"dom-table-grow-delta-value-value": {"dfnID":"dom-table-grow-delta-value-value","dfnText":"value","external":false,"refSections":[],"url":"#dom-table-grow-delta-value-value"},
"dom-table-length": {"dfnID":"dom-table-length","dfnText":"length","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-table-length"}],"title":"5.4. Tables"}],"url":"#dom-table-length"},
"dom-table-set": {"dfnID":"dom-table-set","dfnText":"set(index, value)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-table-set"}],"title":"5.4. Tables"}],"url":"#dom-table-set"},
"dom-table-set-index-value-index": {"dfnID":"dom-table-set-index-value-index","dfnText":"index","external":false,"refSections":[],"url":"#dom-table-set-index-value-index"},
"dom-table-set-index-value-value": {"dfnID":"dom-table-set-index-value-value","dfnText":"value","external":false,"refSections":[],"url":"#dom-table-set-index-value-value"},
"dom-table-table": {"dfnID":"dom-table-table","dfnText":"Table(descriptor, value)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-table-table"}],"title":"5.4. Tables"}],"url":"#dom-table-table"},
"dom-table-table-descriptor-value-descriptor": {"dfnID":"dom-table-table-descriptor-value-descriptor","dfnText":"descriptor","external":false,"refSections":[],"url":"#dom-table-table-descriptor-value-descriptor"},
"dom-table-table-descriptor-value-value": {"dfnID":"dom-table-table-descriptor-value-value","dfnText":"value","external":false,"refSections":[],"url":"#dom-table-table-descriptor-value-value"},
"dom-tabledescriptor-address": {"dfnID":"dom-tabledescriptor-address","dfnText":"address","external":false,"refSections":[],"url":"#dom-tabledescriptor-address"},
"dom-tabledescriptor-element": {"dfnID":"dom-tabledescriptor-element","dfnText":"element","external":false,"refSections":[],"url":"#dom-tabledescriptor-element"},
"dom-tabledescriptor-initial": {"dfnID":"dom-tabledescriptor-initial","dfnText":"initial","external":false,"refSections":[],"url":"#dom-tabledescriptor-initial"},
"dom-tabledescriptor-maximum": {"dfnID":"dom-tabledescriptor-maximum","dfnText":"maximum","external":false,"refSections":[],"url":"#dom-tabledescriptor-maximum"},
"dom-tablekind-anyfunc": {"dfnID":"dom-tablekind-anyfunc","dfnText":"\"anyfunc\"","external":false,"refSections":[],"url":"#dom-tablekind-anyfunc"},
"dom-tablekind-externref": {"dfnID":"dom-tablekind-externref","dfnText":"\"externref\"","external":false,"refSections":[],"url":"#dom-tablekind-externref"},
"dom-tag-tag": {"dfnID":"dom-tag-tag","dfnText":"new Tag(type)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-tag-tag"}],"title":"5.7.1. Tag types"}],"url":"#dom-tag-tag"},
"dom-tag-tag-type-type": {"dfnID":"dom-tag-tag-type-type","dfnText":"type","external":false,"refSections":[],"url":"#dom-tag-tag-type-type"},
"dom-tagtype-parameters": {"dfnID":"dom-tagtype-parameters","dfnText":"parameters","external":false,"refSections":[],"url":"#dom-tagtype-parameters"},
"dom-valuetype-anyfunc": {"dfnID":"dom-valuetype-anyfunc","dfnText":"\"anyfunc\"","external":false,"refSections":[],"url":"#dom-valuetype-anyfunc"},
"dom-valuetype-externref": {"dfnID":"dom-valuetype-externref","dfnText":"\"externref\"","external":false,"refSections":[],"url":"#dom-valuetype-externref"},
"dom-valuetype-f32": {"dfnID":"dom-valuetype-f32","dfnText":"\"f32\"","external":false,"refSections":[],"url":"#dom-valuetype-f32"},
"dom-valuetype-f64": {"dfnID":"dom-valuetype-f64","dfnText":"\"f64\"","external":false,"refSections":[],"url":"#dom-valuetype-f64"},
"dom-valuetype-i32": {"dfnID":"dom-valuetype-i32","dfnText":"\"i32\"","external":false,"refSections":[],"url":"#dom-valuetype-i32"},
"dom-valuetype-i64": {"dfnID":"dom-valuetype-i64","dfnText":"\"i64\"","external":false,"refSections":[],"url":"#dom-valuetype-i64"},
"dom-valuetype-v128": {"dfnID":"dom-valuetype-v128","dfnText":"\"v128\"","external":false,"refSections":[],"url":"#dom-valuetype-v128"},
"dom-webassembly-compile": {"dfnID":"dom-webassembly-compile","dfnText":"compile(bytes, options)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-webassembly-compile"}],"title":"5. The WebAssembly Namespace"}],"url":"#dom-webassembly-compile"},
"dom-webassembly-compile-bytes-options-bytes": {"dfnID":"dom-webassembly-compile-bytes-options-bytes","dfnText":"bytes","external":false,"refSections":[],"url":"#dom-webassembly-compile-bytes-options-bytes"},
"dom-webassembly-compile-bytes-options-options": {"dfnID":"dom-webassembly-compile-bytes-options-options","dfnText":"options","external":false,"refSections":[],"url":"#dom-webassembly-compile-bytes-options-options"},
"dom-webassembly-instantiate": {"dfnID":"dom-webassembly-instantiate","dfnText":"instantiate(bytes, importObject, options)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-webassembly-instantiate"}],"title":"5. The WebAssembly Namespace"}],"url":"#dom-webassembly-instantiate"},
"dom-webassembly-instantiate-bytes-importobject-options-bytes": {"dfnID":"dom-webassembly-instantiate-bytes-importobject-options-bytes","dfnText":"bytes","external":false,"refSections":[],"url":"#dom-webassembly-instantiate-bytes-importobject-options-bytes"},
"dom-webassembly-instantiate-bytes-importobject-options-importobject": {"dfnID":"dom-webassembly-instantiate-bytes-importobject-options-importobject","dfnText":"importObject","external":false,"refSections":[],"url":"#dom-webassembly-instantiate-bytes-importobject-options-importobject"},
"dom-webassembly-instantiate-bytes-importobject-options-options": {"dfnID":"dom-webassembly-instantiate-bytes-importobject-options-options","dfnText":"options","external":false,"refSections":[],"url":"#dom-webassembly-instantiate-bytes-importobject-options-options"},
"dom-webassembly-instantiate-moduleobject-importobject": {"dfnID":"dom-webassembly-instantiate-moduleobject-importobject","dfnText":"instantiate(moduleObject, importObject)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-webassembly-instantiate-moduleobject-importobject"}],"title":"5. The WebAssembly Namespace"}],"url":"#dom-webassembly-instantiate-moduleobject-importobject"},
"dom-webassembly-instantiate-moduleobject-importobject-importobject": {"dfnID":"dom-webassembly-instantiate-moduleobject-importobject-importobject","dfnText":"importObject","external":false,"refSections":[],"url":"#dom-webassembly-instantiate-moduleobject-importobject-importobject"},
"dom-webassembly-instantiate-moduleobject-importobject-moduleobject": {"dfnID":"dom-webassembly-instantiate-moduleobject-importobject-moduleobject","dfnText":"moduleObject","external":false,"refSections":[],"url":"#dom-webassembly-instantiate-moduleobject-importobject-moduleobject"},
"dom-webassembly-jstag": {"dfnID":"dom-webassembly-jstag","dfnText":"JSTag","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-webassembly-jstag"}],"title":"5. The WebAssembly Namespace"}],"url":"#dom-webassembly-jstag"},
"dom-webassembly-validate": {"dfnID":"dom-webassembly-validate","dfnText":"validate(bytes, options)","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-webassembly-validate"}],"title":"5. The WebAssembly Namespace"}],"url":"#dom-webassembly-validate"},
"dom-webassembly-validate-bytes-options-bytes": {"dfnID":"dom-webassembly-validate-bytes-options-bytes","dfnText":"bytes","external":false,"refSections":[],"url":"#dom-webassembly-validate-bytes-options-bytes"},
"dom-webassembly-validate-bytes-options-options": {"dfnID":"dom-webassembly-validate-bytes-options-options","dfnText":"options","external":false,"refSections":[],"url":"#dom-webassembly-validate-bytes-options-options"},
"dom-webassemblycompileoptions-builtins": {"dfnID":"dom-webassemblycompileoptions-builtins","dfnText":"builtins","external":false,"refSections":[],"url":"#dom-webassemblycompileoptions-builtins"},
"dom-webassemblycompileoptions-importedstringconstants": {"dfnID":"dom-webassemblycompileoptions-importedstringconstants","dfnText":"importedStringConstants","external":false,"refSections":[],"url":"#dom-webassemblycompileoptions-importedstringconstants"},
"dom-webassemblyinstantiatedsource-instance": {"dfnID":"dom-webassemblyinstantiatedsource-instance","dfnText":"instance","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-webassemblyinstantiatedsource-instance"}],"title":"5. The WebAssembly Namespace"}],"url":"#dom-webassemblyinstantiatedsource-instance"},
"dom-webassemblyinstantiatedsource-module": {"dfnID":"dom-webassemblyinstantiatedsource-module","dfnText":"module","external":false,"refSections":[{"refs":[{"id":"ref-for-dom-webassemblyinstantiatedsource-module"}],"title":"5. The WebAssembly Namespace"}],"url":"#dom-webassemblyinstantiatedsource-module"},
"e03ea6cc": {"dfnID":"e03ea6cc","dfnText":"exnref","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-reftype"},{"id":"ref-for-syntax-reftype\u2460"}],"title":"5.4. Tables"},{"refs":[{"id":"ref-for-syntax-reftype\u2461"},{"id":"ref-for-syntax-reftype\u2462"},{"id":"ref-for-syntax-reftype\u2463"},{"id":"ref-for-syntax-reftype\u2464"},{"id":"ref-for-syntax-reftype\u2465"},{"id":"ref-for-syntax-reftype\u2466"}],"title":"5.5. Globals"},{"refs":[{"id":"ref-for-syntax-reftype\u2467"},{"id":"ref-for-syntax-reftype\u2468"},{"id":"ref-for-syntax-reftype\u2460\u24ea"},{"id":"ref-for-syntax-reftype\u2460\u2460"},{"id":"ref-for-syntax-reftype\u2460\u2461"},{"id":"ref-for-syntax-reftype\u2460\u2462"},{"id":"ref-for-syntax-reftype\u2460\u2463"},{"id":"ref-for-syntax-reftype\u2460\u2464"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-syntax-reftype\u2460\u2465"},{"id":"ref-for-syntax-reftype\u2460\u2466"}],"title":"5.9. Exceptions"},{"refs":[{"id":"ref-for-syntax-reftype\u2460\u2467"},{"id":"ref-for-syntax-reftype\u2460\u2468"}],"title":"5.9.1. JavaScript exceptions"},{"refs":[{"id":"ref-for-syntax-reftype\u2461\u24ea"}],"title":"Reference Types"}],"url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype"},
"e07b3d97": {"dfnID":"e07b3d97","dfnText":"valid memtype","external":true,"refSections":[{"refs":[{"id":"ref-for-valid-memtype"}],"title":"5.3. Memories"}],"url":"https://webassembly.github.io/spec/core/valid/types.html#valid-memtype"},
"e18130bf": {"dfnID":"e18130bf","dfnText":"v128.const","external":true,"refSections":[{"refs":[{"id":"ref-for-values"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-values\u2460"},{"id":"ref-for-values\u2461"},{"id":"ref-for-values\u2462"},{"id":"ref-for-values\u2463"},{"id":"ref-for-values\u2464"},{"id":"ref-for-values\u2465"},{"id":"ref-for-values\u2466"},{"id":"ref-for-values\u2467"},{"id":"ref-for-values\u2468"},{"id":"ref-for-values\u2460\u24ea"},{"id":"ref-for-values\u2460\u2460"},{"id":"ref-for-values\u2460\u2461"},{"id":"ref-for-values\u2460\u2462"},{"id":"ref-for-values\u2460\u2463"},{"id":"ref-for-values\u2460\u2464"},{"id":"ref-for-values\u2460\u2465"},{"id":"ref-for-values\u2460\u2466"},{"id":"ref-for-values\u2460\u2467"},{"id":"ref-for-values\u2460\u2468"},{"id":"ref-for-values\u2461\u24ea"},{"id":"ref-for-values\u2461\u2460"},{"id":"ref-for-values\u2461\u2461"},{"id":"ref-for-values\u2461\u2462"},{"id":"ref-for-values\u2461\u2463"},{"id":"ref-for-values\u2461\u2464"},{"id":"ref-for-values\u2461\u2465"},{"id":"ref-for-values\u2461\u2466"},{"id":"ref-for-values\u2461\u2467"},{"id":"ref-for-values\u2461\u2468"},{"id":"ref-for-values\u2462\u24ea"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#values"},
"e2fb14e5": {"dfnID":"e2fb14e5","dfnText":"NumericToRawBytes","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-numerictorawbytes"}],"title":"5.6. Exported Functions"}],"url":"https://tc39.es/ecma262/multipage/structured-data.html#sec-numerictorawbytes"},
"e4286588": {"dfnID":"e4286588","dfnText":"func_invoke","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-func-invoke"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-func-invoke"},
"e76d80be": {"dfnID":"e76d80be","dfnText":"reftype","external":true,"refSections":[{"refs":[{"id":"ref-for-match-reftype"},{"id":"ref-for-match-reftype\u2460"},{"id":"ref-for-match-reftype\u2461"}],"title":"5.4. Tables"}],"url":"https://webassembly.github.io/spec/core/valid/matching.html#match-reftype"},
"e8f0aed3": {"dfnID":"e8f0aed3","dfnText":"Built-in Function Objects","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-built-in-function-objects"},{"id":"ref-for-sec-built-in-function-objects\u2460"}],"title":"5.6. Exported Functions"}],"url":"https://tc39.github.io/ecma262/#sec-built-in-function-objects"},
"e97a9688": {"dfnID":"e97a9688","dfnText":"unsigned long","external":true,"refSections":[{"refs":[{"id":"ref-for-idl-unsigned-long\u2461"}],"title":"5.9. Exceptions"}],"url":"https://webidl.spec.whatwg.org/#idl-unsigned-long"},
"eb54bcbb": {"dfnID":"eb54bcbb","dfnText":"u64","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-int"},{"id":"ref-for-syntax-int\u2460"},{"id":"ref-for-syntax-int\u2461"},{"id":"ref-for-syntax-int\u2462"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/syntax/values.html#syntax-int"},
"ebb4ace3": {"dfnID":"ebb4ace3","dfnText":"?","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2460"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2461"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2462"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2463"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2464"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2465"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2466"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2467"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2468"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2460\u24ea"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2460\u2460"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2460\u2461"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2460\u2462"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2460\u2463"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2460\u2464"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2460\u2465"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2460\u2466"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2460\u2467"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2460\u2468"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2461\u24ea"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2461\u2460"}],"title":"5.4. Tables"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2461\u2461"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2461\u2462"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2461\u2463"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2461\u2464"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2461\u2465"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2461\u2466"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2461\u2467"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2461\u2468"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2462\u24ea"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2462\u2460"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2462\u2461"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2462\u2462"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2462\u2463"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2462\u2464"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2462\u2465"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2462\u2466"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2462\u2467"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2462\u2468"}],"title":"5.9. Exceptions"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2463\u24ea"}],"title":"5.10. Error Objects"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2463\u2460"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2463\u2461"}],"title":"6. Builtins"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2463\u2462"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2463\u2463"}],"title":"6.1.1. Abstract operations"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2463\u2464"}],"title":"6.1.2. cast"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2463\u2465"}],"title":"6.1.5. intoCharCodeArray"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2463\u2466"}],"title":"6.1.7. fromCodePoint"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2463\u2467"}],"title":"6.1.8. charCodeAt"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2463\u2468"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2464\u24ea"}],"title":"6.1.9. codePointAt"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2464\u2460"}],"title":"6.1.10. length"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2464\u2461"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2464\u2462"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2464\u2463"}],"title":"6.1.11. concat"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2464\u2464"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2464\u2465"}],"title":"6.1.12. substring"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2464\u2466"}],"title":"6.1.13. equals"},{"refs":[{"id":"ref-for-sec-returnifabrupt-shorthands\u2464\u2467"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2464\u2468"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2465\u24ea"},{"id":"ref-for-sec-returnifabrupt-shorthands\u2465\u2460"}],"title":"6.1.14. compare"}],"url":"https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands"},
"ebbbef34": {"dfnID":"ebbbef34","dfnText":"OrdinaryObjectCreate","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-ordinaryobjectcreate"},{"id":"ref-for-sec-ordinaryobjectcreate\u2460"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-sec-ordinaryobjectcreate\u2461"}],"title":"6. Builtins"}],"url":"https://tc39.es/ecma262/multipage/ordinary-and-exotic-objects-behaviours.html#sec-ordinaryobjectcreate"},
"ec2020b1": {"dfnID":"ec2020b1","dfnText":"table_alloc","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-table-alloc"}],"title":"5.4. Tables"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-table-alloc"},
"eca66c99": {"dfnID":"eca66c99","dfnText":"Data Block","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-data-blocks"}],"title":"4.1. Interaction of the WebAssembly Store with JavaScript"},{"refs":[{"id":"ref-for-sec-data-blocks\u2460"},{"id":"ref-for-sec-data-blocks\u2461"},{"id":"ref-for-sec-data-blocks\u2462"},{"id":"ref-for-sec-data-blocks\u2463"}],"title":"5.3. Memories"}],"url":"https://tc39.es/ecma262/multipage/ecmascript-data-types-and-values.html#sec-data-blocks"},
"ef0b8e0c": {"dfnID":"ef0b8e0c","dfnText":"is not an Object","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-object-type"},{"id":"ref-for-sec-object-type\u2460"}],"title":"5. The WebAssembly Namespace"}],"url":"https://tc39.github.io/ecma262/#sec-object-type"},
"ef3c2587": {"dfnID":"ef3c2587","dfnText":"externref","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-reftype"},{"id":"ref-for-syntax-reftype\u2460"}],"title":"5.4. Tables"},{"refs":[{"id":"ref-for-syntax-reftype\u2461"},{"id":"ref-for-syntax-reftype\u2462"},{"id":"ref-for-syntax-reftype\u2463"},{"id":"ref-for-syntax-reftype\u2464"},{"id":"ref-for-syntax-reftype\u2465"},{"id":"ref-for-syntax-reftype\u2466"}],"title":"5.5. Globals"},{"refs":[{"id":"ref-for-syntax-reftype\u2467"},{"id":"ref-for-syntax-reftype\u2468"},{"id":"ref-for-syntax-reftype\u2460\u24ea"},{"id":"ref-for-syntax-reftype\u2460\u2460"},{"id":"ref-for-syntax-reftype\u2460\u2461"},{"id":"ref-for-syntax-reftype\u2460\u2462"},{"id":"ref-for-syntax-reftype\u2460\u2463"},{"id":"ref-for-syntax-reftype\u2460\u2464"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-syntax-reftype\u2460\u2465"},{"id":"ref-for-syntax-reftype\u2460\u2466"}],"title":"5.9. Exceptions"},{"refs":[{"id":"ref-for-syntax-reftype\u2460\u2467"},{"id":"ref-for-syntax-reftype\u2460\u2468"}],"title":"5.9.1. JavaScript exceptions"},{"refs":[{"id":"ref-for-syntax-reftype\u2461\u24ea"}],"title":"Reference Types"}],"url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype"},
"efd1ec5d": {"dfnID":"efd1ec5d","dfnText":"object","external":true,"refSections":[{"refs":[{"id":"ref-for-idl-object"},{"id":"ref-for-idl-object\u2460"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-idl-object\u2461"},{"id":"ref-for-idl-object\u2462"}],"title":"5.2. Instances"}],"url":"https://webidl.spec.whatwg.org/#idl-object"},
"efe8653e": {"dfnID":"efe8653e","dfnText":"iterate (for map)","external":true,"refSections":[{"refs":[{"id":"ref-for-map-iterate"}],"title":"5.3. Memories"}],"url":"https://infra.spec.whatwg.org/#map-iterate"},
"enumdef-addresstype": {"dfnID":"enumdef-addresstype","dfnText":"AddressType","external":false,"refSections":[{"refs":[{"id":"ref-for-enumdef-addresstype"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-enumdef-addresstype\u2460"}],"title":"5.4. Tables"},{"refs":[{"id":"ref-for-enumdef-addresstype\u2461"},{"id":"ref-for-enumdef-addresstype\u2462"},{"id":"ref-for-enumdef-addresstype\u2463"}],"title":"5.6. Exported Functions"}],"url":"#enumdef-addresstype"},
"enumdef-importexportkind": {"dfnID":"enumdef-importexportkind","dfnText":"ImportExportKind","external":false,"refSections":[{"refs":[{"id":"ref-for-enumdef-importexportkind"},{"id":"ref-for-enumdef-importexportkind\u2460"}],"title":"5.1. Modules"}],"url":"#enumdef-importexportkind"},
"enumdef-tablekind": {"dfnID":"enumdef-tablekind","dfnText":"TableKind","external":false,"refSections":[{"refs":[{"id":"ref-for-enumdef-tablekind"}],"title":"5.4. Tables"}],"url":"#enumdef-tablekind"},
"enumdef-valuetype": {"dfnID":"enumdef-valuetype","dfnText":"ValueType","external":false,"refSections":[{"refs":[{"id":"ref-for-enumdef-valuetype"}],"title":"5.5. Globals"},{"refs":[{"id":"ref-for-enumdef-valuetype\u2460"}],"title":"5.7.1. Tag types"}],"url":"#enumdef-valuetype"},
"exception": {"dfnID":"exception","dfnText":"Exception","external":false,"refSections":[{"refs":[{"id":"ref-for-exception"}],"title":"4.2. WebAssembly JS Object Caches"},{"refs":[{"id":"ref-for-exception\u2460"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-exception\u2461"},{"id":"ref-for-exception\u2462"}],"title":"5.9. Exceptions"}],"url":"#exception"},
"exception-object-cache": {"dfnID":"exception-object-cache","dfnText":"Exception object cache","external":false,"refSections":[{"refs":[{"id":"ref-for-exception-object-cache"},{"id":"ref-for-exception-object-cache\u2460"}],"title":"5.9. Exceptions"}],"url":"#exception-object-cache"},
"exceptiondef-compileerror": {"dfnID":"exceptiondef-compileerror","dfnText":"CompileError","external":false,"refSections":[{"refs":[{"id":"ref-for-exceptiondef-compileerror"},{"id":"ref-for-exceptiondef-compileerror\u2460"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-exceptiondef-compileerror\u2461"},{"id":"ref-for-exceptiondef-compileerror\u2462"}],"title":"5.1. Modules"},{"refs":[{"id":"ref-for-exceptiondef-compileerror\u2463"}],"title":"5.10. Error Objects"},{"refs":[{"id":"ref-for-exceptiondef-compileerror\u2464"}],"title":"8. Implementation-defined Limits"}],"url":"#exceptiondef-compileerror"},
"exceptiondef-linkerror": {"dfnID":"exceptiondef-linkerror","dfnText":"LinkError","external":false,"refSections":[{"refs":[{"id":"ref-for-exceptiondef-linkerror"},{"id":"ref-for-exceptiondef-linkerror\u2460"},{"id":"ref-for-exceptiondef-linkerror\u2461"},{"id":"ref-for-exceptiondef-linkerror\u2462"},{"id":"ref-for-exceptiondef-linkerror\u2463"},{"id":"ref-for-exceptiondef-linkerror\u2464"},{"id":"ref-for-exceptiondef-linkerror\u2465"},{"id":"ref-for-exceptiondef-linkerror\u2466"},{"id":"ref-for-exceptiondef-linkerror\u2467"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-exceptiondef-linkerror\u2468"}],"title":"5.10. Error Objects"}],"url":"#exceptiondef-linkerror"},
"exceptiondef-runtimeerror": {"dfnID":"exceptiondef-runtimeerror","dfnText":"RuntimeError","external":false,"refSections":[{"refs":[{"id":"ref-for-exceptiondef-runtimeerror"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-exceptiondef-runtimeerror\u2460"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-exceptiondef-runtimeerror\u2461"}],"title":"5.10. Error Objects"},{"refs":[{"id":"ref-for-exceptiondef-runtimeerror\u2462"}],"title":"6.1.1. Abstract operations"},{"refs":[{"id":"ref-for-exceptiondef-runtimeerror\u2463"},{"id":"ref-for-exceptiondef-runtimeerror\u2464"}],"title":"6.1.4. fromCharCodeArray"},{"refs":[{"id":"ref-for-exceptiondef-runtimeerror\u2465"},{"id":"ref-for-exceptiondef-runtimeerror\u2466"}],"title":"6.1.5. intoCharCodeArray"},{"refs":[{"id":"ref-for-exceptiondef-runtimeerror\u2467"}],"title":"6.1.7. fromCodePoint"},{"refs":[{"id":"ref-for-exceptiondef-runtimeerror\u2468"}],"title":"6.1.8. charCodeAt"},{"refs":[{"id":"ref-for-exceptiondef-runtimeerror\u2460\u24ea"}],"title":"6.1.9. codePointAt"},{"refs":[{"id":"ref-for-exceptiondef-runtimeerror\u2460\u2460"},{"id":"ref-for-exceptiondef-runtimeerror\u2460\u2461"}],"title":"6.1.13. equals"},{"refs":[{"id":"ref-for-exceptiondef-runtimeerror\u2460\u2462"}],"title":"8. Implementation-defined Limits"}],"url":"#exceptiondef-runtimeerror"},
"exported-function": {"dfnID":"exported-function","dfnText":"Exported Function","external":false,"refSections":[{"refs":[{"id":"ref-for-exported-function"}],"title":"4.2. WebAssembly JS Object Caches"},{"refs":[{"id":"ref-for-exported-function\u2460"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-exported-function\u2461"}],"title":"5.6. Exported Functions"}],"url":"#exported-function"},
"exported-function-cache": {"dfnID":"exported-function-cache","dfnText":"Exported Function cache","external":false,"refSections":[{"refs":[{"id":"ref-for-exported-function-cache"}],"title":"5.6. Exported Functions"}],"url":"#exported-function-cache"},
"exported-gc-object": {"dfnID":"exported-gc-object","dfnText":"Exported GC Object","external":false,"refSections":[{"refs":[{"id":"ref-for-exported-gc-object"}],"title":"4.2. WebAssembly JS Object Caches"},{"refs":[{"id":"ref-for-exported-gc-object\u2460"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-exported-gc-object\u2461"},{"id":"ref-for-exported-gc-object\u2462"},{"id":"ref-for-exported-gc-object\u2463"},{"id":"ref-for-exported-gc-object\u2464"}],"title":"5.8. Garbage Collected Objects"}],"url":"#exported-gc-object"},
"exported-gc-object-cache": {"dfnID":"exported-gc-object-cache","dfnText":"Exported GC Object cache","external":false,"refSections":[{"refs":[{"id":"ref-for-exported-gc-object-cache"}],"title":"5.8. Garbage Collected Objects"}],"url":"#exported-gc-object-cache"},
"f02cd417": {"dfnID":"f02cd417","dfnText":"iterate (for list)","external":true,"refSections":[{"refs":[{"id":"ref-for-list-iterate"},{"id":"ref-for-list-iterate\u2460"},{"id":"ref-for-list-iterate\u2461"},{"id":"ref-for-list-iterate\u2462"},{"id":"ref-for-list-iterate\u2463"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-list-iterate\u2464"},{"id":"ref-for-list-iterate\u2465"},{"id":"ref-for-list-iterate\u2466"}],"title":"5.1. Modules"},{"refs":[{"id":"ref-for-list-iterate\u2467"},{"id":"ref-for-list-iterate\u2468"},{"id":"ref-for-list-iterate\u2460\u24ea"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-list-iterate\u2460\u2460"}],"title":"5.7.1. Tag types"},{"refs":[{"id":"ref-for-list-iterate\u2460\u2461"}],"title":"5.9. Exceptions"},{"refs":[{"id":"ref-for-list-iterate\u2460\u2462"}],"title":"5.10. Error Objects"},{"refs":[{"id":"ref-for-list-iterate\u2460\u2463"},{"id":"ref-for-list-iterate\u2460\u2464"},{"id":"ref-for-list-iterate\u2460\u2465"}],"title":"6. Builtins"}],"url":"https://infra.spec.whatwg.org/#list-iterate"},
"f0590fd3": {"dfnID":"f0590fd3","dfnText":"String.fromCharCode","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-string.fromcharcode"}],"title":"6.1.1. Abstract operations"}],"url":"https://tc39.github.io/ecma262/#sec-string.fromcharcode"},
"f06ddd8a": {"dfnID":"f06ddd8a","dfnText":"memaddrs","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-moduleinst"},{"id":"ref-for-syntax-moduleinst\u2460"}],"title":"5.3. Memories"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-moduleinst"},
"f0c8810c": {"dfnID":"f0c8810c","dfnText":"import","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-import"}],"title":"9. Security and Privacy Considerations"}],"url":"https://webassembly.github.io/spec/core/syntax/modules.html#syntax-import"},
"f14ed351": {"dfnID":"f14ed351","dfnText":"upon rejection","external":true,"refSections":[{"refs":[{"id":"ref-for-upon-rejection"},{"id":"ref-for-upon-rejection\u2460"}],"title":"5. The WebAssembly Namespace"}],"url":"https://webidl.spec.whatwg.org/#upon-rejection"},
"f17862f0": {"dfnID":"f17862f0","dfnText":"ArrayBuffer","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-arraybuffer-objects"},{"id":"ref-for-sec-arraybuffer-objects\u2460"}],"title":"5.1. Modules"},{"refs":[{"id":"ref-for-sec-arraybuffer-objects\u2461"},{"id":"ref-for-sec-arraybuffer-objects\u2462"},{"id":"ref-for-sec-arraybuffer-objects\u2463"},{"id":"ref-for-sec-arraybuffer-objects\u2464"},{"id":"ref-for-sec-arraybuffer-objects\u2465"},{"id":"ref-for-sec-arraybuffer-objects\u2466"},{"id":"ref-for-sec-arraybuffer-objects\u2467"},{"id":"ref-for-sec-arraybuffer-objects\u2468"}],"title":"5.3. Memories"}],"url":"https://tc39.github.io/ecma262/#sec-arraybuffer-objects"},
"f256859a": {"dfnID":"f256859a","dfnText":"UTF-8 decode without BOM or fail","external":true,"refSections":[{"refs":[{"id":"ref-for-utf-8-decode-without-bom-or-fail"}],"title":"5.1. Modules"}],"url":"https://encoding.spec.whatwg.org/#utf-8-decode-without-bom-or-fail"},
"f2ca6ec5": {"dfnID":"f2ca6ec5","dfnText":"IsStrictlyEqual","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-isstrictlyequal"}],"title":"6.1.13. equals"},{"refs":[{"id":"ref-for-sec-isstrictlyequal\u2460"}],"title":"6.1.14. compare"}],"url":"https://tc39.github.io/ecma262/#sec-isstrictlyequal"},
"f3597ae0": {"dfnID":"f3597ae0","dfnText":"exn_alloc","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-exn-alloc"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-embed-exn-alloc\u2460"}],"title":"5.9. Exceptions"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-exn-alloc"},
"f3aaa883": {"dfnID":"f3aaa883","dfnText":"module_validate","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-module-validate"}],"title":"5. The WebAssembly Namespace"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-module-validate"},
"f56c24ad": {"dfnID":"f56c24ad","dfnText":"imports","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-module"},{"id":"ref-for-syntax-module\u2460"}],"title":"5. The WebAssembly Namespace"}],"url":"https://webassembly.github.io/spec/core/syntax/modules.html#syntax-module"},
"f937b7b6": {"dfnID":"f937b7b6","dfnText":"continue","external":true,"refSections":[{"refs":[{"id":"ref-for-iteration-continue"},{"id":"ref-for-iteration-continue\u2460"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-iteration-continue\u2461"},{"id":"ref-for-iteration-continue\u2462"}],"title":"5.1. Modules"},{"refs":[{"id":"ref-for-iteration-continue\u2463"}],"title":"6. Builtins"}],"url":"https://infra.spec.whatwg.org/#iteration-continue"},
"f98ab0c2": {"dfnID":"f98ab0c2","dfnText":"LegacyNamespace","external":true,"refSections":[{"refs":[{"id":"ref-for-LegacyNamespace"}],"title":"5.1. Modules"},{"refs":[{"id":"ref-for-LegacyNamespace\u2460"}],"title":"5.2. Instances"},{"refs":[{"id":"ref-for-LegacyNamespace\u2461"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-LegacyNamespace\u2462"}],"title":"5.4. Tables"},{"refs":[{"id":"ref-for-LegacyNamespace\u2463"}],"title":"5.5. Globals"},{"refs":[{"id":"ref-for-LegacyNamespace\u2464"}],"title":"5.7.1. Tag types"},{"refs":[{"id":"ref-for-LegacyNamespace\u2465"}],"title":"5.9. Exceptions"}],"url":"https://webidl.spec.whatwg.org/#LegacyNamespace"},
"f9dbc1a8": {"dfnID":"f9dbc1a8","dfnText":"NativeError Object Structure","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-nativeerror-object-structure"}],"title":"5.10. Error Objects"}],"url":"https://tc39.github.io/ecma262/#sec-nativeerror-object-structure"},
"fa5c4242": {"dfnID":"fa5c4242","dfnText":"agent cluster","external":true,"refSections":[{"refs":[{"id":"ref-for-sec-agent-clusters"}],"title":"4.1. Interaction of the WebAssembly Store with JavaScript"}],"url":"https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#sec-agent-clusters"},
"fafc7354": {"dfnID":"fafc7354","dfnText":"struct address","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-structaddr"}],"title":"4.2. WebAssembly JS Object Caches"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-structaddr"},
"fbc61d3f": {"dfnID":"fbc61d3f","dfnText":"memory address","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-memaddr"}],"title":"4.2. WebAssembly JS Object Caches"},{"refs":[{"id":"ref-for-syntax-memaddr\u2460"},{"id":"ref-for-syntax-memaddr\u2461"},{"id":"ref-for-syntax-memaddr\u2462"},{"id":"ref-for-syntax-memaddr\u2463"},{"id":"ref-for-syntax-memaddr\u2464"},{"id":"ref-for-syntax-memaddr\u2465"}],"title":"5.3. Memories"}],"url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-memaddr"},
"fc0ee513": {"dfnID":"fc0ee513","dfnText":"global_alloc","external":true,"refSections":[{"refs":[{"id":"ref-for-embed-global-alloc"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-embed-global-alloc\u2460"}],"title":"5.5. Globals"}],"url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-global-alloc"},
"fcf11545": {"dfnID":"fcf11545","dfnText":"exception","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-tagtype"},{"id":"ref-for-syntax-tagtype\u2460"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-syntax-tagtype\u2461"}],"title":"5.9.1. JavaScript exceptions"}],"url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-tagtype"},
"fd73fa9f": {"dfnID":"fd73fa9f","dfnText":"signed_32","external":true,"refSections":[{"refs":[{"id":"ref-for-aux-signed"},{"id":"ref-for-aux-signed\u2460"},{"id":"ref-for-aux-signed\u2461"},{"id":"ref-for-aux-signed\u2462"},{"id":"ref-for-aux-signed\u2463"},{"id":"ref-for-aux-signed\u2464"}],"title":"5.6. Exported Functions"}],"url":"https://webassembly.github.io/spec/core/exec/numerics.html#aux-signed"},
"ffa3e8fc": {"dfnID":"ffa3e8fc","dfnText":"f64","external":true,"refSections":[{"refs":[{"id":"ref-for-syntax-numtype"},{"id":"ref-for-syntax-numtype\u2460"},{"id":"ref-for-syntax-numtype\u2461"},{"id":"ref-for-syntax-numtype\u2462"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-syntax-numtype\u2463"},{"id":"ref-for-syntax-numtype\u2464"},{"id":"ref-for-syntax-numtype\u2465"},{"id":"ref-for-syntax-numtype\u2466"}],"title":"5.5. Globals"},{"refs":[{"id":"ref-for-syntax-numtype\u2467"},{"id":"ref-for-syntax-numtype\u2468"},{"id":"ref-for-syntax-numtype\u2460\u24ea"},{"id":"ref-for-syntax-numtype\u2460\u2460"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-syntax-numtype\u2460\u2461"},{"id":"ref-for-syntax-numtype\u2460\u2462"}],"title":"6.1.1. Abstract operations"},{"refs":[{"id":"ref-for-syntax-numtype\u2460\u2463"}],"title":"BigInt Integration"}],"url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-numtype"},
"find-a-builtin": {"dfnID":"find-a-builtin","dfnText":"find a builtin","external":false,"refSections":[{"refs":[{"id":"ref-for-find-a-builtin"}],"title":"5.1. Modules"},{"refs":[{"id":"ref-for-find-a-builtin\u2460"}],"title":"6. Builtins"}],"url":"#find-a-builtin"},
"get-internal-method-of-an-exported-gc-object": {"dfnID":"get-internal-method-of-an-exported-gc-object","dfnText":"[[Get]] internal method of an Exported GC Object","external":false,"refSections":[{"refs":[{"id":"ref-for-get-internal-method-of-an-exported-gc-object"}],"title":"5.8. Garbage Collected Objects"}],"url":"#get-internal-method-of-an-exported-gc-object"},
"get-the-builtins-for-a-builtin-set": {"dfnID":"get-the-builtins-for-a-builtin-set","dfnText":"get the builtins for a builtin set","external":false,"refSections":[{"refs":[{"id":"ref-for-get-the-builtins-for-a-builtin-set"},{"id":"ref-for-get-the-builtins-for-a-builtin-set\u2460"}],"title":"6. Builtins"}],"url":"#get-the-builtins-for-a-builtin-set"},
"get-the-javascript-exception-tag": {"dfnID":"get-the-javascript-exception-tag","dfnText":"get the JavaScript exception tag","external":false,"refSections":[{"refs":[{"id":"ref-for-get-the-javascript-exception-tag"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-get-the-javascript-exception-tag\u2460"},{"id":"ref-for-get-the-javascript-exception-tag\u2461"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-get-the-javascript-exception-tag\u2462"}],"title":"5.9. Exceptions"}],"url":"#get-the-javascript-exception-tag"},
"getglobalvalue": {"dfnID":"getglobalvalue","dfnText":"GetGlobalValue","external":false,"refSections":[{"refs":[{"id":"ref-for-getglobalvalue"},{"id":"ref-for-getglobalvalue\u2460"}],"title":"5.5. Globals"}],"url":"#getglobalvalue"},
"getownproperty-internal-method-of-an-exported-gc-object": {"dfnID":"getownproperty-internal-method-of-an-exported-gc-object","dfnText":"[[GetOwnProperty]] internal method of an Exported GC Object","external":false,"refSections":[{"refs":[{"id":"ref-for-getownproperty-internal-method-of-an-exported-gc-object"}],"title":"5.8. Garbage Collected Objects"}],"url":"#getownproperty-internal-method-of-an-exported-gc-object"},
"getprototypeof-internal-method-of-an-exported-gc-object": {"dfnID":"getprototypeof-internal-method-of-an-exported-gc-object","dfnText":"[[GetPrototypeOf]] internal method of an Exported GC Object","external":false,"refSections":[{"refs":[{"id":"ref-for-getprototypeof-internal-method-of-an-exported-gc-object"}],"title":"5.8. Garbage Collected Objects"}],"url":"#getprototypeof-internal-method-of-an-exported-gc-object"},
"global": {"dfnID":"global","dfnText":"Global","external":false,"refSections":[{"refs":[{"id":"ref-for-global"}],"title":"4.2. WebAssembly JS Object Caches"},{"refs":[{"id":"ref-for-global\u2460"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-global\u2461"},{"id":"ref-for-global\u2462"},{"id":"ref-for-global\u2463"},{"id":"ref-for-global\u2464"},{"id":"ref-for-global\u2465"},{"id":"ref-for-global\u2466"}],"title":"5.5. Globals"}],"url":"#global"},
"global-object-cache": {"dfnID":"global-object-cache","dfnText":"Global object cache","external":false,"refSections":[{"refs":[{"id":"ref-for-global-object-cache"},{"id":"ref-for-global-object-cache\u2460"}],"title":"5.5. Globals"}],"url":"#global-object-cache"},
"grow-the-memory-buffer": {"dfnID":"grow-the-memory-buffer","dfnText":"grow the memory buffer","external":false,"refSections":[{"refs":[{"id":"ref-for-grow-the-memory-buffer"},{"id":"ref-for-grow-the-memory-buffer\u2460"}],"title":"5.3. Memories"}],"url":"#grow-the-memory-buffer"},
"hasproperty-internal-method-of-an-exported-gc-object": {"dfnID":"hasproperty-internal-method-of-an-exported-gc-object","dfnText":"[[HasProperty]] internal method of an Exported GC Object","external":false,"refSections":[{"refs":[{"id":"ref-for-hasproperty-internal-method-of-an-exported-gc-object"}],"title":"5.8. Garbage Collected Objects"}],"url":"#hasproperty-internal-method-of-an-exported-gc-object"},
"host-value-cache": {"dfnID":"host-value-cache","dfnText":"Host value cache","external":false,"refSections":[{"refs":[{"id":"ref-for-host-value-cache"},{"id":"ref-for-host-value-cache\u2460"}],"title":"5.6. Exported Functions"}],"url":"#host-value-cache"},
"identified-with": {"dfnID":"identified-with","dfnText":"identified with","external":false,"refSections":[{"refs":[{"id":"ref-for-identified-with"},{"id":"ref-for-identified-with\u2460"},{"id":"ref-for-identified-with\u2461"},{"id":"ref-for-identified-with\u2462"}],"title":"5.3. Memories"}],"url":"#identified-with"},
"index-of-the-host-function": {"dfnID":"index-of-the-host-function","dfnText":"index of the host function","external":false,"refSections":[{"refs":[{"id":"ref-for-index-of-the-host-function"}],"title":"5.6. Exported Functions"}],"url":"#index-of-the-host-function"},
"initialize-a-global-object": {"dfnID":"initialize-a-global-object","dfnText":"initialize a global object","external":false,"refSections":[{"refs":[{"id":"ref-for-initialize-a-global-object"},{"id":"ref-for-initialize-a-global-object\u2460"}],"title":"5.5. Globals"}],"url":"#initialize-a-global-object"},
"initialize-a-memory-object": {"dfnID":"initialize-a-memory-object","dfnText":"initialize a memory object","external":false,"refSections":[{"refs":[{"id":"ref-for-initialize-a-memory-object"},{"id":"ref-for-initialize-a-memory-object\u2460"}],"title":"5.3. Memories"}],"url":"#initialize-a-memory-object"},
"initialize-a-table-object": {"dfnID":"initialize-a-table-object","dfnText":"initialize a table object","external":false,"refSections":[{"refs":[{"id":"ref-for-initialize-a-table-object"},{"id":"ref-for-initialize-a-table-object\u2460"}],"title":"5.4. Tables"}],"url":"#initialize-a-table-object"},
"initialize-a-tag-object": {"dfnID":"initialize-a-tag-object","dfnText":"initialize a Tag object","external":false,"refSections":[{"refs":[{"id":"ref-for-initialize-a-tag-object"},{"id":"ref-for-initialize-a-tag-object\u2460"}],"title":"5.7.1. Tag types"}],"url":"#initialize-a-tag-object"},
"initialize-an-exception-object": {"dfnID":"initialize-an-exception-object","dfnText":"initialize an Exception object","external":false,"refSections":[{"refs":[{"id":"ref-for-initialize-an-exception-object"},{"id":"ref-for-initialize-an-exception-object\u2460"}],"title":"5.9. Exceptions"}],"url":"#initialize-an-exception-object"},
"initialize-an-instance-object": {"dfnID":"initialize-an-instance-object","dfnText":"initialize an instance object","external":false,"refSections":[{"refs":[{"id":"ref-for-initialize-an-instance-object"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-initialize-an-instance-object\u2460"}],"title":"5.2. Instances"}],"url":"#initialize-an-instance-object"},
"instance": {"dfnID":"instance","dfnText":"Instance","external":false,"refSections":[{"refs":[{"id":"ref-for-instance"},{"id":"ref-for-instance\u2460"},{"id":"ref-for-instance\u2461"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-instance\u2462"}],"title":"5.2. Instances"},{"refs":[{"id":"ref-for-instance\u2463"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-instance\u2464"}],"title":"5.4. Tables"},{"refs":[{"id":"ref-for-instance\u2465"}],"title":"5.5. Globals"}],"url":"#instance"},
"instantiate-a-builtin-set": {"dfnID":"instantiate-a-builtin-set","dfnText":"instantiate a builtin set","external":false,"refSections":[{"refs":[{"id":"ref-for-instantiate-a-builtin-set"}],"title":"5. The WebAssembly Namespace"}],"url":"#instantiate-a-builtin-set"},
"instantiate-a-promise-of-a-module": {"dfnID":"instantiate-a-promise-of-a-module","dfnText":"instantiate a promise of a module","external":false,"refSections":[{"refs":[{"id":"ref-for-instantiate-a-promise-of-a-module"}],"title":"5. The WebAssembly Namespace"}],"url":"#instantiate-a-promise-of-a-module"},
"instantiate-imported-strings": {"dfnID":"instantiate-imported-strings","dfnText":"instantiate imported strings","external":false,"refSections":[{"refs":[{"id":"ref-for-instantiate-imported-strings"}],"title":"5. The WebAssembly Namespace"}],"url":"#instantiate-imported-strings"},
"instantiate-the-core-of-a-webassembly-module": {"dfnID":"instantiate-the-core-of-a-webassembly-module","dfnText":"instantiate the core of a WebAssembly module","external":false,"refSections":[{"refs":[{"id":"ref-for-instantiate-the-core-of-a-webassembly-module"},{"id":"ref-for-instantiate-the-core-of-a-webassembly-module\u2460"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-instantiate-the-core-of-a-webassembly-module\u2461"}],"title":"5.2. Instances"}],"url":"#instantiate-the-core-of-a-webassembly-module"},
"isextensible-internal-method-of-an-exported-gc-object": {"dfnID":"isextensible-internal-method-of-an-exported-gc-object","dfnText":"[[IsExtensible]] internal method of an Exported GC Object","external":false,"refSections":[{"refs":[{"id":"ref-for-isextensible-internal-method-of-an-exported-gc-object"}],"title":"5.8. Garbage Collected Objects"}],"url":"#isextensible-internal-method-of-an-exported-gc-object"},
"javascript-exception-tag": {"dfnID":"javascript-exception-tag","dfnText":"JavaScript exception tag","external":false,"refSections":[{"refs":[{"id":"ref-for-javascript-exception-tag"},{"id":"ref-for-javascript-exception-tag\u2460"},{"id":"ref-for-javascript-exception-tag\u2461"}],"title":"5.9.1. JavaScript exceptions"}],"url":"#javascript-exception-tag"},
"memory": {"dfnID":"memory","dfnText":"Memory","external":false,"refSections":[{"refs":[{"id":"ref-for-memory"}],"title":"4.1. Interaction of the WebAssembly Store with JavaScript"},{"refs":[{"id":"ref-for-memory\u2460"}],"title":"4.2. WebAssembly JS Object Caches"},{"refs":[{"id":"ref-for-memory\u2461"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-memory\u2462"},{"id":"ref-for-memory\u2463"},{"id":"ref-for-memory\u2464"},{"id":"ref-for-memory\u2465"},{"id":"ref-for-memory\u2466"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-memory\u2467"}],"title":"7.2. Out of Memory"}],"url":"#memory"},
"memory-object-cache": {"dfnID":"memory-object-cache","dfnText":"Memory object cache","external":false,"refSections":[{"refs":[{"id":"ref-for-memory-object-cache"},{"id":"ref-for-memory-object-cache\u2460"},{"id":"ref-for-memory-object-cache\u2461"},{"id":"ref-for-memory-object-cache\u2462"}],"title":"5.3. Memories"}],"url":"#memory-object-cache"},
"module": {"dfnID":"module","dfnText":"Module","external":false,"refSections":[{"refs":[{"id":"ref-for-module"},{"id":"ref-for-module\u2460"},{"id":"ref-for-module\u2461"},{"id":"ref-for-module\u2462"},{"id":"ref-for-module\u2463"},{"id":"ref-for-module\u2464"},{"id":"ref-for-module\u2465"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-module\u2466"},{"id":"ref-for-module\u2467"},{"id":"ref-for-module\u2468"}],"title":"5.1. Modules"},{"refs":[{"id":"ref-for-module\u2460\u24ea"}],"title":"5.2. Instances"}],"url":"#module"},
"name-of-the-webassembly-function": {"dfnID":"name-of-the-webassembly-function","dfnText":"name of the WebAssembly function","external":false,"refSections":[{"refs":[{"id":"ref-for-name-of-the-webassembly-function"}],"title":"5.6. Exported Functions"}],"url":"#name-of-the-webassembly-function"},
"namespacedef-webassembly": {"dfnID":"namespacedef-webassembly","dfnText":"WebAssembly","external":false,"refSections":[{"refs":[{"id":"ref-for-namespacedef-webassembly"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-namespacedef-webassembly\u2460"}],"title":"5.1. Modules"},{"refs":[{"id":"ref-for-namespacedef-webassembly\u2461"}],"title":"5.2. Instances"},{"refs":[{"id":"ref-for-namespacedef-webassembly\u2462"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-namespacedef-webassembly\u2463"}],"title":"5.4. Tables"},{"refs":[{"id":"ref-for-namespacedef-webassembly\u2464"}],"title":"5.5. Globals"},{"refs":[{"id":"ref-for-namespacedef-webassembly\u2465"}],"title":"5.7.1. Tag types"},{"refs":[{"id":"ref-for-namespacedef-webassembly\u2466"}],"title":"5.9. Exceptions"},{"refs":[{"id":"ref-for-namespacedef-webassembly\u2467"},{"id":"ref-for-namespacedef-webassembly\u2468"}],"title":"5.10. Error Objects"}],"url":"#namespacedef-webassembly"},
"ownpropertykeys-internal-method-of-an-exported-gc-object": {"dfnID":"ownpropertykeys-internal-method-of-an-exported-gc-object","dfnText":"[[OwnPropertyKeys]] internal method of an Exported GC Object","external":false,"refSections":[{"refs":[{"id":"ref-for-ownpropertykeys-internal-method-of-an-exported-gc-object"}],"title":"5.8. Garbage Collected Objects"}],"url":"#ownpropertykeys-internal-method-of-an-exported-gc-object"},
"preventextensions-internal-method-of-an-exported-gc-object": {"dfnID":"preventextensions-internal-method-of-an-exported-gc-object","dfnText":"[[PreventExtensions]] internal method of an Exported GC Object","external":false,"refSections":[{"refs":[{"id":"ref-for-preventextensions-internal-method-of-an-exported-gc-object"}],"title":"5.8. Garbage Collected Objects"}],"url":"#preventextensions-internal-method-of-an-exported-gc-object"},
"read-the-imports": {"dfnID":"read-the-imports","dfnText":"read the imports","external":false,"refSections":[{"refs":[{"id":"ref-for-read-the-imports"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-read-the-imports\u2460"}],"title":"5.2. Instances"},{"refs":[{"id":"ref-for-read-the-imports\u2461"}],"title":"6. Builtins"},{"refs":[{"id":"ref-for-read-the-imports\u2462"}],"title":"9. Security and Privacy Considerations"}],"url":"#read-the-imports"},
"refresh-the-memory-buffer": {"dfnID":"refresh-the-memory-buffer","dfnText":"refresh the Memory buffer","external":false,"refSections":[{"refs":[{"id":"ref-for-refresh-the-memory-buffer"},{"id":"ref-for-refresh-the-memory-buffer\u2460"}],"title":"5.3. Memories"}],"url":"#refresh-the-memory-buffer"},
"retrieving-a-host-value": {"dfnID":"retrieving-a-host-value","dfnText":"retrieving a host value","external":false,"refSections":[{"refs":[{"id":"ref-for-retrieving-a-host-value"},{"id":"ref-for-retrieving-a-host-value\u2460"}],"title":"5.6. Exported Functions"}],"url":"#retrieving-a-host-value"},
"run-a-host-function": {"dfnID":"run-a-host-function","dfnText":"run a host function","external":false,"refSections":[{"refs":[{"id":"ref-for-run-a-host-function"}],"title":"5.6. Exported Functions"}],"url":"#run-a-host-function"},
"set-internal-method-of-an-exported-gc-object": {"dfnID":"set-internal-method-of-an-exported-gc-object","dfnText":"[[Set]] internal method of an Exported GC Object","external":false,"refSections":[{"refs":[{"id":"ref-for-set-internal-method-of-an-exported-gc-object"}],"title":"5.8. Garbage Collected Objects"}],"url":"#set-internal-method-of-an-exported-gc-object"},
"setprototypeof-internal-method-of-an-exported-gc-object": {"dfnID":"setprototypeof-internal-method-of-an-exported-gc-object","dfnText":"[[SetPrototypeOf]] internal method of an Exported GC Object","external":false,"refSections":[{"refs":[{"id":"ref-for-setprototypeof-internal-method-of-an-exported-gc-object"}],"title":"5.8. Garbage Collected Objects"}],"url":"#setprototypeof-internal-method-of-an-exported-gc-object"},
"string-value-of-the-extern-type": {"dfnID":"string-value-of-the-extern-type","dfnText":"string value of the extern type","external":false,"refSections":[{"refs":[{"id":"ref-for-string-value-of-the-extern-type"},{"id":"ref-for-string-value-of-the-extern-type\u2460"}],"title":"5.1. Modules"}],"url":"#string-value-of-the-extern-type"},
"table": {"dfnID":"table","dfnText":"Table","external":false,"refSections":[{"refs":[{"id":"ref-for-table"}],"title":"4.2. WebAssembly JS Object Caches"},{"refs":[{"id":"ref-for-table\u2460"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-table\u2461"},{"id":"ref-for-table\u2462"},{"id":"ref-for-table\u2463"},{"id":"ref-for-table\u2464"}],"title":"5.4. Tables"},{"refs":[{"id":"ref-for-table\u2465"}],"title":"7.2. Out of Memory"}],"url":"#table"},
"table-object-cache": {"dfnID":"table-object-cache","dfnText":"Table object cache","external":false,"refSections":[{"refs":[{"id":"ref-for-table-object-cache"},{"id":"ref-for-table-object-cache\u2460"}],"title":"5.4. Tables"}],"url":"#table-object-cache"},
"tag": {"dfnID":"tag","dfnText":"Tag","external":false,"refSections":[{"refs":[{"id":"ref-for-tag"}],"title":"4.2. WebAssembly JS Object Caches"},{"refs":[{"id":"ref-for-tag\u2460"},{"id":"ref-for-tag\u2461"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-tag\u2462"},{"id":"ref-for-tag\u2463"}],"title":"5.7.1. Tag types"},{"refs":[{"id":"ref-for-tag\u2464"},{"id":"ref-for-tag\u2465"}],"title":"5.9. Exceptions"}],"url":"#tag"},
"tag-object-cache": {"dfnID":"tag-object-cache","dfnText":"Tag object cache","external":false,"refSections":[{"refs":[{"id":"ref-for-tag-object-cache"},{"id":"ref-for-tag-object-cache\u2460"}],"title":"5.7.1. Tag types"}],"url":"#tag-object-cache"},
"tag_alloc": {"dfnID":"tag_alloc","dfnText":"tag_alloc","external":false,"refSections":[{"refs":[{"id":"ref-for-tag_alloc"}],"title":"5.7.1. Tag types"},{"refs":[{"id":"ref-for-tag_alloc\u2460"}],"title":"5.9.1. JavaScript exceptions"}],"url":"#tag_alloc"},
"tojsvalue": {"dfnID":"tojsvalue","dfnText":"ToJSValue","external":false,"refSections":[{"refs":[{"id":"ref-for-tojsvalue"}],"title":"5.4. Tables"},{"refs":[{"id":"ref-for-tojsvalue\u2460"}],"title":"5.5. Globals"},{"refs":[{"id":"ref-for-tojsvalue\u2461"},{"id":"ref-for-tojsvalue\u2462"},{"id":"ref-for-tojsvalue\u2463"},{"id":"ref-for-tojsvalue\u2464"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-tojsvalue\u2465"}],"title":"5.9. Exceptions"},{"refs":[{"id":"ref-for-tojsvalue\u2466"},{"id":"ref-for-tojsvalue\u2467"}],"title":"6.1.1. Abstract operations"},{"refs":[{"id":"ref-for-tojsvalue\u2468"}],"title":"6.1.7. fromCodePoint"},{"refs":[{"id":"ref-for-tojsvalue\u2460\u24ea"}],"title":"6.1.9. codePointAt"},{"refs":[{"id":"ref-for-tojsvalue\u2460\u2460"},{"id":"ref-for-tojsvalue\u2460\u2461"}],"title":"6.1.12. substring"}],"url":"#tojsvalue"},
"tovaluetype": {"dfnID":"tovaluetype","dfnText":"ToValueType","external":false,"refSections":[{"refs":[{"id":"ref-for-tovaluetype"}],"title":"5.4. Tables"},{"refs":[{"id":"ref-for-tovaluetype\u2460"}],"title":"5.5. Globals"},{"refs":[{"id":"ref-for-tovaluetype\u2461"}],"title":"5.7.1. Tag types"}],"url":"#tovaluetype"},
"towebassemblyvalue": {"dfnID":"towebassemblyvalue","dfnText":"ToWebAssemblyValue","external":false,"refSections":[{"refs":[{"id":"ref-for-towebassemblyvalue"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-towebassemblyvalue\u2460"},{"id":"ref-for-towebassemblyvalue\u2461"},{"id":"ref-for-towebassemblyvalue\u2462"}],"title":"5.4. Tables"},{"refs":[{"id":"ref-for-towebassemblyvalue\u2463"},{"id":"ref-for-towebassemblyvalue\u2464"},{"id":"ref-for-towebassemblyvalue\u2465"}],"title":"5.5. Globals"},{"refs":[{"id":"ref-for-towebassemblyvalue\u2466"},{"id":"ref-for-towebassemblyvalue\u2467"},{"id":"ref-for-towebassemblyvalue\u2468"},{"id":"ref-for-towebassemblyvalue\u2460\u24ea"},{"id":"ref-for-towebassemblyvalue\u2460\u2460"}],"title":"5.6. Exported Functions"},{"refs":[{"id":"ref-for-towebassemblyvalue\u2460\u2461"}],"title":"5.9. Exceptions"},{"refs":[{"id":"ref-for-towebassemblyvalue\u2460\u2462"}],"title":"6.1.5. intoCharCodeArray"}],"url":"#towebassemblyvalue"},
"typedefdef-addressvalue": {"dfnID":"typedefdef-addressvalue","dfnText":"AddressValue","external":false,"refSections":[{"refs":[{"id":"ref-for-typedefdef-addressvalue"},{"id":"ref-for-typedefdef-addressvalue\u2460"},{"id":"ref-for-typedefdef-addressvalue\u2461"},{"id":"ref-for-typedefdef-addressvalue\u2462"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-typedefdef-addressvalue\u2463"},{"id":"ref-for-typedefdef-addressvalue\u2464"},{"id":"ref-for-typedefdef-addressvalue\u2465"},{"id":"ref-for-typedefdef-addressvalue\u2466"},{"id":"ref-for-typedefdef-addressvalue\u2467"},{"id":"ref-for-typedefdef-addressvalue\u2468"},{"id":"ref-for-typedefdef-addressvalue\u2460\u24ea"}],"title":"5.4. Tables"},{"refs":[{"id":"ref-for-typedefdef-addressvalue\u2460\u2460"}],"title":"5.6. Exported Functions"}],"url":"#typedefdef-addressvalue"},
"u64toaddressvalue": {"dfnID":"u64toaddressvalue","dfnText":"U64ToAddressValue","external":false,"refSections":[{"refs":[{"id":"ref-for-u64toaddressvalue"}],"title":"5.3. Memories"},{"refs":[{"id":"ref-for-u64toaddressvalue\u2460"}],"title":"5.4. Tables"}],"url":"#u64toaddressvalue"},
"validate-an-import-for-builtins": {"dfnID":"validate-an-import-for-builtins","dfnText":"validate an import for builtins","external":false,"refSections":[{"refs":[{"id":"ref-for-validate-an-import-for-builtins"}],"title":"5. The WebAssembly Namespace"}],"url":"#validate-an-import-for-builtins"},
"validate-builtin-set-names": {"dfnID":"validate-builtin-set-names","dfnText":"validate builtin set names","external":false,"refSections":[{"refs":[{"id":"ref-for-validate-builtin-set-names"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-validate-builtin-set-names\u2460"},{"id":"ref-for-validate-builtin-set-names\u2461"}],"title":"6. Builtins"}],"url":"#validate-builtin-set-names"},
"validate-builtins-and-imported-string-for-a-webassembly-module": {"dfnID":"validate-builtins-and-imported-string-for-a-webassembly-module","dfnText":"validate builtins and imported string for a WebAssembly module","external":false,"refSections":[{"refs":[{"id":"ref-for-validate-builtins-and-imported-string-for-a-webassembly-module"},{"id":"ref-for-validate-builtins-and-imported-string-for-a-webassembly-module\u2460"}],"title":"5. The WebAssembly Namespace"},{"refs":[{"id":"ref-for-validate-builtins-and-imported-string-for-a-webassembly-module\u2461"}],"title":"5.1. Modules"}],"url":"#validate-builtins-and-imported-string-for-a-webassembly-module"},
};
document.addEventListener("DOMContentLoaded", ()=>{
genAllDfnPanels();
document.body.addEventListener("click", (e) => {
// If not handled already, just hide all dfn panels.
hideAllDfnPanels();
});
});
window.addEventListener("resize", () => {
// Pin any visible dfn panel
queryAll(".dfn-panel.on, .dfn-panel.activated").forEach(el=>positionDfnPanel(el));
});
function genAllDfnPanels() {
for(const panelData of Object.values(dfnPanelData)) {
const dfnID = panelData.dfnID;
const dfn = document.getElementById(dfnID);
if(!dfn) {
console.log(`Can't find dfn#${dfnID}.`, panelData);
continue;
}
dfn.panelData = panelData;
insertDfnPopupAction(dfn);
}
}
function genDfnPanel(dfn, { dfnID, url, dfnText, refSections, external }) {
const dfnPanel = mk.aside({
class: "dfn-panel on",
id: `infopanel-for-${dfnID}`,
"data-for": dfnID,
"aria-labelled-by":`infopaneltitle-for-${dfnID}`,
},
mk.span({id:`infopaneltitle-for-${dfnID}`, style:"display:none"},
`Info about the '${dfnText}' ${external?"external":""} reference.`),
mk.a({href:url, class:"dfn-link"}, url),
refSections.length == 0 ? [] :
mk.b({}, "Referenced in:"),
mk.ul({},
...refSections.map(section=>
mk.li({},
...section.refs.map((ref, refI)=>
[
mk.a({ href: `#${ref.id}` },
(refI == 0) ? section.title : `(${refI + 1})`
),
" ",
]
),
),
),
),
genLinkingSyntaxes(dfn),
);
dfnPanel.addEventListener('click', (event) => {
if (event.target.nodeName == 'A') {
scrollToTargetAndHighlight(event);
pinDfnPanel(dfnPanel);
}
event.stopPropagation();
refocusOnTarget(event);
});
dfnPanel.addEventListener('keydown', (event) => {
if(event.keyCode == 27) { // Escape key
hideDfnPanel({dfnPanel});
event.stopPropagation();
event.preventDefault();
}
});
dfnPanel.dfn = dfn;
dfn.dfnPanel = dfnPanel;
return dfnPanel;
}
function hideAllDfnPanels() {
// Delete the currently-active dfn panel.
queryAll(".dfn-panel").forEach(dfnPanel=>hideDfnPanel({dfnPanel}));
}
function showDfnPanel(dfn) {
hideAllDfnPanels(); // Only display one at a time.
dfn.setAttribute("aria-expanded", "true");
const dfnPanel = genDfnPanel(dfn, dfn.panelData);
// Give the dfn a unique tabindex, and then
// give all the tabbable panel bits successive indexes.
let tabIndex = 100;
dfn.tabIndex = tabIndex++;
const tabbable = dfnPanel.querySelectorAll(":is(a, button)");
for (const el of tabbable) {
el.tabIndex = tabIndex++;
}
append(document.body, dfnPanel);
positionDfnPanel(dfnPanel);
}
function positionDfnPanel(dfnPanel) {
const dfn = dfnPanel.dfn;
const dfnPos = getBounds(dfn);
dfnPanel.style.top = dfnPos.bottom + "px";
dfnPanel.style.left = dfnPos.left + "px";
const panelPos = dfnPanel.getBoundingClientRect();
const panelMargin = 8;
const maxRight = document.body.parentNode.clientWidth - panelMargin;
if (panelPos.right > maxRight) {
const overflowAmount = panelPos.right - maxRight;
const newLeft = Math.max(panelMargin, dfnPos.left - overflowAmount);
dfnPanel.style.left = newLeft + "px";
}
}
function pinDfnPanel(dfnPanel) {
// Switch it to "activated" state, which pins it.
dfnPanel.classList.add("activated");
dfnPanel.style.position = "fixed";
dfnPanel.style.left = null;
dfnPanel.style.top = null;
}
function hideDfnPanel({dfn, dfnPanel}) {
if(!dfnPanel) dfnPanel = dfn.dfnPanel;
if(!dfn) dfn = dfnPanel.dfn;
dfn.dfnPanel = undefined;
dfnPanel.dfn = undefined;
dfn.setAttribute("aria-expanded", "false");
dfn.tabIndex = undefined;
dfnPanel.remove()
}
function toggleDfnPanel(dfn) {
if(dfn.dfnPanel) {
hideDfnPanel(dfn);
} else {
showDfnPanel(dfn);
}
}
function insertDfnPopupAction(dfn) {
dfn.setAttribute('role', 'button');
dfn.setAttribute('aria-expanded', 'false')
dfn.tabIndex = 0;
dfn.classList.add('has-dfn-panel');
dfn.addEventListener('click', (event) => {
toggleDfnPanel(dfn);
event.stopPropagation();
});
dfn.addEventListener('keypress', (event) => {
const kc = event.keyCode;
// 32->Space, 13->Enter
if(kc == 32 || kc == 13) {
toggleDfnPanel(dfn);
event.stopPropagation();
event.preventDefault();
}
});
}
function refocusOnTarget(event) {
const target = event.target;
setTimeout(() => {
// Refocus on the event.target element.
// This is needed after browser scrolls to the destination.
target.focus();
});
}
// TODO: shared util
// Returns the root-level absolute position {left and top} of element.
function getBounds(el, relativeTo=document.body) {
const relativeRect = relativeTo.getBoundingClientRect();
const elRect = el.getBoundingClientRect();
const top = elRect.top - relativeRect.top;
const left = elRect.left - relativeRect.left;
return {
top,
left,
bottom: top + elRect.height,
right: left + elRect.width,
}
}
function scrollToTargetAndHighlight(event) {
let hash = event.target.hash;
if (hash) {
hash = decodeURIComponent(hash.substring(1));
const dest = document.getElementById(hash);
if (dest) {
dest.classList.add('highlighted');
setTimeout(() => dest.classList.remove('highlighted'), 1000);
}
}
}
// Functions, divided by link type, that wrap an autolink's
// contents with the appropriate outer syntax.
// Alternately, a string naming another type they format
// the same as.
function needsFor(type) {
switch(type) {
case "descriptor":
case "value":
case "element-attr":
case "attr-value":
case "element-state":
case "method":
case "constructor":
case "argument":
case "attribute":
case "const":
case "dict-member":
case "event":
case "enum-value":
case "stringifier":
case "serializer":
case "iterator":
case "maplike":
case "setlike":
case "state":
case "mode":
case "context":
case "facet": return true;
default: return false;
}
}
function refusesFor(type) {
switch(type) {
case "property":
case "element":
case "interface":
case "namespace":
case "callback":
case "dictionary":
case "enum":
case "exception":
case "typedef":
case "http-header":
case "permission": return true;
default: return false;
}
}
function linkFormatterFromType(type) {
switch(type) {
case 'scheme':
case 'permission':
case 'dfn': return (text) => `[=${text}=]`;
case 'abstract-op': return (text) => `[\$${text}\$]`;
case 'function':
case 'at-rule':
case 'selector':
case 'value': return (text) => `''${text}''`;
case 'http-header': return (text) => `[:${text}:]`;
case 'interface':
case 'constructor':
case 'method':
case 'argument':
case 'attribute':
case 'callback':
case 'dictionary':
case 'dict-member':
case 'enum':
case 'enum-value':
case 'exception':
case 'const':
case 'typedef':
case 'stringifier':
case 'serializer':
case 'iterator':
case 'maplike':
case 'setlike':
case 'extended-attribute':
case 'event':
case 'idl': return (text) => `{{${text}}}`;
case 'element-state':
case 'element-attr':
case 'attr-value':
case 'element': return (element) => `<{${element}}>`;
case 'grammar': return (text) => `${text} (within a <pre class=prod>)`;
case 'type': return (text)=> `<<${text}>>`;
case 'descriptor':
case 'property': return (text) => `'${text}'`;
default: return;
};
};
function genLinkingSyntaxes(dfn) {
if(dfn.tagName != "DFN") return;
const type = dfn.getAttribute('data-dfn-type');
if(!type) {
console.log(`<dfn> doesn't have a data-dfn-type:`, dfn);
return [];
}
// Return a function that wraps link text based on the type
const linkFormatter = linkFormatterFromType(type);
if(!linkFormatter) {
console.log(`<dfn> has an unknown data-dfn-type:`, dfn);
return [];
}
let ltAlts;
if(dfn.hasAttribute('data-lt')) {
ltAlts = dfn.getAttribute('data-lt')
.split("|")
.map(x=>x.trim());
} else {
ltAlts = [dfn.textContent.trim()];
}
if(type == "type") {
// lt of "<foo>", but "foo" is the interior;
// <<foo/bar>> is how you write it with a for,
// not <foo/<bar>> or whatever.
for(var i = 0; i < ltAlts.length; i++) {
const lt = ltAlts[i];
const match = /<(.*)>/.exec(lt);
if(match) { ltAlts[i] = match[1]; }
}
}
let forAlts;
if(dfn.hasAttribute('data-dfn-for')) {
forAlts = dfn.getAttribute('data-dfn-for')
.split(",")
.map(x=>x.trim());
} else {
forAlts = [''];
}
let linkingSyntaxes = [];
if(!needsFor(type)) {
for(const lt of ltAlts) {
linkingSyntaxes.push(linkFormatter(lt));
}
}
if(!refusesFor(type)) {
for(const f of forAlts) {
linkingSyntaxes.push(linkFormatter(`${f}/${ltAlts[0]}`))
}
}
return [
mk.b({}, 'Possible linking syntaxes:'),
mk.ul({},
...linkingSyntaxes.map(link => {
const copyLink = async () =>
await navigator.clipboard.writeText(link);
return mk.li({},
mk.div({ class: 'link-item' },
mk.button({
class: 'copy-icon', title: 'Copy',
type: 'button',
_onclick: copyLink,
tabindex: 0,
}, mk.span({ class: 'icon' }) ),
mk.span({}, link)
)
);
})
)
];
}
}
</script>
<script>/* Boilerplate: script-ref-hints */
"use strict";
{
let refsData = {
"#a-new-exported-function": {"displayText":"a new exported function","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"a new exported function","type":"dfn","url":"#a-new-exported-function"},
"#a-new-exported-gc-object": {"displayText":"a new exported gc object","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"a new exported gc object","type":"dfn","url":"#a-new-exported-gc-object"},
"#abstract-opdef-charcodeat": {"displayText":"CharCodeAt","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"CharCodeAt","type":"abstract-op","url":"#abstract-opdef-charcodeat"},
"#abstract-opdef-fromcharcode": {"displayText":"FromCharCode","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"FromCharCode","type":"abstract-op","url":"#abstract-opdef-fromcharcode"},
"#abstract-opdef-unwrapstring": {"displayText":"UnwrapString","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"UnwrapString","type":"abstract-op","url":"#abstract-opdef-unwrapstring"},
"#addressvaluetou64": {"displayText":"addressvaluetou64","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"addressvaluetou64","type":"dfn","url":"#addressvaluetou64"},
"#associated-store": {"displayText":"associated store","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"associated store","type":"dfn","url":"#associated-store"},
"#asynchronously-compile-a-webassembly-module": {"displayText":"asynchronously compile a webassembly module","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"asynchronously compile a webassembly module","type":"dfn","url":"#asynchronously-compile-a-webassembly-module"},
"#asynchronously-instantiate-a-webassembly-module": {"displayText":"asynchronously instantiate a webassembly module","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"asynchronously instantiate a webassembly module","type":"dfn","url":"#asynchronously-instantiate-a-webassembly-module"},
"#builtin-set-name": {"displayText":"name","export":true,"for_":["builtin-set"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"name","type":"dfn","url":"#builtin-set-name"},
"#builtin-set-qualified-name": {"displayText":"qualified name","export":true,"for_":["builtin-set"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"qualified name","type":"dfn","url":"#builtin-set-qualified-name"},
"#call-an-exported-function": {"displayText":"call an exported function","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"call an exported function","type":"dfn","url":"#call-an-exported-function"},
"#compile-a-webassembly-module": {"displayText":"compile a webassembly module","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"compile a webassembly module","type":"dfn","url":"#compile-a-webassembly-module"},
"#construct-a-webassembly-module-object": {"displayText":"construct a webassembly module object","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"construct a webassembly module object","type":"dfn","url":"#construct-a-webassembly-module-object"},
"#create-a-builtin-function": {"displayText":"create a builtin function","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"create a builtin function","type":"dfn","url":"#create-a-builtin-function"},
"#create-a-fixed-length-memory-buffer": {"displayText":"create a fixed length memory buffer","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"create a fixed length memory buffer","type":"dfn","url":"#create-a-fixed-length-memory-buffer"},
"#create-a-global-object": {"displayText":"create a global object","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"create a global object","type":"dfn","url":"#create-a-global-object"},
"#create-a-host-function": {"displayText":"create a host function","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"create a host function","type":"dfn","url":"#create-a-host-function"},
"#create-a-memory-object": {"displayText":"create a memory object","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"create a memory object","type":"dfn","url":"#create-a-memory-object"},
"#create-a-resizable-memory-buffer": {"displayText":"create a resizable memory buffer","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"create a resizable memory buffer","type":"dfn","url":"#create-a-resizable-memory-buffer"},
"#create-a-table-object": {"displayText":"create a table object","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"create a table object","type":"dfn","url":"#create-a-table-object"},
"#create-a-tag-object": {"displayText":"create a tag object","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"create a tag object","type":"dfn","url":"#create-a-tag-object"},
"#create-an-exception-object": {"displayText":"create an exception object","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"create an exception object","type":"dfn","url":"#create-an-exception-object"},
"#create-an-exports-object": {"displayText":"create an exports object","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"create an exports object","type":"dfn","url":"#create-an-exports-object"},
"#defaultvalue": {"displayText":"defaultvalue","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"defaultvalue","type":"dfn","url":"#defaultvalue"},
"#defineownproperty-internal-method-of-an-exported-gc-object": {"displayText":"[[defineownproperty]] internal method of an exported gc object","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"[[defineownproperty]] internal method of an exported gc object","type":"dfn","url":"#defineownproperty-internal-method-of-an-exported-gc-object"},
"#delete-internal-method-of-an-exported-gc-object": {"displayText":"[[delete]] internal method of an exported gc object","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"[[delete]] internal method of an exported gc object","type":"dfn","url":"#delete-internal-method-of-an-exported-gc-object"},
"#dictdef-exceptionoptions": {"displayText":"ExceptionOptions","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"ExceptionOptions","type":"dictionary","url":"#dictdef-exceptionoptions"},
"#dictdef-globaldescriptor": {"displayText":"GlobalDescriptor","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"GlobalDescriptor","type":"dictionary","url":"#dictdef-globaldescriptor"},
"#dictdef-memorydescriptor": {"displayText":"MemoryDescriptor","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"MemoryDescriptor","type":"dictionary","url":"#dictdef-memorydescriptor"},
"#dictdef-moduleexportdescriptor": {"displayText":"ModuleExportDescriptor","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"ModuleExportDescriptor","type":"dictionary","url":"#dictdef-moduleexportdescriptor"},
"#dictdef-moduleimportdescriptor": {"displayText":"ModuleImportDescriptor","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"ModuleImportDescriptor","type":"dictionary","url":"#dictdef-moduleimportdescriptor"},
"#dictdef-tabledescriptor": {"displayText":"TableDescriptor","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"TableDescriptor","type":"dictionary","url":"#dictdef-tabledescriptor"},
"#dictdef-tagtype": {"displayText":"TagType","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"TagType","type":"dictionary","url":"#dictdef-tagtype"},
"#dictdef-webassemblycompileoptions": {"displayText":"WebAssemblyCompileOptions","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"WebAssemblyCompileOptions","type":"dictionary","url":"#dictdef-webassemblycompileoptions"},
"#dictdef-webassemblyinstantiatedsource": {"displayText":"WebAssemblyInstantiatedSource","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"WebAssemblyInstantiatedSource","type":"dictionary","url":"#dictdef-webassemblyinstantiatedsource"},
"#dom-exception-exception": {"displayText":"Exception(exceptionTag, payload, options)","export":true,"for_":["Exception"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"Exception(exceptionTag, payload, options)","type":"constructor","url":"#dom-exception-exception"},
"#dom-exception-getarg": {"displayText":"getArg(index)","export":true,"for_":["Exception"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"getArg(index)","type":"method","url":"#dom-exception-getarg"},
"#dom-exception-is": {"displayText":"is(exceptionTag)","export":true,"for_":["Exception"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"is(exceptionTag)","type":"method","url":"#dom-exception-is"},
"#dom-exception-stack": {"displayText":"stack","export":true,"for_":["Exception"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"stack","type":"attribute","url":"#dom-exception-stack"},
"#dom-global-global": {"displayText":"Global(descriptor, v)","export":true,"for_":["Global"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"Global(descriptor, v)","type":"constructor","url":"#dom-global-global"},
"#dom-global-value": {"displayText":"value","export":true,"for_":["Global"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"value","type":"attribute","url":"#dom-global-value"},
"#dom-global-valueof": {"displayText":"valueOf()","export":true,"for_":["Global"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"valueOf()","type":"method","url":"#dom-global-valueof"},
"#dom-instance-exports": {"displayText":"exports","export":true,"for_":["Instance"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"exports","type":"attribute","url":"#dom-instance-exports"},
"#dom-instance-instance": {"displayText":"Instance(module, importObject)","export":true,"for_":["Instance"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"Instance(module, importObject)","type":"constructor","url":"#dom-instance-instance"},
"#dom-memory-buffer": {"displayText":"buffer","export":true,"for_":["Memory"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"buffer","type":"attribute","url":"#dom-memory-buffer"},
"#dom-memory-grow": {"displayText":"grow(delta)","export":true,"for_":["Memory"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"grow(delta)","type":"method","url":"#dom-memory-grow"},
"#dom-memory-memory": {"displayText":"Memory(descriptor)","export":true,"for_":["Memory"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"Memory(descriptor)","type":"constructor","url":"#dom-memory-memory"},
"#dom-memory-tofixedlengthbuffer": {"displayText":"toFixedLengthBuffer()","export":true,"for_":["Memory"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"toFixedLengthBuffer()","type":"method","url":"#dom-memory-tofixedlengthbuffer"},
"#dom-memory-toresizablebuffer": {"displayText":"toResizableBuffer()","export":true,"for_":["Memory"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"toResizableBuffer()","type":"method","url":"#dom-memory-toresizablebuffer"},
"#dom-module-customsections": {"displayText":"customSections(moduleObject, sectionName)","export":true,"for_":["Module"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"customSections(moduleObject, sectionName)","type":"method","url":"#dom-module-customsections"},
"#dom-module-exports": {"displayText":"exports(moduleObject)","export":true,"for_":["Module"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"exports(moduleObject)","type":"method","url":"#dom-module-exports"},
"#dom-module-imports": {"displayText":"imports(moduleObject)","export":true,"for_":["Module"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"imports(moduleObject)","type":"method","url":"#dom-module-imports"},
"#dom-module-module": {"displayText":"Module(bytes, options)","export":true,"for_":["Module"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"Module(bytes, options)","type":"constructor","url":"#dom-module-module"},
"#dom-moduleexportdescriptor-kind": {"displayText":"kind","export":true,"for_":["ModuleExportDescriptor"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"kind","type":"dict-member","url":"#dom-moduleexportdescriptor-kind"},
"#dom-moduleexportdescriptor-name": {"displayText":"name","export":true,"for_":["ModuleExportDescriptor"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"name","type":"dict-member","url":"#dom-moduleexportdescriptor-name"},
"#dom-moduleimportdescriptor-kind": {"displayText":"kind","export":true,"for_":["ModuleImportDescriptor"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"kind","type":"dict-member","url":"#dom-moduleimportdescriptor-kind"},
"#dom-moduleimportdescriptor-module": {"displayText":"module","export":true,"for_":["ModuleImportDescriptor"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"module","type":"dict-member","url":"#dom-moduleimportdescriptor-module"},
"#dom-moduleimportdescriptor-name": {"displayText":"name","export":true,"for_":["ModuleImportDescriptor"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"name","type":"dict-member","url":"#dom-moduleimportdescriptor-name"},
"#dom-table-get": {"displayText":"get(index)","export":true,"for_":["Table"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"get(index)","type":"method","url":"#dom-table-get"},
"#dom-table-grow": {"displayText":"grow(delta, value)","export":true,"for_":["Table"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"grow(delta, value)","type":"method","url":"#dom-table-grow"},
"#dom-table-length": {"displayText":"length","export":true,"for_":["Table"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"length","type":"attribute","url":"#dom-table-length"},
"#dom-table-set": {"displayText":"set(index, value)","export":true,"for_":["Table"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"set(index, value)","type":"method","url":"#dom-table-set"},
"#dom-table-table": {"displayText":"Table(descriptor, value)","export":true,"for_":["Table"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"Table(descriptor, value)","type":"constructor","url":"#dom-table-table"},
"#dom-tag-tag": {"displayText":"Tag(type)","export":true,"for_":["Tag"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"Tag(type)","type":"constructor","url":"#dom-tag-tag"},
"#dom-webassembly-compile": {"displayText":"compile(bytes, options)","export":true,"for_":["WebAssembly"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"compile(bytes, options)","type":"method","url":"#dom-webassembly-compile"},
"#dom-webassembly-instantiate": {"displayText":"instantiate(bytes, importObject, options)","export":true,"for_":["WebAssembly"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"instantiate(bytes, importObject, options)","type":"method","url":"#dom-webassembly-instantiate"},
"#dom-webassembly-instantiate-moduleobject-importobject": {"displayText":"instantiate(moduleObject, importObject)","export":true,"for_":["WebAssembly"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"instantiate(moduleObject, importObject)","type":"method","url":"#dom-webassembly-instantiate-moduleobject-importobject"},
"#dom-webassembly-jstag": {"displayText":"JSTag","export":true,"for_":["WebAssembly"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"JSTag","type":"attribute","url":"#dom-webassembly-jstag"},
"#dom-webassembly-validate": {"displayText":"validate(bytes, options)","export":true,"for_":["WebAssembly"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"validate(bytes, options)","type":"method","url":"#dom-webassembly-validate"},
"#dom-webassemblyinstantiatedsource-instance": {"displayText":"instance","export":true,"for_":["WebAssemblyInstantiatedSource"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"instance","type":"dict-member","url":"#dom-webassemblyinstantiatedsource-instance"},
"#dom-webassemblyinstantiatedsource-module": {"displayText":"module","export":true,"for_":["WebAssemblyInstantiatedSource"],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"module","type":"dict-member","url":"#dom-webassemblyinstantiatedsource-module"},
"#enumdef-addresstype": {"displayText":"AddressType","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"AddressType","type":"enum","url":"#enumdef-addresstype"},
"#enumdef-importexportkind": {"displayText":"ImportExportKind","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"ImportExportKind","type":"enum","url":"#enumdef-importexportkind"},
"#enumdef-tablekind": {"displayText":"TableKind","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"TableKind","type":"enum","url":"#enumdef-tablekind"},
"#enumdef-valuetype": {"displayText":"ValueType","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"ValueType","type":"enum","url":"#enumdef-valuetype"},
"#exception": {"displayText":"Exception","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"Exception","type":"interface","url":"#exception"},
"#exception-object-cache": {"displayText":"exception object cache","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"exception object cache","type":"dfn","url":"#exception-object-cache"},
"#exceptiondef-compileerror": {"displayText":"CompileError","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"CompileError","type":"exception","url":"#exceptiondef-compileerror"},
"#exceptiondef-linkerror": {"displayText":"LinkError","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"LinkError","type":"exception","url":"#exceptiondef-linkerror"},
"#exceptiondef-runtimeerror": {"displayText":"RuntimeError","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"RuntimeError","type":"exception","url":"#exceptiondef-runtimeerror"},
"#exported-function": {"displayText":"exported function","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"exported function","type":"dfn","url":"#exported-function"},
"#exported-function-cache": {"displayText":"exported function cache","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"exported function cache","type":"dfn","url":"#exported-function-cache"},
"#exported-gc-object": {"displayText":"exported gc object","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"exported gc object","type":"dfn","url":"#exported-gc-object"},
"#exported-gc-object-cache": {"displayText":"exported gc object cache","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"exported gc object cache","type":"dfn","url":"#exported-gc-object-cache"},
"#find-a-builtin": {"displayText":"find a builtin","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"find a builtin","type":"dfn","url":"#find-a-builtin"},
"#get-internal-method-of-an-exported-gc-object": {"displayText":"[[get]] internal method of an exported gc object","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"[[get]] internal method of an exported gc object","type":"dfn","url":"#get-internal-method-of-an-exported-gc-object"},
"#get-the-builtins-for-a-builtin-set": {"displayText":"get the builtins for a builtin set","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"get the builtins for a builtin set","type":"dfn","url":"#get-the-builtins-for-a-builtin-set"},
"#get-the-javascript-exception-tag": {"displayText":"get the javascript exception tag","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"get the javascript exception tag","type":"dfn","url":"#get-the-javascript-exception-tag"},
"#getglobalvalue": {"displayText":"getglobalvalue","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"getglobalvalue","type":"dfn","url":"#getglobalvalue"},
"#getownproperty-internal-method-of-an-exported-gc-object": {"displayText":"[[getownproperty]] internal method of an exported gc object","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"[[getownproperty]] internal method of an exported gc object","type":"dfn","url":"#getownproperty-internal-method-of-an-exported-gc-object"},
"#getprototypeof-internal-method-of-an-exported-gc-object": {"displayText":"[[getprototypeof]] internal method of an exported gc object","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"[[getprototypeof]] internal method of an exported gc object","type":"dfn","url":"#getprototypeof-internal-method-of-an-exported-gc-object"},
"#global": {"displayText":"Global","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"Global","type":"interface","url":"#global"},
"#global-object-cache": {"displayText":"global object cache","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"global object cache","type":"dfn","url":"#global-object-cache"},
"#grow-the-memory-buffer": {"displayText":"grow the memory buffer","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"grow the memory buffer","type":"dfn","url":"#grow-the-memory-buffer"},
"#hasproperty-internal-method-of-an-exported-gc-object": {"displayText":"[[hasproperty]] internal method of an exported gc object","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"[[hasproperty]] internal method of an exported gc object","type":"dfn","url":"#hasproperty-internal-method-of-an-exported-gc-object"},
"#host-value-cache": {"displayText":"host value cache","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"host value cache","type":"dfn","url":"#host-value-cache"},
"#identified-with": {"displayText":"identified with","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"identified with","type":"dfn","url":"#identified-with"},
"#index-of-the-host-function": {"displayText":"index of the host function","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"index of the host function","type":"dfn","url":"#index-of-the-host-function"},
"#initialize-a-global-object": {"displayText":"initialize a global object","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"initialize a global object","type":"dfn","url":"#initialize-a-global-object"},
"#initialize-a-memory-object": {"displayText":"initialize a memory object","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"initialize a memory object","type":"dfn","url":"#initialize-a-memory-object"},
"#initialize-a-table-object": {"displayText":"initialize a table object","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"initialize a table object","type":"dfn","url":"#initialize-a-table-object"},
"#initialize-a-tag-object": {"displayText":"initialize a tag object","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"initialize a tag object","type":"dfn","url":"#initialize-a-tag-object"},
"#initialize-an-exception-object": {"displayText":"initialize an exception object","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"initialize an exception object","type":"dfn","url":"#initialize-an-exception-object"},
"#initialize-an-instance-object": {"displayText":"initialize an instance object","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"initialize an instance object","type":"dfn","url":"#initialize-an-instance-object"},
"#instance": {"displayText":"Instance","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"Instance","type":"interface","url":"#instance"},
"#instantiate-a-builtin-set": {"displayText":"instantiate a builtin set","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"instantiate a builtin set","type":"dfn","url":"#instantiate-a-builtin-set"},
"#instantiate-a-promise-of-a-module": {"displayText":"instantiate a promise of a module","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"instantiate a promise of a module","type":"dfn","url":"#instantiate-a-promise-of-a-module"},
"#instantiate-imported-strings": {"displayText":"instantiate imported strings","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"instantiate imported strings","type":"dfn","url":"#instantiate-imported-strings"},
"#instantiate-the-core-of-a-webassembly-module": {"displayText":"instantiate the core of a webassembly module","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"instantiate the core of a webassembly module","type":"dfn","url":"#instantiate-the-core-of-a-webassembly-module"},
"#isextensible-internal-method-of-an-exported-gc-object": {"displayText":"[[isextensible]] internal method of an exported gc object","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"[[isextensible]] internal method of an exported gc object","type":"dfn","url":"#isextensible-internal-method-of-an-exported-gc-object"},
"#javascript-exception-tag": {"displayText":"javascript exception tag","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"javascript exception tag","type":"dfn","url":"#javascript-exception-tag"},
"#memory": {"displayText":"Memory","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"Memory","type":"interface","url":"#memory"},
"#memory-object-cache": {"displayText":"memory object cache","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"memory object cache","type":"dfn","url":"#memory-object-cache"},
"#module": {"displayText":"Module","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"Module","type":"interface","url":"#module"},
"#name-of-the-webassembly-function": {"displayText":"name of the webassembly function","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"name of the webassembly function","type":"dfn","url":"#name-of-the-webassembly-function"},
"#namespacedef-webassembly": {"displayText":"WebAssembly","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"WebAssembly","type":"namespace","url":"#namespacedef-webassembly"},
"#ownpropertykeys-internal-method-of-an-exported-gc-object": {"displayText":"[[ownpropertykeys]] internal method of an exported gc object","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"[[ownpropertykeys]] internal method of an exported gc object","type":"dfn","url":"#ownpropertykeys-internal-method-of-an-exported-gc-object"},
"#preventextensions-internal-method-of-an-exported-gc-object": {"displayText":"[[preventextensions]] internal method of an exported gc object","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"[[preventextensions]] internal method of an exported gc object","type":"dfn","url":"#preventextensions-internal-method-of-an-exported-gc-object"},
"#read-the-imports": {"displayText":"read the imports","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"read the imports","type":"dfn","url":"#read-the-imports"},
"#refresh-the-memory-buffer": {"displayText":"refresh the memory buffer","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"refresh the memory buffer","type":"dfn","url":"#refresh-the-memory-buffer"},
"#retrieving-a-host-value": {"displayText":"retrieving a host value","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"retrieving a host value","type":"dfn","url":"#retrieving-a-host-value"},
"#run-a-host-function": {"displayText":"run a host function","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"run a host function","type":"dfn","url":"#run-a-host-function"},
"#set-internal-method-of-an-exported-gc-object": {"displayText":"[[set]] internal method of an exported gc object","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"[[set]] internal method of an exported gc object","type":"dfn","url":"#set-internal-method-of-an-exported-gc-object"},
"#setprototypeof-internal-method-of-an-exported-gc-object": {"displayText":"[[setprototypeof]] internal method of an exported gc object","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"[[setprototypeof]] internal method of an exported gc object","type":"dfn","url":"#setprototypeof-internal-method-of-an-exported-gc-object"},
"#string-value-of-the-extern-type": {"displayText":"string value of the extern type","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"string value of the extern type","type":"dfn","url":"#string-value-of-the-extern-type"},
"#table": {"displayText":"Table","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"Table","type":"interface","url":"#table"},
"#table-object-cache": {"displayText":"table object cache","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"table object cache","type":"dfn","url":"#table-object-cache"},
"#tag": {"displayText":"Tag","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"Tag","type":"interface","url":"#tag"},
"#tag-object-cache": {"displayText":"tag object cache","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"tag object cache","type":"dfn","url":"#tag-object-cache"},
"#tag_alloc": {"displayText":"tag_alloc","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"tag_alloc","type":"dfn","url":"#tag_alloc"},
"#tojsvalue": {"displayText":"tojsvalue","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"tojsvalue","type":"dfn","url":"#tojsvalue"},
"#tovaluetype": {"displayText":"tovaluetype","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"tovaluetype","type":"dfn","url":"#tovaluetype"},
"#towebassemblyvalue": {"displayText":"towebassemblyvalue","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"towebassemblyvalue","type":"dfn","url":"#towebassemblyvalue"},
"#typedefdef-addressvalue": {"displayText":"AddressValue","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"AddressValue","type":"typedef","url":"#typedefdef-addressvalue"},
"#u64toaddressvalue": {"displayText":"u64toaddressvalue","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"u64toaddressvalue","type":"dfn","url":"#u64toaddressvalue"},
"#validate-an-import-for-builtins": {"displayText":"validate an import for builtins","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"validate an import for builtins","type":"dfn","url":"#validate-an-import-for-builtins"},
"#validate-builtin-set-names": {"displayText":"validate builtin set names","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"validate builtin set names","type":"dfn","url":"#validate-builtin-set-names"},
"#validate-builtins-and-imported-string-for-a-webassembly-module": {"displayText":"validate builtins and imported string for a webassembly module","export":true,"for_":[],"level":"2","normative":true,"shortname":"wasm-js-api","spec":"wasm-js-api-2","status":"local","text":"validate builtins and imported string for a webassembly module","type":"dfn","url":"#validate-builtins-and-imported-string-for-a-webassembly-module"},
"00c2566d_https://webassembly.github.io/spec/core/syntax/values.html#syntax-float": {"displayText":"canon","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"canon","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/values.html#syntax-float"},
"1eccdce5_https://webassembly.github.io/spec/core/syntax/types.html#syntax-numtype": {"displayText":"i32","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"i32","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-numtype"},
"2a855222_https://webassembly.github.io/spec/core/exec/runtime.html#values": {"displayText":"ref.i31","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"ref.i31","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#values"},
"2be47a22_https://webassembly.github.io/spec/core/syntax/types.html#external-types": {"displayText":"mem","export":true,"for_":["external-type"],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"mem","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/types.html#external-types"},
"32e497d6_https://webassembly.github.io/spec/core/syntax/modules.html#syntax-module": {"displayText":"imports","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"imports","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/modules.html#syntax-module"},
"487b76fe_https://webassembly.github.io/spec/core/syntax/types.html#syntax-numtype": {"displayText":"f64","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"f64","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-numtype"},
"4a3b2658_https://webassembly.github.io/spec/core/exec/runtime.html#values": {"displayText":"ref.struct","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"ref.struct","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#values"},
"55e2e3f1_https://tc39.github.io/ecma262/#sec-ecmascript-language-types-bigint-type": {"displayText":"BigInt","export":true,"for_":[],"level":"","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"anchor-block","text":"bigint","type":"dfn","url":"https://tc39.github.io/ecma262/#sec-ecmascript-language-types-bigint-type"},
"5e745a1a_https://webassembly.github.io/spec/core/exec/runtime.html#values": {"displayText":"v128.const","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"v128.const","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#values"},
"60f810ad_https://webassembly.github.io/spec/core/syntax/types.html#syntax-tagtype": {"displayText":"tag type","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"tag type","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-tagtype"},
"6b9f083b_https://webassembly.github.io/spec/core/exec/runtime.html#values": {"displayText":"ref.null","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"ref.null","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#values"},
"706a103c_https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype": {"displayText":"funcref","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"funcref","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype"},
"71830f3f_https://webassembly.github.io/spec/core/exec/numerics.html#aux-signed": {"displayText":"signed_32","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"signed_32","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/numerics.html#aux-signed"},
"74913b16_https://webassembly.github.io/spec/core/exec/runtime.html#values": {"displayText":"i64.const","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"i64.const","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#values"},
"82295e1c_https://webassembly.github.io/spec/core/syntax/types.html#external-types": {"displayText":"global","export":true,"for_":["external-type"],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"global","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/types.html#external-types"},
"8390efce_https://webassembly.github.io/spec/core/exec/runtime.html#values": {"displayText":"WebAssembly value","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"webassembly value","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#values"},
"866f3068_https://tc39.github.io/ecma262/#sec-ecmascript-language-types-number-type": {"displayText":"is a Number","export":true,"for_":[],"level":"","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"anchor-block","text":"is a number","type":"dfn","url":"https://tc39.github.io/ecma262/#sec-ecmascript-language-types-number-type"},
"87dd702b_https://webassembly.github.io/spec/core/exec/numerics.html#aux-signed": {"displayText":"signed_31","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"signed_31","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/numerics.html#aux-signed"},
"8b33b0c0_https://webassembly.github.io/spec/core/syntax/values.html#syntax-float": {"displayText":"nan","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"nan","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/values.html#syntax-float"},
"92193adb_https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype": {"displayText":"externref","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"externref","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype"},
"a130a533_https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype": {"displayText":"ref","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"ref","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype"},
"a4646532_https://webassembly.github.io/spec/core/syntax/types.html#syntax-numtype": {"displayText":"f32","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"f32","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-numtype"},
"a5c9608b_https://webassembly.github.io/spec/core/syntax/types.html#external-types": {"displayText":"tag","export":true,"for_":["external-type","externtype"],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"tag","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/types.html#external-types"},
"b0f69a43_https://webassembly.github.io/spec/core/exec/runtime.html#values": {"displayText":"ref.exn","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"ref.exn","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#values"},
"b73131e1_https://webassembly.github.io/spec/core/exec/runtime.html#values": {"displayText":"ref.array","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"ref.array","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#values"},
"c77be4cb_https://webassembly.github.io/spec/core/exec/runtime.html#syntax-externval": {"displayText":"tag","export":true,"for_":["external value"],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"tag","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-externval"},
"cf0d7dd8_https://webassembly.github.io/spec/core/syntax/types.html#heap-types": {"displayText":"func","export":true,"for_":["heap-type"],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"func","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/types.html#heap-types"},
"db25377b_https://webassembly.github.io/spec/core/valid/modules.html#valid-module": {"displayText":"valid","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"valid","type":"dfn","url":"https://webassembly.github.io/spec/core/valid/modules.html#valid-module"},
"dfe8fce9_https://webassembly.github.io/spec/core/exec/runtime.html#values": {"displayText":"f32.const","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"f32.const","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#values"},
"e09fca85_https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands": {"displayText":"?","export":true,"for_":[],"level":"","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"anchor-block","text":"?","type":"dfn","url":"https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands"},
"e4515620_https://webassembly.github.io/spec/core/syntax/values.html#syntax-float": {"displayText":"signif","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"signif","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/values.html#syntax-float"},
"e4a6ca14_https://webassembly.github.io/spec/core/exec/runtime.html#values": {"displayText":"ref.func","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"ref.func","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#values"},
"e638887d_https://webassembly.github.io/spec/core/syntax/types.html#syntax-mut": {"displayText":"var","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"var","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-mut"},
"eb9c1b7f_https://webassembly.github.io/spec/core/syntax/types.html#external-types": {"displayText":"table","export":true,"for_":["external-type"],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"table","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/types.html#external-types"},
"eba518e9_https://webassembly.github.io/spec/core/exec/runtime.html#values": {"displayText":"ref.host","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"ref.host","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#values"},
"f2c8868c_https://webassembly.github.io/spec/core/exec/runtime.html#values": {"displayText":"f64.const","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"f64.const","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#values"},
"f3505c41_https://webassembly.github.io/spec/core/exec/runtime.html#values": {"displayText":"ref.extern","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"ref.extern","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#values"},
"f4809bf4_https://webassembly.github.io/spec/core/syntax/types.html#heap-types": {"displayText":"any","export":true,"for_":["heap-type"],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"any","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/types.html#heap-types"},
"fd8a763c_https://webassembly.github.io/spec/core/syntax/values.html#syntax-float": {"displayText":"\u2212\u221e","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"\u2212\u221e","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/values.html#syntax-float"},
"https://encoding.spec.whatwg.org/#utf-8-decode-without-bom-or-fail": {"displayText":"UTF-8 decode without BOM or fail","export":true,"for_":[],"level":"1","normative":true,"shortname":"encoding","spec":"encoding","status":"current","text":"utf-8 decode without bom or fail","type":"dfn","url":"https://encoding.spec.whatwg.org/#utf-8-decode-without-bom-or-fail"},
"https://heycam.github.io/webidl/#EnforceRange": {"displayText":"[EnforceRange]","export":true,"for_":[],"level":"","normative":true,"shortname":"webidl","spec":"webidl","status":"anchor-block","text":"[enforcerange]","type":"dfn","url":"https://heycam.github.io/webidl/#EnforceRange"},
"https://heycam.github.io/webidl/#create-a-namespace-object": {"displayText":"create a namespace object","export":true,"for_":[],"level":"","normative":true,"shortname":"webidl","spec":"webidl","status":"anchor-block","text":"create a namespace object","type":"dfn","url":"https://heycam.github.io/webidl/#create-a-namespace-object"},
"https://heycam.github.io/webidl/#idl-unsigned-long": {"displayText":"unsigned long","export":true,"for_":[],"level":"","normative":true,"shortname":"webidl","spec":"webidl","status":"anchor-block","text":"unsigned long","type":"dfn","url":"https://heycam.github.io/webidl/#idl-unsigned-long"},
"https://heycam.github.io/webidl/#js-unsigned-long": {"displayText":"js-unsigned-long","export":true,"for_":[],"level":"","normative":true,"shortname":"webidl","spec":"webidl","status":"anchor-block","text":"js-unsigned-long","type":"dfn","url":"https://heycam.github.io/webidl/#js-unsigned-long"},
"https://html.spec.whatwg.org/multipage/infrastructure.html#in-parallel": {"displayText":"in parallel","export":true,"for_":[],"level":"1","normative":true,"shortname":"html","spec":"html","status":"current","text":"in parallel","type":"dfn","url":"https://html.spec.whatwg.org/multipage/infrastructure.html#in-parallel"},
"https://html.spec.whatwg.org/multipage/webappapis.html#clean-up-after-running-a-callback": {"displayText":"clean up after running a callback","export":true,"for_":[],"level":"1","normative":true,"shortname":"html","spec":"html","status":"current","text":"clean up after running a callback","type":"dfn","url":"https://html.spec.whatwg.org/multipage/webappapis.html#clean-up-after-running-a-callback"},
"https://html.spec.whatwg.org/multipage/webappapis.html#clean-up-after-running-script": {"displayText":"clean up after running script","export":true,"for_":[],"level":"1","normative":true,"shortname":"html","spec":"html","status":"current","text":"clean up after running script","type":"dfn","url":"https://html.spec.whatwg.org/multipage/webappapis.html#clean-up-after-running-script"},
"https://html.spec.whatwg.org/multipage/webappapis.html#concept-realm-settings-object": {"displayText":"settings object","export":true,"for_":["realm"],"level":"1","normative":true,"shortname":"html","spec":"html","status":"current","text":"settings object","type":"dfn","url":"https://html.spec.whatwg.org/multipage/webappapis.html#concept-realm-settings-object"},
"https://html.spec.whatwg.org/multipage/webappapis.html#incumbent-settings-object": {"displayText":"incumbent settings object","export":true,"for_":[],"level":"1","normative":true,"shortname":"html","spec":"html","status":"current","text":"incumbent settings object","type":"dfn","url":"https://html.spec.whatwg.org/multipage/webappapis.html#incumbent-settings-object"},
"https://html.spec.whatwg.org/multipage/webappapis.html#prepare-to-run-a-callback": {"displayText":"prepare to run a callback","export":true,"for_":[],"level":"1","normative":true,"shortname":"html","spec":"html","status":"current","text":"prepare to run a callback","type":"dfn","url":"https://html.spec.whatwg.org/multipage/webappapis.html#prepare-to-run-a-callback"},
"https://html.spec.whatwg.org/multipage/webappapis.html#prepare-to-run-script": {"displayText":"prepare to run script","export":true,"for_":[],"level":"1","normative":true,"shortname":"html","spec":"html","status":"current","text":"prepare to run script","type":"dfn","url":"https://html.spec.whatwg.org/multipage/webappapis.html#prepare-to-run-script"},
"https://html.spec.whatwg.org/multipage/webappapis.html#queue-a-task": {"displayText":"queue a task","export":true,"for_":[],"level":"1","normative":true,"shortname":"html","spec":"html","status":"current","text":"queue a task","type":"dfn","url":"https://html.spec.whatwg.org/multipage/webappapis.html#queue-a-task"},
"https://html.spec.whatwg.org/multipage/webappapis.html#task-source": {"displayText":"task source","export":true,"for_":[],"level":"1","normative":true,"shortname":"html","spec":"html","status":"current","text":"task source","type":"dfn","url":"https://html.spec.whatwg.org/multipage/webappapis.html#task-source"},
"https://infra.spec.whatwg.org/#iteration-continue": {"displayText":"continue","export":true,"for_":["iteration"],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"continue","type":"dfn","url":"https://infra.spec.whatwg.org/#iteration-continue"},
"https://infra.spec.whatwg.org/#list": {"displayText":"list","export":true,"for_":[],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"list","type":"dfn","url":"https://infra.spec.whatwg.org/#list"},
"https://infra.spec.whatwg.org/#list-append": {"displayText":"append","export":true,"for_":["list"],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"append","type":"dfn","url":"https://infra.spec.whatwg.org/#list-append"},
"https://infra.spec.whatwg.org/#list-is-empty": {"displayText":"is empty","export":true,"for_":["list","stack","queue","set"],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"is empty","type":"dfn","url":"https://infra.spec.whatwg.org/#list-is-empty"},
"https://infra.spec.whatwg.org/#list-iterate": {"displayText":"iterate","export":true,"for_":["list","set"],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"iterate","type":"dfn","url":"https://infra.spec.whatwg.org/#list-iterate"},
"https://infra.spec.whatwg.org/#list-size": {"displayText":"size","export":true,"for_":["list","stack","queue","set"],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"size","type":"dfn","url":"https://infra.spec.whatwg.org/#list-size"},
"https://infra.spec.whatwg.org/#map-exists": {"displayText":"exist","export":true,"for_":["map"],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"exist","type":"dfn","url":"https://infra.spec.whatwg.org/#map-exists"},
"https://infra.spec.whatwg.org/#map-iterate": {"displayText":"iterate","export":true,"for_":["map"],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"iterate","type":"dfn","url":"https://infra.spec.whatwg.org/#map-iterate"},
"https://infra.spec.whatwg.org/#map-set": {"displayText":"set","export":true,"for_":["map"],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"set","type":"dfn","url":"https://infra.spec.whatwg.org/#map-set"},
"https://infra.spec.whatwg.org/#ordered-map": {"displayText":"ordered map","export":true,"for_":[],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"ordered map","type":"dfn","url":"https://infra.spec.whatwg.org/#ordered-map"},
"https://infra.spec.whatwg.org/#string-length": {"displayText":"length","export":true,"for_":["string","JavaScript string","ASCII string","isomorphic string","scalar value string"],"level":"1","normative":true,"shortname":"infra","spec":"infra","status":"current","text":"length","type":"dfn","url":"https://infra.spec.whatwg.org/#string-length"},
"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-call": {"displayText":"Call","export":true,"for_":[],"level":"1","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"current","text":"Call","type":"abstract-op","url":"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-call"},
"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-createarrayfromlist": {"displayText":"CreateArrayFromList","export":true,"for_":[],"level":"1","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"current","text":"CreateArrayFromList","type":"abstract-op","url":"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-createarrayfromlist"},
"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-createdataproperty": {"displayText":"CreateDataProperty","export":true,"for_":[],"level":"1","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"current","text":"CreateDataProperty","type":"abstract-op","url":"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-createdataproperty"},
"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-get-o-p": {"displayText":"Get","export":true,"for_":[],"level":"1","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"current","text":"Get","type":"abstract-op","url":"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-get-o-p"},
"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-getiteratorfrommethod": {"displayText":"GetIteratorFromMethod","export":true,"for_":[],"level":"1","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"current","text":"GetIteratorFromMethod","type":"abstract-op","url":"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-getiteratorfrommethod"},
"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-getmethod": {"displayText":"GetMethod","export":true,"for_":[],"level":"1","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"current","text":"GetMethod","type":"abstract-op","url":"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-getmethod"},
"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-iscallable": {"displayText":"IsCallable","export":true,"for_":[],"level":"1","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"current","text":"IsCallable","type":"abstract-op","url":"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-iscallable"},
"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-iteratortolist": {"displayText":"IteratorToList","export":true,"for_":[],"level":"1","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"current","text":"IteratorToList","type":"abstract-op","url":"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-iteratortolist"},
"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-setintegritylevel": {"displayText":"SetIntegrityLevel","export":true,"for_":[],"level":"1","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"current","text":"SetIntegrityLevel","type":"abstract-op","url":"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-setintegritylevel"},
"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-tobigint": {"displayText":"ToBigInt","export":true,"for_":[],"level":"1","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"current","text":"ToBigInt","type":"abstract-op","url":"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-tobigint"},
"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-tobigint64": {"displayText":"ToBigInt64","export":true,"for_":[],"level":"1","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"current","text":"ToBigInt64","type":"abstract-op","url":"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-tobigint64"},
"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-toint32": {"displayText":"ToInt32","export":true,"for_":[],"level":"1","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"current","text":"ToInt32","type":"abstract-op","url":"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-toint32"},
"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-tonumber": {"displayText":"ToNumber","export":true,"for_":[],"level":"1","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"current","text":"ToNumber","type":"abstract-op","url":"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-tonumber"},
"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-tostring": {"displayText":"ToString","export":true,"for_":[],"level":"1","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"current","text":"ToString","type":"abstract-op","url":"https://tc39.es/ecma262/multipage/abstract-operations.html#sec-tostring"},
"https://tc39.es/ecma262/multipage/ecmascript-data-types-and-values.html#sec-data-blocks": {"displayText":"Data Block","export":true,"for_":["ECMAScript"],"level":"1","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"current","text":"data block","type":"dfn","url":"https://tc39.es/ecma262/multipage/ecmascript-data-types-and-values.html#sec-data-blocks"},
"https://tc39.es/ecma262/multipage/ecmascript-data-types-and-values.html#sec-well-known-symbols": {"displayText":"%Symbol.iterator%","export":true,"for_":[],"level":"1","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"current","text":"%Symbol.iterator%","type":"interface","url":"https://tc39.es/ecma262/multipage/ecmascript-data-types-and-values.html#sec-well-known-symbols"},
"https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#agent": {"displayText":"agent","export":true,"for_":["ECMAScript"],"level":"1","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"current","text":"agent","type":"dfn","url":"https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#agent"},
"https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#sec-agent-clusters": {"displayText":"agent cluster","export":true,"for_":["ECMAScript"],"level":"1","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"current","text":"agent cluster","type":"dfn","url":"https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#sec-agent-clusters"},
"https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent": {"displayText":"surrounding agent","export":true,"for_":["ECMAScript"],"level":"1","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"current","text":"surrounding agent","type":"dfn","url":"https://tc39.es/ecma262/multipage/executable-code-and-execution-contexts.html#surrounding-agent"},
"https://tc39.es/ecma262/multipage/ordinary-and-exotic-objects-behaviours.html#sec-createbuiltinfunction": {"displayText":"CreateBuiltinFunction","export":true,"for_":[],"level":"1","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"current","text":"CreateBuiltinFunction","type":"abstract-op","url":"https://tc39.es/ecma262/multipage/ordinary-and-exotic-objects-behaviours.html#sec-createbuiltinfunction"},
"https://tc39.es/ecma262/multipage/ordinary-and-exotic-objects-behaviours.html#sec-definemethodproperty": {"displayText":"DefineMethodProperty","export":true,"for_":[],"level":"1","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"current","text":"DefineMethodProperty","type":"abstract-op","url":"https://tc39.es/ecma262/multipage/ordinary-and-exotic-objects-behaviours.html#sec-definemethodproperty"},
"https://tc39.es/ecma262/multipage/ordinary-and-exotic-objects-behaviours.html#sec-ordinaryobjectcreate": {"displayText":"OrdinaryObjectCreate","export":true,"for_":[],"level":"1","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"current","text":"OrdinaryObjectCreate","type":"abstract-op","url":"https://tc39.es/ecma262/multipage/ordinary-and-exotic-objects-behaviours.html#sec-ordinaryobjectcreate"},
"https://tc39.es/ecma262/multipage/structured-data.html#sec-detacharraybuffer": {"displayText":"DetachArrayBuffer","export":true,"for_":[],"level":"1","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"current","text":"DetachArrayBuffer","type":"abstract-op","url":"https://tc39.es/ecma262/multipage/structured-data.html#sec-detacharraybuffer"},
"https://tc39.es/ecma262/multipage/structured-data.html#sec-numerictorawbytes": {"displayText":"NumericToRawBytes","export":true,"for_":[],"level":"1","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"current","text":"NumericToRawBytes","type":"abstract-op","url":"https://tc39.es/ecma262/multipage/structured-data.html#sec-numerictorawbytes"},
"https://tc39.es/proposal-resizablearraybuffer/#sec-hostresizearraybuffer": {"displayText":"HostResizeArrayBuffer","export":true,"for_":[],"level":"","normative":true,"shortname":"resizablearraybuffer proposal","spec":"resizablearraybuffer proposal","status":"anchor-block","text":"hostresizearraybuffer","type":"dfn","url":"https://tc39.es/proposal-resizablearraybuffer/#sec-hostresizearraybuffer"},
"https://tc39.es/proposal-resizablearraybuffer/#sec-isfixedarraybuffer": {"displayText":"IsFixedLengthArrayBuffer","export":true,"for_":[],"level":"","normative":true,"shortname":"resizablearraybuffer proposal","spec":"resizablearraybuffer proposal","status":"anchor-block","text":"isfixedlengtharraybuffer","type":"dfn","url":"https://tc39.es/proposal-resizablearraybuffer/#sec-isfixedarraybuffer"},
"https://tc39.github.io/ecma262/#current-realm": {"displayText":"current Realm","export":true,"for_":[],"level":"","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"anchor-block","text":"current realm","type":"dfn","url":"https://tc39.github.io/ecma262/#current-realm"},
"https://tc39.github.io/ecma262/#mathematical-value": {"displayText":"mathematical value","export":true,"for_":[],"level":"","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"anchor-block","text":"mathematical value","type":"dfn","url":"https://tc39.github.io/ecma262/#mathematical-value"},
"https://tc39.github.io/ecma262/#sec-array-exotic-objects": {"displayText":"Array","export":true,"for_":[],"level":"","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"anchor-block","text":"array","type":"dfn","url":"https://tc39.github.io/ecma262/#sec-array-exotic-objects"},
"https://tc39.github.io/ecma262/#sec-arraybuffer-objects": {"displayText":"ArrayBuffer","export":true,"for_":["ECMAScript"],"level":"","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"anchor-block","text":"ArrayBuffer","type":"interface","url":"https://tc39.github.io/ecma262/#sec-arraybuffer-objects"},
"https://tc39.github.io/ecma262/#sec-built-in-function-objects": {"displayText":"Built-in Function Objects","export":true,"for_":[],"level":"","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"anchor-block","text":"built-in function objects","type":"dfn","url":"https://tc39.github.io/ecma262/#sec-built-in-function-objects"},
"https://tc39.github.io/ecma262/#sec-ecmascript-language-types-bigint-type": {"displayText":"is not a BigInt","export":true,"for_":[],"level":"","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"anchor-block","text":"is not a bigint","type":"dfn","url":"https://tc39.github.io/ecma262/#sec-ecmascript-language-types-bigint-type"},
"https://tc39.github.io/ecma262/#sec-ecmascript-language-types-number-type": {"displayText":"is not a Number","export":true,"for_":[],"level":"","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"anchor-block","text":"is not a number","type":"dfn","url":"https://tc39.github.io/ecma262/#sec-ecmascript-language-types-number-type"},
"https://tc39.github.io/ecma262/#sec-ecmascript-language-types-string-type": {"displayText":"is not a String","export":true,"for_":[],"level":"","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"anchor-block","text":"is not a string","type":"dfn","url":"https://tc39.github.io/ecma262/#sec-ecmascript-language-types-string-type"},
"https://tc39.github.io/ecma262/#sec-islessthan": {"displayText":"IsLessThan","export":true,"for_":[],"level":"","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"anchor-block","text":"islessthan","type":"dfn","url":"https://tc39.github.io/ecma262/#sec-islessthan"},
"https://tc39.github.io/ecma262/#sec-isstrictlyequal": {"displayText":"IsStrictlyEqual","export":true,"for_":[],"level":"","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"anchor-block","text":"isstrictlyequal","type":"dfn","url":"https://tc39.github.io/ecma262/#sec-isstrictlyequal"},
"https://tc39.github.io/ecma262/#sec-makebasicobject": {"displayText":"MakeBasicObject","export":true,"for_":[],"level":"","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"anchor-block","text":"makebasicobject","type":"dfn","url":"https://tc39.github.io/ecma262/#sec-makebasicobject"},
"https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-rangeerror": {"displayText":"RangeError","export":true,"for_":["ECMAScript"],"level":"","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"anchor-block","text":"RangeError","type":"exception","url":"https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-rangeerror"},
"https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-typeerror": {"displayText":"TypeError","export":true,"for_":["ECMAScript"],"level":"","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"anchor-block","text":"TypeError","type":"exception","url":"https://tc39.github.io/ecma262/#sec-native-error-types-used-in-this-standard-typeerror"},
"https://tc39.github.io/ecma262/#sec-nativeerror-object-structure": {"displayText":"NativeError Object Structure","export":true,"for_":[],"level":"","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"anchor-block","text":"nativeerror object structure","type":"dfn","url":"https://tc39.github.io/ecma262/#sec-nativeerror-object-structure"},
"https://tc39.github.io/ecma262/#sec-object-type": {"displayText":"is not an Object","export":true,"for_":[],"level":"","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"anchor-block","text":"is not an object","type":"dfn","url":"https://tc39.github.io/ecma262/#sec-object-type"},
"https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands": {"displayText":"!","export":true,"for_":[],"level":"","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"anchor-block","text":"!","type":"dfn","url":"https://tc39.github.io/ecma262/#sec-returnifabrupt-shorthands"},
"https://tc39.github.io/ecma262/#sec-samevalue": {"displayText":"SameValue","export":true,"for_":[],"level":"","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"anchor-block","text":"samevalue","type":"dfn","url":"https://tc39.github.io/ecma262/#sec-samevalue"},
"https://tc39.github.io/ecma262/#sec-string-object": {"displayText":"String","export":true,"for_":[],"level":"","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"anchor-block","text":"string","type":"dfn","url":"https://tc39.github.io/ecma262/#sec-string-object"},
"https://tc39.github.io/ecma262/#sec-string.fromcharcode": {"displayText":"String.fromCharCode","export":true,"for_":[],"level":"","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"anchor-block","text":"string.fromcharcode","type":"dfn","url":"https://tc39.github.io/ecma262/#sec-string.fromcharcode"},
"https://tc39.github.io/ecma262/#sec-string.fromcodepoint": {"displayText":"String.fromCodePoint","export":true,"for_":[],"level":"","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"anchor-block","text":"string.fromcodepoint","type":"dfn","url":"https://tc39.github.io/ecma262/#sec-string.fromcodepoint"},
"https://tc39.github.io/ecma262/#sec-string.prototype.charcodeat": {"displayText":"String.prototype.charCodeAt","export":true,"for_":[],"level":"","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"anchor-block","text":"string.prototype.charcodeat","type":"dfn","url":"https://tc39.github.io/ecma262/#sec-string.prototype.charcodeat"},
"https://tc39.github.io/ecma262/#sec-string.prototype.codepointat": {"displayText":"String.prototype.codePointAt","export":true,"for_":[],"level":"","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"anchor-block","text":"string.prototype.codepointat","type":"dfn","url":"https://tc39.github.io/ecma262/#sec-string.prototype.codepointat"},
"https://tc39.github.io/ecma262/#sec-string.prototype.concat": {"displayText":"String.prototype.concat","export":true,"for_":[],"level":"","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"anchor-block","text":"string.prototype.concat","type":"dfn","url":"https://tc39.github.io/ecma262/#sec-string.prototype.concat"},
"https://tc39.github.io/ecma262/#sec-string.prototype.substring": {"displayText":"String.prototype.substring","export":true,"for_":[],"level":"","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"anchor-block","text":"string.prototype.substring","type":"dfn","url":"https://tc39.github.io/ecma262/#sec-string.prototype.substring"},
"https://tc39.github.io/ecma262/#ℝ": {"displayText":"\u211d","export":true,"for_":[],"level":"","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"anchor-block","text":"\u211d","type":"dfn","url":"https://tc39.github.io/ecma262/#\u211d"},
"https://tc39.github.io/ecma262/#ℤ": {"displayText":"\u2124","export":true,"for_":[],"level":"","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"anchor-block","text":"\u2124","type":"dfn","url":"https://tc39.github.io/ecma262/#\u2124"},
"https://tc39.github.io/ecma262/#𝔽": {"displayText":"\ud835\udd3d","export":true,"for_":[],"level":"","normative":true,"shortname":"ecmascript","spec":"ecmascript","status":"anchor-block","text":"\ud835\udd3d","type":"dfn","url":"https://tc39.github.io/ecma262/#\ud835\udd3d"},
"https://webassembly.github.io/spec/core/#appending/embedding.html": {"displayText":"embedding interface","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"embedding interface","type":"dfn","url":"https://webassembly.github.io/spec/core/#appending/embedding.html"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-error": {"displayText":"error","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"error","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-error"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-exn-alloc": {"displayText":"exn_alloc","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"exn_alloc","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-exn-alloc"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-exn-read": {"displayText":"exn_read","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"exn_read","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-exn-read"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-exn-tag": {"displayText":"exn_tag","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"exn_tag","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-exn-tag"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-func-alloc": {"displayText":"func_alloc","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"func_alloc","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-func-alloc"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-func-invoke": {"displayText":"func_invoke","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"func_invoke","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-func-invoke"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-func-type": {"displayText":"func_type","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"func_type","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-func-type"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-global-alloc": {"displayText":"global_alloc","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"global_alloc","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-global-alloc"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-global-read": {"displayText":"global_read","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"global_read","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-global-read"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-global-type": {"displayText":"global_type","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"global_type","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-global-type"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-global-write": {"displayText":"global_write","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"global_write","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-global-write"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-instance-export": {"displayText":"instance_export","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"instance_export","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-instance-export"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-match-externtype": {"displayText":"match_externtype","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"match_externtype","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-match-externtype"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-match-valtype": {"displayText":"match_valtype","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"match_valtype","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-match-valtype"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-mem-alloc": {"displayText":"mem_alloc","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"mem_alloc","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-mem-alloc"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-mem-grow": {"displayText":"mem_grow","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"mem_grow","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-mem-grow"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-mem-size": {"displayText":"mem_size","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"mem_size","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-mem-size"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-mem-type": {"displayText":"mem_type","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"mem_type","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-mem-type"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-module-decode": {"displayText":"module_decode","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"module_decode","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-module-decode"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-module-exports": {"displayText":"module_exports","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"module_exports","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-module-exports"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-module-imports": {"displayText":"module_imports","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"module_imports","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-module-imports"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-module-instantiate": {"displayText":"module_instantiate","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"module_instantiate","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-module-instantiate"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-module-validate": {"displayText":"module_validate","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"module_validate","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-module-validate"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-ref-type": {"displayText":"ref_type","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"ref_type","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-ref-type"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-store-init": {"displayText":"store_init","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"store_init","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-store-init"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-table-alloc": {"displayText":"table_alloc","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"table_alloc","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-table-alloc"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-table-grow": {"displayText":"table_grow","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"table_grow","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-table-grow"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-table-read": {"displayText":"table_read","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"table_read","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-table-read"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-table-size": {"displayText":"table_size","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"table_size","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-table-size"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-table-type": {"displayText":"table_type","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"table_type","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-table-type"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-table-write": {"displayText":"table_write","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"table_write","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-table-write"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-tag-type": {"displayText":"tag_type","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"tag_type","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-tag-type"},
"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-val-default": {"displayText":"val_default","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"val_default","type":"dfn","url":"https://webassembly.github.io/spec/core/appendix/embedding.html#embed-val-default"},
"https://webassembly.github.io/spec/core/binary/modules.html#binary-customsec": {"displayText":"customsec","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"customsec","type":"dfn","url":"https://webassembly.github.io/spec/core/binary/modules.html#binary-customsec"},
"https://webassembly.github.io/spec/core/binary/modules.html#binary-module": {"displayText":"module grammar","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"module grammar","type":"dfn","url":"https://webassembly.github.io/spec/core/binary/modules.html#binary-module"},
"https://webassembly.github.io/spec/core/binary/modules.html#custom-section": {"displayText":"custom section","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"custom section","type":"dfn","url":"https://webassembly.github.io/spec/core/binary/modules.html#custom-section"},
"https://webassembly.github.io/spec/core/exec/conventions.html#exec-notation-textual": {"displayText":"current frame","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"current frame","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/conventions.html#exec-notation-textual"},
"https://webassembly.github.io/spec/core/exec/instructions.html#exec-memory-grow": {"displayText":"memory.grow","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"memory.grow","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/instructions.html#exec-memory-grow"},
"https://webassembly.github.io/spec/core/exec/instructions.html#exec-throw-ref": {"displayText":"throw_ref","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"throw_ref","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/instructions.html#exec-throw-ref"},
"https://webassembly.github.io/spec/core/exec/numerics.html#aux-signed": {"displayText":"signed_64","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"signed_64","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/numerics.html#aux-signed"},
"https://webassembly.github.io/spec/core/exec/runtime.html#addresses": {"displayText":"address","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"address","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#addresses"},
"https://webassembly.github.io/spec/core/exec/runtime.html#global-instances": {"displayText":"global instance","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"global instance","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#global-instances"},
"https://webassembly.github.io/spec/core/exec/runtime.html#memory-instances": {"displayText":"memory instance","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"memory instance","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#memory-instances"},
"https://webassembly.github.io/spec/core/exec/runtime.html#page-size": {"displayText":"page size","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"page size","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#page-size"},
"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-arrayaddr": {"displayText":"array address","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"array address","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-arrayaddr"},
"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-exnaddr": {"displayText":"exception address","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"exception address","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-exnaddr"},
"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-externval": {"displayText":"external value","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"external value","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-externval"},
"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-frame": {"displayText":"module","export":true,"for_":["frame"],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"module","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-frame"},
"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-funcaddr": {"displayText":"function address","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"function address","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-funcaddr"},
"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-globaladdr": {"displayText":"global address","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"global address","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-globaladdr"},
"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-hostaddr": {"displayText":"host address","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"host address","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-hostaddr"},
"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-hostfunc": {"displayText":"host function","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"host function","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-hostfunc"},
"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-memaddr": {"displayText":"memory address","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"memory address","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-memaddr"},
"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-moduleinst": {"displayText":"memaddrs","export":true,"for_":["moduleinst"],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"memaddrs","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-moduleinst"},
"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-store": {"displayText":"store","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"store","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-store"},
"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-structaddr": {"displayText":"struct address","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"struct address","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-structaddr"},
"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-tableaddr": {"displayText":"table address","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"table address","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-tableaddr"},
"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-tagaddr": {"displayText":"tag address","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"tag address","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-tagaddr"},
"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-trap": {"displayText":"trap","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"trap","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#syntax-trap"},
"https://webassembly.github.io/spec/core/exec/runtime.html#table-instances": {"displayText":"table instance","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"table instance","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#table-instances"},
"https://webassembly.github.io/spec/core/exec/runtime.html#values": {"displayText":"i32.const","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"i32.const","type":"dfn","url":"https://webassembly.github.io/spec/core/exec/runtime.html#values"},
"https://webassembly.github.io/spec/core/intro/introduction.html#scope": {"displayText":"scope","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"scope","type":"dfn","url":"https://webassembly.github.io/spec/core/intro/introduction.html#scope"},
"https://webassembly.github.io/spec/core/syntax/conventions.html#grammar-notation": {"displayText":"sequence","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"sequence","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/conventions.html#grammar-notation"},
"https://webassembly.github.io/spec/core/syntax/modules.html#syntax-import": {"displayText":"import","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"import","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/modules.html#syntax-import"},
"https://webassembly.github.io/spec/core/syntax/modules.html#syntax-module": {"displayText":"module","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"module","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/modules.html#syntax-module"},
"https://webassembly.github.io/spec/core/syntax/types.html#external-types": {"displayText":"func","export":true,"for_":["external-type"],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"func","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/types.html#external-types"},
"https://webassembly.github.io/spec/core/syntax/types.html#heap-types": {"displayText":"extern","export":true,"for_":["heap-type"],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"extern","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/types.html#heap-types"},
"https://webassembly.github.io/spec/core/syntax/types.html#syntax-addrtype": {"displayText":"address type","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"address type","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-addrtype"},
"https://webassembly.github.io/spec/core/syntax/types.html#syntax-limits": {"displayText":"limits","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"limits","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-limits"},
"https://webassembly.github.io/spec/core/syntax/types.html#syntax-memtype": {"displayText":"memory type","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"memory type","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-memtype"},
"https://webassembly.github.io/spec/core/syntax/types.html#syntax-mut": {"displayText":"const","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"const","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-mut"},
"https://webassembly.github.io/spec/core/syntax/types.html#syntax-numtype": {"displayText":"i64","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"i64","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-numtype"},
"https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype": {"displayText":"exnref","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"exnref","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-reftype"},
"https://webassembly.github.io/spec/core/syntax/types.html#syntax-tabletype": {"displayText":"table type","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"table type","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-tabletype"},
"https://webassembly.github.io/spec/core/syntax/types.html#syntax-tagtype": {"displayText":"exception","export":true,"for_":["tagtype/attribute"],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"exception","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/types.html#syntax-tagtype"},
"https://webassembly.github.io/spec/core/syntax/types.html#vector-types": {"displayText":"v128","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"v128","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/types.html#vector-types"},
"https://webassembly.github.io/spec/core/syntax/values.html#syntax-float": {"displayText":"+\u221e","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"+\u221e","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/values.html#syntax-float"},
"https://webassembly.github.io/spec/core/syntax/values.html#syntax-int": {"displayText":"u64","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"u64","type":"dfn","url":"https://webassembly.github.io/spec/core/syntax/values.html#syntax-int"},
"https://webassembly.github.io/spec/core/valid/matching.html#match-reftype": {"displayText":"reftype","export":true,"for_":["matches"],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"reftype","type":"dfn","url":"https://webassembly.github.io/spec/core/valid/matching.html#match-reftype"},
"https://webassembly.github.io/spec/core/valid/matching.html#match-valtype": {"displayText":"valtype","export":true,"for_":["matches"],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"valtype","type":"dfn","url":"https://webassembly.github.io/spec/core/valid/matching.html#match-valtype"},
"https://webassembly.github.io/spec/core/valid/modules.html#valid-module": {"displayText":"WebAssembly module validation","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"webassembly module validation","type":"dfn","url":"https://webassembly.github.io/spec/core/valid/modules.html#valid-module"},
"https://webassembly.github.io/spec/core/valid/types.html#valid-memtype": {"displayText":"valid memtype","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"valid memtype","type":"dfn","url":"https://webassembly.github.io/spec/core/valid/types.html#valid-memtype"},
"https://webassembly.github.io/spec/core/valid/types.html#valid-tabletype": {"displayText":"valid tabletype","export":true,"for_":[],"level":"","normative":true,"shortname":"webassembly","spec":"webassembly","status":"anchor-block","text":"valid tabletype","type":"dfn","url":"https://webassembly.github.io/spec/core/valid/types.html#valid-tabletype"},
"https://webidl.spec.whatwg.org/#BufferSource": {"displayText":"BufferSource","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"BufferSource","type":"typedef","url":"https://webidl.spec.whatwg.org/#BufferSource"},
"https://webidl.spec.whatwg.org/#EnforceRange": {"displayText":"EnforceRange","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"EnforceRange","type":"extended-attribute","url":"https://webidl.spec.whatwg.org/#EnforceRange"},
"https://webidl.spec.whatwg.org/#Exposed": {"displayText":"Exposed","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"Exposed","type":"extended-attribute","url":"https://webidl.spec.whatwg.org/#Exposed"},
"https://webidl.spec.whatwg.org/#LegacyNamespace": {"displayText":"LegacyNamespace","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"LegacyNamespace","type":"extended-attribute","url":"https://webidl.spec.whatwg.org/#LegacyNamespace"},
"https://webidl.spec.whatwg.org/#a-new-promise": {"displayText":"a new promise","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"a new promise","type":"dfn","url":"https://webidl.spec.whatwg.org/#a-new-promise"},
"https://webidl.spec.whatwg.org/#abstract-opdef-converttoint": {"displayText":"ConvertToInt","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"ConvertToInt","type":"abstract-op","url":"https://webidl.spec.whatwg.org/#abstract-opdef-converttoint"},
"https://webidl.spec.whatwg.org/#dfn-associated-realm": {"displayText":"associated realm","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"associated realm","type":"dfn","url":"https://webidl.spec.whatwg.org/#dfn-associated-realm"},
"https://webidl.spec.whatwg.org/#dfn-get-buffer-source-copy": {"displayText":"get a copy of the buffer source","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"get a copy of the buffer source","type":"dfn","url":"https://webidl.spec.whatwg.org/#dfn-get-buffer-source-copy"},
"https://webidl.spec.whatwg.org/#dfn-namespace-object": {"displayText":"namespace object","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"namespace object","type":"dfn","url":"https://webidl.spec.whatwg.org/#dfn-namespace-object"},
"https://webidl.spec.whatwg.org/#dfn-throw": {"displayText":"throw","export":true,"for_":["exception"],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"throw","type":"dfn","url":"https://webidl.spec.whatwg.org/#dfn-throw"},
"https://webidl.spec.whatwg.org/#idl-DOMString": {"displayText":"DOMString","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"DOMString","type":"interface","url":"https://webidl.spec.whatwg.org/#idl-DOMString"},
"https://webidl.spec.whatwg.org/#idl-USVString": {"displayText":"USVString","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"USVString","type":"interface","url":"https://webidl.spec.whatwg.org/#idl-USVString"},
"https://webidl.spec.whatwg.org/#idl-any": {"displayText":"any","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"any","type":"interface","url":"https://webidl.spec.whatwg.org/#idl-any"},
"https://webidl.spec.whatwg.org/#idl-boolean": {"displayText":"boolean","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"boolean","type":"interface","url":"https://webidl.spec.whatwg.org/#idl-boolean"},
"https://webidl.spec.whatwg.org/#idl-object": {"displayText":"object","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"object","type":"interface","url":"https://webidl.spec.whatwg.org/#idl-object"},
"https://webidl.spec.whatwg.org/#idl-promise": {"displayText":"Promise","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"Promise","type":"interface","url":"https://webidl.spec.whatwg.org/#idl-promise"},
"https://webidl.spec.whatwg.org/#idl-sequence": {"displayText":"sequence","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"sequence","type":"dfn","url":"https://webidl.spec.whatwg.org/#idl-sequence"},
"https://webidl.spec.whatwg.org/#idl-undefined": {"displayText":"undefined","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"undefined","type":"interface","url":"https://webidl.spec.whatwg.org/#idl-undefined"},
"https://webidl.spec.whatwg.org/#idl-unsigned-long": {"displayText":"unsigned long","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"unsigned long","type":"interface","url":"https://webidl.spec.whatwg.org/#idl-unsigned-long"},
"https://webidl.spec.whatwg.org/#implements": {"displayText":"implements","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"implements","type":"dfn","url":"https://webidl.spec.whatwg.org/#implements"},
"https://webidl.spec.whatwg.org/#new": {"displayText":"new","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"new","type":"dfn","url":"https://webidl.spec.whatwg.org/#new"},
"https://webidl.spec.whatwg.org/#reject": {"displayText":"reject","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"reject","type":"dfn","url":"https://webidl.spec.whatwg.org/#reject"},
"https://webidl.spec.whatwg.org/#resolve": {"displayText":"resolve","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"resolve","type":"dfn","url":"https://webidl.spec.whatwg.org/#resolve"},
"https://webidl.spec.whatwg.org/#upon-fulfillment": {"displayText":"upon fulfillment","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"upon fulfillment","type":"dfn","url":"https://webidl.spec.whatwg.org/#upon-fulfillment"},
"https://webidl.spec.whatwg.org/#upon-rejection": {"displayText":"upon rejection","export":true,"for_":[],"level":"1","normative":true,"shortname":"webidl","spec":"webidl","status":"current","text":"upon rejection","type":"dfn","url":"https://webidl.spec.whatwg.org/#upon-rejection"},
};
function mkRefHint(link, ref) {
const linkText = link.textContent;
let dfnTextElements = '';
if (ref.displayText.toLowerCase() != linkText.toLowerCase()) {
// Give the original term if it's being displayed in a different way.
// But allow casing differences, they're insignificant.
dfnTextElements =
mk.li({},
mk.b({}, "Term: "),
mk.span({}, ref.displayText)
);
}
const forList = ref.for_;
let forListElements;
if(forList.length == 0) {
forListElements = [];
} else if(forList.length == 1) {
forListElements = mk.li({},
mk.b({}, "For: "),
mk.span({}, forList[0]),
);
} else {
forListElements = mk.li({},
mk.b({}, "For: "),
mk.ul({},
...forList.map(forItem =>
mk.li({},
mk.span({}, forItem)
),
),
),
);
}
const url = ref.url;
const safeUrl = encodeURIComponent(url);
const hintPanel = mk.aside({
class: "ref-hint",
id: `ref-hint-for-${safeUrl}`,
"data-for": url,
"aria-labelled-by": `ref-hint-for-${safeUrl}`,
},
mk.ul({},
dfnTextElements,
mk.li({},
mk.b({}, "URL: "),
mk.a({ href: url, class: "ref" }, url),
),
mk.li({},
mk.b({}, "Type: "),
mk.span({}, `${ref.type}`),
),
mk.li({},
mk.b({}, "Spec: "),
mk.span({}, `${ref.spec ? ref.spec : ''}`),
),
forListElements
),
);
hintPanel.forLink = link;
setupRefHintEventListeners(link, hintPanel);
return hintPanel;
}
function hideAllRefHints() {
queryAll(".ref-hint").forEach(el=>hideRefHint(el));
}
function hideRefHint(refHint) {
const link = refHint.forLink;
link.setAttribute("aria-expanded", "false");
if(refHint.teardownEventListeners) {
refHint.teardownEventListeners();
}
refHint.remove();
}
function showRefHint(link) {
if(link.classList.contains("dfn-link")) return;
const url = link.getAttribute("href");
const refHintKey = link.getAttribute("data-refhint-key");
let key = url;
if(refHintKey) {
key = refHintKey + "_" + url;
}
const ref = refsData[key];
if(!ref) return;
hideAllRefHints(); // Only display one at this time.
const refHint = mkRefHint(link, ref);
append(document.body, refHint);
link.setAttribute("aria-expanded", "true");
positionRefHint(refHint);
}
function setupRefHintEventListeners(link, refHint) {
if (refHint.teardownEventListeners) return;
// Add event handlers to hide the refHint after the user moves away
// from both the link and refHint, if not hovering either within one second.
let timeout = null;
const startHidingRefHint = (event) => {
if (timeout) {
clearTimeout(timeout);
}
timeout = setTimeout(() => {
hideRefHint(refHint);
}, 1000);
}
const resetHidingRefHint = (event) => {
if (timeout) clearTimeout(timeout);
timeout = null;
};
link.addEventListener("mouseleave", startHidingRefHint);
link.addEventListener("mouseenter", resetHidingRefHint);
link.addEventListener("blur", startHidingRefHint);
link.addEventListener("focus", resetHidingRefHint);
refHint.addEventListener("mouseleave", startHidingRefHint);
refHint.addEventListener("mouseenter", resetHidingRefHint);
refHint.addEventListener("blur", startHidingRefHint);
refHint.addEventListener("focus", resetHidingRefHint);
refHint.teardownEventListeners = () => {
// remove event listeners
resetHidingRefHint();
link.removeEventListener("mouseleave", startHidingRefHint);
link.removeEventListener("mouseenter", resetHidingRefHint);
link.removeEventListener("blur", startHidingRefHint);
link.removeEventListener("focus", resetHidingRefHint);
refHint.removeEventListener("mouseleave", startHidingRefHint);
refHint.removeEventListener("mouseenter", resetHidingRefHint);
refHint.removeEventListener("blur", startHidingRefHint);
refHint.removeEventListener("focus", resetHidingRefHint);
};
}
function positionRefHint(refHint) {
const link = refHint.forLink;
const linkPos = getBounds(link);
refHint.style.top = linkPos.bottom + "px";
refHint.style.left = linkPos.left + "px";
const panelPos = refHint.getBoundingClientRect();
const panelMargin = 8;
const maxRight = document.body.parentNode.clientWidth - panelMargin;
if (panelPos.right > maxRight) {
const overflowAmount = panelPos.right - maxRight;
const newLeft = Math.max(panelMargin, linkPos.left - overflowAmount);
refHint.style.left = newLeft + "px";
}
}
// TODO: shared util
// Returns the root-level absolute position {left and top} of element.
function getBounds(el, relativeTo=document.body) {
const relativeRect = relativeTo.getBoundingClientRect();
const elRect = el.getBoundingClientRect();
const top = elRect.top - relativeRect.top;
const left = elRect.left - relativeRect.left;
return {
top,
left,
bottom: top + elRect.height,
right: left + elRect.width,
}
}
function showRefHintListener(e) {
// If the target isn't in a link (or is a link),
// just ignore it.
let link = e.target.closest("a");
if(!link) return;
// If the target is in a ref-hint panel
// (aka a link in the already-open one),
// also just ignore it.
if(link.closest(".ref-hint")) return;
// Otherwise, show the panel for the link.
showRefHint(link);
}
function hideAllHintsListener(e) {
// If the click is inside a ref-hint panel, ignore it.
if(e.target.closest(".ref-hint")) return;
// Otherwise, close all the current panels.
hideAllRefHints();
}
document.addEventListener("DOMContentLoaded", () => {
document.body.addEventListener("mousedown", showRefHintListener);
document.body.addEventListener("focus", showRefHintListener);
document.body.addEventListener("click", hideAllHintsListener);
});
window.addEventListener("resize", () => {
// Hide any open ref hint.
hideAllRefHints();
});
}
</script>
<script>/* Boilerplate: script-var-click-highlighting */
"use strict";
{
/*
Color-choosing design:
* Colors are ordered by goodness.
* On clicking a var, give it the earliest color
with the lowest usage in the algorithm.
* On re-clicking, re-use the var's most recent color
if that's not currently being used elsewhere.
*/
const COLOR_COUNT = 7;
document.addEventListener("click", e=>{
if(e.target.nodeName == "VAR") {
highlightSameAlgoVars(e.target);
}
});
function highlightSameAlgoVars(v) {
// Find the algorithm container.
let algoContainer = findAlgoContainer(v);
// Not highlighting document-global vars,
// too likely to be unrelated.
if(algoContainer == null) return;
const varName = nameFromVar(v);
if(!v.hasAttribute("data-var-color")) {
const newColor = chooseHighlightColor(algoContainer, v);
for(const el of algoContainer.querySelectorAll("var")) {
if(nameFromVar(el) == varName) {
el.setAttribute("data-var-color", newColor);
el.setAttribute("data-var-last-color", newColor);
}
}
} else {
for(const el of algoContainer.querySelectorAll("var")) {
if(nameFromVar(el) == varName) {
el.removeAttribute("data-var-color");
}
}
}
}
function findAlgoContainer(el) {
while(el != document.body) {
if(el.hasAttribute("data-algorithm")) return el;
el = el.parentNode;
}
return null;
}
function nameFromVar(el) {
return el.textContent.replace(/(\s|\xa0)+/g, " ").trim();
}
function colorCountsFromContainer(container) {
const namesFromColor = Array.from({length:COLOR_COUNT}, x=>new Set());
for(let v of container.querySelectorAll("var[data-var-color]")) {
let color = +v.getAttribute("data-var-color");
namesFromColor[color].add(nameFromVar(v));
}
return namesFromColor.map(x=>x.size);
}
function leastUsedColor(colors) {
// Find the earliest color with the lowest count.
let minCount = Infinity;
let minColor = null;
for(var i = 0; i < colors.length; i++) {
if(colors[i] < minCount) {
minColor = i;
minCount = colors[i];
}
}
return minColor;
}
function chooseHighlightColor(container, v) {
const colorCounts = colorCountsFromContainer(container);
if(v.hasAttribute("data-var-last-color")) {
let color = +v.getAttribute("data-var-last-color");
if(colorCounts[color] == 0) return color;
}
return leastUsedColor(colorCounts);
}
}
</script>