diff options
author | benjaminion <ben@edginet.org> | 2017-06-14 00:01:38 +0800 |
---|---|---|
committer | benjaminion <ben@edginet.org> | 2017-06-14 00:01:38 +0800 |
commit | c603369a5135efd1c6e7109dbc180ccb2bf8c03e (patch) | |
tree | 465c76fa3fdf3773bd902100564b954d2e641ae8 /liblll | |
parent | 40f5690f68961130073028526f8b923ed0793c8a (diff) | |
download | dexon-solidity-c603369a5135efd1c6e7109dbc180ccb2bf8c03e.tar.gz dexon-solidity-c603369a5135efd1c6e7109dbc180ccb2bf8c03e.tar.zst dexon-solidity-c603369a5135efd1c6e7109dbc180ccb2bf8c03e.zip |
Change opcode generated by (panic) to INVALID
EIP-141 ethereum/EIPs#141 has preserved 0xfe as an invalid opcode for aborting EVM execution. The EVM assembler supports this via the INVALID opcode.
The LLL "panic" expression used to generate a jump to an invalid location in order to abort EVM execution. This change brings "panic" into line with EIP-141 by generating the INVALID opcode instead.
Diffstat (limited to 'liblll')
-rw-r--r-- | liblll/CodeFragment.cpp | 4 | ||||
-rw-r--r-- | liblll/CompilerState.cpp | 1 |
2 files changed, 1 insertions, 4 deletions
diff --git a/liblll/CodeFragment.cpp b/liblll/CodeFragment.cpp index 2b8822a6..0f7f48ba 100644 --- a/liblll/CodeFragment.cpp +++ b/liblll/CodeFragment.cpp @@ -573,10 +573,6 @@ void CodeFragment::constructOperation(sp::utree const& _t, CompilerState& _s) m_asm.append(i.m_asm); m_asm.popTo(1); } - else if (us == "PANIC") - { - m_asm.appendJump(m_asm.errorTag()); - } else if (us == "BYTECODESIZE") { m_asm.appendProgramSize(); diff --git a/liblll/CompilerState.cpp b/liblll/CompilerState.cpp index 88e43e18..006929e4 100644 --- a/liblll/CompilerState.cpp +++ b/liblll/CompilerState.cpp @@ -45,6 +45,7 @@ CodeFragment const& CompilerState::getDef(std::string const& _s) void CompilerState::populateStandard() { static const string s = "{" + "(def 'panic () (asm INVALID))" "(def 'allgas (- (gas) 21))" "(def 'send (to value) (call allgas to value 0 0 0 0))" "(def 'send (gaslimit to value) (call gaslimit to value 0 0 0 0))" |