Skip to content

Commit 79c9e13

Browse files
committed
More delicious dead code removal from runtime, upcalls.
1 parent 4f792f2 commit 79c9e13

18 files changed

+50
-602
lines changed

mk/rt.mk

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,7 @@ RUNTIME_CS := rt/sync/timer.cpp \
88
rt/rust.cpp \
99
rt/rust_builtin.cpp \
1010
rt/rust_run_program.cpp \
11-
rt/rust_crate.cpp \
1211
rt/rust_crate_cache.cpp \
13-
rt/rust_crate_reader.cpp \
1412
rt/rust_comm.cpp \
1513
rt/rust_dom.cpp \
1614
rt/rust_task.cpp \
@@ -37,7 +35,6 @@ RUNTIME_S := rt/activate_glue.s rt/yield_glue.s
3735

3836
RUNTIME_HDR := rt/globals.h \
3937
rt/rust.h \
40-
rt/rust_dwarf.h \
4138
rt/rust_internal.h \
4239
rt/rust_util.h \
4340
rt/rust_chan.h \

src/comp/back/upcall.rs

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ import trans::ModuleRef;
66
import trans::TypeRef;
77
import trans::ValueRef;
88

9-
import trans::T_crate;
109
import trans::T_f32;
1110
import trans::T_f64;
1211
import trans::T_fn;
1312
import trans::T_i8;
1413
import trans::T_i32;
1514
import trans::T_int;
15+
import trans::T_nil;
1616
import trans::T_opaque_chan_ptr;
1717
import trans::T_opaque_port_ptr;
1818
import trans::T_opaque_vec_ptr;
@@ -51,8 +51,6 @@ type upcalls = rec(
5151
ValueRef new_str,
5252
ValueRef new_vec,
5353
ValueRef vec_grow,
54-
ValueRef require_rust_sym,
55-
ValueRef require_c_sym,
5654
ValueRef get_type_desc,
5755
ValueRef new_task,
5856
ValueRef start_task,
@@ -109,18 +107,9 @@ fn declare_upcalls(type_names tn, ModuleRef llmod) -> @upcalls {
109107
vec_grow=d("vec_grow", [T_opaque_vec_ptr(), T_size_t(),
110108
T_ptr(T_int()), T_ptr(T_tydesc(tn))],
111109
T_opaque_vec_ptr()),
112-
require_rust_sym=d("require_rust_sym",
113-
[T_ptr(T_crate(tn)), T_size_t(), T_size_t(),
114-
T_size_t(), T_ptr(T_i8()),
115-
T_ptr(T_ptr(T_i8()))],
116-
T_int()),
117-
require_c_sym=d("require_c_sym",
118-
[T_ptr(T_crate(tn)), T_size_t(), T_size_t(),
119-
T_ptr(T_i8()), T_ptr(T_i8())],
120-
T_int()),
121110
get_type_desc=d("get_type_desc",
122-
[T_ptr(T_crate(tn)), T_size_t(), T_size_t(),
123-
T_size_t(), T_ptr(T_ptr(T_tydesc(tn)))],
111+
[T_ptr(T_nil()), T_size_t(), T_size_t(),
112+
T_size_t(), T_ptr(T_ptr(T_tydesc(tn)))],
124113
T_ptr(T_tydesc(tn))),
125114
new_task=d("new_task", [T_ptr(T_str())], T_taskptr(tn)),
126115
start_task=d("start_task", [T_taskptr(tn),

src/comp/middle/trans.rs

Lines changed: 8 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,6 @@ state type crate_ctxt = rec(session::session sess,
9595
ModuleRef llmod,
9696
target_data td,
9797
type_names tn,
98-
ValueRef crate_ptr,
9998
hashmap[str, ValueRef] externs,
10099
hashmap[str, ValueRef] intrinsics,
101100
hashmap[ast::def_id, ValueRef] item_ids,
@@ -482,31 +481,6 @@ fn T_chan(TypeRef t) -> TypeRef {
482481
ret T_struct([T_int()]); // Refcount
483482
}
484483

485-
fn T_crate(&type_names tn) -> TypeRef {
486-
auto s = "crate";
487-
if (tn.name_has_type(s)) {
488-
ret tn.get_type(s);
489-
}
490-
491-
auto t = T_struct([T_int(), // ptrdiff_t image_base_off
492-
T_int(), // uintptr_t self_addr
493-
T_int(), // ptrdiff_t debug_abbrev_off
494-
T_int(), // size_t debug_abbrev_sz
495-
T_int(), // ptrdiff_t debug_info_off
496-
T_int(), // size_t debug_info_sz
497-
T_int(), // size_t activate_glue
498-
T_int(), // size_t yield_glue
499-
T_int(), // size_t unwind_glue
500-
T_int(), // size_t pad
501-
T_int(), // size_t pad
502-
T_int(), // int n_rust_syms
503-
T_int(), // int n_c_syms
504-
T_int() // int n_libs
505-
]);
506-
tn.associate(s, t);
507-
ret t;
508-
}
509-
510484
fn T_taskptr(&type_names tn) -> TypeRef {
511485
ret T_ptr(T_task(tn));
512486
}
@@ -1670,11 +1644,11 @@ fn get_derived_tydesc(&@block_ctxt cx, &ty::t t, bool escapes,
16701644
T_ptr(T_ptr(T_tydesc(bcx.fcx.lcx.ccx.tn))));
16711645
auto td_val = bcx.build.Call(bcx.fcx.lcx.ccx.upcalls.get_type_desc,
16721646
[bcx.fcx.lltaskptr,
1673-
bcx.fcx.lcx.ccx.crate_ptr,
1674-
sz.val,
1675-
align.val,
1676-
C_int((1u + n_params) as int),
1677-
lltydescsptr]);
1647+
C_null(T_ptr(T_nil())),
1648+
sz.val,
1649+
align.val,
1650+
C_int((1u + n_params) as int),
1651+
lltydescsptr]);
16781652
v = td_val;
16791653
} else {
16801654
auto llparamtydescs = alloca(bcx,
@@ -7615,35 +7589,10 @@ fn i2p(ValueRef v, TypeRef t) -> ValueRef {
76157589
}
76167590

76177591
fn create_typedefs(&@crate_ctxt cx) {
7618-
llvm::LLVMAddTypeName(cx.llmod, str::buf("crate"), T_crate(cx.tn));
76197592
llvm::LLVMAddTypeName(cx.llmod, str::buf("task"), T_task(cx.tn));
76207593
llvm::LLVMAddTypeName(cx.llmod, str::buf("tydesc"), T_tydesc(cx.tn));
76217594
}
76227595

7623-
fn create_crate_constant(ValueRef crate_ptr, @glue_fns glues) {
7624-
7625-
let ValueRef crate_addr = p2i(crate_ptr);
7626-
7627-
let ValueRef crate_val =
7628-
C_struct([C_null(T_int()), // ptrdiff_t image_base_off
7629-
p2i(crate_ptr), // uintptr_t self_addr
7630-
C_null(T_int()), // ptrdiff_t debug_abbrev_off
7631-
C_null(T_int()), // size_t debug_abbrev_sz
7632-
C_null(T_int()), // ptrdiff_t debug_info_off
7633-
C_null(T_int()), // size_t debug_info_sz
7634-
C_null(T_int()), // size_t pad
7635-
C_null(T_int()), // size_t pad2
7636-
C_null(T_int()), // size_t pad3
7637-
C_null(T_int()), // size_t pad4
7638-
C_null(T_int()), // size_t pad5
7639-
C_null(T_int()), // int n_rust_syms
7640-
C_null(T_int()), // int n_c_syms
7641-
C_null(T_int()) // int n_libs
7642-
]);
7643-
7644-
llvm::LLVMSetInitializer(crate_ptr, crate_val);
7645-
}
7646-
76477596
fn find_main_fn(&@crate_ctxt cx) -> ValueRef {
76487597
auto e = sep() + "main";
76497598
let ValueRef v = C_nil();
@@ -7668,7 +7617,7 @@ fn find_main_fn(&@crate_ctxt cx) -> ValueRef {
76687617
fail;
76697618
}
76707619

7671-
fn trans_main_fn(@local_ctxt cx, ValueRef llcrate, ValueRef crate_map) {
7620+
fn trans_main_fn(@local_ctxt cx, ValueRef crate_map) {
76727621
auto T_main_args = [T_int(), T_int()];
76737622
auto T_rust_start_args = [T_int(), T_int(), T_int(), T_int()];
76747623

@@ -7693,7 +7642,7 @@ fn trans_main_fn(@local_ctxt cx, ValueRef llcrate, ValueRef crate_map) {
76937642
// Emit the moral equivalent of:
76947643
//
76957644
// main(int argc, char **argv) {
7696-
// rust_start(&_rust.main, &crate, argc, argv);
7645+
// rust_start(&_rust.main, argc, argv);
76977646
// }
76987647
//
76997648

@@ -8002,15 +7951,12 @@ fn make_common_glue(&session::session sess, &str output) {
80027951
llvm::LLVMSetTarget(llmod, str::buf(x86::get_target_triple()));
80037952
auto td = mk_target_data(x86::get_data_layout());
80047953
auto tn = mk_type_names();
8005-
let ValueRef crate_ptr =
8006-
llvm::LLVMAddGlobal(llmod, T_crate(tn), str::buf("rust_crate"));
80077954

80087955
auto intrinsics = declare_intrinsics(llmod);
80097956

80107957
llvm::LLVMSetModuleInlineAsm(llmod, str::buf(x86::get_module_asm()));
80117958

80127959
auto glues = make_glues(llmod, tn);
8013-
create_crate_constant(crate_ptr, glues);
80147960

80157961
link::write::run_passes(sess, llmod, output);
80167962
}
@@ -8076,8 +8022,6 @@ fn trans_crate(&session::session sess, &@ast::crate crate,
80768022
llvm::LLVMSetTarget(llmod, str::buf(x86::get_target_triple()));
80778023
auto td = mk_target_data(x86::get_data_layout());
80788024
auto tn = mk_type_names();
8079-
let ValueRef crate_ptr =
8080-
llvm::LLVMAddGlobal(llmod, T_crate(tn), str::buf("rust_crate"));
80818025

80828026
auto intrinsics = declare_intrinsics(llmod);
80838027

@@ -8095,7 +8039,6 @@ fn trans_crate(&session::session sess, &@ast::crate crate,
80958039
llmod = llmod,
80968040
td = td,
80978041
tn = tn,
8098-
crate_ptr = crate_ptr,
80998042
externs = new_str_hash[ValueRef](),
81008043
intrinsics = intrinsics,
81018044
item_ids = new_def_hash[ValueRef](),
@@ -8135,7 +8078,7 @@ fn trans_crate(&session::session sess, &@ast::crate crate,
81358078
trans_vec_append_glue(cx, crate.span);
81368079
auto crate_map = create_crate_map(ccx);
81378080
if (!sess.get_opts().shared) {
8138-
trans_main_fn(cx, crate_ptr, crate_map);
8081+
trans_main_fn(cx, crate_map);
81398082
}
81408083

81418084
emit_tydescs(ccx);

src/rt/rust.cpp

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,6 @@ new_rust_start(uintptr_t main_fn, int argc, char **argv, void* crate_map) {
9393
DLOG(dom, dom, "startup: arg[%d] = '%s'", i, args->argv[i]);
9494
}
9595

96-
if (log_rt_dwarf) {
97-
rust_crate_reader create_reader(dom);
98-
}
99-
10096
uintptr_t main_args[4] = {0, 0, 0, (uintptr_t)args->args};
10197
dom->root_task->start(main_fn,
10298
(uintptr_t)&main_args, sizeof(main_args));
@@ -118,8 +114,7 @@ new_rust_start(uintptr_t main_fn, int argc, char **argv, void* crate_map) {
118114
}
119115

120116
extern "C" CDECL int
121-
rust_start(uintptr_t main_fn, rust_crate const *crate, int argc,
122-
char **argv, void* crate_map) {
117+
rust_start(uintptr_t main_fn, int argc, char **argv, void* crate_map) {
123118
return new_rust_start(main_fn, argc, argv, crate_map);
124119
}
125120

src/rt/rust_crate.cpp

Lines changed: 0 additions & 51 deletions
This file was deleted.

src/rt/rust_crate_cache.cpp

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,6 @@
11

22
#include "rust_internal.h"
33

4-
static inline void
5-
adjust_disp(uintptr_t &disp, const void *oldp, const void *newp)
6-
{
7-
if (disp) {
8-
disp += (uintptr_t)oldp;
9-
disp -= (uintptr_t)newp;
10-
}
11-
}
12-
134
type_desc *
145
rust_crate_cache::get_type_desc(size_t size,
156
size_t align,
@@ -47,10 +38,8 @@ rust_crate_cache::get_type_desc(size_t size,
4738
return td;
4839
}
4940

50-
rust_crate_cache::rust_crate_cache(rust_dom *dom,
51-
rust_crate const *crate)
41+
rust_crate_cache::rust_crate_cache(rust_dom *dom)
5242
: type_descs(NULL),
53-
crate(crate),
5443
dom(dom),
5544
idx(0)
5645
{

src/rt/rust_crate_reader.cpp

Lines changed: 0 additions & 79 deletions
This file was deleted.

0 commit comments

Comments
 (0)