about summary refs log tree commit diff
path: root/src/comp
diff options
context:
space:
mode:
authorMichael Sullivan <sully@msully.net>2011-07-29 14:43:09 -0700
committerMichael Sullivan <sully@msully.net>2011-07-29 15:29:38 -0700
commita684f6078f7f67ae7f6396b3f8f58cc6e78bdc4c (patch)
treea8d1c3a481aa5b5ece3b2b9add5d441384ee5e67 /src/comp
parent6a4d0ce829d999900199c6af53592537727ea5e9 (diff)
downloadrust-a684f6078f7f67ae7f6396b3f8f58cc6e78bdc4c.tar.gz
rust-a684f6078f7f67ae7f6396b3f8f58cc6e78bdc4c.zip
Do some cleanup in load_environment.
Diffstat (limited to 'src/comp')
-rw-r--r--src/comp/middle/trans.rs53
1 files changed, 23 insertions, 30 deletions
diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs
index 8c11d1b960e..fb981889f7b 100644
--- a/src/comp/middle/trans.rs
+++ b/src/comp/middle/trans.rs
@@ -3787,52 +3787,45 @@ fn build_environment(cx: &@block_ctxt, upvars: &@ast::node_id[]) ->
 // Given an enclosing block context, a new function context, a closure type,
 // and a list of upvars, generate code to load and populate the environment
 // with the upvars and type descriptors.
-fn load_environment(cx: &@block_ctxt, fcx: &@fn_ctxt, llenvptrty: TypeRef,
-                    upvars: &@ast::node_id[]) {
-    let copy_args_bcx = new_raw_block_ctxt(fcx, fcx.llcopyargs);
+fn load_environment(enclosing_cx: &@block_ctxt, fcx: &@fn_ctxt,
+                    llenvptrty: TypeRef, upvars: &@ast::node_id[]) {
+    let bcx = new_raw_block_ctxt(fcx, fcx.llcopyargs);
 
     // Populate the upvars from the environment.
-    let llremoteenvptr =
-        copy_args_bcx.build.PointerCast(fcx.llenv, llenvptrty);
-    let llremotebindingsptrptr =
-        copy_args_bcx.build.GEP(llremoteenvptr,
-                                ~[C_int(0), C_int(abi::box_rc_field_body),
-                                  C_int(abi::closure_elt_bindings)]);
-    let llremotebindingsptr =
-        copy_args_bcx.build.Load(llremotebindingsptrptr);
+    let llenvptr = bcx.build.PointerCast(fcx.llenv, llenvptrty);
+    llenvptr =
+        bcx.build.GEP(llenvptr, ~[C_int(0), C_int(abi::box_rc_field_body)]);
+    let llbindingsptrptr =
+        bcx.build.GEP(llenvptr,
+                      ~[C_int(0), C_int(abi::closure_elt_bindings)]);
+    let llbindingsptr = bcx.build.Load(llbindingsptrptr);
 
     let i = 0u;
-    if !option::is_none(cx.fcx.lliterbody) {
+    if !option::is_none(enclosing_cx.fcx.lliterbody) {
         i += 1u;
         let lliterbodyptr =
-            copy_args_bcx.build.GEP(llremotebindingsptr,
-                                    ~[C_int(0), C_int(0)]);
-        let lliterbody = copy_args_bcx.build.Load(lliterbodyptr);
-        fcx.lliterbody = some(lliterbody);
+            bcx.build.GEP(llbindingsptr, ~[C_int(0), C_int(0)]);
+        fcx.lliterbody = some(bcx.build.Load(lliterbodyptr));
     }
     for upvar_id: ast::node_id  in *upvars {
         let llupvarptrptr =
-            copy_args_bcx.build.GEP(llremotebindingsptr,
-                                    ~[C_int(0), C_int(i as int)]);
-        let llupvarptr = copy_args_bcx.build.Load(llupvarptrptr);
-        let def_id = ast::def_id_of_def(bcx_tcx(cx).def_map.get(upvar_id));
+            bcx.build.GEP(llbindingsptr, ~[C_int(0), C_int(i as int)]);
+        let llupvarptr = bcx.build.Load(llupvarptrptr);
+        let def_id = ast::def_id_of_def(bcx_tcx(bcx).def_map.get(upvar_id));
         fcx.llupvars.insert(def_id.node, llupvarptr);
         i += 1u;
     }
 
     // Populate the type parameters from the environment.
-    let llremotetydescsptr =
-        copy_args_bcx.build.GEP(llremoteenvptr,
-                                ~[C_int(0), C_int(abi::box_rc_field_body),
-                                  C_int(abi::closure_elt_ty_params)]);
-    let tydesc_count = std::ivec::len(cx.fcx.lltydescs);
+    let lltydescsptr =
+        bcx.build.GEP(llenvptr,
+                      ~[C_int(0), C_int(abi::closure_elt_ty_params)]);
+    let tydesc_count = std::ivec::len(enclosing_cx.fcx.lltydescs);
     i = 0u;
     while i < tydesc_count {
-        let llremotetydescptr =
-            copy_args_bcx.build.GEP(llremotetydescsptr,
-                                    ~[C_int(0), C_int(i as int)]);
-        let llremotetydesc = copy_args_bcx.build.Load(llremotetydescptr);
-        fcx.lltydescs += ~[llremotetydesc];
+        let lltydescptr =
+            bcx.build.GEP(lltydescsptr, ~[C_int(0), C_int(i as int)]);
+        fcx.lltydescs += ~[bcx.build.Load(lltydescptr)];
         i += 1u;
     }