common: implement bt_common_g_string_append and bt_common_g_string_append_c
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 19 Jun 2019 18:23:09 +0000 (14:23 -0400)
committerPhilippe Proulx <eeppeliteloop@gmail.com>
Sun, 21 Jul 2019 15:39:24 +0000 (11:39 -0400)
Implement inline versions of g_string_append and
g_string_append_c. Since those calls are performed very often within
sink.text.pretty, it is relevant for pretty-printing speed.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Ib1069c7d21c6e707f75d839f333f034a50e2a43e
Reviewed-on: https://review.lttng.org/c/babeltrace/+/1515
CI-Build: Philippe Proulx <eeppeliteloop@gmail.com>
Tested-by: jenkins <jenkins@lttng.org>
Reviewed-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
src/common/common.h

index 220ec61b4ed9a09433e495881d6c4d1b62e9bff4..e4c775e5c473927ae679579f5718381ea8449cb4 100644 (file)
@@ -728,4 +728,43 @@ end:
 BT_HIDDEN
 int bt_common_g_string_append_printf(GString *str, const char *fmt, ...);
 
+static inline
+void bt_common_g_string_append(GString *str, const char *s)
+{
+       gsize len, allocated_len, s_len;
+
+       /* str->len excludes \0. */
+       len = str->len;
+       /* Exclude \0. */
+       allocated_len = str->allocated_len - 1;
+       s_len = strlen(s);
+       if (G_UNLIKELY(allocated_len < len + s_len)) {
+               /* Resize. */
+               g_string_set_size(str, len + s_len);
+       } else {
+               str->len = len + s_len;
+       }
+       memcpy(str->str + len, s, s_len + 1);
+}
+
+static inline
+void bt_common_g_string_append_c(GString *str, char c)
+{
+       gsize len, allocated_len, s_len;
+
+       /* str->len excludes \0. */
+       len = str->len;
+       /* Exclude \0. */
+       allocated_len = str->allocated_len - 1;
+       s_len = 1;
+       if (G_UNLIKELY(allocated_len < len + s_len)) {
+               /* Resize. */
+               g_string_set_size(str, len + s_len);
+       } else {
+               str->len = len + s_len;
+       }
+       str->str[len] = c;
+       str->str[len + 1] = '\0';
+}
+
 #endif /* BABELTRACE_COMMON_INTERNAL_H */
This page took 0.02519 seconds and 4 git commands to generate.