diff options
| author | Huon Wilson <dbau.pp+github@gmail.com> | 2013-08-15 23:16:59 +1000 |
|---|---|---|
| committer | Huon Wilson <dbau.pp+github@gmail.com> | 2013-08-16 14:37:24 +1000 |
| commit | 3ad23552fbd463d97a3e26c900655b9d134516e4 (patch) | |
| tree | 5507ee278d6cde91ab847d802f04ca372775b620 /src/libsyntax | |
| parent | 790e6bb3972c3b167a8e0314305740a20f62d2f0 (diff) | |
| download | rust-3ad23552fbd463d97a3e26c900655b9d134516e4.tar.gz rust-3ad23552fbd463d97a3e26c900655b9d134516e4.zip | |
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.)
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/ext/expand.rs | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs index 1547446957e..49eb9f12212 100644 --- a/src/libsyntax/ext/expand.rs +++ b/src/libsyntax/ext/expand.rs @@ -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; + ) + ) }"; } |
