示例#1
0
def test_deserialize():
    store = Store()

    serialized_module = Module(
        store, """
        (module
          (func (export "function") (param i32 i64)))
        """).serialize()
    module = Module.deserialize(store, serialized_module)
    del serialized_module

    exports = module.exports

    assert len(module.exports) == 1
    assert exports[0].name == "function"
    assert isinstance(exports[0].type, FunctionType)
    assert exports[0].type.params == [Type.I32, Type.I64]
    assert exports[0].type.results == []
示例#2
0
def test_deserialize():
    serialized_module = Module(TEST_BYTES).serialize()
    module = Module.deserialize(serialized_module)
    del serialized_module

    assert module.instantiate().exports.sum(1, 2) == 3
示例#3
0
# Second step, deserialize the compiled Wasm module, and execute it,
# for example with Wasmer without a compiler.

from wasmer import engine, Store, Instance, Module

# We create a headless Dylib engine, i.e. an engine without a
# compiler.
engine = engine.Dylib()

# Create a store, as usual.
store = Store(engine)

# Here we go.
#
# Deserialize the compiled Wasm module. This code is unsafe because
# Wasmer can't assert the bytes are valid, so be careful.
module = Module.deserialize(store, serialized_module_file.read())

# Congrats, the Wasm module has been deserialized! Now let's execute
# it for the sake of having a complete example.

# Let's instantiate the Wasm module.
instance = Instance(module)

# The Wasm module exports a function called `sum`.
results = instance.exports.sum(1, 2)

assert results == 3
print(results)
示例#4
0
 def bench():
     deserialized = Module.deserialize(store, serialized)
     _ = Instance(deserialized)