1
Fork 0

Remove internal mutability from source_locations_enabled

This commit is contained in:
bjorn3 2018-12-02 18:09:26 +01:00
parent f1fe9253e2
commit ab8f1527e4
4 changed files with 9 additions and 10 deletions

View file

@ -32,7 +32,7 @@ use rustc_codegen_ssa::debuginfo::{FunctionDebugContext, MirDebugScope, Variable
VariableKind, FunctionDebugContextData};
use libc::c_uint;
use std::cell::{Cell, RefCell};
use std::cell::RefCell;
use std::ffi::CString;
use syntax_pos::{self, Span, Pos};
@ -158,7 +158,7 @@ impl DebugInfoBuilderMethods<'tcx> for Builder<'a, 'll, 'tcx> {
variable_kind: VariableKind,
span: Span,
) {
assert!(!dbg_context.get_ref(span).source_locations_enabled.get());
assert!(!dbg_context.get_ref(span).source_locations_enabled);
let cx = self.cx();
let file = span_start(cx, span).file;
@ -327,7 +327,7 @@ impl DebugInfoMethods<'tcx> for CodegenCx<'ll, 'tcx> {
// Initialize fn debug context (including scope map and namespace map)
let fn_debug_context = FunctionDebugContextData {
fn_metadata,
source_locations_enabled: Cell::new(false),
source_locations_enabled: false,
defining_crate: def_id.krate,
};

View file

@ -30,7 +30,7 @@ pub fn set_source_location<D>(
FunctionDebugContext::RegularContext(ref data) => data
};
let dbg_loc = if function_debug_context.source_locations_enabled.get() {
let dbg_loc = if function_debug_context.source_locations_enabled {
debug!("set_source_location: {}", bx.sess().source_map().span_to_string(span));
let loc = span_start(bx.cx(), span);
InternalDebugLocation::new(scope.unwrap(), loc.line, loc.col.to_usize())

View file

@ -1,6 +1,5 @@
use syntax_pos::{BytePos, Span};
use rustc::hir::def_id::CrateNum;
use std::cell::Cell;
pub enum FunctionDebugContext<D> {
RegularContext(FunctionDebugContextData<D>),
@ -36,10 +35,10 @@ impl<D> FunctionDebugContext<D> {
/// they are disabled when beginning to codegen a new function. This functions
/// switches source location emitting on and must therefore be called before the
/// first real statement/expression of the function is codegened.
pub fn start_emitting_source_locations<D>(dbg_context: &FunctionDebugContext<D>) {
pub fn start_emitting_source_locations<D>(dbg_context: &mut FunctionDebugContext<D>) {
match *dbg_context {
FunctionDebugContext::RegularContext(ref data) => {
data.source_locations_enabled.set(true)
FunctionDebugContext::RegularContext(ref mut data) => {
data.source_locations_enabled = true;
},
_ => { /* safe to ignore */ }
}
@ -47,7 +46,7 @@ pub fn start_emitting_source_locations<D>(dbg_context: &FunctionDebugContext<D>)
pub struct FunctionDebugContextData<D> {
pub fn_metadata: D,
pub source_locations_enabled: Cell<bool>,
pub source_locations_enabled: bool,
pub defining_crate: CrateNum,
}

View file

@ -334,7 +334,7 @@ pub fn codegen_mir<'a, 'tcx: 'a, Bx: BuilderMethods<'a, 'tcx>>(
// Up until here, IR instructions for this function have explicitly not been annotated with
// source code location, so we don't step into call setup code. From here on, source location
// emitting should be enabled.
debuginfo::start_emitting_source_locations(&fx.debug_context);
debuginfo::start_emitting_source_locations(&mut fx.debug_context);
let rpo = traversal::reverse_postorder(&mir);
let mut visited = BitSet::new_empty(mir.basic_blocks().len());