mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Cache calls to `definedFunctions()`
This commit is contained in:
parent
4df51020da
commit
444e844120
@ -149,6 +149,14 @@ FunctionDefinition const* ContractDefinition::receiveFunction() const
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
std::vector<FunctionDefinition const*> const& ContractDefinition::definedFunctions() const
|
||||
{
|
||||
if (!m_cachedDefinedFunctions)
|
||||
m_cachedDefinedFunctions = filteredNodes<FunctionDefinition>(m_subNodes);
|
||||
|
||||
return *m_cachedDefinedFunctions;
|
||||
}
|
||||
|
||||
vector<EventDefinition const*> const& ContractDefinition::interfaceEvents() const
|
||||
{
|
||||
return m_interfaceEvents.init([&]{
|
||||
|
||||
@ -496,7 +496,7 @@ public:
|
||||
std::vector<EnumDefinition const*> definedEnums() const { return filteredNodes<EnumDefinition>(m_subNodes); }
|
||||
std::vector<VariableDeclaration const*> stateVariables() const { return filteredNodes<VariableDeclaration>(m_subNodes); }
|
||||
std::vector<ModifierDefinition const*> functionModifiers() const { return filteredNodes<ModifierDefinition>(m_subNodes); }
|
||||
std::vector<FunctionDefinition const*> definedFunctions() const { return filteredNodes<FunctionDefinition>(m_subNodes); }
|
||||
std::vector<FunctionDefinition const*> const& definedFunctions() const;
|
||||
std::vector<EventDefinition const*> events() const { return filteredNodes<EventDefinition>(m_subNodes); }
|
||||
std::vector<EventDefinition const*> const& interfaceEvents() const;
|
||||
/// @returns all errors defined in this contract or any base contract
|
||||
@ -549,6 +549,7 @@ private:
|
||||
std::vector<ASTPointer<InheritanceSpecifier>> m_baseContracts;
|
||||
std::vector<ASTPointer<ASTNode>> m_subNodes;
|
||||
ContractKind m_contractKind;
|
||||
mutable std::optional<std::vector<FunctionDefinition const*>> m_cachedDefinedFunctions;
|
||||
bool m_abstract{false};
|
||||
|
||||
util::LazyInit<std::vector<std::pair<util::FixedHash<4>, FunctionTypePointer>>> m_interfaceFunctionList[2];
|
||||
|
||||
Loading…
Reference in New Issue
Block a user