Auto-generate files after cl/587586555
diff --git a/ruby/ext/google/protobuf_c/ruby-upb.c b/ruby/ext/google/protobuf_c/ruby-upb.c
index 872f80b..a55d72a 100644
--- a/ruby/ext/google/protobuf_c/ruby-upb.c
+++ b/ruby/ext/google/protobuf_c/ruby-upb.c
@@ -5849,6 +5849,102 @@
// Must be last.
+const upb_Message_Extension* _upb_Message_Getext(
+ const upb_Message* msg, const upb_MiniTableExtension* e) {
+ size_t n;
+ const upb_Message_Extension* ext = _upb_Message_Getexts(msg, &n);
+
+ // For now we use linear search exclusively to find extensions.
+ // If this becomes an issue due to messages with lots of extensions,
+ // we can introduce a table of some sort.
+ for (size_t i = 0; i < n; i++) {
+ if (ext[i].ext == e) {
+ return &ext[i];
+ }
+ }
+
+ return NULL;
+}
+
+const upb_Message_Extension* _upb_Message_Getexts(const upb_Message* msg,
+ size_t* count) {
+ const upb_Message_Internal* in = upb_Message_Getinternal(msg);
+ if (in->internal) {
+ *count = (in->internal->size - in->internal->ext_begin) /
+ sizeof(upb_Message_Extension);
+ return UPB_PTR_AT(in->internal, in->internal->ext_begin, void);
+ } else {
+ *count = 0;
+ return NULL;
+ }
+}
+
+upb_Message_Extension* _upb_Message_GetOrCreateExtension(
+ upb_Message* msg, const upb_MiniTableExtension* e, upb_Arena* arena) {
+ upb_Message_Extension* ext =
+ (upb_Message_Extension*)_upb_Message_Getext(msg, e);
+ if (ext) return ext;
+ if (!UPB_PRIVATE(_upb_Message_Realloc)(msg, sizeof(upb_Message_Extension), arena)) return NULL;
+ upb_Message_Internal* in = upb_Message_Getinternal(msg);
+ in->internal->ext_begin -= sizeof(upb_Message_Extension);
+ ext = UPB_PTR_AT(in->internal, in->internal->ext_begin, void);
+ memset(ext, 0, sizeof(upb_Message_Extension));
+ ext->ext = e;
+ return ext;
+}
+
+
+#include <math.h>
+#include <string.h>
+
+
+// Must be last.
+
+const float kUpb_FltInfinity = INFINITY;
+const double kUpb_Infinity = INFINITY;
+const double kUpb_NaN = NAN;
+
+static const size_t realloc_overhead = sizeof(upb_Message_InternalData);
+
+bool UPB_PRIVATE(_upb_Message_Realloc)(upb_Message* msg, size_t need,
+ upb_Arena* arena) {
+ upb_Message_Internal* in = upb_Message_Getinternal(msg);
+ if (!in->internal) {
+ // No internal data, allocate from scratch.
+ size_t size = UPB_MAX(128, upb_Log2CeilingSize(need + realloc_overhead));
+ upb_Message_InternalData* internal = upb_Arena_Malloc(arena, size);
+ if (!internal) return false;
+ internal->size = size;
+ internal->unknown_end = realloc_overhead;
+ internal->ext_begin = size;
+ in->internal = internal;
+ } else if (in->internal->ext_begin - in->internal->unknown_end < need) {
+ // Internal data is too small, reallocate.
+ size_t new_size = upb_Log2CeilingSize(in->internal->size + need);
+ size_t ext_bytes = in->internal->size - in->internal->ext_begin;
+ size_t new_ext_begin = new_size - ext_bytes;
+ upb_Message_InternalData* internal =
+ upb_Arena_Realloc(arena, in->internal, in->internal->size, new_size);
+ if (!internal) return false;
+ if (ext_bytes) {
+ // Need to move extension data to the end.
+ char* ptr = (char*)internal;
+ memmove(ptr + new_ext_begin, ptr + internal->ext_begin, ext_bytes);
+ }
+ internal->ext_begin = new_ext_begin;
+ internal->size = new_size;
+ in->internal = internal;
+ }
+ UPB_ASSERT(in->internal->ext_begin - in->internal->unknown_end >= need);
+ return true;
+}
+
+
+#include <string.h>
+
+
+// Must be last.
+
// Strings/bytes are special-cased in maps.
char _upb_Map_CTypeSizeTable[12] = {
[kUpb_CType_Bool] = 1,
@@ -6094,57 +6190,19 @@
}
-#include <math.h>
-
// Must be last.
-const float kUpb_FltInfinity = INFINITY;
-const double kUpb_Infinity = INFINITY;
-const double kUpb_NaN = NAN;
-
-static const size_t overhead = sizeof(upb_Message_InternalData);
+static const size_t message_overhead = sizeof(upb_Message_InternalData);
upb_Message* upb_Message_New(const upb_MiniTable* mini_table,
upb_Arena* arena) {
return _upb_Message_New(mini_table, arena);
}
-static bool realloc_internal(upb_Message* msg, size_t need, upb_Arena* arena) {
- upb_Message_Internal* in = upb_Message_Getinternal(msg);
- if (!in->internal) {
- /* No internal data, allocate from scratch. */
- size_t size = UPB_MAX(128, upb_Log2CeilingSize(need + overhead));
- upb_Message_InternalData* internal = upb_Arena_Malloc(arena, size);
- if (!internal) return false;
- internal->size = size;
- internal->unknown_end = overhead;
- internal->ext_begin = size;
- in->internal = internal;
- } else if (in->internal->ext_begin - in->internal->unknown_end < need) {
- /* Internal data is too small, reallocate. */
- size_t new_size = upb_Log2CeilingSize(in->internal->size + need);
- size_t ext_bytes = in->internal->size - in->internal->ext_begin;
- size_t new_ext_begin = new_size - ext_bytes;
- upb_Message_InternalData* internal =
- upb_Arena_Realloc(arena, in->internal, in->internal->size, new_size);
- if (!internal) return false;
- if (ext_bytes) {
- /* Need to move extension data to the end. */
- char* ptr = (char*)internal;
- memmove(ptr + new_ext_begin, ptr + internal->ext_begin, ext_bytes);
- }
- internal->ext_begin = new_ext_begin;
- internal->size = new_size;
- in->internal = internal;
- }
- UPB_ASSERT(in->internal->ext_begin - in->internal->unknown_end >= need);
- return true;
-}
-
bool _upb_Message_AddUnknown(upb_Message* msg, const char* data, size_t len,
upb_Arena* arena) {
- if (!realloc_internal(msg, len, arena)) return false;
+ if (!UPB_PRIVATE(_upb_Message_Realloc)(msg, len, arena)) return false;
upb_Message_Internal* in = upb_Message_Getinternal(msg);
memcpy(UPB_PTR_AT(in->internal, in->internal->unknown_end, char), data, len);
in->internal->unknown_end += len;
@@ -6154,14 +6212,14 @@
void _upb_Message_DiscardUnknown_shallow(upb_Message* msg) {
upb_Message_Internal* in = upb_Message_Getinternal(msg);
if (in->internal) {
- in->internal->unknown_end = overhead;
+ in->internal->unknown_end = message_overhead;
}
}
const char* upb_Message_GetUnknown(const upb_Message* msg, size_t* len) {
const upb_Message_Internal* in = upb_Message_Getinternal(msg);
if (in->internal) {
- *len = in->internal->unknown_end - overhead;
+ *len = in->internal->unknown_end - message_overhead;
return (char*)(in->internal + 1);
} else {
*len = 0;
@@ -6187,50 +6245,6 @@
in->internal->unknown_end -= len;
}
-const upb_Message_Extension* _upb_Message_Getexts(const upb_Message* msg,
- size_t* count) {
- const upb_Message_Internal* in = upb_Message_Getinternal(msg);
- if (in->internal) {
- *count = (in->internal->size - in->internal->ext_begin) /
- sizeof(upb_Message_Extension);
- return UPB_PTR_AT(in->internal, in->internal->ext_begin, void);
- } else {
- *count = 0;
- return NULL;
- }
-}
-
-const upb_Message_Extension* _upb_Message_Getext(
- const upb_Message* msg, const upb_MiniTableExtension* e) {
- size_t n;
- const upb_Message_Extension* ext = _upb_Message_Getexts(msg, &n);
-
- /* For now we use linear search exclusively to find extensions. If this
- * becomes an issue due to messages with lots of extensions, we can introduce
- * a table of some sort. */
- for (size_t i = 0; i < n; i++) {
- if (ext[i].ext == e) {
- return &ext[i];
- }
- }
-
- return NULL;
-}
-
-upb_Message_Extension* _upb_Message_GetOrCreateExtension(
- upb_Message* msg, const upb_MiniTableExtension* e, upb_Arena* arena) {
- upb_Message_Extension* ext =
- (upb_Message_Extension*)_upb_Message_Getext(msg, e);
- if (ext) return ext;
- if (!realloc_internal(msg, sizeof(upb_Message_Extension), arena)) return NULL;
- upb_Message_Internal* in = upb_Message_Getinternal(msg);
- in->internal->ext_begin -= sizeof(upb_Message_Extension);
- ext = UPB_PTR_AT(in->internal, in->internal->ext_begin, void);
- memset(ext, 0, sizeof(upb_Message_Extension));
- ext->ext = e;
- return ext;
-}
-
size_t upb_Message_ExtensionCount(const upb_Message* msg) {
size_t count;
_upb_Message_Getexts(msg, &count);
diff --git a/ruby/ext/google/protobuf_c/ruby-upb.h b/ruby/ext/google/protobuf_c/ruby-upb.h
index 27f49ec..aa9be86 100755
--- a/ruby/ext/google/protobuf_c/ruby-upb.h
+++ b/ruby/ext/google/protobuf_c/ruby-upb.h
@@ -1588,11 +1588,6 @@
UPB_API upb_Message* upb_Message_New(const upb_MiniTable* mini_table,
upb_Arena* arena);
-// Adds unknown data (serialized protobuf data) to the given message.
-// The data is copied into the message instance.
-void upb_Message_AddUnknown(upb_Message* msg, const char* data, size_t len,
- upb_Arena* arena);
-
// Returns a reference to the message's unknown data.
const char* upb_Message_GetUnknown(const upb_Message* msg, size_t* len);
@@ -2323,80 +2318,6 @@
#endif // UPB_MINI_TABLE_INTERNAL_TYPES_H_
-#ifndef UPB_MINI_TABLE_EXTENSION_REGISTRY_H_
-#define UPB_MINI_TABLE_EXTENSION_REGISTRY_H_
-
-
-// Must be last.
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Extension registry: a dynamic data structure that stores a map of:
- * (upb_MiniTable, number) -> extension info
- *
- * upb_decode() uses upb_ExtensionRegistry to look up extensions while parsing
- * binary format.
- *
- * upb_ExtensionRegistry is part of the mini-table (msglayout) family of
- * objects. Like all mini-table objects, it is suitable for reflection-less
- * builds that do not want to expose names into the binary.
- *
- * Unlike most mini-table types, upb_ExtensionRegistry requires dynamic memory
- * allocation and dynamic initialization:
- * * If reflection is being used, then upb_DefPool will construct an appropriate
- * upb_ExtensionRegistry automatically.
- * * For a mini-table only build, the user must manually construct the
- * upb_ExtensionRegistry and populate it with all of the extensions the user
- * cares about.
- * * A third alternative is to manually unpack relevant extensions after the
- * main parse is complete, similar to how Any works. This is perhaps the
- * nicest solution from the perspective of reducing dependencies, avoiding
- * dynamic memory allocation, and avoiding the need to parse uninteresting
- * extensions. The downsides are:
- * (1) parse errors are not caught during the main parse
- * (2) the CPU hit of parsing comes during access, which could cause an
- * undesirable stutter in application performance.
- *
- * Users cannot directly get or put into this map. Users can only add the
- * extensions from a generated module and pass the extension registry to the
- * binary decoder.
- *
- * A upb_DefPool provides a upb_ExtensionRegistry, so any users who use
- * reflection do not need to populate a upb_ExtensionRegistry directly.
- */
-
-typedef struct upb_ExtensionRegistry upb_ExtensionRegistry;
-
-// Creates a upb_ExtensionRegistry in the given arena.
-// The arena must outlive any use of the extreg.
-UPB_API upb_ExtensionRegistry* upb_ExtensionRegistry_New(upb_Arena* arena);
-
-UPB_API bool upb_ExtensionRegistry_Add(upb_ExtensionRegistry* r,
- const upb_MiniTableExtension* e);
-
-// Adds the given extension info for the array |e| of size |count| into the
-// registry. If there are any errors, the entire array is backed out.
-// The extensions must outlive the registry.
-// Possible errors include OOM or an extension number that already exists.
-// TODO: There is currently no way to know the exact reason for failure.
-bool upb_ExtensionRegistry_AddArray(upb_ExtensionRegistry* r,
- const upb_MiniTableExtension** e,
- size_t count);
-
-// Looks up the extension (if any) defined for message type |t| and field
-// number |num|. Returns the extension if found, otherwise NULL.
-UPB_API const upb_MiniTableExtension* upb_ExtensionRegistry_Lookup(
- const upb_ExtensionRegistry* r, const upb_MiniTable* t, uint32_t num);
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-
-#endif /* UPB_MINI_TABLE_EXTENSION_REGISTRY_H_ */
-
// Must be last.
#ifdef __cplusplus
@@ -2436,9 +2357,6 @@
* char data[size - sizeof(upb_Message_InternalData)]; */
};
-/* Maps upb_CType -> memory size. */
-extern char _upb_CTypeo_size[12];
-
UPB_INLINE size_t upb_msg_sizeof(const upb_MiniTable* m) {
return m->size + sizeof(upb_Message_Internal);
}
@@ -2468,6 +2386,9 @@
bool _upb_Message_AddUnknown(upb_Message* msg, const char* data, size_t len,
upb_Arena* arena);
+bool UPB_PRIVATE(_upb_Message_Realloc)(upb_Message* msg, size_t need,
+ upb_Arena* arena);
+
#ifdef __cplusplus
} /* extern "C" */
#endif
@@ -3668,6 +3589,80 @@
#endif /* UPB_MINI_TABLE_DECODE_H_ */
+#ifndef UPB_MINI_TABLE_EXTENSION_REGISTRY_H_
+#define UPB_MINI_TABLE_EXTENSION_REGISTRY_H_
+
+
+// Must be last.
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Extension registry: a dynamic data structure that stores a map of:
+ * (upb_MiniTable, number) -> extension info
+ *
+ * upb_decode() uses upb_ExtensionRegistry to look up extensions while parsing
+ * binary format.
+ *
+ * upb_ExtensionRegistry is part of the mini-table (msglayout) family of
+ * objects. Like all mini-table objects, it is suitable for reflection-less
+ * builds that do not want to expose names into the binary.
+ *
+ * Unlike most mini-table types, upb_ExtensionRegistry requires dynamic memory
+ * allocation and dynamic initialization:
+ * * If reflection is being used, then upb_DefPool will construct an appropriate
+ * upb_ExtensionRegistry automatically.
+ * * For a mini-table only build, the user must manually construct the
+ * upb_ExtensionRegistry and populate it with all of the extensions the user
+ * cares about.
+ * * A third alternative is to manually unpack relevant extensions after the
+ * main parse is complete, similar to how Any works. This is perhaps the
+ * nicest solution from the perspective of reducing dependencies, avoiding
+ * dynamic memory allocation, and avoiding the need to parse uninteresting
+ * extensions. The downsides are:
+ * (1) parse errors are not caught during the main parse
+ * (2) the CPU hit of parsing comes during access, which could cause an
+ * undesirable stutter in application performance.
+ *
+ * Users cannot directly get or put into this map. Users can only add the
+ * extensions from a generated module and pass the extension registry to the
+ * binary decoder.
+ *
+ * A upb_DefPool provides a upb_ExtensionRegistry, so any users who use
+ * reflection do not need to populate a upb_ExtensionRegistry directly.
+ */
+
+typedef struct upb_ExtensionRegistry upb_ExtensionRegistry;
+
+// Creates a upb_ExtensionRegistry in the given arena.
+// The arena must outlive any use of the extreg.
+UPB_API upb_ExtensionRegistry* upb_ExtensionRegistry_New(upb_Arena* arena);
+
+UPB_API bool upb_ExtensionRegistry_Add(upb_ExtensionRegistry* r,
+ const upb_MiniTableExtension* e);
+
+// Adds the given extension info for the array |e| of size |count| into the
+// registry. If there are any errors, the entire array is backed out.
+// The extensions must outlive the registry.
+// Possible errors include OOM or an extension number that already exists.
+// TODO: There is currently no way to know the exact reason for failure.
+bool upb_ExtensionRegistry_AddArray(upb_ExtensionRegistry* r,
+ const upb_MiniTableExtension** e,
+ size_t count);
+
+// Looks up the extension (if any) defined for message type |t| and field
+// number |num|. Returns the extension if found, otherwise NULL.
+UPB_API const upb_MiniTableExtension* upb_ExtensionRegistry_Lookup(
+ const upb_ExtensionRegistry* r, const upb_MiniTable* t, uint32_t num);
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+
+#endif /* UPB_MINI_TABLE_EXTENSION_REGISTRY_H_ */
+
#ifndef UPB_MINI_TABLE_FILE_H_
#define UPB_MINI_TABLE_FILE_H_