custom-page-sizes.wast.js (7970B)
1 /* Copyright 2021 Mozilla Foundation 2 * 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 // ./test/core/custom-page-sizes/custom-page-sizes.wast 17 18 // ./test/core/custom-page-sizes/custom-page-sizes.wast:2 19 let $0 = instantiate(`(module (memory 1 (pagesize 1)))`); 20 21 // ./test/core/custom-page-sizes/custom-page-sizes.wast:3 22 let $1 = instantiate(`(module (memory 1 (pagesize 65536)))`); 23 24 // ./test/core/custom-page-sizes/custom-page-sizes.wast:6 25 let $2 = instantiate(`(module (memory 1 2 (pagesize 1)))`); 26 27 // ./test/core/custom-page-sizes/custom-page-sizes.wast:7 28 let $3 = instantiate(`(module (memory 1 2 (pagesize 65536)))`); 29 30 // ./test/core/custom-page-sizes/custom-page-sizes.wast:10 31 let $4 = instantiate(`(module 32 (memory 0 (pagesize 1)) 33 (func (export "size") (result i32) 34 memory.size 35 ) 36 (func (export "grow") (param i32) (result i32) 37 (memory.grow (local.get 0)) 38 ) 39 (func (export "load") (param i32) (result i32) 40 (i32.load8_u (local.get 0)) 41 ) 42 (func (export "store") (param i32 i32) 43 (i32.store8 (local.get 0) (local.get 1)) 44 ) 45 )`); 46 47 // ./test/core/custom-page-sizes/custom-page-sizes.wast:26 48 assert_return(() => invoke($4, `size`, []), [value("i32", 0)]); 49 50 // ./test/core/custom-page-sizes/custom-page-sizes.wast:27 51 assert_trap(() => invoke($4, `load`, [0]), `out of bounds memory access`); 52 53 // ./test/core/custom-page-sizes/custom-page-sizes.wast:29 54 assert_return(() => invoke($4, `grow`, [65536]), [value("i32", 0)]); 55 56 // ./test/core/custom-page-sizes/custom-page-sizes.wast:30 57 assert_return(() => invoke($4, `size`, []), [value("i32", 65536)]); 58 59 // ./test/core/custom-page-sizes/custom-page-sizes.wast:31 60 assert_return(() => invoke($4, `load`, [65535]), [value("i32", 0)]); 61 62 // ./test/core/custom-page-sizes/custom-page-sizes.wast:32 63 assert_return(() => invoke($4, `store`, [65535, 1]), []); 64 65 // ./test/core/custom-page-sizes/custom-page-sizes.wast:33 66 assert_return(() => invoke($4, `load`, [65535]), [value("i32", 1)]); 67 68 // ./test/core/custom-page-sizes/custom-page-sizes.wast:34 69 assert_trap(() => invoke($4, `load`, [65536]), `out of bounds memory access`); 70 71 // ./test/core/custom-page-sizes/custom-page-sizes.wast:36 72 assert_return(() => invoke($4, `grow`, [65536]), [value("i32", 65536)]); 73 74 // ./test/core/custom-page-sizes/custom-page-sizes.wast:37 75 assert_return(() => invoke($4, `size`, []), [value("i32", 131072)]); 76 77 // ./test/core/custom-page-sizes/custom-page-sizes.wast:38 78 assert_return(() => invoke($4, `load`, [131071]), [value("i32", 0)]); 79 80 // ./test/core/custom-page-sizes/custom-page-sizes.wast:39 81 assert_return(() => invoke($4, `store`, [131071, 1]), []); 82 83 // ./test/core/custom-page-sizes/custom-page-sizes.wast:40 84 assert_return(() => invoke($4, `load`, [131071]), [value("i32", 1)]); 85 86 // ./test/core/custom-page-sizes/custom-page-sizes.wast:41 87 assert_trap(() => invoke($4, `load`, [131072]), `out of bounds memory access`); 88 89 // ./test/core/custom-page-sizes/custom-page-sizes.wast:46 90 let $5 = instantiate(`(module 91 (memory 0 (pagesize 65536)) 92 (func (export "size") (result i32) 93 memory.size 94 ) 95 (func (export "grow") (param i32) (result i32) 96 (memory.grow (local.get 0)) 97 ) 98 )`); 99 100 // ./test/core/custom-page-sizes/custom-page-sizes.wast:55 101 assert_return(() => invoke($5, `size`, []), [value("i32", 0)]); 102 103 // ./test/core/custom-page-sizes/custom-page-sizes.wast:56 104 assert_return(() => invoke($5, `grow`, [65537]), [value("i32", -1)]); 105 106 // ./test/core/custom-page-sizes/custom-page-sizes.wast:57 107 assert_return(() => invoke($5, `size`, []), [value("i32", 0)]); 108 109 // ./test/core/custom-page-sizes/custom-page-sizes.wast:60 110 let $6 = instantiate(`(module 111 (memory \$small 10 (pagesize 1)) 112 (memory \$large 1 (pagesize 65536)) 113 114 (data (memory \$small) (i32.const 0) "\\11\\22\\33\\44") 115 (data (memory \$large) (i32.const 0) "\\55\\66\\77\\88") 116 117 (func (export "copy-small-to-large") (param i32 i32 i32) 118 (memory.copy \$large \$small (local.get 0) (local.get 1) (local.get 2)) 119 ) 120 121 (func (export "copy-large-to-small") (param i32 i32 i32) 122 (memory.copy \$small \$large (local.get 0) (local.get 1) (local.get 2)) 123 ) 124 125 (func (export "load8-small") (param i32) (result i32) 126 (i32.load8_u \$small (local.get 0)) 127 ) 128 129 (func (export "load8-large") (param i32) (result i32) 130 (i32.load8_u \$large (local.get 0)) 131 ) 132 )`); 133 134 // ./test/core/custom-page-sizes/custom-page-sizes.wast:84 135 assert_return(() => invoke($6, `copy-small-to-large`, [6, 0, 2]), []); 136 137 // ./test/core/custom-page-sizes/custom-page-sizes.wast:85 138 assert_return(() => invoke($6, `load8-large`, [6]), [value("i32", 17)]); 139 140 // ./test/core/custom-page-sizes/custom-page-sizes.wast:86 141 assert_return(() => invoke($6, `load8-large`, [7]), [value("i32", 34)]); 142 143 // ./test/core/custom-page-sizes/custom-page-sizes.wast:88 144 assert_return(() => invoke($6, `copy-large-to-small`, [4, 1, 3]), []); 145 146 // ./test/core/custom-page-sizes/custom-page-sizes.wast:89 147 assert_return(() => invoke($6, `load8-small`, [4]), [value("i32", 102)]); 148 149 // ./test/core/custom-page-sizes/custom-page-sizes.wast:90 150 assert_return(() => invoke($6, `load8-small`, [5]), [value("i32", 119)]); 151 152 // ./test/core/custom-page-sizes/custom-page-sizes.wast:91 153 assert_return(() => invoke($6, `load8-small`, [6]), [value("i32", 136)]); 154 155 // ./test/core/custom-page-sizes/custom-page-sizes.wast:96 156 let $7 = instantiate(`(module \$m 157 (memory (export "small-pages-memory") 0 (pagesize 1)) 158 (memory (export "large-pages-memory") 0 (pagesize 65536)) 159 )`); 160 let $m = $7; 161 162 // ./test/core/custom-page-sizes/custom-page-sizes.wast:100 163 register($m, `m`); 164 165 // ./test/core/custom-page-sizes/custom-page-sizes.wast:102 166 let $8 = instantiate(`(module 167 (memory (import "m" "small-pages-memory") 0 (pagesize 1)) 168 )`); 169 170 // ./test/core/custom-page-sizes/custom-page-sizes.wast:106 171 let $9 = instantiate(`(module 172 (memory (import "m" "large-pages-memory") 0 (pagesize 65536)) 173 )`); 174 175 // ./test/core/custom-page-sizes/custom-page-sizes.wast:113 176 assert_malformed( 177 () => instantiate(`(memory (pagesize 0) (data)) `), 178 `invalid custom page size`, 179 ); 180 181 // ./test/core/custom-page-sizes/custom-page-sizes.wast:116 182 let $10 = instantiate(`(module 183 (memory (pagesize 1) (data "xyz")) 184 (func (export "size") (result i32) 185 memory.size) 186 (func (export "grow") (param i32) (result i32) 187 (memory.grow (local.get 0))) 188 (func (export "load") (param i32) (result i32) 189 (i32.load8_u (local.get 0))))`); 190 191 // ./test/core/custom-page-sizes/custom-page-sizes.wast:125 192 assert_return(() => invoke($10, `size`, []), [value("i32", 3)]); 193 194 // ./test/core/custom-page-sizes/custom-page-sizes.wast:126 195 assert_return(() => invoke($10, `load`, [0]), [value("i32", 120)]); 196 197 // ./test/core/custom-page-sizes/custom-page-sizes.wast:127 198 assert_return(() => invoke($10, `load`, [1]), [value("i32", 121)]); 199 200 // ./test/core/custom-page-sizes/custom-page-sizes.wast:128 201 assert_return(() => invoke($10, `load`, [2]), [value("i32", 122)]); 202 203 // ./test/core/custom-page-sizes/custom-page-sizes.wast:129 204 assert_trap(() => invoke($10, `load`, [3]), `out of bounds memory access`); 205 206 // ./test/core/custom-page-sizes/custom-page-sizes.wast:130 207 assert_return(() => invoke($10, `grow`, [1]), [value("i32", -1)]); 208 209 // ./test/core/custom-page-sizes/custom-page-sizes.wast:133 210 let $11 = instantiate(`(module 211 (memory (pagesize 65536) (data "xyz")) 212 (func (export "size") (result i32) 213 memory.size))`); 214 215 // ./test/core/custom-page-sizes/custom-page-sizes.wast:138 216 assert_return(() => invoke($11, `size`, []), [value("i32", 1)]);