diff options
| author | Rob Arnold <robarnold@cs.cmu.edu> | 2011-07-05 22:55:41 -0700 |
|---|---|---|
| committer | Rob Arnold <robarnold@cs.cmu.edu> | 2011-07-06 20:41:24 -0700 |
| commit | f6117173c9f26efdcf50cb664d006ea2bdf0d0cb (patch) | |
| tree | 04f20cc1e1a057d520b9329e343ef6b63ddb52e9 /src/comp/back | |
| parent | 2e2e1f7cb36aeac0abb730a752fcd78cf91a380f (diff) | |
| download | rust-f6117173c9f26efdcf50cb664d006ea2bdf0d0cb.tar.gz rust-f6117173c9f26efdcf50cb664d006ea2bdf0d0cb.zip | |
Allocate rust_ivec buffers out of the kernel pool
The duplication of upcalls is due to the fact that the runtime is shared between stage0/rustc and stage1/rustc. Once snapshots are updated, they should be de-duplicated.
Diffstat (limited to 'src/comp/back')
| -rw-r--r-- | src/comp/back/upcall.rs | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/comp/back/upcall.rs b/src/comp/back/upcall.rs index 5fad90ce031..db750fe7a6d 100644 --- a/src/comp/back/upcall.rs +++ b/src/comp/back/upcall.rs @@ -47,6 +47,8 @@ type upcalls = ValueRef exit, ValueRef malloc, ValueRef free, + ValueRef shared_malloc, + ValueRef shared_free, ValueRef mark, ValueRef new_str, ValueRef dup_str, @@ -56,7 +58,9 @@ type upcalls = ValueRef new_task, ValueRef start_task, ValueRef ivec_resize, - ValueRef ivec_spill); + ValueRef ivec_spill, + ValueRef ivec_resize_shared, + ValueRef ivec_spill_shared); fn declare_upcalls(type_names tn, ModuleRef llmod) -> @upcalls { fn decl(type_names tn, ModuleRef llmod, str name, vec[TypeRef] tys, @@ -97,6 +101,9 @@ fn declare_upcalls(type_names tn, ModuleRef llmod) -> @upcalls { malloc=d("malloc", [T_size_t(), T_ptr(T_tydesc(tn))], T_ptr(T_i8())), free=dv("free", [T_ptr(T_i8()), T_int()]), + shared_malloc=d("shared_malloc", + [T_size_t(), T_ptr(T_tydesc(tn))], T_ptr(T_i8())), + shared_free=dv("shared_free", [T_ptr(T_i8())]), mark=d("mark", [T_ptr(T_i8())], T_int()), new_str=d("new_str", [T_ptr(T_i8()), T_size_t()], T_ptr(T_str())), @@ -119,7 +126,11 @@ fn declare_upcalls(type_names tn, ModuleRef llmod) -> @upcalls { ivec_resize=d("ivec_resize", [T_ptr(T_opaque_ivec()), T_int()], T_void()), ivec_spill=d("ivec_spill", [T_ptr(T_opaque_ivec()), T_int()], - T_void())); + T_void()), + ivec_resize_shared=d("ivec_resize_shared", + [T_ptr(T_opaque_ivec()), T_int()], T_void()), + ivec_spill_shared=d("ivec_spill_shared", + [T_ptr(T_opaque_ivec()), T_int()], T_void())); } // // Local Variables: |
