xermicus
authored
This PR changes how we call runtime API methods with more than 6 arguments: They are no longer spilled to the stack but packed into registers instead. Pointers are 32 bit wide so we can pack two of them into a single 64 bit register. Since we mostly pass pointers, this technique effectively increases the number of arguments we can pass using the available registers. To make this work for `instantiate` too we now pass the code hash and the call data in the same buffer, akin to how the `create` family opcodes work in the EVM. The code hash is fixed in size, implying the start of the constructor call data. --------- Signed-off-by:xermicus <cyrill@parity.io> Signed-off-by:
Cyrill Leutwiler <bigcyrill@hotmail.com> Co-authored-by: command-bot <> Co-authored-by:
cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by:
Alexander Theißen <alex.theissen@me.com>
Name | Last commit | Last update |
---|---|---|
.. | ||
benchmarking | ||
evm | ||
storage | ||
test_utils | ||
tests | ||
wasm | ||
address.rs | ||
chain_extension.rs | ||
evm.rs | ||
exec.rs | ||
gas.rs | ||
lib.rs | ||
limits.rs | ||
primitives.rs | ||
storage.rs | ||
test_utils.rs | ||
tests.rs | ||
tracing.rs | ||
transient_storage.rs | ||
weights.rs |