about summary refs log tree commit diff
path: root/src/comp
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2011-08-26 18:25:46 -0700
committerBrian Anderson <banderson@mozilla.com>2011-08-27 15:54:45 -0700
commitf603e912ee55c92a40a4b4ea22f20c545b72804f (patch)
treed4edd97c190f7ce86749d161755052482b85d364 /src/comp
parentafe27d461cd78372f5c40f64de6a32a2011d0d9c (diff)
downloadrust-f603e912ee55c92a40a4b4ea22f20c545b72804f.tar.gz
rust-f603e912ee55c92a40a4b4ea22f20c545b72804f.zip
Convert local_ctxt to istrs. Issue #855
Diffstat (limited to 'src/comp')
-rw-r--r--src/comp/middle/trans.rs35
-rw-r--r--src/comp/middle/trans_common.rs6
-rw-r--r--src/comp/middle/trans_objects.rs14
3 files changed, 28 insertions, 27 deletions
diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs
index 8ae36ce6868..3b4764b7aa7 100644
--- a/src/comp/middle/trans.rs
+++ b/src/comp/middle/trans.rs
@@ -3169,7 +3169,7 @@ fn trans_for_each(cx: &@block_ctxt, local: &@ast::local, seq: &@ast::expr,
     // Step 2: Declare foreach body function.
     let s: istr =
         mangle_internal_name_by_path_and_seq(lcx.ccx,
-                                             istr::from_estrs(lcx.path),
+                                             lcx.path,
                                              ~"foreach");
 
     // The 'env' arg entering the body function is a fake env member (as in
@@ -3718,7 +3718,7 @@ fn trans_bind_thunk(cx: &@local_ctxt, sp: &span, incoming_fty: ty::t,
     // Give the thunk a name, type, and value.
     let s: istr =
         mangle_internal_name_by_path_and_seq(cx.ccx,
-                                             istr::from_estrs(cx.path),
+                                             cx.path,
                                              ~"thunk");
     let llthunk_ty: TypeRef =
         get_pair_fn_ty(type_of(cx.ccx, sp, incoming_fty));
@@ -4318,9 +4318,9 @@ fn trans_expr_out(cx: &@block_ctxt, e: &@ast::expr, output: out_method) ->
         let llfnty: TypeRef =
             type_of_fn_from_ty(ccx, e.span, node_id_type(ccx, e.id), 0u);
         let sub_cx = extend_path(cx.fcx.lcx,
-                                 istr::to_estr(ccx.names.next(~"anon")));
+                                 ccx.names.next(~"anon"));
         let s = mangle_internal_name_by_path(ccx,
-                                             istr::from_estrs(sub_cx.path));
+                                             sub_cx.path);
         let llfn = decl_internal_fastcall_fn(ccx.llmod,
                                              istr::to_estr(s), llfnty);
 
@@ -4550,15 +4550,15 @@ fn load_if_immediate(cx: &@block_ctxt, v: ValueRef, t: ty::t) -> ValueRef {
 
 fn trans_log(lvl: int, cx: &@block_ctxt, e: &@ast::expr) -> result {
     let lcx = cx.fcx.lcx;
-    let modname = str::connect(lcx.module_path, "::");
+    let modname = istr::connect(lcx.module_path, ~"::");
     let global;
-    if lcx.ccx.module_data.contains_key(istr::from_estr(modname)) {
-        global = lcx.ccx.module_data.get(istr::from_estr(modname));
+    if lcx.ccx.module_data.contains_key(modname) {
+        global = lcx.ccx.module_data.get(modname);
     } else {
         let s =
             link::mangle_internal_name_by_path_and_seq(
                 lcx.ccx,
-                istr::from_estrs(lcx.module_path),
+                lcx.module_path,
                 ~"loglevel");
         global = istr::as_buf(s, { |buf|
             llvm::LLVMAddGlobal(lcx.ccx.llmod, T_int(), buf)
@@ -4567,7 +4567,7 @@ fn trans_log(lvl: int, cx: &@block_ctxt, e: &@ast::expr) -> result {
         llvm::LLVMSetInitializer(global, C_null(T_int()));
         llvm::LLVMSetLinkage(global,
                              lib::llvm::LLVMInternalLinkage as llvm::Linkage);
-        lcx.ccx.module_data.insert(istr::from_estr(modname), global);
+        lcx.ccx.module_data.insert(modname, global);
     }
     let log_cx = new_scope_block_ctxt(cx, "log");
     let after_cx = new_sub_block_ctxt(cx, "after");
@@ -5156,9 +5156,9 @@ fn trans_block(cx: &@block_ctxt, b: &ast::blk, output: &out_method) ->
 }
 
 fn new_local_ctxt(ccx: &@crate_ctxt) -> @local_ctxt {
-    let pth: [str] = [];
+    let pth: [istr] = [];
     ret @{path: pth,
-          module_path: [istr::to_estr(ccx.link_meta.name)],
+          module_path: [ccx.link_meta.name],
           obj_typarams: [],
           obj_fields: [],
           ccx: ccx};
@@ -5506,7 +5506,8 @@ fn trans_fn(cx: @local_ctxt, sp: &span, f: &ast::_fn, llfndecl: ValueRef,
     let start = time::get_time();
     trans_fn_inner(cx, sp, f, llfndecl, ty_self, ty_params, id);
     let end = time::get_time();
-    log_fn_time(cx.ccx, str::connect(cx.path, "::"), start, end);
+    log_fn_time(cx.ccx, istr::to_estr(istr::connect(cx.path, ~"::")),
+                start, end);
 }
 
 fn trans_res_ctor(cx: @local_ctxt, sp: &span, dtor: &ast::_fn,
@@ -5664,7 +5665,7 @@ fn trans_const(cx: &@crate_ctxt, e: @ast::expr, id: ast::node_id) {
 fn trans_item(cx: @local_ctxt, item: &ast::item) {
     alt item.node {
       ast::item_fn(f, tps) {
-        let sub_cx = extend_path(cx, istr::to_estr(item.ident));
+        let sub_cx = extend_path(cx, item.ident);
         alt cx.ccx.item_ids.find(item.id) {
           some(llfndecl) {
             trans_fn(sub_cx, item.span, f, llfndecl, none, tps, item.id);
@@ -5678,7 +5679,7 @@ fn trans_item(cx: @local_ctxt, item: &ast::item) {
       ast::item_obj(ob, tps, ctor_id) {
         let sub_cx =
             @{obj_typarams: tps, obj_fields: ob.fields
-                 with *extend_path(cx, istr::to_estr(item.ident))};
+                 with *extend_path(cx, item.ident)};
         trans_obj(sub_cx, item.span, ob, ctor_id, tps);
       }
       ast::item_res(dtor, dtor_id, tps, ctor_id) {
@@ -5696,13 +5697,13 @@ fn trans_item(cx: @local_ctxt, item: &ast::item) {
       }
       ast::item_mod(m) {
         let sub_cx =
-            @{path: cx.path + [istr::to_estr(item.ident)],
+            @{path: cx.path + [item.ident],
               module_path: cx.module_path
-                  + [istr::to_estr(item.ident)] with *cx};
+                  + [item.ident] with *cx};
         trans_mod(sub_cx, m);
       }
       ast::item_tag(variants, tps) {
-        let sub_cx = extend_path(cx, istr::to_estr(item.ident));
+        let sub_cx = extend_path(cx, item.ident);
         let degen = std::vec::len(variants) == 1u;
         let i = 0;
         for variant: ast::variant in variants {
diff --git a/src/comp/middle/trans_common.rs b/src/comp/middle/trans_common.rs
index 698db358cac..b84ca8c3ea8 100644
--- a/src/comp/middle/trans_common.rs
+++ b/src/comp/middle/trans_common.rs
@@ -160,8 +160,8 @@ type crate_ctxt =
      gc_cx: gc::ctxt};
 
 type local_ctxt =
-    {path: [str],
-     module_path: [str],
+    {path: [istr],
+     module_path: [istr],
      obj_typarams: [ast::ty_param],
      obj_fields: [ast::obj_field],
      ccx: @crate_ctxt};
@@ -430,7 +430,7 @@ tag block_parent { parent_none; parent_some(@block_ctxt); }
 type result = {bcx: @block_ctxt, val: ValueRef};
 type result_t = {bcx: @block_ctxt, val: ValueRef, ty: ty::t};
 
-fn extend_path(cx: @local_ctxt, name: &str) -> @local_ctxt {
+fn extend_path(cx: @local_ctxt, name: &istr) -> @local_ctxt {
     ret @{path: cx.path + [name] with *cx};
 }
 
diff --git a/src/comp/middle/trans_objects.rs b/src/comp/middle/trans_objects.rs
index 2add4d17d8e..c3c17c2d1e5 100644
--- a/src/comp/middle/trans_objects.rs
+++ b/src/comp/middle/trans_objects.rs
@@ -570,7 +570,7 @@ fn finish_vtbl(cx: @local_ctxt, llmethods: [ValueRef], name: str) ->
    ValueRef {
     let vtbl = C_struct(llmethods);
     let vtbl_name = mangle_internal_name_by_path(
-        cx.ccx, istr::from_estrs(cx.path + [name]));
+        cx.ccx, cx.path + [istr::from_estr(name)]);
     let gvar = istr::as_buf(vtbl_name, { |buf|
         llvm::LLVMAddGlobal(cx.ccx.llmod, val_ty(vtbl), buf)
     });
@@ -602,13 +602,13 @@ fn process_bkwding_mthd(cx: @local_ctxt, sp: &span, m: @ty::method,
     // Create a local context that's aware of the name of the method we're
     // creating.
     let mcx: @local_ctxt = @{path: cx.path
-        + ["method", istr::to_estr(m.ident)] with *cx};
+        + [~"method", m.ident] with *cx};
 
     // Make up a name for the backwarding function.
     let fn_name: istr = ~"backwarding_fn";
     let s: istr =
         mangle_internal_name_by_path_and_seq(
-            mcx.ccx, istr::from_estrs(mcx.path), fn_name);
+            mcx.ccx, mcx.path, fn_name);
 
     // Get the backwarding function's type and declare it.
     let llbackwarding_fn_ty: TypeRef =
@@ -733,13 +733,13 @@ fn process_fwding_mthd(cx: @local_ctxt, sp: &span, m: @ty::method,
     // Create a local context that's aware of the name of the method we're
     // creating.
     let mcx: @local_ctxt = @{path: cx.path
-        + ["method", istr::to_estr(m.ident)] with *cx};
+        + [~"method", m.ident] with *cx};
 
     // Make up a name for the forwarding function.
     let fn_name: istr = ~"forwarding_fn";
     let s: istr =
         mangle_internal_name_by_path_and_seq(
-            mcx.ccx, istr::from_estrs(mcx.path), fn_name);
+            mcx.ccx, mcx.path, fn_name);
 
     // Get the forwarding function's type and declare it.
     let llforwarding_fn_ty: TypeRef =
@@ -926,9 +926,9 @@ fn process_normal_mthd(cx: @local_ctxt, m: @ast::method, self_ty: ty::t,
       }
     }
     let mcx: @local_ctxt =
-        @{path: cx.path + ["method", istr::to_estr(m.node.ident)] with *cx};
+        @{path: cx.path + [~"method", m.node.ident] with *cx};
     let s: istr = mangle_internal_name_by_path(mcx.ccx,
-                                               istr::from_estrs(mcx.path));
+                                               mcx.path);
     let llfn: ValueRef = decl_internal_fastcall_fn(
         cx.ccx.llmod, istr::to_estr(s), llfnty);