Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(271)

Side by Side Diff: runtime/vm/scanner.h

Issue 316633002: Speed up identifying keywords in scanner, by using extra table. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | runtime/vm/scanner.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 // 4 //
5 // Scanner class for the Dart language. The scanner reads source text 5 // Scanner class for the Dart language. The scanner reads source text
6 // and produces a stream of tokens which is used by the parser. 6 // and produces a stream of tokens which is used by the parser.
7 // 7 //
8 8
9 #ifndef VM_SCANNER_H_ 9 #ifndef VM_SCANNER_H_
10 #define VM_SCANNER_H_ 10 #define VM_SCANNER_H_
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 static bool IsIdent(const String& str); 78 static bool IsIdent(const String& str);
79 79
80 // Does the token stream contain a valid literal. This is used to implement 80 // Does the token stream contain a valid literal. This is used to implement
81 // the Dart methods int.parse and double.parse. 81 // the Dart methods int.parse and double.parse.
82 static bool IsValidLiteral(const Scanner::GrowableTokenStream& tokens, 82 static bool IsValidLiteral(const Scanner::GrowableTokenStream& tokens,
83 Token::Kind literal_kind, 83 Token::Kind literal_kind,
84 bool* is_positive, 84 bool* is_positive,
85 const String** value); 85 const String** value);
86 86
87 private: 87 private:
88 static const int kNumLowercaseChars = 26;
89
88 struct ScanContext { 90 struct ScanContext {
89 ScanContext* next; 91 ScanContext* next;
90 char string_delimiter; 92 char string_delimiter;
91 bool string_is_multiline; 93 bool string_is_multiline;
92 int brace_level; 94 int brace_level;
93 }; 95 };
94 96
95 struct KeywordTable { 97 struct KeywordTable {
96 Token::Kind kind; 98 Token::Kind kind;
97 const char* keyword_chars; 99 const char* keyword_chars;
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 // and its interpolated expressions. 200 // and its interpolated expressions.
199 ScanContext* saved_context_; 201 ScanContext* saved_context_;
200 int32_t string_delimiter_; 202 int32_t string_delimiter_;
201 bool string_is_multiline_; 203 bool string_is_multiline_;
202 int brace_level_; 204 int brace_level_;
203 205
204 const String& private_key_; 206 const String& private_key_;
205 207
206 SourcePosition c0_pos_; // Source position of lookahead character c0_. 208 SourcePosition c0_pos_; // Source position of lookahead character c0_.
207 209
208 static KeywordTable keywords_[Token::numKeywords]; 210 static KeywordTable keywords_[Token::kNumKeywords];
211 static int keywords_char_offset_[kNumLowercaseChars];
209 }; 212 };
210 213
211 214
212 } // namespace dart 215 } // namespace dart
213 216
214 #endif // VM_SCANNER_H_ 217 #endif // VM_SCANNER_H_
OLDNEW
« no previous file with comments | « no previous file | runtime/vm/scanner.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698