diff --git a/src/rt/rust_shape.cpp b/src/rt/rust_shape.cpp index e52cd77cd40..6f1082d4aa8 100644 --- a/src/rt/rust_shape.cpp +++ b/src/rt/rust_shape.cpp @@ -223,7 +223,7 @@ size_of::compute_tag_size(tag_info &tinfo) { tinfo.tag_sa.set(1, 1); } else { // Add in space for the tag. - tinfo.tag_sa.add(sizeof(uint32_t), alignof()); + tinfo.tag_sa.add(sizeof(tag_variant_t), alignof()); } } @@ -357,12 +357,12 @@ public: void walk_fn() { return cmp_two_pointers(); } void walk_obj() { return cmp_two_pointers(); } - void walk_tag(tag_info &tinfo, const data_pair &tag_variants); + void walk_tag(tag_info &tinfo, const data_pair &tag_variants); void walk_struct(const uint8_t *end_sp); void walk_res(const rust_fn *dtor, uint16_t n_ty_params, const type_param *ty_params_sp, const uint8_t *end_sp, const data_pair &live); - void walk_variant(tag_info &tinfo, uint32_t variant_id, + void walk_variant(tag_info &tinfo, tag_variant_t variant_id, const std::pair variant_ptr_and_end); @@ -394,7 +394,7 @@ cmp::walk_vec(bool is_pod, const std::pair &data_range) { } void -cmp::walk_tag(tag_info &tinfo, const data_pair &tag_variants) { +cmp::walk_tag(tag_info &tinfo, const data_pair &tag_variants) { cmp_number(tag_variants); if (result != 0) return; @@ -417,7 +417,7 @@ cmp::walk_res(const rust_fn *dtor, uint16_t n_ty_params, } void -cmp::walk_variant(tag_info &tinfo, uint32_t variant_id, +cmp::walk_variant(tag_info &tinfo, tag_variant_t variant_id, const std::pair variant_ptr_and_end) { cmp sub(*this, variant_ptr_and_end.first, tinfo.params); @@ -489,7 +489,7 @@ log::walk_vec(bool is_pod, const std::pair &data) { } void -log::walk_variant(tag_info &tinfo, uint32_t variant_id, +log::walk_variant(tag_info &tinfo, tag_variant_t variant_id, const std::pair variant_ptr_and_end) { log sub(*this, variant_ptr_and_end.first, tinfo.params); diff --git a/src/rt/rust_shape.h b/src/rt/rust_shape.h index ea7040b1ef3..fffd19efbe8 100644 --- a/src/rt/rust_shape.h +++ b/src/rt/rust_shape.h @@ -25,6 +25,8 @@ namespace shape { +typedef unsigned long tag_variant_t; +typedef unsigned long tag_align_t; // Constants @@ -234,7 +236,7 @@ public: void walk_reset(); std::pair - get_variant_sp(tag_info &info, uint32_t variant_id); + get_variant_sp(tag_info &info, tag_variant_t variant_id); protected: inline uint8_t peek() { return *sp; } @@ -406,7 +408,7 @@ ctxt::get_size_align(const uint8_t *&addr) { // the tag variant with the given ID. template std::pair -ctxt::get_variant_sp(tag_info &tinfo, uint32_t variant_id) { +ctxt::get_variant_sp(tag_info &tinfo, tag_variant_t variant_id) { uint16_t variant_offset = get_u16(tinfo.info_ptr + variant_id * sizeof(uint16_t)); const uint8_t *variant_ptr = tables->tags + variant_offset; @@ -816,7 +818,7 @@ protected: void walk_uniq_contents(); void walk_fn_contents(ptr &dp); void walk_obj_contents(ptr &dp); - void walk_variant(tag_info &tinfo, uint32_t variant); + void walk_variant(tag_info &tinfo, tag_variant_t variant); static std::pair get_vec_data_range(ptr dp); static std::pair get_vec_data_range(ptr_pair &dp); @@ -901,7 +903,7 @@ data::walk_uniq_contents() { template void -data::walk_variant(tag_info &tinfo, uint32_t variant_id) { +data::walk_variant(tag_info &tinfo, tag_variant_t variant_id) { std::pair variant_ptr_and_end = this->get_variant_sp(tinfo, variant_id); static_cast(this)->walk_variant(tinfo, variant_id, @@ -932,13 +934,13 @@ data::walk_tag(tag_info &tinfo) { size_of::compute_tag_size(*this, tinfo); if (tinfo.variant_count > 1) - ALIGN_TO(alignof()); + ALIGN_TO(alignof()); U end_dp = dp + tinfo.tag_sa.size; - typename U::template data::t tag_variant; + typename U::template data::t tag_variant; if (tinfo.variant_count > 1) - tag_variant = bump_dp(dp); + tag_variant = bump_dp(dp); else tag_variant = 0; @@ -1047,7 +1049,7 @@ private: walk_vec(is_pod, get_vec_data_range(dp)); } - void walk_tag(tag_info &tinfo, uint32_t tag_variant) { + void walk_tag(tag_info &tinfo, tag_variant_t tag_variant) { out << prefix << "tag" << tag_variant; data::walk_variant(tinfo, tag_variant); } @@ -1096,7 +1098,7 @@ private: void walk_struct(const uint8_t *end_sp); void walk_vec(bool is_pod, const std::pair &data); - void walk_variant(tag_info &tinfo, uint32_t variant_id, + void walk_variant(tag_info &tinfo, tag_variant_t variant_id, const std::pair variant_ptr_and_end); void walk_string(const std::pair &data);