/* 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/gc/extern.wast
// ./test/core/gc/extern.wast:1
let $0 = instantiate(`(module
(type $$ft (func))
(type $$st (struct))
(type $$at (array i8))
(table 10 anyref)
(elem declare func $$f)
(func $$f)
(func (export "init" ) (param $$x externref)
(table.set (i32.const 0 ) (ref.null any))
(table.set (i32.const 1 ) (ref.i31 (i32.const 7 )))
(table.set (i32.const 2 ) (struct.new_default $$st))
(table.set (i32.const 3 ) (array.new_default $$at (i32.const 0 )))
(table.set (i32.const 4 ) (any.convert_extern (local.get $$x)))
)
(func (export "internalize" ) (param externref) (result anyref)
(any.convert_extern (local.get 0 ))
)
(func (export "externalize" ) (param anyref) (result externref)
(extern.convert_any (local.get 0 ))
)
(func (export "externalize-i" ) (param i32) (result externref)
(extern.convert_any (table.get (local.get 0 )))
)
(func (export "externalize-ii" ) (param i32) (result anyref)
(any.convert_extern (extern.convert_any (table.get (local.get 0 ))))
)
)`);
// ./test/core/gc/extern.wast:34
invoke($0 , `init`, [externref(0 )]);
// ./test/core/gc/extern.wast:36
assert_return(() => invoke($0 , `internalize`, [externref(1 )]), [new HostRefResult(1 )]);
// ./test/core/gc/extern.wast:37
assert_return(() => invoke($0 , `internalize`, [null ]), [value('anyref' , null )]);
// ./test/core/gc/extern.wast:39
assert_return(() => invoke($0 , `externalize`, [hostref(2 )]), [new ExternRefResult(2 )]);
// ./test/core/gc/extern.wast:40
assert_return(() => invoke($0 , `externalize`, [null ]), [value('externref' , null )]);
// ./test/core/gc/extern.wast:42
assert_return(() => invoke($0 , `externalize-i`, [0 ]), [value('externref' , null )]);
// ./test/core/gc/extern.wast:43
assert_return(() => invoke($0 , `externalize-i`, [1 ]), [new RefWithType('externref' )]);
// ./test/core/gc/extern.wast:44
assert_return(() => invoke($0 , `externalize-i`, [2 ]), [new RefWithType('externref' )]);
// ./test/core/gc/extern.wast:45
assert_return(() => invoke($0 , `externalize-i`, [3 ]), [new RefWithType('externref' )]);
// ./test/core/gc/extern.wast:46
assert_return(() => invoke($0 , `externalize-i`, [4 ]), [new RefWithType('externref' )]);
// ./test/core/gc/extern.wast:47
assert_return(() => invoke($0 , `externalize-i`, [5 ]), [value('externref' , null )]);
// ./test/core/gc/extern.wast:49
assert_return(() => invoke($0 , `externalize-ii`, [0 ]), [value('anyref' , null )]);
// ./test/core/gc/extern.wast:50
assert_return(() => invoke($0 , `externalize-ii`, [1 ]), [new RefWithType('i31ref' )]);
// ./test/core/gc/extern.wast:51
assert_return(() => invoke($0 , `externalize-ii`, [2 ]), [new RefWithType('structref' )]);
// ./test/core/gc/extern.wast:52
assert_return(() => invoke($0 , `externalize-ii`, [3 ]), [new RefWithType('arrayref' )]);
// ./test/core/gc/extern.wast:53
assert_return(() => invoke($0 , `externalize-ii`, [4 ]), [new HostRefResult(0 )]);
// ./test/core/gc/extern.wast:54
assert_return(() => invoke($0 , `externalize-ii`, [5 ]), [value('anyref' , null )]);
Messung V0.5 in Prozent C=85 H=93 G=88
¤ Dauer der Verarbeitung: 0.2 Sekunden
¤
*© Formatika GbR, Deutschland