about summary refs log tree commit diff
path: root/src/rustc
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2012-09-25 12:16:34 -0700
committerPatrick Walton <pcwalton@mimiga.net>2012-09-25 12:17:05 -0700
commitee7fa194faa0b8140a07a19afc44703916659950 (patch)
treedd46e01581a7dbfdc7e7e7c3e6ee6bd5fe8529a8 /src/rustc
parentf813f519a5cecfd988cf238277021662afaff34a (diff)
downloadrust-ee7fa194faa0b8140a07a19afc44703916659950.tar.gz
rust-ee7fa194faa0b8140a07a19afc44703916659950.zip
Revert "rustc: Stop using shape code for logging" due to ICEs
This reverts commit ac822a52be47579ffa59d5ca3e125680a79545d0.
Diffstat (limited to 'src/rustc')
-rw-r--r--src/rustc/middle/lang_items.rs7
-rw-r--r--src/rustc/middle/trans/base.rs6
-rw-r--r--src/rustc/middle/trans/callee.rs20
-rw-r--r--src/rustc/middle/trans/controlflow.rs6
4 files changed, 11 insertions, 28 deletions
diff --git a/src/rustc/middle/lang_items.rs b/src/rustc/middle/lang_items.rs
index ea22e3a7809..87201f5a4da 100644
--- a/src/rustc/middle/lang_items.rs
+++ b/src/rustc/middle/lang_items.rs
@@ -46,8 +46,7 @@ struct LanguageItems {
 
     mut str_eq_fn: Option<def_id>,
     mut uniq_str_eq_fn: Option<def_id>,
-    mut annihilate_fn: Option<def_id>,
-    mut log_type_fn: Option<def_id>
+    mut annihilate_fn: Option<def_id>
 }
 
 mod LanguageItems {
@@ -77,8 +76,7 @@ mod LanguageItems {
 
             str_eq_fn: None,
             uniq_str_eq_fn: None,
-            annihilate_fn: None,
-            log_type_fn: None
+            annihilate_fn: None
         }
     }
 }
@@ -113,7 +111,6 @@ fn LanguageItemCollector(crate: @crate, session: session,
     item_refs.insert(~"str_eq", &mut items.str_eq_fn);
     item_refs.insert(~"uniq_str_eq", &mut items.uniq_str_eq_fn);
     item_refs.insert(~"annihilate", &mut items.annihilate_fn);
-    item_refs.insert(~"log_type", &mut items.log_type_fn);
 
     LanguageItemCollector {
         crate: crate,
diff --git a/src/rustc/middle/trans/base.rs b/src/rustc/middle/trans/base.rs
index 65a788991bf..964b418b765 100644
--- a/src/rustc/middle/trans/base.rs
+++ b/src/rustc/middle/trans/base.rs
@@ -2005,6 +2005,12 @@ fn create_main_wrapper(ccx: @crate_ctxt, sp: span, main_llfn: ValueRef,
         }
         Call(bcx, main_llfn, args);
 
+        // Call the box annihilator.
+        // XXX: Crashes.
+        //let did = bcx.tcx().lang_items.annihilate_fn.get();
+        //let bcx = callee::trans_rtcall_or_lang_call(bcx, did, ~[],
+        //                                            expr::Ignore);
+
         build_return(bcx);
         finish_fn(fcx, lltop);
         return llfdecl;
diff --git a/src/rustc/middle/trans/callee.rs b/src/rustc/middle/trans/callee.rs
index 1903469ee22..308ff75c82e 100644
--- a/src/rustc/middle/trans/callee.rs
+++ b/src/rustc/middle/trans/callee.rs
@@ -290,26 +290,6 @@ fn trans_rtcall_or_lang_call(bcx: block, did: ast::def_id, args: ~[ValueRef],
         ArgVals(args), dest, DontAutorefArg);
 }
 
-fn trans_rtcall_or_lang_call_with_type_params(bcx: block,
-                                              did: ast::def_id,
-                                              args: ~[ValueRef],
-                                              type_params: ~[ty::t],
-                                              dest: expr::Dest) -> block {
-    let fty;
-    if did.crate == ast::local_crate {
-        fty = ty::node_id_to_type(bcx.tcx(), did.node);
-    } else {
-        fty = csearch::get_type(bcx.tcx(), did).ty;
-    }
-
-    let rty = ty::ty_fn_ret(fty);
-    return callee::trans_call_inner(
-        bcx, None, fty, rty,
-        |bcx| trans_fn_ref_with_vtables_to_callee(bcx, did, 0, type_params,
-                                                  None),
-        ArgVals(args), dest, DontAutorefArg);
-}
-
 fn body_contains_ret(body: ast::blk) -> bool {
     let cx = {mut found: false};
     visit::visit_block(body, cx, visit::mk_vt(@{
diff --git a/src/rustc/middle/trans/controlflow.rs b/src/rustc/middle/trans/controlflow.rs
index 5d8b0fbbbe1..9570f37df75 100644
--- a/src/rustc/middle/trans/controlflow.rs
+++ b/src/rustc/middle/trans/controlflow.rs
@@ -190,12 +190,12 @@ fn trans_log(log_ex: @ast::expr,
 
             // Translate the value to be logged
             let val_datum = unpack_datum!(bcx, expr::trans_to_datum(bcx, e));
+            let tydesc = get_tydesc_simple(ccx, val_datum.ty);
 
             // Call the polymorphic log function
             let val = val_datum.to_ref_llval(bcx);
-            let did = bcx.tcx().lang_items.log_type_fn.get();
-            let bcx = callee::trans_rtcall_or_lang_call_with_type_params(
-                bcx, did, ~[level, val], ~[val_datum.ty], expr::Ignore);
+            let val = PointerCast(bcx, val, T_ptr(T_i8()));
+            Call(bcx, ccx.upcalls.log_type, [tydesc, val, level]);
             bcx
         }
     }