Skip to content

Commit 7109d4b

Browse files
committed
---
yaml --- r: 4491 b: refs/heads/master c: b83167c h: refs/heads/master i: 4489: 37cb1ae 4487: 7788ec2 v: v3
1 parent ba9c965 commit 7109d4b

File tree

2 files changed

+15
-22
lines changed

2 files changed

+15
-22
lines changed

[refs]

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
refs/heads/master: f9363f01a1c2f00c6ef1cd9cd1882279419434a7
2+
refs/heads/master: b83167cf91bf9996e2cd2ad23e13181cee6618d3

trunk/src/rt/rust_shape.cpp

+14-21
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,6 @@ class arena {
314314
inline T *alloc(size_t count = 1) {
315315
// FIXME: align
316316
size_t sz = count * sizeof(T);
317-
//DPRINT("size is %lu\n", sz);
318317
T *rv = (T *)ptr;
319318
ptr += sz;
320319
if (ptr > &data[ARENA_SIZE]) {
@@ -366,8 +365,6 @@ struct type_param {
366365
template<typename T>
367366
void
368367
ctxt<T>::walk(bool align) {
369-
fprintf(stderr, "walking %d\n", *sp);
370-
371368
switch (*sp++) {
372369
case SHAPE_U8: WALK_NUMBER(uint8_t); break;
373370
case SHAPE_U16: WALK_NUMBER(uint16_t); break;
@@ -778,7 +775,7 @@ size_of::compute_tag_size(tag_info &tinfo) {
778775
const uint8_t *variant_ptr = variant_ptr_and_end.first;
779776
const uint8_t *variant_end = variant_ptr_and_end.second;
780777

781-
size_of sub(*this, variant_ptr, params, NULL);
778+
size_of sub(*this, variant_ptr, tinfo.params, NULL);
782779

783780
// Compute the size of this variant.
784781
size_align variant_sa;
@@ -903,7 +900,11 @@ class data : public ctxt< data<T,U> > {
903900
}
904901

905902
void walk_var(bool align, uint8_t param_index) {
906-
static_cast<T *>(this)->walk_var(align, param_index);
903+
const type_param *param = &this->params[param_index];
904+
T sub(*static_cast<T *>(this), param->shape, param->params,
905+
param->tables);
906+
sub.walk(align);
907+
static_cast<T *>(this)->walk_subcontext(align, sub);
907908
}
908909

909910
template<typename W>
@@ -947,7 +948,6 @@ data<T,U>::get_ivec_data_range(uint8_t *dp) {
947948
template<typename T,typename U>
948949
std::pair<ptr_pair,ptr_pair>
949950
data<T,U>::get_ivec_data_range(ptr_pair &dp) {
950-
fprintf(stderr, "get_ivec_data_range %p/%p\n", dp.fst, dp.snd);
951951
std::pair<uint8_t *,uint8_t *> fst = get_ivec_data_range(dp.fst);
952952
std::pair<uint8_t *,uint8_t *> snd = get_ivec_data_range(dp.snd);
953953
ptr_pair start(fst.first, snd.first);
@@ -1007,12 +1007,19 @@ class copy : public data<copy,uint8_t *> {
10071007
// Structural comparison glue.
10081008

10091009
class cmp : public data<cmp,ptr_pair> {
1010+
friend class data<cmp,ptr_pair>;
1011+
10101012
private:
10111013
template<typename T>
10121014
void cmp_number(const data_pair<T> &nums) {
10131015
result = (nums.fst < nums.snd) ? -1 : (nums.fst == nums.snd) ? 0 : 1;
10141016
}
10151017

1018+
void walk_subcontext(bool align, cmp &sub) {
1019+
sub.walk(align);
1020+
result = sub.result;
1021+
}
1022+
10161023
public:
10171024
int result;
10181025

@@ -1058,31 +1065,19 @@ class cmp : public data<cmp,ptr_pair> {
10581065

10591066
template<>
10601067
void cmp::cmp_number<int32_t>(const data_pair<int32_t> &nums) {
1061-
fprintf(stderr, "cmp %d/%d\n", nums.fst, nums.snd);
10621068
result = (nums.fst < nums.snd) ? -1 : (nums.fst == nums.snd) ? 0 : 1;
10631069
}
10641070

10651071
void
10661072
cmp::walk_ivec(bool align, bool is_pod, size_align &elem_sa) {
10671073
std::pair<ptr_pair,ptr_pair> data_range = get_ivec_data_range(dp);
10681074

1069-
DPRINT("walk_ivec %p/%p\n", data_range.first.fst, data_range.first.snd);
1070-
10711075
cmp sub(*this, data_range.first);
10721076
ptr_pair data_end = data_range.second;
10731077
while (!result && sub.dp < data_end) {
1074-
DPRINT("walk_ivec elem %p/%p %p/%p\n", sub.dp.fst, sub.dp.snd,
1075-
data_end.fst, data_end.snd);
1076-
DPRINTCX(&sub);
1077-
DPRINT("\nend\n");
1078-
10791078
sub.walk_reset(align);
1080-
DPRINT("result = %d\n", sub.result);
10811079
result = sub.result;
10821080
align = true;
1083-
1084-
DPRINT("walk_ivec after elem %p/%p %p/%p\n", sub.dp.fst, sub.dp.snd,
1085-
data_end.fst, data_end.snd);
10861081
}
10871082

10881083
if (!result) {
@@ -1130,7 +1125,7 @@ void
11301125
cmp::walk_variant(bool align, tag_info &tinfo, uint32_t variant_id,
11311126
const std::pair<const uint8_t *,const uint8_t *>
11321127
variant_ptr_and_end) {
1133-
cmp sub(*this, variant_ptr_and_end.first);
1128+
cmp sub(*this, variant_ptr_and_end.first, tinfo.params);
11341129

11351130
const uint8_t *variant_end = variant_ptr_and_end.second;
11361131
while (!result && sub.sp < variant_end) {
@@ -1146,8 +1141,6 @@ extern "C" void
11461141
upcall_cmp_type(int8_t *result, rust_task *task, type_desc *tydesc,
11471142
const type_desc **subtydescs, uint8_t *data_0,
11481143
uint8_t *data_1, uint8_t cmp_type) {
1149-
fprintf(stderr, "cmp_type\n");
1150-
11511144
shape::arena arena;
11521145
shape::type_param *params = shape::type_param::make(tydesc, arena);
11531146
shape::cmp cmp(task, tydesc->shape, params, tydesc->shape_tables, data_0,

0 commit comments

Comments
 (0)