EOS allows to reset the contract code payload, unlike some other blockchains:
How the code upgrade works in a practice for a contract that maintains a state? I assume that clang produces a mapping from symbols to raw addresses that is then used by WASM run-time?
How variables are defined and addressed in WASM run-time?
How address mapping is affected when one recompiles the code and adds or removes variables from the new code?
Is address mapping guarantees to be stable between compiles or compiler versions?