/* 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
*
* http : //www.apache.org/licenses/LICENSE-2.0
*
* 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/store.wast
// ./test/core/store.wast:3
let $0 = instantiate(`(module
(memory $$mem1 1 )
(memory $$mem2 1 )
(func (export "load1" ) (param i32) (result i64)
(i64.load $$mem1 (local.get 0 ))
)
(func (export "load2" ) (param i32) (result i64)
(i64.load $$mem2 (local.get 0 ))
)
(func (export "store1" ) (param i32 i64)
(i64.store $$mem1 (local.get 0 ) (local.get 1 ))
)
(func (export "store2" ) (param i32 i64)
(i64.store $$mem2 (local.get 0 ) (local.get 1 ))
)
)`);
// ./test/core/store.wast:22
invoke($0 , `store1`, [0 , 1 n]);
// ./test/core/store.wast:23
invoke($0 , `store2`, [0 , 2 n]);
// ./test/core/store.wast:24
assert_return(() => invoke($0 , `load1`, [0 ]), [value("i64" , 1 n)]);
// ./test/core/store.wast:25
assert_return(() => invoke($0 , `load2`, [0 ]), [value("i64" , 2 n)]);
// ./test/core/store.wast:28
let $1 = instantiate(`(module $$M1
(memory (export "mem" ) 1 )
(func (export "load" ) (param i32) (result i64)
(i64.load (local.get 0 ))
)
(func (export "store" ) (param i32 i64)
(i64.store (local.get 0 ) (local.get 1 ))
)
)`);
let $M1 = $1 ;
// ./test/core/store.wast:38
register($1 , `M1`);
// ./test/core/store.wast:40
let $2 = instantiate(`(module $$M2
(memory (export "mem" ) 1 )
(func (export "load" ) (param i32) (result i64)
(i64.load (local.get 0 ))
)
(func (export "store" ) (param i32 i64)
(i64.store (local.get 0 ) (local.get 1 ))
)
)`);
let $M2 = $2 ;
// ./test/core/store.wast:50
register($2 , `M2`);
// ./test/core/store.wast:52
invoke($M1, `store`, [0 , 1 n]);
// ./test/core/store.wast:53
invoke($M2, `store`, [0 , 2 n]);
// ./test/core/store.wast:54
assert_return(() => invoke($M1, `load`, [0 ]), [value("i64" , 1 n)]);
// ./test/core/store.wast:55
assert_return(() => invoke($M2, `load`, [0 ]), [value("i64" , 2 n)]);
// ./test/core/store.wast:57
let $3 = instantiate(`(module
(memory $$mem1 (import "M1" "mem" ) 1 )
(memory $$mem2 (import "M2" "mem" ) 1 )
(func (export "load1" ) (param i32) (result i64)
(i64.load $$mem1 (local.get 0 ))
)
(func (export "load2" ) (param i32) (result i64)
(i64.load $$mem2 (local.get 0 ))
)
(func (export "store1" ) (param i32 i64)
(i64.store $$mem1 (local.get 0 ) (local.get 1 ))
)
(func (export "store2" ) (param i32 i64)
(i64.store $$mem2 (local.get 0 ) (local.get 1 ))
)
)`);
// ./test/core/store.wast:76
invoke($3 , `store1`, [0 , 1 n]);
// ./test/core/store.wast:77
invoke($3 , `store2`, [0 , 2 n]);
// ./test/core/store.wast:78
assert_return(() => invoke($3 , `load1`, [0 ]), [value("i64" , 1 n)]);
// ./test/core/store.wast:79
assert_return(() => invoke($3 , `load2`, [0 ]), [value("i64" , 2 n)]);
// ./test/core/store.wast:82
let $4 = instantiate(`(module
(memory (export "mem" ) 2 )
)`);
// ./test/core/store.wast:85
register($4 , `M`);
// ./test/core/store.wast:87
let $5 = instantiate(`(module
(memory $$mem1 (import "M" "mem" ) 2 )
(memory $$mem2 3 )
(data (memory $$mem1) (i32.const 20 ) "\\01\\02\\03\\04\\05" )
(data (memory $$mem2) (i32.const 50 ) "\\0A\\0B\\0C\\0D\\0E" )
(func (export "read1" ) (param i32) (result i32)
(i32.load8_u $$mem1 (local.get 0 ))
)
(func (export "read2" ) (param i32) (result i32)
(i32.load8_u $$mem2 (local.get 0 ))
)
(func (export "copy-1-to-2" )
(local $$i i32)
(local.set $$i (i32.const 20 ))
(loop $$cont
(br_if 1 (i32.eq (local.get $$i) (i32.const 23 )))
(i32.store8 $$mem2 (local.get $$i) (i32.load8_u $$mem1 (local.get $$i)))
(local.set $$i (i32.add (local.get $$i) (i32.const 1 )))
(br $$cont)
)
)
(func (export "copy-2-to-1" )
(local $$i i32)
(local.set $$i (i32.const 50 ))
(loop $$cont
(br_if 1 (i32.eq (local.get $$i) (i32.const 54 )))
(i32.store8 $$mem1 (local.get $$i) (i32.load8_u $$mem2 (local.get $$i)))
(local.set $$i (i32.add (local.get $$i) (i32.const 1 )))
(br $$cont)
)
)
)`);
// ./test/core/store.wast:124
assert_return(() => invoke($5 , `read2`, [20 ]), [value("i32" , 0 )]);
// ./test/core/store.wast:125
assert_return(() => invoke($5 , `read2`, [21 ]), [value("i32" , 0 )]);
// ./test/core/store.wast:126
assert_return(() => invoke($5 , `read2`, [22 ]), [value("i32" , 0 )]);
// ./test/core/store.wast:127
assert_return(() => invoke($5 , `read2`, [23 ]), [value("i32" , 0 )]);
// ./test/core/store.wast:128
assert_return(() => invoke($5 , `read2`, [24 ]), [value("i32" , 0 )]);
// ./test/core/store.wast:129
invoke($5 , `copy-1 -to-2 `, []);
// ./test/core/store.wast:130
assert_return(() => invoke($5 , `read2`, [20 ]), [value("i32" , 1 )]);
// ./test/core/store.wast:131
assert_return(() => invoke($5 , `read2`, [21 ]), [value("i32" , 2 )]);
// ./test/core/store.wast:132
assert_return(() => invoke($5 , `read2`, [22 ]), [value("i32" , 3 )]);
// ./test/core/store.wast:133
assert_return(() => invoke($5 , `read2`, [23 ]), [value("i32" , 0 )]);
// ./test/core/store.wast:134
assert_return(() => invoke($5 , `read2`, [24 ]), [value("i32" , 0 )]);
// ./test/core/store.wast:136
assert_return(() => invoke($5 , `read1`, [50 ]), [value("i32" , 0 )]);
// ./test/core/store.wast:137
assert_return(() => invoke($5 , `read1`, [51 ]), [value("i32" , 0 )]);
// ./test/core/store.wast:138
assert_return(() => invoke($5 , `read1`, [52 ]), [value("i32" , 0 )]);
// ./test/core/store.wast:139
assert_return(() => invoke($5 , `read1`, [53 ]), [value("i32" , 0 )]);
// ./test/core/store.wast:140
assert_return(() => invoke($5 , `read1`, [54 ]), [value("i32" , 0 )]);
// ./test/core/store.wast:141
invoke($5 , `copy-2 -to-1 `, []);
// ./test/core/store.wast:142
assert_return(() => invoke($5 , `read1`, [50 ]), [value("i32" , 10 )]);
// ./test/core/store.wast:143
assert_return(() => invoke($5 , `read1`, [51 ]), [value("i32" , 11 )]);
// ./test/core/store.wast:144
assert_return(() => invoke($5 , `read1`, [52 ]), [value("i32" , 12 )]);
// ./test/core/store.wast:145
assert_return(() => invoke($5 , `read1`, [53 ]), [value("i32" , 13 )]);
// ./test/core/store.wast:146
assert_return(() => invoke($5 , `read1`, [54 ]), [value("i32" , 0 )]);
// ./test/core/store.wast:151
let $6 = instantiate(`(module
(memory 1 )
(func (export "as-block-value" )
(block (i32.store (i32.const 0 ) (i32.const 1 )))
)
(func (export "as-loop-value" )
(loop (i32.store (i32.const 0 ) (i32.const 1 )))
)
(func (export "as-br-value" )
(block (br 0 (i32.store (i32.const 0 ) (i32.const 1 ))))
)
(func (export "as-br_if-value" )
(block
(br_if 0 (i32.store (i32.const 0 ) (i32.const 1 )) (i32.const 1 ))
)
)
(func (export "as-br_if-value-cond" )
(block
(br_if 0 (i32.const 6 ) (i32.store (i32.const 0 ) (i32.const 1 )))
)
)
(func (export "as-br_table-value" )
(block
(br_table 0 (i32.store (i32.const 0 ) (i32.const 1 )) (i32.const 1 ))
)
)
(func (export "as-return-value" )
(return (i32.store (i32.const 0 ) (i32.const 1 )))
)
(func (export "as-if-then" )
(if (i32.const 1 ) (then (i32.store (i32.const 0 ) (i32.const 1 ))))
)
(func (export "as-if-else" )
(if (i32.const 0 ) (then) (else (i32.store (i32.const 0 ) (i32.const 1 ))))
)
)`);
// ./test/core/store.wast:192
assert_return(() => invoke($6 , `as-block-value`, []), []);
// ./test/core/store.wast:193
assert_return(() => invoke($6 , `as-loop-value`, []), []);
// ./test/core/store.wast:195
assert_return(() => invoke($6 , `as-br-value`, []), []);
// ./test/core/store.wast:196
assert_return(() => invoke($6 , `as-br_if-value`, []), []);
// ./test/core/store.wast:197
assert_return(() => invoke($6 , `as-br_if-value-cond`, []), []);
// ./test/core/store.wast:198
assert_return(() => invoke($6 , `as-br_table-value`, []), []);
// ./test/core/store.wast:200
assert_return(() => invoke($6 , `as-return -value`, []), []);
// ./test/core/store.wast:202
assert_return(() => invoke($6 , `as-if -then`, []), []);
// ./test/core/store.wast:203
assert_return(() => invoke($6 , `as-if -else `, []), []);
// ./test/core/store.wast:205
assert_malformed(
() => instantiate(`(memory 1 ) (func (param i32) (i32.store32 (local.get 0 ) (i32.const 0 ))) `),
`unknown operator`,
);
// ./test/core/store.wast:212
assert_malformed(
() => instantiate(`(memory 1 ) (func (param i32) (i32.store64 (local.get 0 ) (i64.const 0 ))) `),
`unknown operator`,
);
// ./test/core/store.wast:220
assert_malformed(
() => instantiate(`(memory 1 ) (func (param i32) (i64.store64 (local.get 0 ) (i64.const 0 ))) `),
`unknown operator`,
);
// ./test/core/store.wast:228
assert_malformed(
() => instantiate(`(memory 1 ) (func (param i32) (f32.store32 (local.get 0 ) (f32.const 0 ))) `),
`unknown operator`,
);
// ./test/core/store.wast:235
assert_malformed(
() => instantiate(`(memory 1 ) (func (param i32) (f32.store64 (local.get 0 ) (f64.const 0 ))) `),
`unknown operator`,
);
// ./test/core/store.wast:243
assert_malformed(
() => instantiate(`(memory 1 ) (func (param i32) (f64.store32 (local.get 0 ) (f32.const 0 ))) `),
`unknown operator`,
);
// ./test/core/store.wast:250
assert_malformed(
() => instantiate(`(memory 1 ) (func (param i32) (f64.store64 (local.get 0 ) (f64.const 0 ))) `),
`unknown operator`,
);
// ./test/core/store.wast:259
assert_invalid(
() => instantiate(`(module (memory 1 ) (func (param i32) (result i32) (i32.store (i32.const 0 ) (i32.const 1 ))))`),
`type mismatch`,
);
// ./test/core/store.wast:263
assert_invalid(
() => instantiate(`(module (memory 1 ) (func (param i64) (result i64) (i64.store (i32.const 0 ) (i64.const 1 ))))`),
`type mismatch`,
);
// ./test/core/store.wast:267
assert_invalid(
() => instantiate(`(module (memory 1 ) (func (param f32) (result f32) (f32.store (i32.const 0 ) (f32.const 1 ))))`),
`type mismatch`,
);
// ./test/core/store.wast:271
assert_invalid(
() => instantiate(`(module (memory 1 ) (func (param f64) (result f64) (f64.store (i32.const 0 ) (f64.const 1 ))))`),
`type mismatch`,
);
// ./test/core/store.wast:275
assert_invalid(
() => instantiate(`(module (memory 1 ) (func (param i32) (result i32) (i32.store8 (i32.const 0 ) (i32.const 1 ))))`),
`type mismatch`,
);
// ./test/core/store.wast:279
assert_invalid(
() => instantiate(`(module (memory 1 ) (func (param i32) (result i32) (i32.store16 (i32.const 0 ) (i32.const 1 ))))`),
`type mismatch`,
);
// ./test/core/store.wast:283
assert_invalid(
() => instantiate(`(module (memory 1 ) (func (param i64) (result i64) (i64.store8 (i32.const 0 ) (i64.const 1 ))))`),
`type mismatch`,
);
// ./test/core/store.wast:287
assert_invalid(
() => instantiate(`(module (memory 1 ) (func (param i64) (result i64) (i64.store16 (i32.const 0 ) (i64.const 1 ))))`),
`type mismatch`,
);
// ./test/core/store.wast:291
assert_invalid(
() => instantiate(`(module (memory 1 ) (func (param i64) (result i64) (i64.store32 (i32.const 0 ) (i64.const 1 ))))`),
`type mismatch`,
);
// ./test/core/store.wast:297
assert_invalid(
() => instantiate(`(module
(memory 1 )
(func $$type-address-empty
(i32.store)
)
)`),
`type mismatch`,
);
// ./test/core/store.wast:306
assert_invalid(
() => instantiate(`(module
(memory 1 )
(func $$type-value-empty
(i32.const 0 ) (i32.store)
)
)`),
`type mismatch`,
);
// ./test/core/store.wast:315
assert_invalid(
() => instantiate(`(module
(memory 1 )
(func $$type-address-empty-in-block
(i32.const 0 ) (i32.const 0 )
(block (i32.store))
)
)`),
`type mismatch`,
);
// ./test/core/store.wast:325
assert_invalid(
() => instantiate(`(module
(memory 1 )
(func $$type-value-empty-in-block
(i32.const 0 )
(block (i32.const 0 ) (i32.store))
)
)`),
`type mismatch`,
);
// ./test/core/store.wast:335
assert_invalid(
() => instantiate(`(module
(memory 1 )
(func $$type-address-empty-in-loop
(i32.const 0 ) (i32.const 0 )
(loop (i32.store))
)
)`),
`type mismatch`,
);
// ./test/core/store.wast:345
assert_invalid(
() => instantiate(`(module
(memory 1 )
(func $$type-value-empty-in-loop
(i32.const 0 )
(loop (i32.const 0 ) (i32.store))
)
)`),
`type mismatch`,
);
// ./test/core/store.wast:355
assert_invalid(
() => instantiate(`(module
(memory 1 )
(func $$type-address-empty-in-then
(i32.const 0 ) (i32.const 0 )
(if (then (i32.store)))
)
)`),
`type mismatch`,
);
// ./test/core/store.wast:365
assert_invalid(
() => instantiate(`(module
(memory 1 )
(func $$type-value-empty-in-then
(i32.const 0 )
(if (then (i32.const 0 ) (i32.store)))
)
)`),
`type mismatch`,
);
// ./test/core/store.wast:375
assert_invalid(
() => instantiate(`(module
(memory 1 )
(func $$type-address-empty-in-else
(i32.const 0 ) (i32.const 0 )
(if (result i32) (then (i32.const 0 )) (else (i32.store)))
)
)`),
`type mismatch`,
);
// ./test/core/store.wast:385
assert_invalid(
() => instantiate(`(module
(memory 1 )
(func $$type-value-empty-in-else
(i32.const 0 )
(if (result i32) (then (i32.const 0 )) (else (i32.const 0 ) (i32.store)))
)
)`),
`type mismatch`,
);
// ./test/core/store.wast:395
assert_invalid(
() => instantiate(`(module
(memory 1 )
(func $$type-address-empty-in-br
(i32.const 0 ) (i32.const 0 )
(block (br 0 (i32.store)))
)
)`),
`type mismatch`,
);
// ./test/core/store.wast:405
assert_invalid(
() => instantiate(`(module
(memory 1 )
(func $$type-value-empty-in-br
(i32.const 0 )
(block (br 0 (i32.const 0 ) (i32.store)))
)
)`),
`type mismatch`,
);
// ./test/core/store.wast:415
assert_invalid(
() => instantiate(`(module
(memory 1 )
(func $$type-address-empty-in-br_if
(i32.const 0 ) (i32.const 0 )
(block (br_if 0 (i32.store) (i32.const 1 )) )
)
)`),
`type mismatch`,
);
// ./test/core/store.wast:425
assert_invalid(
() => instantiate(`(module
(memory 1 )
(func $$type-value-empty-in-br_if
(i32.const 0 )
(block (br_if 0 (i32.const 0 ) (i32.store) (i32.const 1 )) )
)
)`),
`type mismatch`,
);
// ./test/core/store.wast:435
assert_invalid(
() => instantiate(`(module
(memory 1 )
(func $$type-address-empty-in-br_table
(i32.const 0 ) (i32.const 0 )
(block (br_table 0 (i32.store)))
)
)`),
`type mismatch`,
);
// ./test/core/store.wast:445
assert_invalid(
() => instantiate(`(module
(memory 1 )
(func $$type-value-empty-in-br_table
(i32.const 0 )
(block (br_table 0 (i32.const 0 ) (i32.store)))
)
)`),
`type mismatch`,
);
// ./test/core/store.wast:455
assert_invalid(
() => instantiate(`(module
(memory 1 )
(func $$type-address-empty-in-return
(return (i32.store))
)
)`),
`type mismatch`,
);
// ./test/core/store.wast:464
assert_invalid(
() => instantiate(`(module
(memory 1 )
(func $$type-value-empty-in-return
(return (i32.const 0 ) (i32.store))
)
)`),
`type mismatch`,
);
// ./test/core/store.wast:473
assert_invalid(
() => instantiate(`(module
(memory 1 )
(func $$type-address-empty-in-select
(select (i32.store) (i32.const 1 ) (i32.const 2 ))
)
)`),
`type mismatch`,
);
// ./test/core/store.wast:482
assert_invalid(
() => instantiate(`(module
(memory 1 )
(func $$type-value-empty-in-select
(select (i32.const 0 ) (i32.store) (i32.const 1 ) (i32.const 2 ))
)
)`),
`type mismatch`,
);
// ./test/core/store.wast:491
assert_invalid(
() => instantiate(`(module
(memory 1 )
(func $$type-address-empty-in-call
(call 1 (i32.store))
)
(func (param i32) (result i32) (local.get 0 ))
)`),
`type mismatch`,
);
// ./test/core/store.wast:501
assert_invalid(
() => instantiate(`(module
(memory 1 )
(func $$type-value-empty-in-call
(call 1 (i32.const 0 ) (i32.store))
)
(func (param i32) (result i32) (local.get 0 ))
)`),
`type mismatch`,
);
// ./test/core/store.wast:511
assert_invalid(
() => instantiate(`(module
(memory 1 )
(func $$f (param i32) (result i32) (local.get 0 ))
(type $$sig (func (param i32) (result i32)))
(table funcref (elem $$f))
(func $$type-address-empty-in-call_indirect
(block (result i32)
(call_indirect (type $$sig)
(i32.store) (i32.const 0 )
)
)
)
)`),
`type mismatch`,
);
// ./test/core/store.wast:527
assert_invalid(
() => instantiate(`(module
(memory 1 )
(func $$f (param i32) (result i32) (local.get 0 ))
(type $$sig (func (param i32) (result i32)))
(table funcref (elem $$f))
(func $$type-value-empty-in-call_indirect
(block (result i32)
(call_indirect (type $$sig)
(i32.const 0 ) (i32.store) (i32.const 0 )
)
)
)
)`),
`type mismatch`,
);
// ./test/core/store.wast:547
assert_invalid(
() => instantiate(`(module (memory 1 ) (func (i32.store (f32.const 0 ) (i32.const 0 ))))`),
`type mismatch`,
);
// ./test/core/store.wast:548
assert_invalid(
() => instantiate(`(module (memory 1 ) (func (i32.store8 (f32.const 0 ) (i32.const 0 ))))`),
`type mismatch`,
);
// ./test/core/store.wast:549
assert_invalid(
() => instantiate(`(module (memory 1 ) (func (i32.store16 (f32.const 0 ) (i32.const 0 ))))`),
`type mismatch`,
);
// ./test/core/store.wast:550
assert_invalid(
() => instantiate(`(module (memory 1 ) (func (i64.store (f32.const 0 ) (i32.const 0 ))))`),
`type mismatch`,
);
// ./test/core/store.wast:551
assert_invalid(
() => instantiate(`(module (memory 1 ) (func (i64.store8 (f32.const 0 ) (i64.const 0 ))))`),
`type mismatch`,
);
// ./test/core/store.wast:552
assert_invalid(
() => instantiate(`(module (memory 1 ) (func (i64.store16 (f32.const 0 ) (i64.const 0 ))))`),
`type mismatch`,
);
// ./test/core/store.wast:553
assert_invalid(
() => instantiate(`(module (memory 1 ) (func (i64.store32 (f32.const 0 ) (i64.const 0 ))))`),
`type mismatch`,
);
// ./test/core/store.wast:554
assert_invalid(
() => instantiate(`(module (memory 1 ) (func (f32.store (f32.const 0 ) (f32.const 0 ))))`),
`type mismatch`,
);
// ./test/core/store.wast:555
assert_invalid(
() => instantiate(`(module (memory 1 ) (func (f64.store (f32.const 0 ) (f64.const 0 ))))`),
`type mismatch`,
);
// ./test/core/store.wast:557
assert_invalid(
() => instantiate(`(module (memory 1 ) (func (i32.store (i32.const 0 ) (f32.const 0 ))))`),
`type mismatch`,
);
// ./test/core/store.wast:558
assert_invalid(
() => instantiate(`(module (memory 1 ) (func (i32.store8 (i32.const 0 ) (f32.const 0 ))))`),
`type mismatch`,
);
// ./test/core/store.wast:559
assert_invalid(
() => instantiate(`(module (memory 1 ) (func (i32.store16 (i32.const 0 ) (f32.const 0 ))))`),
`type mismatch`,
);
// ./test/core/store.wast:560
assert_invalid(
() => instantiate(`(module (memory 1 ) (func (i64.store (i32.const 0 ) (f32.const 0 ))))`),
`type mismatch`,
);
// ./test/core/store.wast:561
assert_invalid(
() => instantiate(`(module (memory 1 ) (func (i64.store8 (i32.const 0 ) (f64.const 0 ))))`),
`type mismatch`,
);
// ./test/core/store.wast:562
assert_invalid(
() => instantiate(`(module (memory 1 ) (func (i64.store16 (i32.const 0 ) (f64.const 0 ))))`),
`type mismatch`,
);
// ./test/core/store.wast:563
assert_invalid(
() => instantiate(`(module (memory 1 ) (func (i64.store32 (i32.const 0 ) (f64.const 0 ))))`),
`type mismatch`,
);
// ./test/core/store.wast:564
assert_invalid(
() => instantiate(`(module (memory 1 ) (func (f32.store (i32.const 0 ) (i32.const 0 ))))`),
`type mismatch`,
);
// ./test/core/store.wast:565
assert_invalid(
() => instantiate(`(module (memory 1 ) (func (f64.store (i32.const 0 ) (i64.const 0 ))))`),
`type mismatch`,
);
Messung V0.5 in Prozent C=88 H=100 G=94
¤ Dauer der Verarbeitung: 0.7 Sekunden
¤
*© Formatika GbR, Deutschland