mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #6085 from ethereum/evmversion_langutil
EVMVersion in langutil namespace instead of solidity
This commit is contained in:
commit
cef18ddb73
@ -107,7 +107,7 @@ public:
|
||||
bool runDeduplicate = false;
|
||||
bool runCSE = false;
|
||||
bool runConstantOptimiser = false;
|
||||
solidity::EVMVersion evmVersion;
|
||||
langutil::EVMVersion evmVersion;
|
||||
/// This specifies an estimate on how often each opcode in this assembly will be executed,
|
||||
/// i.e. use a small value to optimise for size and a large value to optimise for runtime gas usage.
|
||||
size_t expectedExecutionsPerDeployment = 200;
|
||||
@ -121,7 +121,7 @@ public:
|
||||
/// @a _runs specifes an estimate on how often each opcode in this assembly will be executed,
|
||||
/// i.e. use a small value to optimise for size and a large value to optimise for runtime.
|
||||
/// If @a _enable is not set, will perform some simple peephole optimizations.
|
||||
Assembly& optimise(bool _enable, EVMVersion _evmVersion, bool _isCreation = true, size_t _runs = 200);
|
||||
Assembly& optimise(bool _enable, langutil::EVMVersion _evmVersion, bool _isCreation = true, size_t _runs = 200);
|
||||
|
||||
/// Create a text representation of the assembly.
|
||||
std::string assemblyString(
|
||||
|
@ -29,7 +29,7 @@ using namespace dev::eth;
|
||||
unsigned ConstantOptimisationMethod::optimiseConstants(
|
||||
bool _isCreation,
|
||||
size_t _runs,
|
||||
solidity::EVMVersion _evmVersion,
|
||||
langutil::EVMVersion _evmVersion,
|
||||
Assembly& _assembly
|
||||
)
|
||||
{
|
||||
|
@ -52,7 +52,7 @@ public:
|
||||
static unsigned optimiseConstants(
|
||||
bool _isCreation,
|
||||
size_t _runs,
|
||||
solidity::EVMVersion _evmVersion,
|
||||
langutil::EVMVersion _evmVersion,
|
||||
Assembly& _assembly
|
||||
);
|
||||
|
||||
@ -64,7 +64,7 @@ protected:
|
||||
bool isCreation; ///< Whether this is called during contract creation or runtime.
|
||||
size_t runs; ///< Estimated number of calls per opcode oven the lifetime of the contract.
|
||||
size_t multiplicity; ///< Number of times the constant appears in the code.
|
||||
solidity::EVMVersion evmVersion; ///< Version of the EVM
|
||||
langutil::EVMVersion evmVersion; ///< Version of the EVM
|
||||
};
|
||||
|
||||
explicit ConstantOptimisationMethod(Params const& _params, u256 const& _value):
|
||||
|
@ -47,24 +47,24 @@ namespace GasCosts
|
||||
static unsigned const tier5Gas = 10;
|
||||
static unsigned const tier6Gas = 20;
|
||||
static unsigned const tier7Gas = 0;
|
||||
inline unsigned extCodeGas(EVMVersion _evmVersion)
|
||||
inline unsigned extCodeGas(langutil::EVMVersion _evmVersion)
|
||||
{
|
||||
return _evmVersion >= EVMVersion::tangerineWhistle() ? 700 : 20;
|
||||
return _evmVersion >= langutil::EVMVersion::tangerineWhistle() ? 700 : 20;
|
||||
}
|
||||
inline unsigned balanceGas(EVMVersion _evmVersion)
|
||||
inline unsigned balanceGas(langutil::EVMVersion _evmVersion)
|
||||
{
|
||||
return _evmVersion >= EVMVersion::tangerineWhistle() ? 400 : 20;
|
||||
return _evmVersion >= langutil::EVMVersion::tangerineWhistle() ? 400 : 20;
|
||||
}
|
||||
static unsigned const expGas = 10;
|
||||
inline unsigned expByteGas(EVMVersion _evmVersion)
|
||||
inline unsigned expByteGas(langutil::EVMVersion _evmVersion)
|
||||
{
|
||||
return _evmVersion >= EVMVersion::spuriousDragon() ? 50 : 10;
|
||||
return _evmVersion >= langutil::EVMVersion::spuriousDragon() ? 50 : 10;
|
||||
}
|
||||
static unsigned const keccak256Gas = 30;
|
||||
static unsigned const keccak256WordGas = 6;
|
||||
inline unsigned sloadGas(EVMVersion _evmVersion)
|
||||
inline unsigned sloadGas(langutil::EVMVersion _evmVersion)
|
||||
{
|
||||
return _evmVersion >= EVMVersion::tangerineWhistle() ? 200 : 50;
|
||||
return _evmVersion >= langutil::EVMVersion::tangerineWhistle() ? 200 : 50;
|
||||
}
|
||||
static unsigned const sstoreSetGas = 20000;
|
||||
static unsigned const sstoreResetGas = 5000;
|
||||
@ -74,16 +74,16 @@ namespace GasCosts
|
||||
static unsigned const logDataGas = 8;
|
||||
static unsigned const logTopicGas = 375;
|
||||
static unsigned const createGas = 32000;
|
||||
inline unsigned callGas(EVMVersion _evmVersion)
|
||||
inline unsigned callGas(langutil::EVMVersion _evmVersion)
|
||||
{
|
||||
return _evmVersion >= EVMVersion::tangerineWhistle() ? 700 : 40;
|
||||
return _evmVersion >= langutil::EVMVersion::tangerineWhistle() ? 700 : 40;
|
||||
}
|
||||
static unsigned const callStipend = 2300;
|
||||
static unsigned const callValueTransferGas = 9000;
|
||||
static unsigned const callNewAccountGas = 25000;
|
||||
inline unsigned selfdestructGas(EVMVersion _evmVersion)
|
||||
inline unsigned selfdestructGas(langutil::EVMVersion _evmVersion)
|
||||
{
|
||||
return _evmVersion >= EVMVersion::tangerineWhistle() ? 5000 : 0;
|
||||
return _evmVersion >= langutil::EVMVersion::tangerineWhistle() ? 5000 : 0;
|
||||
}
|
||||
static unsigned const selfdestructRefundGas = 24000;
|
||||
static unsigned const memoryGas = 3;
|
||||
@ -122,7 +122,7 @@ public:
|
||||
};
|
||||
|
||||
/// Constructs a new gas meter given the current state.
|
||||
GasMeter(std::shared_ptr<KnownState> const& _state, solidity::EVMVersion _evmVersion, u256 const& _largestMemoryAccess = 0):
|
||||
GasMeter(std::shared_ptr<KnownState> const& _state, langutil::EVMVersion _evmVersion, u256 const& _largestMemoryAccess = 0):
|
||||
m_state(_state), m_evmVersion(_evmVersion), m_largestMemoryAccess(_largestMemoryAccess) {}
|
||||
|
||||
/// @returns an upper bound on the gas consumed by the given instruction and updates
|
||||
@ -152,7 +152,7 @@ private:
|
||||
GasConsumption memoryGas(int _stackPosOffset, int _stackPosSize);
|
||||
|
||||
std::shared_ptr<KnownState> m_state;
|
||||
EVMVersion m_evmVersion;
|
||||
langutil::EVMVersion m_evmVersion;
|
||||
/// Largest point where memory was accessed since the creation of this object.
|
||||
u256 m_largestMemoryAccess;
|
||||
};
|
||||
|
@ -27,7 +27,7 @@ using namespace std;
|
||||
using namespace dev;
|
||||
using namespace dev::eth;
|
||||
|
||||
PathGasMeter::PathGasMeter(AssemblyItems const& _items, solidity::EVMVersion _evmVersion):
|
||||
PathGasMeter::PathGasMeter(AssemblyItems const& _items, langutil::EVMVersion _evmVersion):
|
||||
m_items(_items), m_evmVersion(_evmVersion)
|
||||
{
|
||||
for (size_t i = 0; i < m_items.size(); ++i)
|
||||
|
@ -53,13 +53,13 @@ struct GasPath
|
||||
class PathGasMeter
|
||||
{
|
||||
public:
|
||||
explicit PathGasMeter(AssemblyItems const& _items, solidity::EVMVersion _evmVersion);
|
||||
explicit PathGasMeter(AssemblyItems const& _items, langutil::EVMVersion _evmVersion);
|
||||
|
||||
GasMeter::GasConsumption estimateMax(size_t _startIndex, std::shared_ptr<KnownState> const& _state);
|
||||
|
||||
static GasMeter::GasConsumption estimateMax(
|
||||
AssemblyItems const& _items,
|
||||
solidity::EVMVersion _evmVersion,
|
||||
langutil::EVMVersion _evmVersion,
|
||||
size_t _startIndex,
|
||||
std::shared_ptr<KnownState> const& _state
|
||||
)
|
||||
@ -81,7 +81,7 @@ private:
|
||||
std::map<size_t, GasMeter::GasConsumption> m_highestGasUsagePerJumpdest;
|
||||
std::map<u256, size_t> m_tagPositions;
|
||||
AssemblyItems const& m_items;
|
||||
solidity::EVMVersion m_evmVersion;
|
||||
langutil::EVMVersion m_evmVersion;
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -25,9 +25,7 @@
|
||||
#include <boost/optional.hpp>
|
||||
#include <boost/operators.hpp>
|
||||
|
||||
namespace dev
|
||||
{
|
||||
namespace solidity
|
||||
namespace langutil
|
||||
{
|
||||
|
||||
/**
|
||||
@ -91,4 +89,3 @@ private:
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ class TypeChecker: private ASTConstVisitor
|
||||
{
|
||||
public:
|
||||
/// @param _errorReporter provides the error logging functionality.
|
||||
TypeChecker(EVMVersion _evmVersion, langutil::ErrorReporter& _errorReporter):
|
||||
TypeChecker(langutil::EVMVersion _evmVersion, langutil::ErrorReporter& _errorReporter):
|
||||
m_evmVersion(_evmVersion),
|
||||
m_errorReporter(_errorReporter)
|
||||
{}
|
||||
@ -156,7 +156,7 @@ private:
|
||||
|
||||
ContractDefinition const* m_scope = nullptr;
|
||||
|
||||
EVMVersion m_evmVersion;
|
||||
langutil::EVMVersion m_evmVersion;
|
||||
|
||||
/// Flag indicating whether we are currently inside an EmitStatement.
|
||||
bool m_insideEmitStatement = false;
|
||||
|
@ -50,7 +50,7 @@ using TypePointers = std::vector<TypePointer>;
|
||||
class ABIFunctions
|
||||
{
|
||||
public:
|
||||
explicit ABIFunctions(EVMVersion _evmVersion = EVMVersion{}) : m_evmVersion(_evmVersion) {}
|
||||
explicit ABIFunctions(langutil::EVMVersion _evmVersion = langutil::EVMVersion{}) : m_evmVersion(_evmVersion) {}
|
||||
|
||||
/// @returns name of an assembly function to ABI-encode values of @a _givenTypes
|
||||
/// into memory, converting the types to @a _targetTypes on the fly.
|
||||
@ -286,7 +286,7 @@ private:
|
||||
/// Map from function name to code for a multi-use function.
|
||||
std::map<std::string, std::string> m_requestedFunctions;
|
||||
std::set<std::string> m_externallyUsedFunctions;
|
||||
EVMVersion m_evmVersion;
|
||||
langutil::EVMVersion m_evmVersion;
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -34,7 +34,7 @@ namespace solidity {
|
||||
class Compiler
|
||||
{
|
||||
public:
|
||||
explicit Compiler(EVMVersion _evmVersion = EVMVersion{}, bool _optimize = false, unsigned _runs = 200):
|
||||
explicit Compiler(langutil::EVMVersion _evmVersion = langutil::EVMVersion{}, bool _optimize = false, unsigned _runs = 200):
|
||||
m_optimize(_optimize),
|
||||
m_optimizeRuns(_runs),
|
||||
m_runtimeContext(_evmVersion),
|
||||
|
@ -50,7 +50,7 @@ class Compiler;
|
||||
class CompilerContext
|
||||
{
|
||||
public:
|
||||
explicit CompilerContext(EVMVersion _evmVersion = EVMVersion{}, CompilerContext* _runtimeContext = nullptr):
|
||||
explicit CompilerContext(langutil::EVMVersion _evmVersion = langutil::EVMVersion{}, CompilerContext* _runtimeContext = nullptr):
|
||||
m_asm(std::make_shared<eth::Assembly>()),
|
||||
m_evmVersion(_evmVersion),
|
||||
m_runtimeContext(_runtimeContext),
|
||||
@ -60,7 +60,7 @@ public:
|
||||
m_runtimeSub = size_t(m_asm->newSub(m_runtimeContext->m_asm).data());
|
||||
}
|
||||
|
||||
EVMVersion const& evmVersion() const { return m_evmVersion; }
|
||||
langutil::EVMVersion const& evmVersion() const { return m_evmVersion; }
|
||||
|
||||
/// Update currently enabled set of experimental features.
|
||||
void setExperimentalFeatures(std::set<ExperimentalFeature> const& _features) { m_experimentalFeatures = _features; }
|
||||
@ -305,7 +305,7 @@ private:
|
||||
|
||||
eth::AssemblyPointer m_asm;
|
||||
/// Version of the EVM to compile against.
|
||||
EVMVersion m_evmVersion;
|
||||
langutil::EVMVersion m_evmVersion;
|
||||
/// Activated experimental features.
|
||||
std::set<ExperimentalFeature> m_experimentalFeatures;
|
||||
/// Other already compiled contracts to be used in contract creation calls.
|
||||
|
@ -91,7 +91,7 @@ void CompilerStack::setRemappings(vector<Remapping> const& _remappings)
|
||||
m_remappings = _remappings;
|
||||
}
|
||||
|
||||
void CompilerStack::setEVMVersion(EVMVersion _version)
|
||||
void CompilerStack::setEVMVersion(langutil::EVMVersion _version)
|
||||
{
|
||||
solAssert(m_stackState < State::ParsingSuccessful, "Set EVM version after parsing.");
|
||||
m_evmVersion = _version;
|
||||
@ -113,7 +113,7 @@ void CompilerStack::reset(bool _keepSources)
|
||||
m_smtlib2Responses.clear();
|
||||
m_unhandledSMTLib2Queries.clear();
|
||||
m_libraries.clear();
|
||||
m_evmVersion = EVMVersion();
|
||||
m_evmVersion = langutil::EVMVersion();
|
||||
m_optimize = false;
|
||||
m_optimizeRuns = 200;
|
||||
m_globalContext.reset();
|
||||
|
@ -136,7 +136,7 @@ public:
|
||||
|
||||
/// Set the EVM version used before running compile.
|
||||
/// When called without an argument it will revert to the default version.
|
||||
void setEVMVersion(EVMVersion _version = EVMVersion{});
|
||||
void setEVMVersion(langutil::EVMVersion _version = langutil::EVMVersion{});
|
||||
|
||||
/// Sets the list of requested contract names. If empty, no filtering is performed and every contract
|
||||
/// found in the supplied sources is compiled. Names are cleared iff @a _contractNames is missing.
|
||||
@ -348,7 +348,7 @@ private:
|
||||
ReadCallback::Callback m_readFile;
|
||||
bool m_optimize = false;
|
||||
unsigned m_optimizeRuns = 200;
|
||||
EVMVersion m_evmVersion;
|
||||
langutil::EVMVersion m_evmVersion;
|
||||
std::set<std::string> m_requestedContractNames;
|
||||
std::map<std::string, h160> m_libraries;
|
||||
/// list of path prefix remappings, e.g. mylibrary: github.com/ethereum = /usr/local/ethereum
|
||||
|
@ -47,7 +47,7 @@ public:
|
||||
using ASTGasConsumptionSelfAccumulated =
|
||||
std::map<ASTNode const*, std::array<GasConsumption, 2>>;
|
||||
|
||||
explicit GasEstimator(EVMVersion _evmVersion): m_evmVersion(_evmVersion) {}
|
||||
explicit GasEstimator(langutil::EVMVersion _evmVersion): m_evmVersion(_evmVersion) {}
|
||||
|
||||
/// Estimates the gas consumption for every assembly item in the given assembly and stores
|
||||
/// it by source location.
|
||||
@ -84,7 +84,7 @@ public:
|
||||
private:
|
||||
/// @returns the set of AST nodes which are the finest nodes at their location.
|
||||
static std::set<ASTNode const*> finestNodesAtLocation(std::vector<ASTNode const*> const& _roots);
|
||||
EVMVersion m_evmVersion;
|
||||
langutil::EVMVersion m_evmVersion;
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -490,7 +490,7 @@ Json::Value StandardCompiler::compileInternal(Json::Value const& _input)
|
||||
{
|
||||
if (!settings["evmVersion"].isString())
|
||||
return formatFatalError("JSONError", "evmVersion must be a string.");
|
||||
boost::optional<EVMVersion> version = EVMVersion::fromString(settings["evmVersion"].asString());
|
||||
boost::optional<langutil::EVMVersion> version = langutil::EVMVersion::fromString(settings["evmVersion"].asString());
|
||||
if (!version)
|
||||
return formatFatalError("JSONError", "Invalid EVM version requested.");
|
||||
m_compilerStack.setEVMVersion(*version);
|
||||
|
@ -121,7 +121,7 @@ private:
|
||||
std::set<Scope::Variable const*> m_activeVariables;
|
||||
AsmAnalysisInfo& m_info;
|
||||
langutil::ErrorReporter& m_errorReporter;
|
||||
dev::solidity::EVMVersion m_evmVersion;
|
||||
langutil::EVMVersion m_evmVersion;
|
||||
std::shared_ptr<Dialect> m_dialect;
|
||||
boost::optional<langutil::Error::Type> m_errorTypeForLoose;
|
||||
};
|
||||
|
@ -58,7 +58,7 @@ public:
|
||||
enum class Language { Yul, Assembly, StrictAssembly };
|
||||
enum class Machine { EVM, EVM15, eWasm };
|
||||
|
||||
explicit AssemblyStack(dev::solidity::EVMVersion _evmVersion = dev::solidity::EVMVersion(), Language _language = Language::Assembly):
|
||||
explicit AssemblyStack(langutil::EVMVersion _evmVersion = langutil::EVMVersion(), Language _language = Language::Assembly):
|
||||
m_language(_language), m_evmVersion(_evmVersion), m_errorReporter(m_errors)
|
||||
{}
|
||||
|
||||
@ -94,7 +94,7 @@ private:
|
||||
void optimize(yul::Object& _object);
|
||||
|
||||
Language m_language = Language::Assembly;
|
||||
dev::solidity::EVMVersion m_evmVersion;
|
||||
langutil::EVMVersion m_evmVersion;
|
||||
|
||||
std::shared_ptr<langutil::Scanner> m_scanner;
|
||||
|
||||
|
@ -177,7 +177,7 @@ void CodeGenerator::assemble(
|
||||
Block const& _parsedData,
|
||||
AsmAnalysisInfo& _analysisInfo,
|
||||
eth::Assembly& _assembly,
|
||||
dev::solidity::EVMVersion _evmVersion,
|
||||
langutil::EVMVersion _evmVersion,
|
||||
ExternalIdentifierAccess const& _identifierAccess,
|
||||
bool _useNamedLabelsForFunctions,
|
||||
bool _optimize
|
||||
|
@ -79,7 +79,7 @@ public:
|
||||
Block const& _parsedData,
|
||||
AsmAnalysisInfo& _analysisInfo,
|
||||
dev::eth::Assembly& _assembly,
|
||||
dev::solidity::EVMVersion _evmVersion,
|
||||
langutil::EVMVersion _evmVersion,
|
||||
ExternalIdentifierAccess const& _identifierAccess = ExternalIdentifierAccess(),
|
||||
bool _useNamedLabelsForFunctions = false,
|
||||
bool _optimize = false
|
||||
|
@ -37,7 +37,7 @@ using namespace yul;
|
||||
using namespace dev::solidity;
|
||||
|
||||
|
||||
EVMDialect::EVMDialect(AsmFlavour _flavour, bool _objectAccess, EVMVersion _evmVersion):
|
||||
EVMDialect::EVMDialect(AsmFlavour _flavour, bool _objectAccess, langutil::EVMVersion _evmVersion):
|
||||
Dialect{_flavour}, m_objectAccess(_objectAccess), m_evmVersion(_evmVersion)
|
||||
{
|
||||
// The EVM instructions will be moved to builtins at some point.
|
||||
@ -91,22 +91,22 @@ BuiltinFunctionForEVM const* EVMDialect::builtin(YulString _name) const
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
shared_ptr<EVMDialect> EVMDialect::looseAssemblyForEVM(EVMVersion _version)
|
||||
shared_ptr<EVMDialect> EVMDialect::looseAssemblyForEVM(langutil::EVMVersion _version)
|
||||
{
|
||||
return make_shared<EVMDialect>(AsmFlavour::Loose, false, _version);
|
||||
}
|
||||
|
||||
shared_ptr<EVMDialect> EVMDialect::strictAssemblyForEVM(EVMVersion _version)
|
||||
shared_ptr<EVMDialect> EVMDialect::strictAssemblyForEVM(langutil::EVMVersion _version)
|
||||
{
|
||||
return make_shared<EVMDialect>(AsmFlavour::Strict, false, _version);
|
||||
}
|
||||
|
||||
shared_ptr<EVMDialect> EVMDialect::strictAssemblyForEVMObjects(EVMVersion _version)
|
||||
shared_ptr<EVMDialect> EVMDialect::strictAssemblyForEVMObjects(langutil::EVMVersion _version)
|
||||
{
|
||||
return make_shared<EVMDialect>(AsmFlavour::Strict, true, _version);
|
||||
}
|
||||
|
||||
shared_ptr<yul::EVMDialect> EVMDialect::yulForEVM(EVMVersion _version)
|
||||
shared_ptr<yul::EVMDialect> EVMDialect::yulForEVM(langutil::EVMVersion _version)
|
||||
{
|
||||
return make_shared<EVMDialect>(AsmFlavour::Yul, false, _version);
|
||||
}
|
||||
|
@ -50,17 +50,17 @@ struct BuiltinFunctionForEVM: BuiltinFunction
|
||||
*/
|
||||
struct EVMDialect: public Dialect
|
||||
{
|
||||
EVMDialect(AsmFlavour _flavour, bool _objectAccess, dev::solidity::EVMVersion _evmVersion);
|
||||
EVMDialect(AsmFlavour _flavour, bool _objectAccess, langutil::EVMVersion _evmVersion);
|
||||
|
||||
/// @returns the builtin function of the given name or a nullptr if it is not a builtin function.
|
||||
BuiltinFunctionForEVM const* builtin(YulString _name) const override;
|
||||
|
||||
static std::shared_ptr<EVMDialect> looseAssemblyForEVM(dev::solidity::EVMVersion _version);
|
||||
static std::shared_ptr<EVMDialect> strictAssemblyForEVM(dev::solidity::EVMVersion _version);
|
||||
static std::shared_ptr<EVMDialect> strictAssemblyForEVMObjects(dev::solidity::EVMVersion _version);
|
||||
static std::shared_ptr<EVMDialect> yulForEVM(dev::solidity::EVMVersion _version);
|
||||
static std::shared_ptr<EVMDialect> looseAssemblyForEVM(langutil::EVMVersion _version);
|
||||
static std::shared_ptr<EVMDialect> strictAssemblyForEVM(langutil::EVMVersion _version);
|
||||
static std::shared_ptr<EVMDialect> strictAssemblyForEVMObjects(langutil::EVMVersion _version);
|
||||
static std::shared_ptr<EVMDialect> yulForEVM(langutil::EVMVersion _version);
|
||||
|
||||
dev::solidity::EVMVersion evmVersion() const { return m_evmVersion; }
|
||||
langutil::EVMVersion evmVersion() const { return m_evmVersion; }
|
||||
|
||||
bool providesObjectAccess() const { return m_objectAccess; }
|
||||
|
||||
@ -80,7 +80,7 @@ protected:
|
||||
);
|
||||
|
||||
bool m_objectAccess;
|
||||
dev::solidity::EVMVersion m_evmVersion;
|
||||
langutil::EVMVersion m_evmVersion;
|
||||
Object const* m_currentObject = nullptr;
|
||||
/// Mapping from named objects to abstract assembly sub IDs.
|
||||
std::map<YulString, AbstractAssembly::SubID> m_subIDs;
|
||||
|
@ -830,7 +830,7 @@ bool CommandLineInterface::processInput()
|
||||
if (m_args.count(g_strEVMVersion))
|
||||
{
|
||||
string versionOptionStr = m_args[g_strEVMVersion].as<string>();
|
||||
boost::optional<EVMVersion> versionOption = EVMVersion::fromString(versionOptionStr);
|
||||
boost::optional<langutil::EVMVersion> versionOption = langutil::EVMVersion::fromString(versionOptionStr);
|
||||
if (!versionOption)
|
||||
{
|
||||
serr() << "Invalid option for --evm-version: " << versionOptionStr << endl;
|
||||
|
@ -108,7 +108,7 @@ private:
|
||||
/// Solidity compiler stack
|
||||
std::unique_ptr<dev::solidity::CompilerStack> m_compiler;
|
||||
/// EVM version to use
|
||||
EVMVersion m_evmVersion;
|
||||
langutil::EVMVersion m_evmVersion;
|
||||
/// Whether or not to colorize diagnostics output.
|
||||
bool m_coloredOutput = true;
|
||||
};
|
||||
|
@ -239,7 +239,7 @@ protected:
|
||||
bytes data;
|
||||
};
|
||||
|
||||
solidity::EVMVersion m_evmVersion;
|
||||
langutil::EVMVersion m_evmVersion;
|
||||
unsigned m_optimizeRuns = 200;
|
||||
bool m_optimize = false;
|
||||
bool m_showMessages = false;
|
||||
|
@ -59,16 +59,16 @@ Options::Options()
|
||||
parse(suite.argc, suite.argv);
|
||||
}
|
||||
|
||||
dev::solidity::EVMVersion Options::evmVersion() const
|
||||
langutil::EVMVersion Options::evmVersion() const
|
||||
{
|
||||
if (!evmVersionString.empty())
|
||||
{
|
||||
// We do this check as opposed to in the constructor because the BOOST_REQUIRE
|
||||
// macros cannot yet be used in the constructor.
|
||||
auto version = solidity::EVMVersion::fromString(evmVersionString);
|
||||
auto version = langutil::EVMVersion::fromString(evmVersionString);
|
||||
BOOST_REQUIRE_MESSAGE(version, "Invalid EVM version: " + evmVersionString);
|
||||
return *version;
|
||||
}
|
||||
else
|
||||
return dev::solidity::EVMVersion();
|
||||
return langutil::EVMVersion();
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ struct Options: CommonOptions
|
||||
bool showMessages = false;
|
||||
bool useABIEncoderV2 = false;
|
||||
|
||||
solidity::EVMVersion evmVersion() const;
|
||||
langutil::EVMVersion evmVersion() const;
|
||||
|
||||
static Options const& get();
|
||||
|
||||
|
@ -237,16 +237,16 @@ string RPCSession::personal_newAccount(string const& _password)
|
||||
void RPCSession::test_setChainParams(vector<string> const& _accounts)
|
||||
{
|
||||
string forks;
|
||||
if (test::Options::get().evmVersion() >= solidity::EVMVersion::tangerineWhistle())
|
||||
if (test::Options::get().evmVersion() >= langutil::EVMVersion::tangerineWhistle())
|
||||
forks += "\"EIP150ForkBlock\": \"0x00\",\n";
|
||||
if (test::Options::get().evmVersion() >= solidity::EVMVersion::spuriousDragon())
|
||||
if (test::Options::get().evmVersion() >= langutil::EVMVersion::spuriousDragon())
|
||||
forks += "\"EIP158ForkBlock\": \"0x00\",\n";
|
||||
if (test::Options::get().evmVersion() >= solidity::EVMVersion::byzantium())
|
||||
if (test::Options::get().evmVersion() >= langutil::EVMVersion::byzantium())
|
||||
{
|
||||
forks += "\"byzantiumForkBlock\": \"0x00\",\n";
|
||||
m_receiptHasStatusField = true;
|
||||
}
|
||||
if (test::Options::get().evmVersion() >= solidity::EVMVersion::constantinople())
|
||||
if (test::Options::get().evmVersion() >= langutil::EVMVersion::constantinople())
|
||||
forks += "\"constantinopleForkBlock\": \"0x00\",\n";
|
||||
static string const c_configString = R"(
|
||||
{
|
||||
|
@ -762,7 +762,7 @@ BOOST_AUTO_TEST_CASE(complex_struct)
|
||||
|
||||
BOOST_AUTO_TEST_CASE(return_dynamic_types_cross_call_simple)
|
||||
{
|
||||
if (m_evmVersion == EVMVersion::homestead())
|
||||
if (m_evmVersion == langutil::EVMVersion::homestead())
|
||||
return;
|
||||
|
||||
string sourceCode = R"(
|
||||
@ -783,7 +783,7 @@ BOOST_AUTO_TEST_CASE(return_dynamic_types_cross_call_simple)
|
||||
|
||||
BOOST_AUTO_TEST_CASE(return_dynamic_types_cross_call_advanced)
|
||||
{
|
||||
if (m_evmVersion == EVMVersion::homestead())
|
||||
if (m_evmVersion == langutil::EVMVersion::homestead())
|
||||
return;
|
||||
|
||||
string sourceCode = R"(
|
||||
@ -830,7 +830,7 @@ BOOST_AUTO_TEST_CASE(return_dynamic_types_cross_call_out_of_range)
|
||||
)";
|
||||
BOTH_ENCODERS(
|
||||
compileAndRun(sourceCode, 0, "C");
|
||||
if (m_evmVersion == EVMVersion::homestead())
|
||||
if (m_evmVersion == langutil::EVMVersion::homestead())
|
||||
{
|
||||
ABI_CHECK(callContractFunction("f(uint256)", 0x60), encodeArgs(true));
|
||||
ABI_CHECK(callContractFunction("f(uint256)", 0x7f), encodeArgs(true));
|
||||
|
@ -3080,7 +3080,7 @@ BOOST_AUTO_TEST_CASE(gasprice)
|
||||
BOOST_AUTO_TEST_CASE(blockhash)
|
||||
{
|
||||
// depending on the aleth version, this test only works for pre-constantinople
|
||||
if (Options::get().evmVersion() < EVMVersion::constantinople())
|
||||
if (Options::get().evmVersion() < langutil::EVMVersion::constantinople())
|
||||
{
|
||||
char const* sourceCode = R"(
|
||||
contract C {
|
||||
|
@ -114,7 +114,7 @@ void FuzzerUtil::testConstantOptimizer(string const& _input, bool _quiet)
|
||||
ConstantOptimisationMethod::optimiseConstants(
|
||||
isCreation,
|
||||
runs,
|
||||
EVMVersion{},
|
||||
langutil::EVMVersion{},
|
||||
tmp
|
||||
);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user