From 17c204de33821625f84cefc2c6f20d38566b5355 Mon Sep 17 00:00:00 2001 From: Muhammad Qureshi Date: Wed, 15 Jan 2020 13:35:41 -0800 Subject: [PATCH] Make writeKeyValuePairs accept Nullable args API Review requested to remove unneeded allocations so pass null for arguments that are empty when writing KeyValuePairs Bug: 146383532 Test: m Change-Id: Ic1788f65e8c7f837d6800d59c186519a82882bf7 Merged-In: Ic1788f65e8c7f837d6800d59c186519a82882bf7 (cherry picked from commit 996afa633ce5950c6d4afe7afc71d815e91efe66) --- tools/stats_log_api_gen/java_writer.cpp | 32 +++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/tools/stats_log_api_gen/java_writer.cpp b/tools/stats_log_api_gen/java_writer.cpp index c6cca600dc0d9..dd3f0bb76a256 100644 --- a/tools/stats_log_api_gen/java_writer.cpp +++ b/tools/stats_log_api_gen/java_writer.cpp @@ -142,16 +142,16 @@ static int write_java_methods( fprintf(out, "%s final int count = valueMap.size();\n", indent.c_str()); fprintf(out, - "%s final SparseIntArray intMap = new SparseIntArray();\n", + "%s SparseIntArray intMap = null;\n", indent.c_str()); fprintf(out, - "%s final SparseLongArray longMap = new SparseLongArray();\n", + "%s SparseLongArray longMap = null;\n", indent.c_str()); fprintf(out, - "%s final SparseArray stringMap = new SparseArray<>();\n", + "%s SparseArray stringMap = null;\n", indent.c_str()); fprintf(out, - "%s final SparseArray floatMap = new SparseArray<>();\n", + "%s SparseArray floatMap = null;\n", indent.c_str()); fprintf(out, "%s for (int i = 0; i < count; i++) {\n", indent.c_str()); @@ -162,18 +162,42 @@ static int write_java_methods( indent.c_str()); fprintf(out, "%s if (value instanceof Integer) {\n", indent.c_str()); + fprintf(out, + "%s if (null == intMap) {\n", indent.c_str()); + fprintf(out, + "%s intMap = new SparseIntArray();\n", indent.c_str()); + fprintf(out, + "%s }\n", indent.c_str()); fprintf(out, "%s intMap.put(key, (Integer) value);\n", indent.c_str()); fprintf(out, "%s } else if (value instanceof Long) {\n", indent.c_str()); + fprintf(out, + "%s if (null == longMap) {\n", indent.c_str()); + fprintf(out, + "%s longMap = new SparseLongArray();\n", indent.c_str()); + fprintf(out, + "%s }\n", indent.c_str()); fprintf(out, "%s longMap.put(key, (Long) value);\n", indent.c_str()); fprintf(out, "%s } else if (value instanceof String) {\n", indent.c_str()); + fprintf(out, + "%s if (null == stringMap) {\n", indent.c_str()); + fprintf(out, + "%s stringMap = new SparseArray<>();\n", indent.c_str()); + fprintf(out, + "%s }\n", indent.c_str()); fprintf(out, "%s stringMap.put(key, (String) value);\n", indent.c_str()); fprintf(out, "%s } else if (value instanceof Float) {\n", indent.c_str()); + fprintf(out, + "%s if (null == floatMap) {\n", indent.c_str()); + fprintf(out, + "%s floatMap = new SparseArray<>();\n", indent.c_str()); + fprintf(out, + "%s }\n", indent.c_str()); fprintf(out, "%s floatMap.put(key, (Float) value);\n", indent.c_str()); fprintf(out,