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-26 15:06:26 -0700
committerPatrick Walton <pcwalton@mimiga.net>2011-09-26 16:59:15 -0700
commitad19ab4c6fdf3ea74ac0ff3688d040a852f30760 (patch)
treea4f501f24bc3867388b3d6aac3af5120d39c0205 /src/rt/rust_cc.cpp
parent47e5ab093a89fbe240e67be6a59c901f32d5ce4f (diff)
downloadrust-ad19ab4c6fdf3ea74ac0ff3688d040a852f30760.tar.gz
rust-ad19ab4c6fdf3ea74ac0ff3688d040a852f30760.zip
rt: Make the logic that moves environments between tasks update the GC alloc chain correctly
Diffstat (limited to 'src/rt/rust_cc.cpp')
-rw-r--r--src/rt/rust_cc.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/rt/rust_cc.cpp b/src/rt/rust_cc.cpp
index 9d6c4992b17..c53ec1aa51c 100644
--- a/src/rt/rust_cc.cpp
+++ b/src/rt/rust_cc.cpp
@@ -178,16 +178,22 @@ irc::compute_ircs(rust_task *task, irc_map &ircs) {
         shape::arena arena;
         shape::type_param *params =
             shape::type_param::from_tydesc_and_data(tydesc, p, arena);
-        irc irc(task, true, tydesc->shape, params, tydesc->shape_tables,
-                p + sizeof(uintptr_t), ircs);
-        irc.walk();
 
 #if 0
+        shape::print print(task, true, tydesc->shape, params,
+                           tydesc->shape_tables);
+        print.walk();
+
         shape::log log(task, true, tydesc->shape, params,
-                       tydesc->shape_tables, p, std::cerr);
+                       tydesc->shape_tables, p + sizeof(uintptr_t),
+                       std::cerr);
         log.walk();
 #endif
 
+        irc irc(task, true, tydesc->shape, params, tydesc->shape_tables,
+                p + sizeof(uintptr_t), ircs);
+        irc.walk();
+
         ++begin;
     }
 }