diff options
| author | Graydon Hoare <[email protected]> | 2010-11-05 18:27:57 -0700 |
|---|---|---|
| committer | Graydon Hoare <[email protected]> | 2010-11-05 18:31:20 -0700 |
| commit | 2122e363df7521db72b4ead62f07ffa3bdf176fa (patch) | |
| tree | a3685ba8900b1a6062456dfa122cbd30c2cfe7c2 /src | |
| parent | Switch rustc to llvm 2.8 rather than 2.8svn on windows. (diff) | |
| download | rust-2122e363df7521db72b4ead62f07ffa3bdf176fa.tar.xz rust-2122e363df7521db72b4ead62f07ffa3bdf176fa.zip | |
Teach rustc to generate type descriptors.
Diffstat (limited to 'src')
| -rw-r--r-- | src/comp/middle/trans.rs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs index ba4f5cdf..528734c4 100644 --- a/src/comp/middle/trans.rs +++ b/src/comp/middle/trans.rs @@ -322,6 +322,19 @@ fn C_struct(vec[ValueRef] elts) -> ValueRef { False); } +fn C_tydesc(TypeRef t) -> ValueRef { + ret C_struct(vec(C_null(T_opaque()), // first_param + llvm.LLVMSizeOf(t), // size + llvm.LLVMAlignOf(t), // align + C_null(T_opaque()), // copy_glue_off + C_null(T_opaque()), // drop_glue_off + C_null(T_opaque()), // free_glue_off + C_null(T_opaque()), // sever_glue_off + C_null(T_opaque()), // mark_glue_off + C_null(T_opaque()), // obj_drop_glue_off + C_null(T_opaque()))); // is_stateful +} + fn decl_cdecl_fn(ModuleRef llmod, str name, vec[TypeRef] inputs, TypeRef output) -> ValueRef { let TypeRef llty = T_fn(inputs, output); |