summaryrefslogtreecommitdiff
path: root/AK/JsonArraySerializer.h
diff options
context:
space:
mode:
authorAndreas Kling <awesomekling@gmail.com>2019-09-04 14:39:08 +0200
committerAndreas Kling <awesomekling@gmail.com>2019-09-04 14:40:11 +0200
commitcc98ea1956d02c660227594327982fbb2cc42075 (patch)
treeacefeb716f7b046eac8785a4c29bd18a70bac519 /AK/JsonArraySerializer.h
parent14a228a6f883c81391942a75fe7731d2933c4233 (diff)
downloadserenity-cc98ea1956d02c660227594327982fbb2cc42075.zip
Json: Add serializer fast-path for string values
Passing these through the generic JsonValue path was causing us to instantiate temporary JsonValues that incurred a heap allocation. This avoids that by adding specialized overloads for string types.
Diffstat (limited to 'AK/JsonArraySerializer.h')
-rw-r--r--AK/JsonArraySerializer.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/AK/JsonArraySerializer.h b/AK/JsonArraySerializer.h
index 46bbd14ac5..3205ba2a73 100644
--- a/AK/JsonArraySerializer.h
+++ b/AK/JsonArraySerializer.h
@@ -31,6 +31,30 @@ public:
value.serialize(m_builder);
}
+ void add(const StringView& value)
+ {
+ begin_item();
+ m_builder.append('"');
+ m_builder.append(value);
+ m_builder.append('"');
+ }
+
+ void add(const String& value)
+ {
+ begin_item();
+ m_builder.append('"');
+ m_builder.append(value);
+ m_builder.append('"');
+ }
+
+ void add(const char* value)
+ {
+ begin_item();
+ m_builder.append('"');
+ m_builder.append(value);
+ m_builder.append('"');
+ }
+
JsonArraySerializer<Builder> add_array()
{
begin_item();