Skip to content

Commit 16a5b31

Browse files
committed
auto merge of #13670 : eddyb/rust/more-de-at, r=pcwalton
2 parents 6c82eb5 + 70f3409 commit 16a5b31

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

76 files changed

+2622
-3085
lines changed

src/librustc/driver/driver.rs

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,7 @@ pub fn phase_3_run_analysis_passes(sess: Session,
299299
last_private_map: last_private_map
300300
} =
301301
time(time_passes, "resolution", (), |_|
302-
middle::resolve::resolve_crate(&sess, lang_items, krate));
302+
middle::resolve::resolve_crate(&sess, &lang_items, krate));
303303

304304
// Discard MTWT tables that aren't required past resolution.
305305
syntax::ext::mtwt::clear_tables();
@@ -316,7 +316,7 @@ pub fn phase_3_run_analysis_passes(sess: Session,
316316
sess.diagnostic(), krate)));
317317

318318
let freevars = time(time_passes, "freevar finding", (), |_|
319-
freevars::annotate_freevars(def_map, krate));
319+
freevars::annotate_freevars(&def_map, krate));
320320

321321
let region_map = time(time_passes, "region resolution", (), |_|
322322
middle::region::resolve_crate(&sess, krate));
@@ -328,7 +328,7 @@ pub fn phase_3_run_analysis_passes(sess: Session,
328328
freevars, region_map, lang_items);
329329

330330
// passes are timed inside typeck
331-
let (method_map, vtable_map) = typeck::check_crate(&ty_cx, trait_map, krate);
331+
typeck::check_crate(&ty_cx, trait_map, krate);
332332

333333
time(time_passes, "check static items", (), |_|
334334
middle::check_static::check_crate(&ty_cx, krate));
@@ -338,56 +338,52 @@ pub fn phase_3_run_analysis_passes(sess: Session,
338338
middle::const_eval::process_crate(krate, &ty_cx));
339339

340340
time(time_passes, "const checking", (), |_|
341-
middle::check_const::check_crate(krate, def_map, method_map, &ty_cx));
341+
middle::check_const::check_crate(krate, &ty_cx));
342342

343343
let maps = (external_exports, last_private_map);
344344
let (exported_items, public_items) =
345345
time(time_passes, "privacy checking", maps, |(a, b)|
346-
middle::privacy::check_crate(&ty_cx, &method_map, &exp_map2,
347-
a, b, krate));
346+
middle::privacy::check_crate(&ty_cx, &exp_map2, a, b, krate));
348347

349348
time(time_passes, "effect checking", (), |_|
350-
middle::effect::check_crate(&ty_cx, method_map, krate));
349+
middle::effect::check_crate(&ty_cx, krate));
351350

352351
let middle::moves::MoveMaps {moves_map, moved_variables_set,
353352
capture_map} =
354353
time(time_passes, "compute moves", (), |_|
355-
middle::moves::compute_moves(&ty_cx, method_map, krate));
354+
middle::moves::compute_moves(&ty_cx, krate));
356355

357356
time(time_passes, "match checking", (), |_|
358-
middle::check_match::check_crate(&ty_cx, method_map,
359-
&moves_map, krate));
357+
middle::check_match::check_crate(&ty_cx, &moves_map, krate));
360358

361359
time(time_passes, "liveness checking", (), |_|
362-
middle::liveness::check_crate(&ty_cx, method_map,
363-
&capture_map, krate));
360+
middle::liveness::check_crate(&ty_cx, &capture_map, krate));
364361

365362
let root_map =
366363
time(time_passes, "borrow checking", (), |_|
367-
middle::borrowck::check_crate(&ty_cx, method_map,
368-
&moves_map, &moved_variables_set,
364+
middle::borrowck::check_crate(&ty_cx, &moves_map,
365+
&moved_variables_set,
369366
&capture_map, krate));
370367

371368
drop(moves_map);
372369
drop(moved_variables_set);
373370

374371
time(time_passes, "kind checking", (), |_|
375-
kind::check_crate(&ty_cx, method_map, krate));
372+
kind::check_crate(&ty_cx, krate));
376373

377374
let reachable_map =
378375
time(time_passes, "reachability checking", (), |_|
379-
reachable::find_reachable(&ty_cx, method_map, &exported_items));
376+
reachable::find_reachable(&ty_cx, &exported_items));
380377

381378
time(time_passes, "death checking", (), |_| {
382379
middle::dead::check_crate(&ty_cx,
383-
method_map,
384380
&exported_items,
385381
&reachable_map,
386382
krate)
387383
});
388384

389385
time(time_passes, "lint checking", (), |_|
390-
lint::check_crate(&ty_cx, method_map, &exported_items, krate));
386+
lint::check_crate(&ty_cx, &exported_items, krate));
391387

392388
CrateAnalysis {
393389
exp_map2: exp_map2,
@@ -396,8 +392,6 @@ pub fn phase_3_run_analysis_passes(sess: Session,
396392
public_items: public_items,
397393
maps: astencode::Maps {
398394
root_map: root_map,
399-
method_map: method_map,
400-
vtable_map: vtable_map,
401395
capture_map: RefCell::new(capture_map)
402396
},
403397
reachable: reachable_map

src/librustc/lib/llvm.rs

Lines changed: 12 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1882,37 +1882,23 @@ impl TypeNames {
18821882

18831883
/* Memory-managed interface to target data. */
18841884

1885-
pub struct target_data_res {
1886-
pub td: TargetDataRef,
1885+
pub struct TargetData {
1886+
pub lltd: TargetDataRef
18871887
}
18881888

1889-
impl Drop for target_data_res {
1889+
impl Drop for TargetData {
18901890
fn drop(&mut self) {
18911891
unsafe {
1892-
llvm::LLVMDisposeTargetData(self.td);
1892+
llvm::LLVMDisposeTargetData(self.lltd);
18931893
}
18941894
}
18951895
}
18961896

1897-
pub fn target_data_res(td: TargetDataRef) -> target_data_res {
1898-
target_data_res {
1899-
td: td
1900-
}
1901-
}
1902-
1903-
pub struct TargetData {
1904-
pub lltd: TargetDataRef,
1905-
dtor: @target_data_res
1906-
}
1907-
19081897
pub fn mk_target_data(string_rep: &str) -> TargetData {
1909-
let lltd = string_rep.with_c_str(|buf| {
1910-
unsafe { llvm::LLVMCreateTargetData(buf) }
1911-
});
1912-
19131898
TargetData {
1914-
lltd: lltd,
1915-
dtor: @target_data_res(lltd)
1899+
lltd: string_rep.with_c_str(|buf| {
1900+
unsafe { llvm::LLVMCreateTargetData(buf) }
1901+
})
19161902
}
19171903
}
19181904

@@ -1949,35 +1935,22 @@ impl Drop for ObjectFile {
19491935

19501936
/* Memory-managed interface to section iterators. */
19511937

1952-
pub struct section_iter_res {
1953-
pub si: SectionIteratorRef,
1938+
pub struct SectionIter {
1939+
pub llsi: SectionIteratorRef
19541940
}
19551941

1956-
impl Drop for section_iter_res {
1942+
impl Drop for SectionIter {
19571943
fn drop(&mut self) {
19581944
unsafe {
1959-
llvm::LLVMDisposeSectionIterator(self.si);
1945+
llvm::LLVMDisposeSectionIterator(self.llsi);
19601946
}
19611947
}
19621948
}
19631949

1964-
pub fn section_iter_res(si: SectionIteratorRef) -> section_iter_res {
1965-
section_iter_res {
1966-
si: si
1967-
}
1968-
}
1969-
1970-
pub struct SectionIter {
1971-
pub llsi: SectionIteratorRef,
1972-
dtor: @section_iter_res
1973-
}
1974-
19751950
pub fn mk_section_iter(llof: ObjectFileRef) -> SectionIter {
19761951
unsafe {
1977-
let llsi = llvm::LLVMGetSections(llof);
19781952
SectionIter {
1979-
llsi: llsi,
1980-
dtor: @section_iter_res(llsi)
1953+
llsi: llvm::LLVMGetSections(llof)
19811954
}
19821955
}
19831956
}

src/librustc/metadata/creader.rs

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ use metadata::loader;
2323
use metadata::loader::Os;
2424
use metadata::loader::CratePaths;
2525

26-
use std::cell::RefCell;
2726
use std::rc::Rc;
2827
use collections::HashMap;
2928
use syntax::ast;
@@ -280,7 +279,7 @@ fn resolve_crate<'a>(e: &mut Env,
280279
hash: Option<&Svh>,
281280
should_link: bool,
282281
span: Span)
283-
-> (ast::CrateNum, @cstore::crate_metadata,
282+
-> (ast::CrateNum, Rc<cstore::crate_metadata>,
284283
cstore::CrateSource) {
285284
match existing_match(e, crate_id, hash) {
286285
None => {
@@ -317,7 +316,7 @@ fn resolve_crate<'a>(e: &mut Env,
317316
let cnum_map = if should_link {
318317
resolve_crate_deps(e, root, metadata.as_slice(), span)
319318
} else {
320-
@RefCell::new(HashMap::new())
319+
HashMap::new()
321320
};
322321

323322
// Claim this crate number and cache it if we're linking to the
@@ -331,13 +330,13 @@ fn resolve_crate<'a>(e: &mut Env,
331330
-1
332331
};
333332

334-
let cmeta = @cstore::crate_metadata {
333+
let cmeta = Rc::new(cstore::crate_metadata {
335334
name: load_ctxt.crate_id.name.to_owned(),
336335
data: metadata,
337336
cnum_map: cnum_map,
338337
cnum: cnum,
339338
span: span,
340-
};
339+
});
341340

342341
let source = cstore::CrateSource {
343342
dylib: dylib,
@@ -346,7 +345,7 @@ fn resolve_crate<'a>(e: &mut Env,
346345
};
347346

348347
if should_link {
349-
e.sess.cstore.set_crate_data(cnum, cmeta);
348+
e.sess.cstore.set_crate_data(cnum, cmeta.clone());
350349
e.sess.cstore.add_used_crate_source(source.clone());
351350
}
352351
(cnum, cmeta, source)
@@ -365,20 +364,16 @@ fn resolve_crate_deps(e: &mut Env,
365364
debug!("resolving deps of external crate");
366365
// The map from crate numbers in the crate we're resolving to local crate
367366
// numbers
368-
let mut cnum_map = HashMap::new();
369-
let r = decoder::get_crate_deps(cdata);
370-
for dep in r.iter() {
371-
let extrn_cnum = dep.cnum;
367+
decoder::get_crate_deps(cdata).iter().map(|dep| {
372368
debug!("resolving dep crate {} hash: `{}`", dep.crate_id, dep.hash);
373369
let (local_cnum, _, _) = resolve_crate(e, root,
374370
dep.crate_id.name.as_slice(),
375371
&dep.crate_id,
376372
Some(&dep.hash),
377373
true,
378374
span);
379-
cnum_map.insert(extrn_cnum, local_cnum);
380-
}
381-
return @RefCell::new(cnum_map);
375+
(dep.cnum, local_cnum)
376+
}).collect()
382377
}
383378

384379
pub struct Loader<'a> {
@@ -407,8 +402,8 @@ impl<'a> CrateLoader for Loader<'a> {
407402
info.ident, &info.crate_id,
408403
None, info.should_link,
409404
krate.span);
410-
let macros = decoder::get_exported_macros(data);
411-
let registrar = decoder::get_macro_registrar_fn(data).map(|id| {
405+
let macros = decoder::get_exported_macros(&*data);
406+
let registrar = decoder::get_macro_registrar_fn(&*data).map(|id| {
412407
decoder::get_symbol(data.data.as_slice(), id)
413408
});
414409
MacroCrate {

0 commit comments

Comments
 (0)