Faster comparison
diff --git a/src/core/lib/transport/metadata.c b/src/core/lib/transport/metadata.c
index f9f5ac9..650f6cc 100644
--- a/src/core/lib/transport/metadata.c
+++ b/src/core/lib/transport/metadata.c
@@ -260,10 +260,13 @@
return GRPC_MAKE_MDELEM(allocated, GRPC_MDELEM_STORAGE_ALLOCATED);
}
- grpc_mdelem static_elem = grpc_static_mdelem_for_static_strings(
- grpc_static_metadata_index(key), grpc_static_metadata_index(value));
- if (!GRPC_MDISNULL(static_elem)) {
- return static_elem;
+ if (grpc_is_static_metadata_string(key) &&
+ grpc_is_static_metadata_string(value)) {
+ grpc_mdelem static_elem = grpc_static_mdelem_for_static_strings(
+ grpc_static_metadata_index(key), grpc_static_metadata_index(value));
+ if (!GRPC_MDISNULL(static_elem)) {
+ return static_elem;
+ }
}
uint32_t hash =
diff --git a/src/core/lib/transport/static_metadata.c b/src/core/lib/transport/static_metadata.c
index 374a5fd..55c5cd4 100644
--- a/src/core/lib/transport/static_metadata.c
+++ b/src/core/lib/transport/static_metadata.c
@@ -43,7 +43,7 @@
#include "src/core/lib/slice/slice_internal.h"
-static uint8_t g_raw_bytes[] = {
+static uint8_t g_bytes[] = {
48, 49, 50, 50, 48, 48, 50, 48, 52, 50, 48, 54, 51, 48, 52,
52, 48, 48, 52, 48, 52, 53, 48, 48, 97, 99, 99, 101, 112, 116,
97, 99, 99, 101, 112, 116, 45, 99, 104, 97, 114, 115, 101, 116, 97,
@@ -118,292 +118,174 @@
static void static_unref(grpc_exec_ctx *exec_ctx, void *unused) {}
static const grpc_slice_refcount_vtable static_vtable = {
static_ref, static_unref, grpc_static_slice_eq, grpc_static_slice_hash};
-static grpc_slice_refcount g_refcnt = {&static_vtable};
+typedef struct {
+ grpc_slice_refcount base;
+ const uint16_t offset;
+ const uint16_t length;
+} static_slice_refcount;
+static static_slice_refcount g_refcnts[GRPC_STATIC_MDSTR_COUNT] = {
+ {{&static_vtable}, 0, 1}, {{&static_vtable}, 1, 1},
+ {{&static_vtable}, 2, 1}, {{&static_vtable}, 3, 3},
+ {{&static_vtable}, 6, 3}, {{&static_vtable}, 9, 3},
+ {{&static_vtable}, 12, 3}, {{&static_vtable}, 15, 3},
+ {{&static_vtable}, 18, 3}, {{&static_vtable}, 21, 3},
+ {{&static_vtable}, 24, 6}, {{&static_vtable}, 30, 14},
+ {{&static_vtable}, 44, 15}, {{&static_vtable}, 59, 15},
+ {{&static_vtable}, 74, 13}, {{&static_vtable}, 87, 27},
+ {{&static_vtable}, 114, 3}, {{&static_vtable}, 117, 5},
+ {{&static_vtable}, 122, 16}, {{&static_vtable}, 138, 10},
+ {{&static_vtable}, 148, 13}, {{&static_vtable}, 161, 13},
+ {{&static_vtable}, 174, 19}, {{&static_vtable}, 193, 16},
+ {{&static_vtable}, 209, 16}, {{&static_vtable}, 225, 14},
+ {{&static_vtable}, 239, 16}, {{&static_vtable}, 255, 13},
+ {{&static_vtable}, 268, 12}, {{&static_vtable}, 280, 6},
+ {{&static_vtable}, 286, 4}, {{&static_vtable}, 290, 7},
+ {{&static_vtable}, 297, 12}, {{&static_vtable}, 309, 0},
+ {{&static_vtable}, 309, 4}, {{&static_vtable}, 313, 6},
+ {{&static_vtable}, 319, 7}, {{&static_vtable}, 326, 4},
+ {{&static_vtable}, 330, 3}, {{&static_vtable}, 333, 4},
+ {{&static_vtable}, 337, 20}, {{&static_vtable}, 357, 30},
+ {{&static_vtable}, 387, 31}, {{&static_vtable}, 418, 12},
+ {{&static_vtable}, 430, 19}, {{&static_vtable}, 449, 13},
+ {{&static_vtable}, 462, 30}, {{&static_vtable}, 492, 12},
+ {{&static_vtable}, 504, 16}, {{&static_vtable}, 520, 14},
+ {{&static_vtable}, 534, 11}, {{&static_vtable}, 545, 12},
+ {{&static_vtable}, 557, 16}, {{&static_vtable}, 573, 4},
+ {{&static_vtable}, 577, 13}, {{&static_vtable}, 590, 4},
+ {{&static_vtable}, 594, 4}, {{&static_vtable}, 598, 5},
+ {{&static_vtable}, 603, 8}, {{&static_vtable}, 611, 16},
+ {{&static_vtable}, 627, 21}, {{&static_vtable}, 648, 13},
+ {{&static_vtable}, 661, 8}, {{&static_vtable}, 669, 17},
+ {{&static_vtable}, 686, 13}, {{&static_vtable}, 699, 8},
+ {{&static_vtable}, 707, 19}, {{&static_vtable}, 726, 13},
+ {{&static_vtable}, 739, 11}, {{&static_vtable}, 750, 8},
+ {{&static_vtable}, 758, 4}, {{&static_vtable}, 762, 8},
+ {{&static_vtable}, 770, 12}, {{&static_vtable}, 782, 7},
+ {{&static_vtable}, 789, 5}, {{&static_vtable}, 794, 4},
+ {{&static_vtable}, 798, 18}, {{&static_vtable}, 816, 19},
+ {{&static_vtable}, 835, 3}, {{&static_vtable}, 838, 5},
+ {{&static_vtable}, 843, 7}, {{&static_vtable}, 850, 7},
+ {{&static_vtable}, 857, 11}, {{&static_vtable}, 868, 7},
+ {{&static_vtable}, 875, 6}, {{&static_vtable}, 881, 10},
+ {{&static_vtable}, 891, 1}, {{&static_vtable}, 892, 36},
+ {{&static_vtable}, 928, 11}, {{&static_vtable}, 939, 7},
+ {{&static_vtable}, 946, 25}, {{&static_vtable}, 971, 2},
+ {{&static_vtable}, 973, 8}, {{&static_vtable}, 981, 17},
+ {{&static_vtable}, 998, 10}, {{&static_vtable}, 1008, 4},
+ {{&static_vtable}, 1012, 3}, {{&static_vtable}, 1015, 16},
+};
bool grpc_is_static_metadata_string(grpc_slice slice) {
return slice.refcount != NULL && slice.refcount->vtable == &static_vtable;
}
const grpc_slice grpc_static_slice_table[GRPC_STATIC_MDSTR_COUNT] = {
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 0, .length = 1}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 1, .length = 1}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 2, .length = 1}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 3, .length = 3}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 6, .length = 3}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 9, .length = 3}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 12, .length = 3}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 15, .length = 3}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 18, .length = 3}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 21, .length = 3}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 24, .length = 6}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 30, .length = 14}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 44, .length = 15}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 59, .length = 15}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 74, .length = 13}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 87, .length = 27}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 114, .length = 3}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 117, .length = 5}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 122, .length = 16}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 138, .length = 10}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 148, .length = 13}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 161, .length = 13}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 174, .length = 19}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 193, .length = 16}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 209, .length = 16}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 225, .length = 14}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 239, .length = 16}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 255, .length = 13}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 268, .length = 12}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 280, .length = 6}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 286, .length = 4}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 290, .length = 7}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 297, .length = 12}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 4}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 313, .length = 6}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 319, .length = 7}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 326, .length = 4}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 330, .length = 3}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 333, .length = 4}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 337, .length = 20}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 357, .length = 30}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 387, .length = 31}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 418, .length = 12}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 430, .length = 19}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 449, .length = 13}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 462, .length = 30}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 492, .length = 12}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 504, .length = 16}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 520, .length = 14}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 534, .length = 11}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 545, .length = 12}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 557, .length = 16}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 573, .length = 4}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 577, .length = 13}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 590, .length = 4}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 594, .length = 4}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 598, .length = 5}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 603, .length = 8}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 611, .length = 16}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 627, .length = 21}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 648, .length = 13}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 661, .length = 8}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 669, .length = 17}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 686, .length = 13}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 699, .length = 8}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 707, .length = 19}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 726, .length = 13}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 739, .length = 11}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 750, .length = 8}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 758, .length = 4}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 762, .length = 8}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 770, .length = 12}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 782, .length = 7}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 789, .length = 5}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 794, .length = 4}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 798, .length = 18}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 816, .length = 19}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 835, .length = 3}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 838, .length = 5}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 843, .length = 7}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 850, .length = 7}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 857, .length = 11}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 868, .length = 7}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 875, .length = 6}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 881, .length = 10}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 891, .length = 1}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 892, .length = 36}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 928, .length = 11}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 939, .length = 7}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 946, .length = 25}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 971, .length = 2}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 973, .length = 8}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 981, .length = 17}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 998, .length = 10}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 1008, .length = 4}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 1012, .length = 3}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 1015, .length = 16}},
+ {.refcount = &g_refcnts[0].base, .data.refcounted = {g_bytes + 0, 1}},
+ {.refcount = &g_refcnts[1].base, .data.refcounted = {g_bytes + 1, 1}},
+ {.refcount = &g_refcnts[2].base, .data.refcounted = {g_bytes + 2, 1}},
+ {.refcount = &g_refcnts[3].base, .data.refcounted = {g_bytes + 3, 3}},
+ {.refcount = &g_refcnts[4].base, .data.refcounted = {g_bytes + 6, 3}},
+ {.refcount = &g_refcnts[5].base, .data.refcounted = {g_bytes + 9, 3}},
+ {.refcount = &g_refcnts[6].base, .data.refcounted = {g_bytes + 12, 3}},
+ {.refcount = &g_refcnts[7].base, .data.refcounted = {g_bytes + 15, 3}},
+ {.refcount = &g_refcnts[8].base, .data.refcounted = {g_bytes + 18, 3}},
+ {.refcount = &g_refcnts[9].base, .data.refcounted = {g_bytes + 21, 3}},
+ {.refcount = &g_refcnts[10].base, .data.refcounted = {g_bytes + 24, 6}},
+ {.refcount = &g_refcnts[11].base, .data.refcounted = {g_bytes + 30, 14}},
+ {.refcount = &g_refcnts[12].base, .data.refcounted = {g_bytes + 44, 15}},
+ {.refcount = &g_refcnts[13].base, .data.refcounted = {g_bytes + 59, 15}},
+ {.refcount = &g_refcnts[14].base, .data.refcounted = {g_bytes + 74, 13}},
+ {.refcount = &g_refcnts[15].base, .data.refcounted = {g_bytes + 87, 27}},
+ {.refcount = &g_refcnts[16].base, .data.refcounted = {g_bytes + 114, 3}},
+ {.refcount = &g_refcnts[17].base, .data.refcounted = {g_bytes + 117, 5}},
+ {.refcount = &g_refcnts[18].base, .data.refcounted = {g_bytes + 122, 16}},
+ {.refcount = &g_refcnts[19].base, .data.refcounted = {g_bytes + 138, 10}},
+ {.refcount = &g_refcnts[20].base, .data.refcounted = {g_bytes + 148, 13}},
+ {.refcount = &g_refcnts[21].base, .data.refcounted = {g_bytes + 161, 13}},
+ {.refcount = &g_refcnts[22].base, .data.refcounted = {g_bytes + 174, 19}},
+ {.refcount = &g_refcnts[23].base, .data.refcounted = {g_bytes + 193, 16}},
+ {.refcount = &g_refcnts[24].base, .data.refcounted = {g_bytes + 209, 16}},
+ {.refcount = &g_refcnts[25].base, .data.refcounted = {g_bytes + 225, 14}},
+ {.refcount = &g_refcnts[26].base, .data.refcounted = {g_bytes + 239, 16}},
+ {.refcount = &g_refcnts[27].base, .data.refcounted = {g_bytes + 255, 13}},
+ {.refcount = &g_refcnts[28].base, .data.refcounted = {g_bytes + 268, 12}},
+ {.refcount = &g_refcnts[29].base, .data.refcounted = {g_bytes + 280, 6}},
+ {.refcount = &g_refcnts[30].base, .data.refcounted = {g_bytes + 286, 4}},
+ {.refcount = &g_refcnts[31].base, .data.refcounted = {g_bytes + 290, 7}},
+ {.refcount = &g_refcnts[32].base, .data.refcounted = {g_bytes + 297, 12}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}},
+ {.refcount = &g_refcnts[34].base, .data.refcounted = {g_bytes + 309, 4}},
+ {.refcount = &g_refcnts[35].base, .data.refcounted = {g_bytes + 313, 6}},
+ {.refcount = &g_refcnts[36].base, .data.refcounted = {g_bytes + 319, 7}},
+ {.refcount = &g_refcnts[37].base, .data.refcounted = {g_bytes + 326, 4}},
+ {.refcount = &g_refcnts[38].base, .data.refcounted = {g_bytes + 330, 3}},
+ {.refcount = &g_refcnts[39].base, .data.refcounted = {g_bytes + 333, 4}},
+ {.refcount = &g_refcnts[40].base, .data.refcounted = {g_bytes + 337, 20}},
+ {.refcount = &g_refcnts[41].base, .data.refcounted = {g_bytes + 357, 30}},
+ {.refcount = &g_refcnts[42].base, .data.refcounted = {g_bytes + 387, 31}},
+ {.refcount = &g_refcnts[43].base, .data.refcounted = {g_bytes + 418, 12}},
+ {.refcount = &g_refcnts[44].base, .data.refcounted = {g_bytes + 430, 19}},
+ {.refcount = &g_refcnts[45].base, .data.refcounted = {g_bytes + 449, 13}},
+ {.refcount = &g_refcnts[46].base, .data.refcounted = {g_bytes + 462, 30}},
+ {.refcount = &g_refcnts[47].base, .data.refcounted = {g_bytes + 492, 12}},
+ {.refcount = &g_refcnts[48].base, .data.refcounted = {g_bytes + 504, 16}},
+ {.refcount = &g_refcnts[49].base, .data.refcounted = {g_bytes + 520, 14}},
+ {.refcount = &g_refcnts[50].base, .data.refcounted = {g_bytes + 534, 11}},
+ {.refcount = &g_refcnts[51].base, .data.refcounted = {g_bytes + 545, 12}},
+ {.refcount = &g_refcnts[52].base, .data.refcounted = {g_bytes + 557, 16}},
+ {.refcount = &g_refcnts[53].base, .data.refcounted = {g_bytes + 573, 4}},
+ {.refcount = &g_refcnts[54].base, .data.refcounted = {g_bytes + 577, 13}},
+ {.refcount = &g_refcnts[55].base, .data.refcounted = {g_bytes + 590, 4}},
+ {.refcount = &g_refcnts[56].base, .data.refcounted = {g_bytes + 594, 4}},
+ {.refcount = &g_refcnts[57].base, .data.refcounted = {g_bytes + 598, 5}},
+ {.refcount = &g_refcnts[58].base, .data.refcounted = {g_bytes + 603, 8}},
+ {.refcount = &g_refcnts[59].base, .data.refcounted = {g_bytes + 611, 16}},
+ {.refcount = &g_refcnts[60].base, .data.refcounted = {g_bytes + 627, 21}},
+ {.refcount = &g_refcnts[61].base, .data.refcounted = {g_bytes + 648, 13}},
+ {.refcount = &g_refcnts[62].base, .data.refcounted = {g_bytes + 661, 8}},
+ {.refcount = &g_refcnts[63].base, .data.refcounted = {g_bytes + 669, 17}},
+ {.refcount = &g_refcnts[64].base, .data.refcounted = {g_bytes + 686, 13}},
+ {.refcount = &g_refcnts[65].base, .data.refcounted = {g_bytes + 699, 8}},
+ {.refcount = &g_refcnts[66].base, .data.refcounted = {g_bytes + 707, 19}},
+ {.refcount = &g_refcnts[67].base, .data.refcounted = {g_bytes + 726, 13}},
+ {.refcount = &g_refcnts[68].base, .data.refcounted = {g_bytes + 739, 11}},
+ {.refcount = &g_refcnts[69].base, .data.refcounted = {g_bytes + 750, 8}},
+ {.refcount = &g_refcnts[70].base, .data.refcounted = {g_bytes + 758, 4}},
+ {.refcount = &g_refcnts[71].base, .data.refcounted = {g_bytes + 762, 8}},
+ {.refcount = &g_refcnts[72].base, .data.refcounted = {g_bytes + 770, 12}},
+ {.refcount = &g_refcnts[73].base, .data.refcounted = {g_bytes + 782, 7}},
+ {.refcount = &g_refcnts[74].base, .data.refcounted = {g_bytes + 789, 5}},
+ {.refcount = &g_refcnts[75].base, .data.refcounted = {g_bytes + 794, 4}},
+ {.refcount = &g_refcnts[76].base, .data.refcounted = {g_bytes + 798, 18}},
+ {.refcount = &g_refcnts[77].base, .data.refcounted = {g_bytes + 816, 19}},
+ {.refcount = &g_refcnts[78].base, .data.refcounted = {g_bytes + 835, 3}},
+ {.refcount = &g_refcnts[79].base, .data.refcounted = {g_bytes + 838, 5}},
+ {.refcount = &g_refcnts[80].base, .data.refcounted = {g_bytes + 843, 7}},
+ {.refcount = &g_refcnts[81].base, .data.refcounted = {g_bytes + 850, 7}},
+ {.refcount = &g_refcnts[82].base, .data.refcounted = {g_bytes + 857, 11}},
+ {.refcount = &g_refcnts[83].base, .data.refcounted = {g_bytes + 868, 7}},
+ {.refcount = &g_refcnts[84].base, .data.refcounted = {g_bytes + 875, 6}},
+ {.refcount = &g_refcnts[85].base, .data.refcounted = {g_bytes + 881, 10}},
+ {.refcount = &g_refcnts[86].base, .data.refcounted = {g_bytes + 891, 1}},
+ {.refcount = &g_refcnts[87].base, .data.refcounted = {g_bytes + 892, 36}},
+ {.refcount = &g_refcnts[88].base, .data.refcounted = {g_bytes + 928, 11}},
+ {.refcount = &g_refcnts[89].base, .data.refcounted = {g_bytes + 939, 7}},
+ {.refcount = &g_refcnts[90].base, .data.refcounted = {g_bytes + 946, 25}},
+ {.refcount = &g_refcnts[91].base, .data.refcounted = {g_bytes + 971, 2}},
+ {.refcount = &g_refcnts[92].base, .data.refcounted = {g_bytes + 973, 8}},
+ {.refcount = &g_refcnts[93].base, .data.refcounted = {g_bytes + 981, 17}},
+ {.refcount = &g_refcnts[94].base, .data.refcounted = {g_bytes + 998, 10}},
+ {.refcount = &g_refcnts[95].base, .data.refcounted = {g_bytes + 1008, 4}},
+ {.refcount = &g_refcnts[96].base, .data.refcounted = {g_bytes + 1012, 3}},
+ {.refcount = &g_refcnts[97].base, .data.refcounted = {g_bytes + 1015, 16}},
};
-static const uint8_t g_revmap[] = {
- 0, 1, 2, 3, 255, 255, 4, 255, 255, 5, 255, 255, 6, 255, 255,
- 7, 255, 255, 8, 255, 255, 9, 255, 255, 10, 255, 255, 255, 255, 255,
- 11, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 12,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 13,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 14,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 15, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 16, 255, 255, 17, 255, 255,
- 255, 255, 18, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 19, 255, 255, 255, 255, 255, 255, 255, 255, 255, 20, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 21, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 22, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 23, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 24,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 25, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 26,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 27, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 28, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 29, 255, 255, 255, 255,
- 255, 30, 255, 255, 255, 31, 255, 255, 255, 255, 255, 255, 32, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 34, 255, 255, 255, 35, 255,
- 255, 255, 255, 255, 36, 255, 255, 255, 255, 255, 255, 37, 255, 255, 255,
- 38, 255, 255, 39, 255, 255, 255, 40, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 41, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 42, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 43, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 44, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 45,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 46, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 47, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 48, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 49, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 50, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 51, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 52, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 53, 255, 255, 255, 54, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 55, 255, 255, 255, 56, 255, 255, 255, 57, 255,
- 255, 255, 255, 58, 255, 255, 255, 255, 255, 255, 255, 59, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 60, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 61, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 62, 255, 255, 255, 255, 255, 255, 255, 63, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 64, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 65, 255, 255, 255, 255, 255,
- 255, 255, 66, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 67, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 68, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 69, 255, 255, 255, 255, 255, 255, 255, 70, 255, 255, 255, 71, 255, 255,
- 255, 255, 255, 255, 255, 72, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 73, 255, 255, 255, 255, 255, 255, 74, 255, 255, 255, 255, 75,
- 255, 255, 255, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 77, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 78, 255, 255, 79, 255,
- 255, 255, 255, 80, 255, 255, 255, 255, 255, 255, 81, 255, 255, 255, 255,
- 255, 255, 82, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 83, 255,
- 255, 255, 255, 255, 255, 84, 255, 255, 255, 255, 255, 85, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 86, 87, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 88, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 89, 255, 255, 255, 255, 255,
- 255, 90, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 91, 255, 92, 255,
- 255, 255, 255, 255, 255, 255, 93, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 94, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 95, 255, 255, 255, 96, 255, 255, 97, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255};
-
int grpc_static_metadata_index(grpc_slice slice) {
- if (GRPC_SLICE_LENGTH(slice) == 0) return 33;
- if (slice.refcount != &g_refcnt) return -1;
- size_t ofs = (size_t)(slice.data.refcounted.bytes - g_raw_bytes);
- if (ofs > sizeof(g_revmap)) return -1;
- uint8_t id = g_revmap[ofs];
- return id == 255 ? -1 : (grpc_static_slice_table[id].data.refcounted.length ==
- slice.data.refcounted.length
- ? id
- : -1);
+ static_slice_refcount *r = (static_slice_refcount *)slice.refcount;
+ if (slice.data.refcounted.bytes == g_bytes + r->offset &&
+ slice.data.refcounted.length == r->length)
+ return (int)(r - g_refcnts);
+ return -1;
}
uintptr_t grpc_static_mdelem_user_data[GRPC_STATIC_MDELEM_COUNT] = {
@@ -465,330 +347,168 @@
}
grpc_mdelem_data grpc_static_mdelem_table[GRPC_STATIC_MDELEM_COUNT] = {
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 30, .length = 14}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 24, .length = 6}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 44, .length = 15}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 44, .length = 15}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 577, .length = 13}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 59, .length = 15}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 74, .length = 13}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 87, .length = 27}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 114, .length = 3}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 117, .length = 5}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 138, .length = 10}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 148, .length = 13}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 161, .length = 13}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 174, .length = 19}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 193, .length = 16}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 209, .length = 16}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 225, .length = 14}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 239, .length = 16}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 255, .length = 13}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 268, .length = 12}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 122, .length = 16}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 268, .length = 12}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 280, .length = 6}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 286, .length = 4}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 4}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 313, .length = 6}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 319, .length = 7}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 326, .length = 4}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 337, .length = 20}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 290, .length = 7}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 337, .length = 20}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 297, .length = 12}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 337, .length = 20}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 573, .length = 4}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 337, .length = 20}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 603, .length = 8}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 337, .length = 20}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 611, .length = 16}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 337, .length = 20}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 627, .length = 21}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 337, .length = 20}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 648, .length = 13}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 449, .length = 13}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 290, .length = 7}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 449, .length = 13}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 573, .length = 4}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 449, .length = 13}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 603, .length = 8}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 534, .length = 11}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 0, .length = 1}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 534, .length = 11}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 1, .length = 1}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 534, .length = 11}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 2, .length = 1}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 590, .length = 4}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 661, .length = 8}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 669, .length = 17}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 686, .length = 13}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 699, .length = 8}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 707, .length = 19}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 726, .length = 13}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 739, .length = 11}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 750, .length = 8}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 758, .length = 4}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 762, .length = 8}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 770, .length = 12}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 782, .length = 7}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 330, .length = 3}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 782, .length = 7}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 794, .length = 4}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 782, .length = 7}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 835, .length = 3}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 789, .length = 5}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 891, .length = 1}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 789, .length = 5}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 928, .length = 11}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 798, .length = 18}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 816, .length = 19}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 838, .length = 5}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 843, .length = 7}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 850, .length = 7}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 857, .length = 11}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 868, .length = 7}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 333, .length = 4}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 868, .length = 7}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 594, .length = 4}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 868, .length = 7}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 598, .length = 5}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 875, .length = 6}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 881, .length = 10}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 939, .length = 7}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 3, .length = 3}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 939, .length = 7}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 6, .length = 3}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 939, .length = 7}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 9, .length = 3}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 939, .length = 7}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 12, .length = 3}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 939, .length = 7}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 15, .length = 3}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 939, .length = 7}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 18, .length = 3}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 939, .length = 7}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 21, .length = 3}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 946, .length = 25}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 971, .length = 2}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 973, .length = 8}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 981, .length = 17}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 998, .length = 10}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 1008, .length = 4}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 1012, .length = 3}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
- {{.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 1015, .length = 16}},
- {.refcount = &g_refcnt,
- .data.refcounted = {.bytes = g_raw_bytes + 309, .length = 0}}},
+ {{.refcount = &g_refcnts[11].base, .data.refcounted = {g_bytes + 30, 14}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[10].base, .data.refcounted = {g_bytes + 24, 6}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[12].base, .data.refcounted = {g_bytes + 44, 15}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[12].base, .data.refcounted = {g_bytes + 44, 15}},
+ {.refcount = &g_refcnts[54].base, .data.refcounted = {g_bytes + 577, 13}}},
+ {{.refcount = &g_refcnts[13].base, .data.refcounted = {g_bytes + 59, 15}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[14].base, .data.refcounted = {g_bytes + 74, 13}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[15].base, .data.refcounted = {g_bytes + 87, 27}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[16].base, .data.refcounted = {g_bytes + 114, 3}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[17].base, .data.refcounted = {g_bytes + 117, 5}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[19].base, .data.refcounted = {g_bytes + 138, 10}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[20].base, .data.refcounted = {g_bytes + 148, 13}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[21].base, .data.refcounted = {g_bytes + 161, 13}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[22].base, .data.refcounted = {g_bytes + 174, 19}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[23].base, .data.refcounted = {g_bytes + 193, 16}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[24].base, .data.refcounted = {g_bytes + 209, 16}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[25].base, .data.refcounted = {g_bytes + 225, 14}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[26].base, .data.refcounted = {g_bytes + 239, 16}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[27].base, .data.refcounted = {g_bytes + 255, 13}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[28].base, .data.refcounted = {g_bytes + 268, 12}},
+ {.refcount = &g_refcnts[18].base, .data.refcounted = {g_bytes + 122, 16}}},
+ {{.refcount = &g_refcnts[28].base, .data.refcounted = {g_bytes + 268, 12}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[29].base, .data.refcounted = {g_bytes + 280, 6}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[30].base, .data.refcounted = {g_bytes + 286, 4}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[34].base, .data.refcounted = {g_bytes + 309, 4}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[35].base, .data.refcounted = {g_bytes + 313, 6}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[36].base, .data.refcounted = {g_bytes + 319, 7}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[37].base, .data.refcounted = {g_bytes + 326, 4}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[40].base, .data.refcounted = {g_bytes + 337, 20}},
+ {.refcount = &g_refcnts[31].base, .data.refcounted = {g_bytes + 290, 7}}},
+ {{.refcount = &g_refcnts[40].base, .data.refcounted = {g_bytes + 337, 20}},
+ {.refcount = &g_refcnts[32].base, .data.refcounted = {g_bytes + 297, 12}}},
+ {{.refcount = &g_refcnts[40].base, .data.refcounted = {g_bytes + 337, 20}},
+ {.refcount = &g_refcnts[53].base, .data.refcounted = {g_bytes + 573, 4}}},
+ {{.refcount = &g_refcnts[40].base, .data.refcounted = {g_bytes + 337, 20}},
+ {.refcount = &g_refcnts[58].base, .data.refcounted = {g_bytes + 603, 8}}},
+ {{.refcount = &g_refcnts[40].base, .data.refcounted = {g_bytes + 337, 20}},
+ {.refcount = &g_refcnts[59].base, .data.refcounted = {g_bytes + 611, 16}}},
+ {{.refcount = &g_refcnts[40].base, .data.refcounted = {g_bytes + 337, 20}},
+ {.refcount = &g_refcnts[60].base, .data.refcounted = {g_bytes + 627, 21}}},
+ {{.refcount = &g_refcnts[40].base, .data.refcounted = {g_bytes + 337, 20}},
+ {.refcount = &g_refcnts[61].base, .data.refcounted = {g_bytes + 648, 13}}},
+ {{.refcount = &g_refcnts[45].base, .data.refcounted = {g_bytes + 449, 13}},
+ {.refcount = &g_refcnts[31].base, .data.refcounted = {g_bytes + 290, 7}}},
+ {{.refcount = &g_refcnts[45].base, .data.refcounted = {g_bytes + 449, 13}},
+ {.refcount = &g_refcnts[53].base, .data.refcounted = {g_bytes + 573, 4}}},
+ {{.refcount = &g_refcnts[45].base, .data.refcounted = {g_bytes + 449, 13}},
+ {.refcount = &g_refcnts[58].base, .data.refcounted = {g_bytes + 603, 8}}},
+ {{.refcount = &g_refcnts[50].base, .data.refcounted = {g_bytes + 534, 11}},
+ {.refcount = &g_refcnts[0].base, .data.refcounted = {g_bytes + 0, 1}}},
+ {{.refcount = &g_refcnts[50].base, .data.refcounted = {g_bytes + 534, 11}},
+ {.refcount = &g_refcnts[1].base, .data.refcounted = {g_bytes + 1, 1}}},
+ {{.refcount = &g_refcnts[50].base, .data.refcounted = {g_bytes + 534, 11}},
+ {.refcount = &g_refcnts[2].base, .data.refcounted = {g_bytes + 2, 1}}},
+ {{.refcount = &g_refcnts[55].base, .data.refcounted = {g_bytes + 590, 4}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[62].base, .data.refcounted = {g_bytes + 661, 8}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[63].base, .data.refcounted = {g_bytes + 669, 17}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[64].base, .data.refcounted = {g_bytes + 686, 13}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[65].base, .data.refcounted = {g_bytes + 699, 8}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[66].base, .data.refcounted = {g_bytes + 707, 19}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[67].base, .data.refcounted = {g_bytes + 726, 13}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[68].base, .data.refcounted = {g_bytes + 739, 11}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[69].base, .data.refcounted = {g_bytes + 750, 8}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[70].base, .data.refcounted = {g_bytes + 758, 4}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[71].base, .data.refcounted = {g_bytes + 762, 8}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[72].base, .data.refcounted = {g_bytes + 770, 12}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[73].base, .data.refcounted = {g_bytes + 782, 7}},
+ {.refcount = &g_refcnts[38].base, .data.refcounted = {g_bytes + 330, 3}}},
+ {{.refcount = &g_refcnts[73].base, .data.refcounted = {g_bytes + 782, 7}},
+ {.refcount = &g_refcnts[75].base, .data.refcounted = {g_bytes + 794, 4}}},
+ {{.refcount = &g_refcnts[73].base, .data.refcounted = {g_bytes + 782, 7}},
+ {.refcount = &g_refcnts[78].base, .data.refcounted = {g_bytes + 835, 3}}},
+ {{.refcount = &g_refcnts[74].base, .data.refcounted = {g_bytes + 789, 5}},
+ {.refcount = &g_refcnts[86].base, .data.refcounted = {g_bytes + 891, 1}}},
+ {{.refcount = &g_refcnts[74].base, .data.refcounted = {g_bytes + 789, 5}},
+ {.refcount = &g_refcnts[88].base, .data.refcounted = {g_bytes + 928, 11}}},
+ {{.refcount = &g_refcnts[76].base, .data.refcounted = {g_bytes + 798, 18}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[77].base, .data.refcounted = {g_bytes + 816, 19}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[79].base, .data.refcounted = {g_bytes + 838, 5}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[80].base, .data.refcounted = {g_bytes + 843, 7}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[81].base, .data.refcounted = {g_bytes + 850, 7}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[82].base, .data.refcounted = {g_bytes + 857, 11}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[83].base, .data.refcounted = {g_bytes + 868, 7}},
+ {.refcount = &g_refcnts[39].base, .data.refcounted = {g_bytes + 333, 4}}},
+ {{.refcount = &g_refcnts[83].base, .data.refcounted = {g_bytes + 868, 7}},
+ {.refcount = &g_refcnts[56].base, .data.refcounted = {g_bytes + 594, 4}}},
+ {{.refcount = &g_refcnts[83].base, .data.refcounted = {g_bytes + 868, 7}},
+ {.refcount = &g_refcnts[57].base, .data.refcounted = {g_bytes + 598, 5}}},
+ {{.refcount = &g_refcnts[84].base, .data.refcounted = {g_bytes + 875, 6}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[85].base, .data.refcounted = {g_bytes + 881, 10}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[89].base, .data.refcounted = {g_bytes + 939, 7}},
+ {.refcount = &g_refcnts[3].base, .data.refcounted = {g_bytes + 3, 3}}},
+ {{.refcount = &g_refcnts[89].base, .data.refcounted = {g_bytes + 939, 7}},
+ {.refcount = &g_refcnts[4].base, .data.refcounted = {g_bytes + 6, 3}}},
+ {{.refcount = &g_refcnts[89].base, .data.refcounted = {g_bytes + 939, 7}},
+ {.refcount = &g_refcnts[5].base, .data.refcounted = {g_bytes + 9, 3}}},
+ {{.refcount = &g_refcnts[89].base, .data.refcounted = {g_bytes + 939, 7}},
+ {.refcount = &g_refcnts[6].base, .data.refcounted = {g_bytes + 12, 3}}},
+ {{.refcount = &g_refcnts[89].base, .data.refcounted = {g_bytes + 939, 7}},
+ {.refcount = &g_refcnts[7].base, .data.refcounted = {g_bytes + 15, 3}}},
+ {{.refcount = &g_refcnts[89].base, .data.refcounted = {g_bytes + 939, 7}},
+ {.refcount = &g_refcnts[8].base, .data.refcounted = {g_bytes + 18, 3}}},
+ {{.refcount = &g_refcnts[89].base, .data.refcounted = {g_bytes + 939, 7}},
+ {.refcount = &g_refcnts[9].base, .data.refcounted = {g_bytes + 21, 3}}},
+ {{.refcount = &g_refcnts[90].base, .data.refcounted = {g_bytes + 946, 25}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[91].base, .data.refcounted = {g_bytes + 971, 2}},
+ {.refcount = &g_refcnts[92].base, .data.refcounted = {g_bytes + 973, 8}}},
+ {{.refcount = &g_refcnts[93].base, .data.refcounted = {g_bytes + 981, 17}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[94].base, .data.refcounted = {g_bytes + 998, 10}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[95].base, .data.refcounted = {g_bytes + 1008, 4}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[96].base, .data.refcounted = {g_bytes + 1012, 3}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
+ {{.refcount = &g_refcnts[97].base, .data.refcounted = {g_bytes + 1015, 16}},
+ {.refcount = &g_refcnts[33].base, .data.refcounted = {g_bytes + 309, 0}}},
};
const uint8_t grpc_static_accept_encoding_metadata[8] = {0, 29, 26, 30,
28, 32, 27, 31};
diff --git a/tools/codegen/core/gen_static_metadata.py b/tools/codegen/core/gen_static_metadata.py
index 17ef88e..e40a40d 100755
--- a/tools/codegen/core/gen_static_metadata.py
+++ b/tools/codegen/core/gen_static_metadata.py
@@ -300,6 +300,14 @@
print >>C, '#include "src/core/lib/slice/slice_internal.h"'
print >>C
+str_ofs = 0
+id2strofs = {}
+for i, elem in enumerate(all_strs):
+ id2strofs[i] = str_ofs
+ str_ofs += len(elem);
+def slice_def(i):
+ return '{.refcount = &g_refcnts[%d].base, .data.refcounted = {g_bytes+%d, %d}}' % (i, id2strofs[i], len(all_strs[i]))
+
print >>H, '#define GRPC_STATIC_MDSTR_COUNT %d' % len(all_strs)
print >>H, 'extern const grpc_slice grpc_static_slice_table[GRPC_STATIC_MDSTR_COUNT];'
for i, elem in enumerate(all_strs):
@@ -308,42 +316,31 @@
print >>H
print >>H, 'bool grpc_is_static_metadata_string(grpc_slice slice);'
print >>H
-print >>C, 'static uint8_t g_raw_bytes[] = {%s};' % (','.join('%d' % ord(c) for c in ''.join(all_strs)))
+print >>C, 'static uint8_t g_bytes[] = {%s};' % (','.join('%d' % ord(c) for c in ''.join(all_strs)))
print >>C
print >>C, 'static void static_ref(void *unused) {}'
print >>C, 'static void static_unref(grpc_exec_ctx *exec_ctx, void *unused) {}'
print >>C, 'static const grpc_slice_refcount_vtable static_vtable = {static_ref, static_unref, grpc_static_slice_eq, grpc_static_slice_hash};';
-print >>C, 'static grpc_slice_refcount g_refcnt = {&static_vtable};'
+print >>C, 'typedef struct { grpc_slice_refcount base; const uint16_t offset; const uint16_t length; } static_slice_refcount;'
+print >>C, 'static static_slice_refcount g_refcnts[GRPC_STATIC_MDSTR_COUNT] = {'
+for i, elem in enumerate(all_strs):
+ print >>C, ' {{&static_vtable}, %d, %d},' % (id2strofs[i], len(elem))
+print >>C, '};'
print >>C
print >>C, 'bool grpc_is_static_metadata_string(grpc_slice slice) {'
print >>C, ' return slice.refcount != NULL && slice.refcount->vtable == &static_vtable;'
print >>C, '}'
print >>C
print >>C, 'const grpc_slice grpc_static_slice_table[GRPC_STATIC_MDSTR_COUNT] = {'
-str_ofs = 0
-revmap = {}
-zero_length_idx = None
-id2strofs = {}
-def slice_def(i):
- return '{.refcount = &g_refcnt, .data.refcounted = {.bytes = g_raw_bytes+%d, .length=%d}}' % (id2strofs[i], len(all_strs[i]))
for i, elem in enumerate(all_strs):
- id2strofs[i] = str_ofs
print >>C, slice_def(i) + ','
- revmap[str_ofs] = i
- if len(elem) == 0: zero_length_idx = i
- str_ofs += len(elem);
print >>C, '};'
print >>C
-print >>C, 'static const uint8_t g_revmap[] = {%s};' % ','.join('%d' % (revmap[i] if i in revmap else 255) for i in range(0, str_ofs))
-print >>C
print >>H, 'int grpc_static_metadata_index(grpc_slice slice);'
print >>C, 'int grpc_static_metadata_index(grpc_slice slice) {'
-print >>C, ' if (GRPC_SLICE_LENGTH(slice) == 0) return %d;' % zero_length_idx
-print >>C, ' if (slice.refcount != &g_refcnt) return -1;'
-print >>C, ' size_t ofs = (size_t)(slice.data.refcounted.bytes - g_raw_bytes);'
-print >>C, ' if (ofs > sizeof(g_revmap)) return -1;'
-print >>C, ' uint8_t id = g_revmap[ofs];'
-print >>C, ' return id == 255 ? -1 : (grpc_static_slice_table[id].data.refcounted.length == slice.data.refcounted.length? id : -1);'
+print >>C, ' static_slice_refcount *r = (static_slice_refcount *)slice.refcount;'
+print >>C, ' if (slice.data.refcounted.bytes == g_bytes + r->offset && slice.data.refcounted.length == r->length) return (int)(r - g_refcnts);'
+print >>C, ' return -1;'
print >>C, '}'
print >>C