-
Notifications
You must be signed in to change notification settings - Fork 799
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[pallet-revive] pack exceeding syscall arguments into registers #7319
base: master
Are you sure you want to change the base?
Conversation
bot fmt |
@xermicus https://gitlab.parity.io/parity/mirrors/polkadot-sdk/-/jobs/8080673 was started for your command Comment |
@xermicus Command |
/cmd prdoc --audience runtime_dev --bump major |
/cmd bench --runtime dev --pallet pallet_revive |
Signed-off-by: xermicus <[email protected]>
Command "bench --runtime dev --pallet pallet_revive" has started 🚀 See logs here |
Signed-off-by: xermicus <[email protected]>
Command "bench --runtime dev --pallet pallet_revive" has finished ✅ See logs here Subweight results:
Command output:✅ Successful benchmarks of runtimes/pallets: |
All GitHub workflows were cancelled due to failure one of the required jobs. |
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 thecreate
family opcodes work in the EVM. The code hash is fixed in size, implying the start of the constructor call data.