forked from WebKit/WebKit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathModule-compile.js
60 lines (52 loc) · 1.86 KB
/
Module-compile.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import * as assert from '../assert.js';
import Builder from '../Builder.js';
assert.isFunction(WebAssembly.compile);
assert.truthy(WebAssembly.hasOwnProperty('compile'));
assert.eq(WebAssembly.compile.length, 1);
async function testPromiseAPI() {
{
// Can't declare more than one memory.
const builder = (new Builder())
.Type().End()
.Import().Memory("imp", "memory", {initial: 20}).End()
.Function().End()
.Memory().InitialMaxPages(1, 1).End()
.Export().End()
.Code()
.End();
try {
await WebAssembly.compile(builder.WebAssembly().get());
} catch(e) {
assert.truthy(e instanceof WebAssembly.CompileError);
assert.truthy(e.message === "WebAssembly.Module doesn't parse at byte 34: there can at most be one Memory section for now");
}
}
{
try {
await WebAssembly.compile();
} catch(e) {
assert.truthy(e instanceof TypeError);
assert.eq(e.message, "first argument must be an ArrayBufferView or an ArrayBuffer (evaluating 'WebAssembly.compile()')");
}
}
{
try {
await WebAssembly.compile(20);
} catch(e) {
assert.truthy(e instanceof TypeError);
assert.eq(e.message, "first argument must be an ArrayBufferView or an ArrayBuffer (evaluating 'WebAssembly.compile(20)')");
}
}
{
const builder = (new Builder())
.Type().End()
.Import().Memory("imp", "memory", {initial: 20}).End()
.Function().End()
.Export().End()
.Code()
.End();
let module = await WebAssembly.compile(builder.WebAssembly().get());
assert.truthy(module instanceof WebAssembly.Module);
}
}
await assert.asyncTest(testPromiseAPI());