You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2015/08/17 00:16:40 UTC
svn commit: r1696171 - in /subversion/trunk/subversion: libsvn_fs_fs/id.c
libsvn_fs_fs/temp_serializer.c libsvn_fs_x/temp_serializer.c
Author: stefan2
Date: Sun Aug 16 22:16:39 2015
New Revision: 1696171
URL: http://svn.apache.org/r1696171
Log:
In FSFS and FSX temp serialization code, avoid taking the size of types
when we have access to the actual objects. This reduces redundancy.
* subversion/libsvn_fs_fs/id.c
(svn_fs_fs__id_serialize): Take the item size from the variable rather
than the key.
* subversion/libsvn_fs_fs/temp_serializer.c
(serialize_svn_string,
serialize_representation,
serialize_dir_entry,
serialize_dir,
serialize_txdelta_ops,
serialize_txdeltawindow,
svn_fs_fs__serialize_rep_header): Same.
* subversion/libsvn_fs_x/temp_serializer.c
(serialize_dir_entry,
svn_fs_x__serialize_changes): Same.
Modified:
subversion/trunk/subversion/libsvn_fs_fs/id.c
subversion/trunk/subversion/libsvn_fs_fs/temp_serializer.c
subversion/trunk/subversion/libsvn_fs_x/temp_serializer.c
Modified: subversion/trunk/subversion/libsvn_fs_fs/id.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/id.c?rev=1696171&r1=1696170&r2=1696171&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_fs/id.c (original)
+++ subversion/trunk/subversion/libsvn_fs_fs/id.c Sun Aug 16 22:16:39 2015
@@ -613,7 +613,7 @@ svn_fs_fs__id_serialize(svn_temp_seriali
/* serialize the id data struct itself */
svn_temp_serializer__add_leaf(context,
(const void * const *)in,
- sizeof(fs_fs__id_t));
+ sizeof(**in));
}
/* Deserialize an ID inside the BUFFER.
Modified: subversion/trunk/subversion/libsvn_fs_fs/temp_serializer.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/temp_serializer.c?rev=1696171&r1=1696170&r2=1696171&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_fs/temp_serializer.c (original)
+++ subversion/trunk/subversion/libsvn_fs_fs/temp_serializer.c Sun Aug 16 22:16:39 2015
@@ -103,9 +103,7 @@ serialize_svn_string(svn_temp_serializer
if (string == NULL)
return;
- svn_temp_serializer__push(context,
- (const void * const *)s,
- sizeof(*string));
+ svn_temp_serializer__push(context, (const void * const *)s, sizeof(**s));
/* the "string" content may actually be arbitrary binary data.
* Thus, we cannot use svn_temp_serializer__add_string. */
@@ -143,7 +141,7 @@ serialize_representation(svn_temp_serial
/* serialize the representation struct itself */
svn_temp_serializer__add_leaf(context,
(const void * const *)representation,
- sizeof(*rep));
+ sizeof(**representation));
}
/* auxiliary structure representing the content of a directory array */
@@ -191,7 +189,7 @@ serialize_dir_entry(svn_temp_serializer_
svn_temp_serializer__push(context,
(const void * const *)entry_p,
- sizeof(svn_fs_dirent_t));
+ sizeof(**entry_p));
svn_fs_fs__id_serialize(context, &entry->id);
svn_temp_serializer__add_string(context, &entry->name);
@@ -216,8 +214,9 @@ serialize_dir(svn_fs_fs__dir_data_t *dir
/* calculate sizes */
int count = entries->nelts;
apr_size_t over_provision = 2 + count / 4;
- apr_size_t entries_len = (count + over_provision) * sizeof(svn_fs_dirent_t*);
- apr_size_t lengths_len = (count + over_provision) * sizeof(apr_uint32_t);
+ apr_size_t total_count = count + over_provision;
+ apr_size_t entries_len = total_count * sizeof(*dir_data.entries);
+ apr_size_t lengths_len = total_count * sizeof(*dir_data.lengths);
/* copy the hash entries to an auxiliary struct of known layout */
dir_data.count = count;
@@ -416,7 +415,7 @@ serialize_txdelta_ops(svn_temp_serialize
/* the ops form a contiguous chunk of memory with no further references */
svn_temp_serializer__add_leaf(context,
(const void * const *)ops,
- count * sizeof(svn_txdelta_op_t));
+ count * sizeof(**ops));
}
/* Utility function to serialize W in the given serialization CONTEXT.
@@ -428,9 +427,7 @@ serialize_txdeltawindow(svn_temp_seriali
svn_txdelta_window_t *window = *w;
/* serialize the window struct itself */
- svn_temp_serializer__push(context,
- (const void * const *)w,
- sizeof(svn_txdelta_window_t));
+ svn_temp_serializer__push(context, (const void * const *)w, sizeof(**w));
/* serialize its sub-structures */
serialize_txdelta_ops(context, &window->ops, window->num_ops);
@@ -1088,7 +1085,7 @@ svn_fs_fs__serialize_rep_header(void **d
svn_fs_fs__rep_header_t *copy = apr_palloc(pool, sizeof(*copy));
*copy = *(svn_fs_fs__rep_header_t *)in;
- *data_len = sizeof(svn_fs_fs__rep_header_t);
+ *data_len = sizeof(*copy);
*data = copy;
return SVN_NO_ERROR;
Modified: subversion/trunk/subversion/libsvn_fs_x/temp_serializer.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_x/temp_serializer.c?rev=1696171&r1=1696170&r2=1696171&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_x/temp_serializer.c (original)
+++ subversion/trunk/subversion/libsvn_fs_x/temp_serializer.c Sun Aug 16 22:16:39 2015
@@ -224,7 +224,7 @@ serialize_dir_entry(svn_temp_serializer_
svn_temp_serializer__push(context,
(const void * const *)entry_p,
- sizeof(svn_fs_x__dirent_t));
+ sizeof(**entry_p));
svn_temp_serializer__add_string(context, &entry->name);
@@ -1108,7 +1108,7 @@ svn_fs_x__serialize_changes(void **data,
svn_temp_serializer__push(context,
(const void * const *)&changes.changes,
- changes.count * sizeof(svn_fs_x__change_t*));
+ changes.count * sizeof(**changes.changes));
for (i = 0; i < changes.count; ++i)
serialize_change(context, &changes.changes[i]);