about summary refs log tree commit diff
path: root/src/comp/back
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2011-12-11 20:42:37 -0800
committerNiko Matsakis <niko@alum.mit.edu>2011-12-14 14:32:20 -0800
commit6a8cb704d9c2543cb30df2e26b992c17e3bc488d (patch)
tree6ba04893e5cf0f91ecf9c19dc15b783184dc0093 /src/comp/back
parent36177dd3e986199f4f6cb669423ca9cf78ff8d74 (diff)
get basic code generation working, clone type descs for lambda[send]
Diffstat (limited to 'src/comp/back')
-rw-r--r--src/comp/back/upcall.rs40
1 files changed, 26 insertions, 14 deletions
diff --git a/src/comp/back/upcall.rs b/src/comp/back/upcall.rs
index 71f33ccb372..1530e5c1453 100644
--- a/src/comp/back/upcall.rs
+++ b/src/comp/back/upcall.rs
@@ -17,6 +17,7 @@ type upcalls =
      shared_malloc: ValueRef,
      shared_free: ValueRef,
      mark: ValueRef,
+     clone_type_desc: ValueRef,
      get_type_desc: ValueRef,
      vec_grow: ValueRef,
      vec_push: ValueRef,
@@ -54,12 +55,18 @@ fn declare_upcalls(targ_cfg: @session::config,
           malloc:
               d("malloc", [size_t, T_ptr(tydesc_type)],
                 T_ptr(T_i8())),
-          free: dv("free", [T_ptr(T_i8()), int_t]),
+          free:
+              dv("free", [T_ptr(T_i8()), int_t]),
           shared_malloc:
               d("shared_malloc", [size_t, T_ptr(tydesc_type)],
                 T_ptr(T_i8())),
-          shared_free: dv("shared_free", [T_ptr(T_i8())]),
-          mark: d("mark", [T_ptr(T_i8())], int_t),
+          shared_free:
+              dv("shared_free", [T_ptr(T_i8())]),
+          mark:
+              d("mark", [T_ptr(T_i8())], int_t),
+          clone_type_desc:
+              d("clone_type_desc", [T_ptr(tydesc_type)],
+                T_ptr(tydesc_type)),
           get_type_desc:
               d("get_type_desc",
                 [T_ptr(T_nil()), size_t,
@@ -67,8 +74,7 @@ fn declare_upcalls(targ_cfg: @session::config,
                  T_ptr(T_ptr(tydesc_type)), int_t],
                 T_ptr(tydesc_type)),
           vec_grow:
-              dv("vec_grow", [T_ptr(T_ptr(opaque_vec_t)),
-                              int_t]),
+              dv("vec_grow", [T_ptr(T_ptr(opaque_vec_t)), int_t]),
           vec_push:
               dv("vec_push",
                 [T_ptr(T_ptr(opaque_vec_t)), T_ptr(tydesc_type),
@@ -80,18 +86,24 @@ fn declare_upcalls(targ_cfg: @session::config,
                   T_i8()]),
           log_type:
               dv("log_type", [T_ptr(tydesc_type), T_ptr(T_i8()), T_i32()]),
-          dynastack_mark: d("dynastack_mark", [], T_ptr(T_i8())),
+          dynastack_mark:
+              d("dynastack_mark", [], T_ptr(T_i8())),
           dynastack_alloc:
               d("dynastack_alloc_2", [size_t, T_ptr(tydesc_type)],
                 T_ptr(T_i8())),
-          dynastack_free: dv("dynastack_free", [T_ptr(T_i8())]),
-          alloc_c_stack: d("alloc_c_stack", [size_t], T_ptr(T_i8())),
-          call_shim_on_c_stack: d("call_shim_on_c_stack",
-                                  // arguments: void *args, void *fn_ptr
-                                  [T_ptr(T_i8()), T_ptr(T_i8())],
-                                  int_t),
-          rust_personality: d("rust_personality", [], T_i32()),
-          reset_stack_limit: dv("reset_stack_limit", [])
+          dynastack_free:
+              dv("dynastack_free", [T_ptr(T_i8())]),
+          alloc_c_stack:
+              d("alloc_c_stack", [size_t], T_ptr(T_i8())),
+          call_shim_on_c_stack:
+              d("call_shim_on_c_stack",
+                // arguments: void *args, void *fn_ptr
+                [T_ptr(T_i8()), T_ptr(T_i8())],
+                int_t),
+          rust_personality:
+              d("rust_personality", [], T_i32()),
+          reset_stack_limit:
+              dv("reset_stack_limit", [])
          };
 }
 //