aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/interface/CompilerStack.h
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2018-12-18 23:38:25 +0800
committerchriseth <chris@ethereum.org>2018-12-18 23:38:25 +0800
commitbd52beedfff7196070880abbd396f5c7469314d0 (patch)
tree55ed2be4b5004686a180275db3ab4a6554772bf2 /libsolidity/interface/CompilerStack.h
parenta51a8368aaa44bd1b26eb6869b107f6f3b3eec05 (diff)
downloaddexon-solidity-bd52beedfff7196070880abbd396f5c7469314d0.tar.gz
dexon-solidity-bd52beedfff7196070880abbd396f5c7469314d0.tar.zst
dexon-solidity-bd52beedfff7196070880abbd396f5c7469314d0.zip
Cache hash computations.
Diffstat (limited to 'libsolidity/interface/CompilerStack.h')
-rw-r--r--libsolidity/interface/CompilerStack.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/libsolidity/interface/CompilerStack.h b/libsolidity/interface/CompilerStack.h
index 74033170..81d5009f 100644
--- a/libsolidity/interface/CompilerStack.h
+++ b/libsolidity/interface/CompilerStack.h
@@ -261,7 +261,11 @@ private:
std::shared_ptr<langutil::Scanner> scanner;
std::shared_ptr<SourceUnit> ast;
bool isLibrary = false;
- void reset() { scanner.reset(); ast.reset(); }
+ h256 mutable keccak256HashCached;
+ h256 mutable swarmHashCached;
+ void reset() { *this = Source(); }
+ h256 const& keccak256() const;
+ h256 const& swarmHash() const;
};
/// The state per contract. Filled gradually during compilation.
@@ -315,7 +319,7 @@ private:
std::string createMetadata(Contract const& _contract) const;
/// @returns the metadata CBOR for the given serialised metadata JSON.
- static bytes createCBORMetadata(std::string _metadata, bool _experimentalMode);
+ static bytes createCBORMetadata(std::string const& _metadata, bool _experimentalMode);
/// @returns the computer source mapping string.
std::string computeSourceMapping(eth::AssemblyItems const& _items) const;