tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

memory_grow64.wast.js (7616B)


      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/memory64/memory_grow64.wast
     17 
     18 // ./test/core/memory64/memory_grow64.wast:1
     19 let $0 = instantiate(`(module
     20    (memory i64 0)
     21 
     22    (func (export "load_at_zero") (result i32) (i32.load (i64.const 0)))
     23    (func (export "store_at_zero") (i32.store (i64.const 0) (i32.const 2)))
     24 
     25    (func (export "load_at_page_size") (result i32) (i32.load (i64.const 0x10000)))
     26    (func (export "store_at_page_size") (i32.store (i64.const 0x10000) (i32.const 3)))
     27 
     28    (func (export "grow") (param \$sz i64) (result i64) (memory.grow (local.get \$sz)))
     29    (func (export "size") (result i64) (memory.size))
     30 )`);
     31 
     32 // ./test/core/memory64/memory_grow64.wast:14
     33 assert_return(() => invoke($0, `size`, []), [value("i64", 0n)]);
     34 
     35 // ./test/core/memory64/memory_grow64.wast:15
     36 assert_trap(() => invoke($0, `store_at_zero`, []), `out of bounds memory access`);
     37 
     38 // ./test/core/memory64/memory_grow64.wast:16
     39 assert_trap(() => invoke($0, `load_at_zero`, []), `out of bounds memory access`);
     40 
     41 // ./test/core/memory64/memory_grow64.wast:17
     42 assert_trap(() => invoke($0, `store_at_page_size`, []), `out of bounds memory access`);
     43 
     44 // ./test/core/memory64/memory_grow64.wast:18
     45 assert_trap(() => invoke($0, `load_at_page_size`, []), `out of bounds memory access`);
     46 
     47 // ./test/core/memory64/memory_grow64.wast:19
     48 assert_return(() => invoke($0, `grow`, [1n]), [value("i64", 0n)]);
     49 
     50 // ./test/core/memory64/memory_grow64.wast:20
     51 assert_return(() => invoke($0, `size`, []), [value("i64", 1n)]);
     52 
     53 // ./test/core/memory64/memory_grow64.wast:21
     54 assert_return(() => invoke($0, `load_at_zero`, []), [value("i32", 0)]);
     55 
     56 // ./test/core/memory64/memory_grow64.wast:22
     57 assert_return(() => invoke($0, `store_at_zero`, []), []);
     58 
     59 // ./test/core/memory64/memory_grow64.wast:23
     60 assert_return(() => invoke($0, `load_at_zero`, []), [value("i32", 2)]);
     61 
     62 // ./test/core/memory64/memory_grow64.wast:24
     63 assert_trap(() => invoke($0, `store_at_page_size`, []), `out of bounds memory access`);
     64 
     65 // ./test/core/memory64/memory_grow64.wast:25
     66 assert_trap(() => invoke($0, `load_at_page_size`, []), `out of bounds memory access`);
     67 
     68 // ./test/core/memory64/memory_grow64.wast:26
     69 assert_return(() => invoke($0, `grow`, [4n]), [value("i64", 1n)]);
     70 
     71 // ./test/core/memory64/memory_grow64.wast:27
     72 assert_return(() => invoke($0, `size`, []), [value("i64", 5n)]);
     73 
     74 // ./test/core/memory64/memory_grow64.wast:28
     75 assert_return(() => invoke($0, `load_at_zero`, []), [value("i32", 2)]);
     76 
     77 // ./test/core/memory64/memory_grow64.wast:29
     78 assert_return(() => invoke($0, `store_at_zero`, []), []);
     79 
     80 // ./test/core/memory64/memory_grow64.wast:30
     81 assert_return(() => invoke($0, `load_at_zero`, []), [value("i32", 2)]);
     82 
     83 // ./test/core/memory64/memory_grow64.wast:31
     84 assert_return(() => invoke($0, `load_at_page_size`, []), [value("i32", 0)]);
     85 
     86 // ./test/core/memory64/memory_grow64.wast:32
     87 assert_return(() => invoke($0, `store_at_page_size`, []), []);
     88 
     89 // ./test/core/memory64/memory_grow64.wast:33
     90 assert_return(() => invoke($0, `load_at_page_size`, []), [value("i32", 3)]);
     91 
     92 // ./test/core/memory64/memory_grow64.wast:36
     93 let $1 = instantiate(`(module
     94  (memory i64 0)
     95  (func (export "grow") (param i64) (result i64) (memory.grow (local.get 0)))
     96 )`);
     97 
     98 // ./test/core/memory64/memory_grow64.wast:41
     99 assert_return(() => invoke($1, `grow`, [0n]), [value("i64", 0n)]);
    100 
    101 // ./test/core/memory64/memory_grow64.wast:42
    102 assert_return(() => invoke($1, `grow`, [1n]), [value("i64", 0n)]);
    103 
    104 // ./test/core/memory64/memory_grow64.wast:43
    105 assert_return(() => invoke($1, `grow`, [0n]), [value("i64", 1n)]);
    106 
    107 // ./test/core/memory64/memory_grow64.wast:44
    108 assert_return(() => invoke($1, `grow`, [2n]), [value("i64", 1n)]);
    109 
    110 // ./test/core/memory64/memory_grow64.wast:45
    111 assert_return(() => invoke($1, `grow`, [800n]), [value("i64", 3n)]);
    112 
    113 // ./test/core/memory64/memory_grow64.wast:46
    114 assert_return(() => invoke($1, `grow`, [1n]), [value("i64", 803n)]);
    115 
    116 // ./test/core/memory64/memory_grow64.wast:48
    117 let $2 = instantiate(`(module
    118  (memory i64 0 10)
    119  (func (export "grow") (param i64) (result i64) (memory.grow (local.get 0)))
    120 )`);
    121 
    122 // ./test/core/memory64/memory_grow64.wast:53
    123 assert_return(() => invoke($2, `grow`, [0n]), [value("i64", 0n)]);
    124 
    125 // ./test/core/memory64/memory_grow64.wast:54
    126 assert_return(() => invoke($2, `grow`, [1n]), [value("i64", 0n)]);
    127 
    128 // ./test/core/memory64/memory_grow64.wast:55
    129 assert_return(() => invoke($2, `grow`, [1n]), [value("i64", 1n)]);
    130 
    131 // ./test/core/memory64/memory_grow64.wast:56
    132 assert_return(() => invoke($2, `grow`, [2n]), [value("i64", 2n)]);
    133 
    134 // ./test/core/memory64/memory_grow64.wast:57
    135 assert_return(() => invoke($2, `grow`, [6n]), [value("i64", 4n)]);
    136 
    137 // ./test/core/memory64/memory_grow64.wast:58
    138 assert_return(() => invoke($2, `grow`, [0n]), [value("i64", 10n)]);
    139 
    140 // ./test/core/memory64/memory_grow64.wast:59
    141 assert_return(() => invoke($2, `grow`, [1n]), [value("i64", -1n)]);
    142 
    143 // ./test/core/memory64/memory_grow64.wast:60
    144 assert_return(() => invoke($2, `grow`, [65536n]), [value("i64", -1n)]);
    145 
    146 // ./test/core/memory64/memory_grow64.wast:64
    147 let $3 = instantiate(`(module
    148  (memory i64 1)
    149  (func (export "grow") (param i64) (result i64)
    150    (memory.grow (local.get 0))
    151  )
    152  (func (export "check-memory-zero") (param i64 i64) (result i32)
    153    (local i32)
    154    (local.set 2 (i32.const 1))
    155    (block
    156      (loop
    157        (local.set 2 (i32.load8_u (local.get 0)))
    158        (br_if 1 (i32.ne (local.get 2) (i32.const 0)))
    159        (br_if 1 (i64.ge_u (local.get 0) (local.get 1)))
    160        (local.set 0 (i64.add (local.get 0) (i64.const 1)))
    161        (br_if 0 (i64.le_u (local.get 0) (local.get 1)))
    162      )
    163    )
    164    (local.get 2)
    165  )
    166 )`);
    167 
    168 // ./test/core/memory64/memory_grow64.wast:85
    169 assert_return(() => invoke($3, `check-memory-zero`, [0n, 65535n]), [value("i32", 0)]);
    170 
    171 // ./test/core/memory64/memory_grow64.wast:86
    172 assert_return(() => invoke($3, `grow`, [1n]), [value("i64", 1n)]);
    173 
    174 // ./test/core/memory64/memory_grow64.wast:87
    175 assert_return(() => invoke($3, `check-memory-zero`, [65536n, 131071n]), [value("i32", 0)]);
    176 
    177 // ./test/core/memory64/memory_grow64.wast:88
    178 assert_return(() => invoke($3, `grow`, [1n]), [value("i64", 2n)]);
    179 
    180 // ./test/core/memory64/memory_grow64.wast:89
    181 assert_return(() => invoke($3, `check-memory-zero`, [131072n, 196607n]), [value("i32", 0)]);
    182 
    183 // ./test/core/memory64/memory_grow64.wast:90
    184 assert_return(() => invoke($3, `grow`, [1n]), [value("i64", 3n)]);
    185 
    186 // ./test/core/memory64/memory_grow64.wast:91
    187 assert_return(() => invoke($3, `check-memory-zero`, [196608n, 262143n]), [value("i32", 0)]);
    188 
    189 // ./test/core/memory64/memory_grow64.wast:92
    190 assert_return(() => invoke($3, `grow`, [1n]), [value("i64", 4n)]);
    191 
    192 // ./test/core/memory64/memory_grow64.wast:93
    193 assert_return(() => invoke($3, `check-memory-zero`, [262144n, 327679n]), [value("i32", 0)]);
    194 
    195 // ./test/core/memory64/memory_grow64.wast:94
    196 assert_return(() => invoke($3, `grow`, [1n]), [value("i64", 5n)]);
    197 
    198 // ./test/core/memory64/memory_grow64.wast:95
    199 assert_return(() => invoke($3, `check-memory-zero`, [327680n, 393215n]), [value("i32", 0)]);