mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Add REVERT to libevmasm
This commit is contained in:
parent
14ded4963d
commit
148f923351
@ -80,6 +80,7 @@ GasMeter::GasConsumption GasMeter::estimateMax(AssemblyItem const& _item, bool _
|
||||
gas += GasCosts::sloadGas;
|
||||
break;
|
||||
case Instruction::RETURN:
|
||||
case Instruction::REVERT:
|
||||
gas += memoryGas(0, -1);
|
||||
break;
|
||||
case Instruction::MLOAD:
|
||||
|
@ -159,6 +159,7 @@ const std::map<std::string, Instruction> dev::solidity::c_instructions =
|
||||
{ "CALLCODE", Instruction::CALLCODE },
|
||||
{ "RETURN", Instruction::RETURN },
|
||||
{ "DELEGATECALL", Instruction::DELEGATECALL },
|
||||
{ "REVERT", Instruction::REVERT },
|
||||
{ "INVALID", Instruction::INVALID },
|
||||
{ "SELFDESTRUCT", Instruction::SELFDESTRUCT }
|
||||
};
|
||||
@ -294,6 +295,7 @@ static const std::map<Instruction, InstructionInfo> c_instructionInfo =
|
||||
{ Instruction::CALLCODE, { "CALLCODE", 0, 7, 1, true, Tier::Special } },
|
||||
{ Instruction::RETURN, { "RETURN", 0, 2, 0, true, Tier::Zero } },
|
||||
{ Instruction::DELEGATECALL, { "DELEGATECALL", 0, 6, 1, true, Tier::Special } },
|
||||
{ Instruction::REVERT, { "REVERT", 0, 2, 0, true, Tier::Zero } },
|
||||
{ Instruction::INVALID, { "INVALID", 0, 0, 0, true, Tier::Zero } },
|
||||
{ Instruction::SELFDESTRUCT, { "SELFDESTRUCT", 0, 1, 0, true, Tier::Zero } }
|
||||
};
|
||||
|
@ -177,6 +177,7 @@ enum class Instruction: uint8_t
|
||||
RETURN, ///< halt execution returning output data
|
||||
DELEGATECALL, ///< like CALLCODE but keeps caller's value and sender
|
||||
|
||||
REVERT = 0xfd, ///< halt execution, revert state and return output data
|
||||
INVALID = 0xfe, ///< invalid instruction for expressing runtime errors (e.g., division-by-zero)
|
||||
SELFDESTRUCT = 0xff ///< halt execution and register account for later deletion
|
||||
};
|
||||
|
@ -200,7 +200,8 @@ struct UnreachableCode
|
||||
it[0] != Instruction::RETURN &&
|
||||
it[0] != Instruction::STOP &&
|
||||
it[0] != Instruction::INVALID &&
|
||||
it[0] != Instruction::SELFDESTRUCT
|
||||
it[0] != Instruction::SELFDESTRUCT &&
|
||||
it[0] != Instruction::REVERT
|
||||
)
|
||||
return false;
|
||||
|
||||
|
@ -119,6 +119,7 @@ bool SemanticInformation::altersControlFlow(AssemblyItem const& _item)
|
||||
case Instruction::SELFDESTRUCT:
|
||||
case Instruction::STOP:
|
||||
case Instruction::INVALID:
|
||||
case Instruction::REVERT:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
|
Loading…
Reference in New Issue
Block a user