mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Add view/pure information about instructions.
This commit is contained in:
parent
41d0ad7a9c
commit
7c61a6daf2
@ -188,3 +188,55 @@ bool SemanticInformation::invalidatesStorage(Instruction _instruction)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool SemanticInformation::invalidInPureFunctions(Instruction _instruction)
|
||||||
|
{
|
||||||
|
switch (_instruction)
|
||||||
|
{
|
||||||
|
case Instruction::ADDRESS:
|
||||||
|
case Instruction::BALANCE:
|
||||||
|
case Instruction::ORIGIN:
|
||||||
|
case Instruction::CALLER:
|
||||||
|
case Instruction::CALLVALUE:
|
||||||
|
case Instruction::GASPRICE:
|
||||||
|
case Instruction::EXTCODESIZE:
|
||||||
|
case Instruction::EXTCODECOPY:
|
||||||
|
case Instruction::BLOCKHASH:
|
||||||
|
case Instruction::COINBASE:
|
||||||
|
case Instruction::TIMESTAMP:
|
||||||
|
case Instruction::NUMBER:
|
||||||
|
case Instruction::DIFFICULTY:
|
||||||
|
case Instruction::GASLIMIT:
|
||||||
|
case Instruction::SLOAD:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return invalidInViewFunctions(_instruction);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SemanticInformation::invalidInViewFunctions(Instruction _instruction)
|
||||||
|
{
|
||||||
|
switch (_instruction)
|
||||||
|
{
|
||||||
|
case Instruction::SSTORE:
|
||||||
|
case Instruction::JUMP:
|
||||||
|
case Instruction::JUMPI:
|
||||||
|
case Instruction::GAS:
|
||||||
|
case Instruction::LOG0:
|
||||||
|
case Instruction::LOG1:
|
||||||
|
case Instruction::LOG2:
|
||||||
|
case Instruction::LOG3:
|
||||||
|
case Instruction::LOG4:
|
||||||
|
case Instruction::CREATE:
|
||||||
|
case Instruction::CALL:
|
||||||
|
case Instruction::CALLCODE:
|
||||||
|
case Instruction::DELEGATECALL:
|
||||||
|
case Instruction::CREATE2:
|
||||||
|
case Instruction::SELFDESTRUCT:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
@ -53,6 +53,8 @@ struct SemanticInformation
|
|||||||
static bool invalidatesMemory(solidity::Instruction _instruction);
|
static bool invalidatesMemory(solidity::Instruction _instruction);
|
||||||
/// @returns true if the given instruction modifies storage (even indirectly).
|
/// @returns true if the given instruction modifies storage (even indirectly).
|
||||||
static bool invalidatesStorage(solidity::Instruction _instruction);
|
static bool invalidatesStorage(solidity::Instruction _instruction);
|
||||||
|
static bool invalidInPureFunctions(solidity::Instruction _instruction);
|
||||||
|
static bool invalidInViewFunctions(solidity::Instruction _instruction);
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user