diff options
| author | Graydon Hoare <graydon@mozilla.com> | 2012-05-03 12:56:55 -0700 |
|---|---|---|
| committer | Graydon Hoare <graydon@mozilla.com> | 2012-05-03 13:09:02 -0700 |
| commit | 11a5d10bf2958c642ae6a7c4afff8e181aa2167d (patch) | |
| tree | 94e14a4863f8ff951f82556485146960d5584b8a /src/rt/rust_box_annihilator.cpp | |
| parent | e1fc7d5f0126e4c213cac589bf301814e0327b9e (diff) | |
Implement better shape code for evec, estr.
Diffstat (limited to 'src/rt/rust_box_annihilator.cpp')
| -rw-r--r-- | src/rt/rust_box_annihilator.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/rt/rust_box_annihilator.cpp b/src/rt/rust_box_annihilator.cpp index 6322c528791..bc5e0dfdda5 100644 --- a/src/rt/rust_box_annihilator.cpp +++ b/src/rt/rust_box_annihilator.cpp @@ -49,8 +49,16 @@ class annihilator : public shape::data<annihilator,shape::ptr> { task->kernel->free(vec); } + void walk_fixedvec2(uint16_t sz, bool is_pod) { + walk_vec2(is_pod, get_fixedvec_data_range(sz, dp)); + } + void walk_vec2(bool is_pod, const std::pair<shape::ptr,shape::ptr> &data_range) { + + if (is_pod) + return; + annihilator sub(*this, data_range.first); shape::ptr data_end = sub.end_dp = data_range.second; while (sub.dp < data_end) { @@ -64,6 +72,10 @@ class annihilator : public shape::data<annihilator,shape::ptr> { ::walk_variant1(tinfo, tag_variant); } + void walk_rptr2() { } + + void walk_slice2(bool, bool) { } + void walk_uniq2() { void *x = *((void **)dp); // free contents first: |
