aboutsummaryrefslogtreecommitdiff
path: root/src/rt
diff options
context:
space:
mode:
Diffstat (limited to 'src/rt')
-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 f9cc400d..6c498b32 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;
}