You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Oct 28, 2021. It is now read-only.
LegacyVM has optimizations (enabled by default) which need to replace all PUSH6-PUSH32, JUMP, JUMPI opcodes in the original code with synthetic opcodes PUSHC, JUMPC, JUMPCI before the execution.
The problem is that during execution opcode callback gets these synthetic opcodes, this results in VM trace showing them instead of the original ones.
I think this can be fixed by calling the callback in the case of PUSHC, JUMPC, JUMPCI with original opcode instead of m_OP.
The original PUSH can be found from m_code[PUSHC_offset + 3], see
See #5804 (comment)
LegacyVM has optimizations (enabled by default) which need to replace all
PUSH6
-PUSH32
,JUMP
,JUMPI
opcodes in the original code with synthetic opcodesPUSHC
,JUMPC
,JUMPCI
before the execution.The problem is that during execution opcode callback gets these synthetic opcodes, this results in VM trace showing them instead of the original ones.
I think this can be fixed by calling the callback in the case of
PUSHC
,JUMPC
,JUMPCI
with original opcode instead ofm_OP
.The original
PUSH
can be found fromm_code[PUSHC_offset + 3]
, seealeth/libevm/LegacyVMOpt.cpp
Line 132 in 9d42e22
The workaround disabling optimizations is
cmake .. -DEVM_OPTIMIZE=OFF
The text was updated successfully, but these errors were encountered: