From fccfc33dfbcfad58e7e3a3493ad73f813495b034 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Fri, 14 May 2021 11:54:43 +0200 Subject: [PATCH] AK: Use move semantics to avoid copying in JSON parser The JSON parser was deep-copying JsonValues left and right, and it was all totally avoidable. :^) --- AK/JsonParser.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/AK/JsonParser.cpp b/AK/JsonParser.cpp index bb9d52b0e7..80d1794c26 100644 --- a/AK/JsonParser.cpp +++ b/AK/JsonParser.cpp @@ -98,7 +98,7 @@ Optional JsonParser::parse_object() auto value = parse_helper(); if (!value.has_value()) return {}; - object.set(name, move(value.value())); + object.set(name, value.release_value()); ignore_while(isspace); if (peek() == '}') break; @@ -110,7 +110,7 @@ Optional JsonParser::parse_object() } if (!consume_specific('}')) return {}; - return object; + return JsonValue { move(object) }; } Optional JsonParser::parse_array() @@ -125,7 +125,7 @@ Optional JsonParser::parse_array() auto element = parse_helper(); if (!element.has_value()) return {}; - array.append(element.value()); + array.append(element.release_value()); ignore_while(isspace); if (peek() == ']') break; @@ -138,7 +138,7 @@ Optional JsonParser::parse_array() ignore_while(isspace); if (!consume_specific(']')) return {}; - return array; + return JsonValue { move(array) }; } Optional JsonParser::parse_string()