about summary refs log tree commit diff
path: root/src/rt/rust_box_annihilator.cpp
diff options
context:
space:
mode:
authorGraydon Hoare <graydon@mozilla.com>2012-05-03 12:56:55 -0700
committerGraydon Hoare <graydon@mozilla.com>2012-05-03 13:09:02 -0700
commit11a5d10bf2958c642ae6a7c4afff8e181aa2167d (patch)
tree94e14a4863f8ff951f82556485146960d5584b8a /src/rt/rust_box_annihilator.cpp
parente1fc7d5f0126e4c213cac589bf301814e0327b9e (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.cpp12
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: