From 7437a56f3b6fdecaac8bd537befdc5cebccce8f1 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Fri, 20 Dec 2013 20:50:26 -0800 Subject: [PATCH] librustc: De-`@mut` `FunctionContext::entry_bcx` --- src/librustc/middle/trans/base.rs | 10 +++++----- src/librustc/middle/trans/closure.rs | 2 +- src/librustc/middle/trans/common.rs | 4 ++-- src/librustc/middle/trans/glue.rs | 2 +- src/librustc/middle/trans/intrinsic.rs | 2 +- src/librustc/middle/trans/reflect.rs | 2 +- 6 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/librustc/middle/trans/base.rs b/src/librustc/middle/trans/base.rs index 9b10a469e760..210186c3203c 100644 --- a/src/librustc/middle/trans/base.rs +++ b/src/librustc/middle/trans/base.rs @@ -1641,7 +1641,7 @@ pub fn make_return_pointer(fcx: @mut FunctionContext, output_type: ty::t) -> Val llvm::LLVMGetParam(fcx.llfn, 0) } else { let lloutputtype = type_of::type_of(fcx.ccx, output_type); - let bcx = fcx.entry_bcx.unwrap(); + let bcx = fcx.entry_bcx.get().unwrap(); Alloca(bcx, lloutputtype, "__make_return_pointer") } } @@ -1686,7 +1686,7 @@ pub fn new_fn_ctxt_w_id(ccx: @CrateContext, Cell::new(llvm::LLVMGetUndef(Type::i8p().to_ref())) }, llretptr: Cell::new(None), - entry_bcx: None, + entry_bcx: RefCell::new(None), alloca_insert_pt: Cell::new(None), llreturn: Cell::new(None), llself: Cell::new(None), @@ -1710,7 +1710,7 @@ pub fn new_fn_ctxt_w_id(ccx: @CrateContext, let entry_bcx = top_scope_block(fcx, opt_node_info); Load(entry_bcx, C_null(Type::i8p())); - fcx.entry_bcx = Some(entry_bcx); + fcx.entry_bcx.set(Some(entry_bcx)); fcx.alloca_insert_pt.set(Some( llvm::LLVMGetFirstInstruction(entry_bcx.llbb))); } @@ -1921,7 +1921,7 @@ pub fn trans_closure(ccx: @CrateContext, // Create the first basic block in the function and keep a handle on it to // pass to finish_fn later. - let bcx_top = fcx.entry_bcx.unwrap(); + let bcx_top = fcx.entry_bcx.get().unwrap(); let mut bcx = bcx_top; let block_ty = node_id_type(bcx, body.id); @@ -2136,7 +2136,7 @@ pub fn trans_enum_variant_or_tuple_like_struct( let raw_llargs = create_llargs_for_fn_args(fcx, no_self, fn_args); - let bcx = fcx.entry_bcx.unwrap(); + let bcx = fcx.entry_bcx.get().unwrap(); insert_synthetic_type_entries(bcx, fn_args, arg_tys); let bcx = copy_args_to_allocas(fcx, bcx, fn_args, raw_llargs, arg_tys); diff --git a/src/librustc/middle/trans/closure.rs b/src/librustc/middle/trans/closure.rs index 668864262800..e2d123bd63a3 100644 --- a/src/librustc/middle/trans/closure.rs +++ b/src/librustc/middle/trans/closure.rs @@ -304,7 +304,7 @@ pub fn load_environment(fcx: @mut FunctionContext, return; } - let bcx = fcx.entry_bcx.unwrap(); + let bcx = fcx.entry_bcx.get().unwrap(); // Load a pointer to the closure data, skipping over the box header: let llcdata = opaque_box_body(bcx, cdata_ty, fcx.llenv.get()); diff --git a/src/librustc/middle/trans/common.rs b/src/librustc/middle/trans/common.rs index a83cde0f4f24..808168760a4a 100644 --- a/src/librustc/middle/trans/common.rs +++ b/src/librustc/middle/trans/common.rs @@ -214,7 +214,7 @@ pub struct FunctionContext { // always be Some. llretptr: Cell>, - entry_bcx: Option<@Block>, + entry_bcx: RefCell>, // These elements: "hoisted basic blocks" containing // administrative activities that have to happen in only one place in @@ -296,7 +296,7 @@ impl FunctionContext { .unwrap()); } // Remove the cycle between fcx and bcx, so memory can be freed - self.entry_bcx = None; + self.entry_bcx.set(None); } pub fn get_llreturn(&mut self) -> BasicBlockRef { diff --git a/src/librustc/middle/trans/glue.rs b/src/librustc/middle/trans/glue.rs index a6869dce2133..335e14fc55ef 100644 --- a/src/librustc/middle/trans/glue.rs +++ b/src/librustc/middle/trans/glue.rs @@ -669,7 +669,7 @@ pub fn make_generic_glue_inner(ccx: @CrateContext, // llfn is expected be declared to take a parameter of the appropriate // type, so we don't need to explicitly cast the function parameter. - let bcx = fcx.entry_bcx.unwrap(); + let bcx = fcx.entry_bcx.get().unwrap(); let rawptr0_arg = fcx.arg_pos(0u); let llrawptr0 = unsafe { llvm::LLVMGetParam(llfn, rawptr0_arg as c_uint) }; let bcx = helper(bcx, llrawptr0, t); diff --git a/src/librustc/middle/trans/intrinsic.rs b/src/librustc/middle/trans/intrinsic.rs index 4aa42b098984..02df3ff9c204 100644 --- a/src/librustc/middle/trans/intrinsic.rs +++ b/src/librustc/middle/trans/intrinsic.rs @@ -148,7 +148,7 @@ pub fn trans_intrinsic(ccx: @CrateContext, set_always_inline(fcx.llfn); - let mut bcx = fcx.entry_bcx.unwrap(); + let mut bcx = fcx.entry_bcx.get().unwrap(); let first_real_arg = fcx.arg_pos(0u); let nm = ccx.sess.str_of(item.ident); diff --git a/src/librustc/middle/trans/reflect.rs b/src/librustc/middle/trans/reflect.rs index 15e7ed4593da..c30f421c9e54 100644 --- a/src/librustc/middle/trans/reflect.rs +++ b/src/librustc/middle/trans/reflect.rs @@ -306,7 +306,7 @@ impl Reflector { // llvm::LLVMGetParam(llfdecl, fcx.arg_pos(0u) as c_uint) }; - let mut bcx = fcx.entry_bcx.unwrap(); + let mut bcx = fcx.entry_bcx.get().unwrap(); let arg = BitCast(bcx, arg, llptrty); let ret = adt::trans_get_discr(bcx, repr, arg, Some(Type::i64())); Store(bcx, ret, fcx.llretptr.get().unwrap());