about summary refs log tree commit diff
path: root/src/rt/rust_crate_cache.cpp
diff options
context:
space:
mode:
authorGraydon Hoare <graydon@mozilla.com>2011-04-09 00:54:46 +0000
committerGraydon Hoare <graydon@mozilla.com>2011-04-09 00:54:46 +0000
commit35573144c59c747d572dee31975d61faf7b1eaef (patch)
tree439200e09161aae14e1aaea3e1eb50d91a1c5038 /src/rt/rust_crate_cache.cpp
parent19ebc0f376eb4c1128ba8e43be42ab2c41292eae (diff)
downloadrust-35573144c59c747d572dee31975d61faf7b1eaef.tar.gz
rust-35573144c59c747d572dee31975d61faf7b1eaef.zip
Remove silly legacy glue-offset encoding, predicate runtime adjustments by ABI. LLVM should inline most glue now.
Diffstat (limited to 'src/rt/rust_crate_cache.cpp')
-rw-r--r--src/rt/rust_crate_cache.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/rt/rust_crate_cache.cpp b/src/rt/rust_crate_cache.cpp
index f9cc400d76b..6c498b320f1 100644
--- a/src/rt/rust_crate_cache.cpp
+++ b/src/rt/rust_crate_cache.cpp
@@ -221,12 +221,14 @@ rust_crate_cache::get_type_desc(size_t size,
         // FIXME (issue #136):  Below is a miscalculation.
         td->is_stateful |= descs[i]->is_stateful;
     }
-    adjust_disp(td->copy_glue_off, descs[0], td);
-    adjust_disp(td->drop_glue_off, descs[0], td);
-    adjust_disp(td->free_glue_off, descs[0], td);
-    adjust_disp(td->mark_glue_off, descs[0], td);
-    adjust_disp(td->sever_glue_off, descs[0], td);
-    adjust_disp(td->obj_drop_glue_off, descs[0], td);
+    if (crate->abi_tag == ABI_X86_RUSTBOOT_CDECL) {
+        adjust_disp(td->copy_glue_off, descs[0], td);
+        adjust_disp(td->drop_glue_off, descs[0], td);
+        adjust_disp(td->free_glue_off, descs[0], td);
+        adjust_disp(td->mark_glue_off, descs[0], td);
+        adjust_disp(td->sever_glue_off, descs[0], td);
+        adjust_disp(td->obj_drop_glue_off, descs[0], td);
+    }
     HASH_ADD(hh, this->type_descs, descs, keysz, td);
     return td;
 }