diff options
| author | Mark Rousskov <mark.simulacrum@gmail.com> | 2018-07-30 08:39:03 -0600 |
|---|---|---|
| committer | Mark Rousskov <mark.simulacrum@gmail.com> | 2018-08-01 06:48:42 -0600 |
| commit | 1d64b241cdca1477cc4c87b3751326212ebf78f6 (patch) | |
| tree | 2a77cf6735bd3bac9ae6b21ff6c5ff2d0366ff17 /src/libsyntax/lib.rs | |
| parent | 8c069ceba81a0fffc1ce95aaf7e8339e11bf2796 (diff) | |
| download | rust-1d64b241cdca1477cc4c87b3751326212ebf78f6.tar.gz rust-1d64b241cdca1477cc4c87b3751326212ebf78f6.zip | |
Switch syntax attribute tracking to BitVector
Diffstat (limited to 'src/libsyntax/lib.rs')
| -rw-r--r-- | src/libsyntax/lib.rs | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/libsyntax/lib.rs b/src/libsyntax/lib.rs index 60de94821bb..16507ec5a5d 100644 --- a/src/libsyntax/lib.rs +++ b/src/libsyntax/lib.rs @@ -43,6 +43,8 @@ extern crate rustc_target; extern crate serialize as rustc_serialize; // used by deriving use rustc_data_structures::sync::Lock; +use rustc_data_structures::bitvec::BitVector; +use ast::AttrId; // A variant of 'try!' that panics on an Err. This is used as a crutch on the // way towards a non-panic!-prone parser. It should be used for fatal parsing @@ -75,16 +77,18 @@ macro_rules! unwrap_or { } pub struct Globals { - used_attrs: Lock<Vec<u64>>, - known_attrs: Lock<Vec<u64>>, + used_attrs: Lock<BitVector<AttrId>>, + known_attrs: Lock<BitVector<AttrId>>, syntax_pos_globals: syntax_pos::Globals, } impl Globals { fn new() -> Globals { Globals { - used_attrs: Lock::new(Vec::new()), - known_attrs: Lock::new(Vec::new()), + // We have no idea how many attributes their will be, so just + // initiate the vectors with 0 bits. We'll grow them as necessary. + used_attrs: Lock::new(BitVector::new(0)), + known_attrs: Lock::new(BitVector::new(0)), syntax_pos_globals: syntax_pos::Globals::new(), } } |
