diff options
Diffstat (limited to 'src/librustc')
| -rw-r--r-- | src/librustc/lib/llvm.rs | 20 | ||||
| -rw-r--r-- | src/librustc/middle/trans/base.rs | 5 | ||||
| -rw-r--r-- | src/librustc/middle/trans/common.rs | 5 | ||||
| -rw-r--r-- | src/librustc/rustc.rc | 5 | ||||
| -rw-r--r-- | src/librustc/util/common.rs | 5 |
5 files changed, 32 insertions, 8 deletions
diff --git a/src/librustc/lib/llvm.rs b/src/librustc/lib/llvm.rs index d2bb7c75a27..78528fa053a 100644 --- a/src/librustc/lib/llvm.rs +++ b/src/librustc/lib/llvm.rs @@ -1458,7 +1458,10 @@ pub fn struct_tys(struct_ty: TypeRef) -> ~[TypeRef] { pub struct target_data_res { TD: TargetDataRef, - drop { +} + +impl Drop for target_data_res { + fn finalize(&self) { unsafe { llvm::LLVMDisposeTargetData(self.TD); } @@ -1492,7 +1495,10 @@ pub fn mk_target_data(string_rep: ~str) -> TargetData { pub struct pass_manager_res { PM: PassManagerRef, - drop { +} + +impl Drop for pass_manager_res { + fn finalize(&self) { unsafe { llvm::LLVMDisposePassManager(self.PM); } @@ -1525,7 +1531,10 @@ pub fn mk_pass_manager() -> PassManager { pub struct object_file_res { ObjectFile: ObjectFileRef, - drop { +} + +impl Drop for object_file_res { + fn finalize(&self) { unsafe { llvm::LLVMDisposeObjectFile(self.ObjectFile); } @@ -1559,7 +1568,10 @@ pub fn mk_object_file(llmb: MemoryBufferRef) -> Option<ObjectFile> { pub struct section_iter_res { SI: SectionIteratorRef, - drop { +} + +impl Drop for section_iter_res { + fn finalize(&self) { unsafe { llvm::LLVMDisposeSectionIterator(self.SI); } diff --git a/src/librustc/middle/trans/base.rs b/src/librustc/middle/trans/base.rs index 740a7e043d4..c7f59a83cf5 100644 --- a/src/librustc/middle/trans/base.rs +++ b/src/librustc/middle/trans/base.rs @@ -90,7 +90,10 @@ use syntax::{ast, ast_util, codemap, ast_map}; pub struct icx_popper { ccx: @CrateContext, - drop { +} + +impl Drop for icx_popper { + fn finalize(&self) { if self.ccx.sess.count_llvm_insns() { self.ccx.stats.llvm_insn_ctxt.pop(); } diff --git a/src/librustc/middle/trans/common.rs b/src/librustc/middle/trans/common.rs index f8a7f477976..c45278ee454 100644 --- a/src/librustc/middle/trans/common.rs +++ b/src/librustc/middle/trans/common.rs @@ -141,7 +141,10 @@ pub struct Stats { pub struct BuilderRef_res { B: BuilderRef, - drop { +} + +impl Drop for BuilderRef_res { + fn finalize(&self) { unsafe { llvm::LLVMDisposeBuilder(self.B); } diff --git a/src/librustc/rustc.rc b/src/librustc/rustc.rc index 5df7ae493ba..56ad56c3ae6 100644 --- a/src/librustc/rustc.rc +++ b/src/librustc/rustc.rc @@ -336,7 +336,10 @@ pub fn monitor(+f: fn~(diagnostic::Emitter)) { struct finally { ch: SharedChan<monitor_msg>, - drop { self.ch.send(done); } + } + + impl Drop for finally { + fn finalize(&self) { self.ch.send(done); } } let _finally = finally { ch: ch }; diff --git a/src/librustc/util/common.rs b/src/librustc/util/common.rs index 7b980b9de0d..a83447432a0 100644 --- a/src/librustc/util/common.rs +++ b/src/librustc/util/common.rs @@ -32,7 +32,10 @@ pub fn indent<R>(op: fn() -> R) -> R { pub struct _indenter { _i: (), - drop { debug!("<<"); } +} + +impl Drop for _indenter { + fn finalize(&self) { debug!("<<"); } } pub fn _indenter(_i: ()) -> _indenter { |
