Stop unloading syntax libraries

Externally loaded libraries are able to do things that cause references
to them to survive past the expansion phase (e.g. creating @-box cycles,
launching a task or storing something in task local data). As such, the
library has to stay loaded for the lifetime of the process.
This commit is contained in:
Steven Fackler
2014-02-11 22:43:23 -08:00
committed by Alex Crichton
parent cfb87f10ec
commit 6b429d07c9
4 changed files with 63 additions and 11 deletions

View File

@@ -20,7 +20,6 @@ use parse::token::{InternedString, intern, str_to_ident};
use util::small_vector::SmallVector;
use std::hashmap::HashMap;
use std::unstable::dynamic_lib::DynamicLibrary;
// new-style macro! tt code:
//
@@ -143,8 +142,6 @@ pub struct BlockInfo {
macros_escape : bool,
// what are the pending renames?
pending_renames : RenameList,
// references for crates loaded in this scope
macro_crates: ~[DynamicLibrary],
}
impl BlockInfo {
@@ -152,7 +149,6 @@ impl BlockInfo {
BlockInfo {
macros_escape: false,
pending_renames: ~[],
macro_crates: ~[],
}
}
}
@@ -551,10 +547,6 @@ impl SyntaxEnv {
self.find_escape_frame().map.insert(k, v);
}
pub fn insert_macro_crate(&mut self, lib: DynamicLibrary) {
self.find_escape_frame().info.macro_crates.push(lib);
}
pub fn info<'a>(&'a mut self) -> &'a mut BlockInfo {
&mut self.chain[self.chain.len()-1].info
}