mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
EVMHost: Reduce code duplication in precompiles
This commit is contained in:
parent
a260000a16
commit
c967a621eb
@ -394,8 +394,14 @@ evmc::result EVMHost::precompileECRecover(evmc_message const& _message) noexcept
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
evmc::result result = precompileGeneric(_message, inputOutput);
|
evmc::result result = precompileGeneric(_message, inputOutput);
|
||||||
|
// ECRecover will return success with empty response in case of failure
|
||||||
|
if (result.status_code != EVMC_SUCCESS)
|
||||||
|
{
|
||||||
result.status_code = EVMC_SUCCESS;
|
result.status_code = EVMC_SUCCESS;
|
||||||
result.gas_left = _message.gas;
|
result.gas_left = _message.gas;
|
||||||
|
result.output_data = {};
|
||||||
|
result.output_size = 0;
|
||||||
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -408,12 +414,7 @@ evmc::result EVMHost::precompileSha256(evmc_message const& _message) noexcept
|
|||||||
_message.input_data + _message.input_size
|
_message.input_data + _message.input_size
|
||||||
));
|
));
|
||||||
|
|
||||||
evmc::result result({});
|
return resultWithGas(_message, hash);
|
||||||
result.status_code = EVMC_SUCCESS;
|
|
||||||
result.gas_left = _message.gas;
|
|
||||||
result.output_data = hash.data();
|
|
||||||
result.output_size = hash.size();
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
evmc::result EVMHost::precompileRipeMD160(evmc_message const& _message) noexcept
|
evmc::result EVMHost::precompileRipeMD160(evmc_message const& _message) noexcept
|
||||||
@ -488,12 +489,7 @@ evmc::result EVMHost::precompileIdentity(evmc_message const& _message) noexcept
|
|||||||
bytes static data;
|
bytes static data;
|
||||||
data = bytes(_message.input_data, _message.input_data + _message.input_size);
|
data = bytes(_message.input_data, _message.input_data + _message.input_size);
|
||||||
|
|
||||||
evmc::result result({});
|
return resultWithGas(_message, data);
|
||||||
result.status_code = EVMC_SUCCESS;
|
|
||||||
result.gas_left = _message.gas;
|
|
||||||
result.output_data = data.data();
|
|
||||||
result.output_size = data.size();
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
evmc::result EVMHost::precompileModExp(evmc_message const&) noexcept
|
evmc::result EVMHost::precompileModExp(evmc_message const&) noexcept
|
||||||
|
Loading…
Reference in New Issue
Block a user