diff options
Diffstat (limited to 'src/rt/rust_crate_cache.cpp')
| -rw-r--r-- | src/rt/rust_crate_cache.cpp | 14 |
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; } |
