Sui, a next-generation smart contract platform with high throughput, low latency, and an asset-oriented programming model powered by the Move programming language
This PR finesses support for tracing macros, but due to how macros are (or rather are not) represented in the bytecode and source maps, this support has some limitations. In particular:
Currently we don't keep track of variable values inside macros
Macros and lambdas are not real function calls so when tracing execution of the macro, control flow may move somewhat unpredictably between the caller and callee
We track macro invocations using virtual frames but these are not necessarily pushed/popped symmetrically due to lack of precise information on when macro code starts and ends. As a result we keep limited number of virtual frames on the stack (max 2) - more detailed explanation can be found in code comments
Description
This PR finesses support for tracing macros, but due to how macros are (or rather are not) represented in the bytecode and source maps, this support has some limitations. In particular:
Test plan
All new and old tests must pass