Make parsing about 0.3 seconds faster.
This commit is contained in:
parent
c953dad0b9
commit
ab1defb1ce
@ -141,17 +141,18 @@ impl parser_common of parser_common for parser {
|
||||
fn eat_keyword(word: ~str) -> bool {
|
||||
self.require_keyword(word);
|
||||
|
||||
// FIXME (#13042): this gratuitous use of @ is to
|
||||
// workaround LLVM bug.
|
||||
alt @self.token {
|
||||
@token::IDENT(sid, false) {
|
||||
let mut bump = false;
|
||||
let val = alt self.token {
|
||||
token::IDENT(sid, false) {
|
||||
if str::eq(word, *self.get_str(sid)) {
|
||||
self.bump();
|
||||
ret true;
|
||||
} else { ret false; }
|
||||
bump = true;
|
||||
true
|
||||
} else { false }
|
||||
}
|
||||
_ { ret false; }
|
||||
}
|
||||
_ { false }
|
||||
};
|
||||
if bump { self.bump() }
|
||||
val
|
||||
}
|
||||
|
||||
fn expect_keyword(word: ~str) {
|
||||
|
@ -14,7 +14,7 @@ iface reader {
|
||||
fn next_token() -> {tok: token::token, sp: span};
|
||||
fn fatal(~str) -> !;
|
||||
fn span_diag() -> span_handler;
|
||||
fn interner() -> @interner<@~str>;
|
||||
pure fn interner() -> @interner<@~str>;
|
||||
fn peek() -> {tok: token::token, sp: span};
|
||||
fn dup() -> reader;
|
||||
}
|
||||
@ -79,7 +79,7 @@ impl string_reader_as_reader of reader for string_reader {
|
||||
self.span_diagnostic.span_fatal(copy self.peek_span, m)
|
||||
}
|
||||
fn span_diag() -> span_handler { self.span_diagnostic }
|
||||
fn interner() -> @interner<@~str> { self.interner }
|
||||
pure fn interner() -> @interner<@~str> { self.interner }
|
||||
fn peek() -> {tok: token::token, sp: span} {
|
||||
{tok: self.peek_tok, sp: self.peek_span}
|
||||
}
|
||||
@ -101,7 +101,7 @@ impl tt_reader_as_reader of reader for tt_reader {
|
||||
self.sp_diag.span_fatal(copy self.cur_span, m);
|
||||
}
|
||||
fn span_diag() -> span_handler { self.sp_diag }
|
||||
fn interner() -> @interner<@~str> { self.interner }
|
||||
pure fn interner() -> @interner<@~str> { self.interner }
|
||||
fn peek() -> {tok: token::token, sp: span} {
|
||||
{ tok: self.cur_tok, sp: self.cur_span }
|
||||
}
|
||||
|
@ -232,7 +232,7 @@ class parser {
|
||||
fn warn(m: ~str) {
|
||||
self.sess.span_diagnostic.span_warn(copy self.span, m)
|
||||
}
|
||||
fn get_str(i: token::str_num) -> @~str {
|
||||
pure fn get_str(i: token::str_num) -> @~str {
|
||||
interner::get(*self.reader.interner(), i)
|
||||
}
|
||||
fn get_id() -> node_id { next_node_id(self.sess) }
|
||||
|
Loading…
x
Reference in New Issue
Block a user