aboutsummaryrefslogtreecommitdiff
path: root/src/compressor.cpp
diff options
context:
space:
mode:
authorWilliam Casarin <jb55@jb55.com>2020-05-01 17:31:38 -0700
committerWilliam Casarin <jb55@jb55.com>2020-05-15 15:26:54 -0700
commit83a425d25af033086744c1c8c892015014ed46bd (patch)
tree1fd1094b3c5c37aa900b49b496e0d1c40468b7b6 /src/compressor.cpp
parent844d2070a2c0106bb7a54be5cad7d4da4d9cd55e (diff)
downloadbitcoin-83a425d25af033086744c1c8c892015014ed46bd.tar.xz
compressor: use a prevector in compressed script serialization
Use a prevector for stack allocation instead of heap allocation during script compression and decompression. These functions were doing millions of unnecessary heap allocations during IBD. We introduce a CompressedScript type alias for this prevector. It is size 33 as that is the maximum size of a compressed script. Fix the DecompressScript header to match the variable name from compressor.cpp Signed-off-by: William Casarin <jb55@jb55.com>
Diffstat (limited to 'src/compressor.cpp')
-rw-r--r--src/compressor.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/compressor.cpp b/src/compressor.cpp
index a70306d320..ef3135e7a5 100644
--- a/src/compressor.cpp
+++ b/src/compressor.cpp
@@ -52,7 +52,7 @@ static bool IsToPubKey(const CScript& script, CPubKey &pubkey)
return false;
}
-bool CompressScript(const CScript& script, std::vector<unsigned char> &out)
+bool CompressScript(const CScript& script, CompressedScript& out)
{
CKeyID keyID;
if (IsToKeyID(script, keyID)) {
@@ -92,7 +92,7 @@ unsigned int GetSpecialScriptSize(unsigned int nSize)
return 0;
}
-bool DecompressScript(CScript& script, unsigned int nSize, const std::vector<unsigned char> &in)
+bool DecompressScript(CScript& script, unsigned int nSize, const CompressedScript& in)
{
switch(nSize) {
case 0x00: