syntax: add a local_data_key macro that creates a key for access to the TLS.

This allows the internal implementation details of the TLS keys to be
changed without requiring the update of all the users. (Or, applying
changes that have to be applied for the keys to work correctly, e.g.
forcing LLVM to not merge these constants.)
This commit is contained in:
Huon Wilson 2013-08-15 23:16:59 +10:00
parent 790e6bb397
commit 3ad23552fb
5 changed files with 64 additions and 3 deletions

View file

@ -957,6 +957,17 @@ pub fn std_macros() -> @str {
println(fmt!($($arg),+))
)
)
// NOTE: use this after a snapshot lands to abstract the details
// of the TLS interface.
macro_rules! local_data_key (
($name:ident: $ty:ty) => (
static $name: ::std::local_data::Key<$ty> = &::std::local_data::Key;
);
(pub $name:ident: $ty:ty) => (
pub static $name: ::std::local_data::Key<$ty> = &::std::local_data::Key;
)
)
}";
}