Sync from Google-internal development.

pull/13171/head
Josh Haberman 10 years ago
parent 838009ba2b
commit 6f30032183
  1. 2
      tests/test_table.cc
  2. 12
      upb/bindings/lua/upb.c
  3. 2
      upb/table.c

@ -275,7 +275,7 @@ void test_inttable(int32_t *keys, uint16_t num_entries, const char *desc) {
if (x == INT_MAX) abort();
printf("%ld/s (%0.1f%% of upb)\n\n", (long)(i/total), i / upb_rand_i);
upb_inttable_uninit(&table);
delete rand_order;
delete[] rand_order;
}
int32_t *get_contiguous_keys(int32_t num) {

@ -1358,6 +1358,18 @@ static size_t align_up(size_t val, size_t align) {
// If we always read/write as a consistent type to each value, this shouldn't
// violate aliasing.
//
// Note that the slightly prettier option of:
//
// *(type*)(&msg->data[ofs])
//
// ...is potentially more questionable wrt the C standard and aliasing.
// Does the expression &msg->data[ofs] "access the stored value"? If so,
// this would violate aliasing. So instead we use the expression:
//
// (char*)msg + sizeof(lupb_msg) + ofs
//
// ...which unambigiously is doing nothing but calculating a pointer address.
#define DEREF(msg, ofs, type) *(type*)((char*)msg + sizeof(lupb_msg) + ofs)
lupb_msg *lupb_msg_check(lua_State *L, int narg) {

@ -542,7 +542,7 @@ void upb_inttable_compact(upb_inttable *t) {
counts[log2ceil(key)]++;
}
size_t arr_size = 1;
size_t arr_size;
int arr_count = upb_inttable_count(t);
if (upb_inttable_count(t) >= max_key * MIN_DENSITY) {

Loading…
Cancel
Save