Source code

Revision control

Copy as Markdown

Other Tools

/* Copyright 2021 Mozilla Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// ./test/core/custom-page-sizes/custom-page-sizes.wast
// ./test/core/custom-page-sizes/custom-page-sizes.wast:2
let $0 = instantiate(`(module (memory 1 (pagesize 1)))`);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:3
let $1 = instantiate(`(module (memory 1 (pagesize 65536)))`);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:6
let $2 = instantiate(`(module (memory 1 2 (pagesize 1)))`);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:7
let $3 = instantiate(`(module (memory 1 2 (pagesize 65536)))`);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:10
let $4 = instantiate(`(module
(memory 0 (pagesize 1))
(func (export "size") (result i32)
memory.size
)
(func (export "grow") (param i32) (result i32)
(memory.grow (local.get 0))
)
(func (export "load") (param i32) (result i32)
(i32.load8_u (local.get 0))
)
(func (export "store") (param i32 i32)
(i32.store8 (local.get 0) (local.get 1))
)
)`);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:26
assert_return(() => invoke($4, `size`, []), [value("i32", 0)]);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:27
assert_trap(() => invoke($4, `load`, [0]), `out of bounds memory access`);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:29
assert_return(() => invoke($4, `grow`, [65536]), [value("i32", 0)]);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:30
assert_return(() => invoke($4, `size`, []), [value("i32", 65536)]);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:31
assert_return(() => invoke($4, `load`, [65535]), [value("i32", 0)]);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:32
assert_return(() => invoke($4, `store`, [65535, 1]), []);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:33
assert_return(() => invoke($4, `load`, [65535]), [value("i32", 1)]);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:34
assert_trap(() => invoke($4, `load`, [65536]), `out of bounds memory access`);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:36
assert_return(() => invoke($4, `grow`, [65536]), [value("i32", 65536)]);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:37
assert_return(() => invoke($4, `size`, []), [value("i32", 131072)]);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:38
assert_return(() => invoke($4, `load`, [131071]), [value("i32", 0)]);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:39
assert_return(() => invoke($4, `store`, [131071, 1]), []);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:40
assert_return(() => invoke($4, `load`, [131071]), [value("i32", 1)]);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:41
assert_trap(() => invoke($4, `load`, [131072]), `out of bounds memory access`);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:46
let $5 = instantiate(`(module
(memory 0 (pagesize 65536))
(func (export "size") (result i32)
memory.size
)
(func (export "grow") (param i32) (result i32)
(memory.grow (local.get 0))
)
)`);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:55
assert_return(() => invoke($5, `size`, []), [value("i32", 0)]);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:56
assert_return(() => invoke($5, `grow`, [65537]), [value("i32", -1)]);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:57
assert_return(() => invoke($5, `size`, []), [value("i32", 0)]);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:60
let $6 = instantiate(`(module
(memory \$small 10 (pagesize 1))
(memory \$large 1 (pagesize 65536))
(data (memory \$small) (i32.const 0) "\\11\\22\\33\\44")
(data (memory \$large) (i32.const 0) "\\55\\66\\77\\88")
(func (export "copy-small-to-large") (param i32 i32 i32)
(memory.copy \$large \$small (local.get 0) (local.get 1) (local.get 2))
)
(func (export "copy-large-to-small") (param i32 i32 i32)
(memory.copy \$small \$large (local.get 0) (local.get 1) (local.get 2))
)
(func (export "load8-small") (param i32) (result i32)
(i32.load8_u \$small (local.get 0))
)
(func (export "load8-large") (param i32) (result i32)
(i32.load8_u \$large (local.get 0))
)
)`);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:84
assert_return(() => invoke($6, `copy-small-to-large`, [6, 0, 2]), []);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:85
assert_return(() => invoke($6, `load8-large`, [6]), [value("i32", 17)]);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:86
assert_return(() => invoke($6, `load8-large`, [7]), [value("i32", 34)]);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:88
assert_return(() => invoke($6, `copy-large-to-small`, [4, 1, 3]), []);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:89
assert_return(() => invoke($6, `load8-small`, [4]), [value("i32", 102)]);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:90
assert_return(() => invoke($6, `load8-small`, [5]), [value("i32", 119)]);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:91
assert_return(() => invoke($6, `load8-small`, [6]), [value("i32", 136)]);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:96
let $7 = instantiate(`(module \$m
(memory (export "small-pages-memory") 0 (pagesize 1))
(memory (export "large-pages-memory") 0 (pagesize 65536))
)`);
let $m = $7;
// ./test/core/custom-page-sizes/custom-page-sizes.wast:100
register($m, `m`);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:102
let $8 = instantiate(`(module
(memory (import "m" "small-pages-memory") 0 (pagesize 1))
)`);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:106
let $9 = instantiate(`(module
(memory (import "m" "large-pages-memory") 0 (pagesize 65536))
)`);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:113
assert_malformed(
() => instantiate(`(memory (pagesize 0) (data)) `),
`invalid custom page size`,
);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:116
let $10 = instantiate(`(module
(memory (pagesize 1) (data "xyz"))
(func (export "size") (result i32)
memory.size)
(func (export "grow") (param i32) (result i32)
(memory.grow (local.get 0)))
(func (export "load") (param i32) (result i32)
(i32.load8_u (local.get 0))))`);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:125
assert_return(() => invoke($10, `size`, []), [value("i32", 3)]);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:126
assert_return(() => invoke($10, `load`, [0]), [value("i32", 120)]);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:127
assert_return(() => invoke($10, `load`, [1]), [value("i32", 121)]);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:128
assert_return(() => invoke($10, `load`, [2]), [value("i32", 122)]);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:129
assert_trap(() => invoke($10, `load`, [3]), `out of bounds memory access`);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:130
assert_return(() => invoke($10, `grow`, [1]), [value("i32", -1)]);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:133
let $11 = instantiate(`(module
(memory (pagesize 65536) (data "xyz"))
(func (export "size") (result i32)
memory.size))`);
// ./test/core/custom-page-sizes/custom-page-sizes.wast:138
assert_return(() => invoke($11, `size`, []), [value("i32", 1)]);