about summary refs log tree commit diff
path: root/src/rt/rust_cc.cpp
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2011-09-21 19:07:41 -0700
committerPatrick Walton <pcwalton@mimiga.net>2011-09-21 19:08:26 -0700
commit8c02adc630b9786dbc0ccd0f680d37c840bc49b9 (patch)
treee998c8cb68380ee8320adaa824eb83e770a39d9f /src/rt/rust_cc.cpp
parentad3b9c41b47090b94237fd7d4429d1431ecb8181 (diff)
downloadrust-8c02adc630b9786dbc0ccd0f680d37c840bc49b9.tar.gz
rust-8c02adc630b9786dbc0ccd0f680d37c840bc49b9.zip
rustc: Port the fn and obj traversal logic over from the GC branch. Doesn't actually do anything yet due to lack of support in trans.
Diffstat (limited to 'src/rt/rust_cc.cpp')
-rw-r--r--src/rt/rust_cc.cpp20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/rt/rust_cc.cpp b/src/rt/rust_cc.cpp
index 11f8332bcd7..84fb6e8456f 100644
--- a/src/rt/rust_cc.cpp
+++ b/src/rt/rust_cc.cpp
@@ -164,20 +164,20 @@ irc::walk_variant(shape::tag_info &tinfo, uint32_t variant_id,
 
 void
 irc::compute_ircs(rust_task *task, irc_map &ircs) {
-    std::map<void *,type_desc *>::iterator begin(task->local_allocs.begin()),
-                                           end(task->local_allocs.end());
+    std::map<void *,const type_desc *>::iterator
+        begin(task->local_allocs.begin()), end(task->local_allocs.end());
     while (begin != end) {
         uint8_t *p = reinterpret_cast<uint8_t *>(begin->first);
         p += sizeof(uintptr_t); // Skip over the reference count.
 
-        type_desc *tydesc = begin->second;
+        const type_desc *tydesc = begin->second;
 
         //DPRINT("determining internal ref counts: %p, tydesc=%p\n", p,
         //tydesc);
 
         shape::arena arena;
         shape::type_param *params =
-            shape::type_param::from_tydesc(tydesc, arena);
+            shape::type_param::from_tydesc(&tydesc, arena);
         irc irc(task, true, tydesc->shape, params, tydesc->shape_tables, p,
                 ircs);
         irc.walk();
@@ -197,8 +197,8 @@ irc::compute_ircs(rust_task *task, irc_map &ircs) {
 
 void
 find_roots(rust_task *task, irc_map &ircs, std::vector<void *> &roots) {
-    std::map<void *,type_desc *>::iterator begin(task->local_allocs.begin()),
-                                           end(task->local_allocs.end());
+    std::map<void *,const type_desc *>::iterator
+        begin(task->local_allocs.begin()), end(task->local_allocs.end());
     while (begin != end) {
         void *alloc = begin->first;
         uintptr_t *ref_count_ptr = reinterpret_cast<uintptr_t *>(alloc);
@@ -376,13 +376,13 @@ mark::do_mark(rust_task *task, const std::vector<void *> &roots,
             uint8_t *p = reinterpret_cast<uint8_t *>(alloc);
             p += sizeof(uintptr_t); // Skip over the reference count.
 
-            type_desc *tydesc = task->local_allocs[*begin];
+            const type_desc *tydesc = task->local_allocs[*begin];
 
             //DPRINT("marking: %p, tydesc=%p\n", p, tydesc);
 
             shape::arena arena;
             shape::type_param *params =
-                shape::type_param::from_tydesc(tydesc, arena);
+                shape::type_param::from_tydesc(&tydesc, arena);
 
 #if 0
             shape::log log(task, true, tydesc->shape, params,
@@ -403,8 +403,8 @@ mark::do_mark(rust_task *task, const std::vector<void *> &roots,
 
 void
 sweep(rust_task *task, const std::set<void *> &marked) {
-    std::map<void *,type_desc *>::iterator begin(task->local_allocs.begin()),
-                                           end(task->local_allocs.end());
+    std::map<void *,const type_desc *>::iterator
+        begin(task->local_allocs.begin()), end(task->local_allocs.end());
     while (begin != end) {
         void *alloc = begin->first;
         if (marked.find(alloc) == marked.end()) {