aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2019-07-08 02:46:27 +0200
committerKim Alvefur <zash@zash.se>2019-07-08 02:46:27 +0200
commit23eb311e20cfdcba0fbc497fd45e448ee619f640 (patch)
treeed7768f531d3923c9d6169e0d1fceafe67638fb1
parent04384c44a021d128e8f61e67c7cf18d3a900b040 (diff)
downloadprosody-23eb311e20cfdcba0fbc497fd45e448ee619f640.tar.gz
prosody-23eb311e20cfdcba0fbc497fd45e448ee619f640.zip
util.serialization: Cache default serialization instance (fixes #1389)
Most serialization uses still use the default serialize() and thus duplicate much of the setup, which negates some of the performance improvements of the rewrite.
-rw-r--r--util/serialization.lua7
1 files changed, 6 insertions, 1 deletions
diff --git a/util/serialization.lua b/util/serialization.lua
index dd6a2a2b..5121a9f9 100644
--- a/util/serialization.lua
+++ b/util/serialization.lua
@@ -272,10 +272,15 @@ local function deserialize(str)
return ret;
end
+local default = new();
return {
new = new;
serialize = function (x, opt)
- return new(opt)(x);
+ if opt == nil then
+ return default(x);
+ else
+ return new(opt)(x);
+ end
end;
deserialize = deserialize;
};