• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef V8_UNICODE_CACHE_H_
6 #define V8_UNICODE_CACHE_H_
7 
8 #include "src/base/macros.h"
9 #include "src/char-predicates.h"
10 #include "src/unicode.h"
11 #include "src/unicode-decoder.h"
12 
13 namespace v8 {
14 namespace internal {
15 
16 // Caching predicates used by scanners.
17 class UnicodeCache {
18  public:
UnicodeCache()19   UnicodeCache() {}
20   typedef unibrow::Utf8Decoder<512> Utf8Decoder;
21 
utf8_decoder()22   StaticResource<Utf8Decoder>* utf8_decoder() { return &utf8_decoder_; }
23 
24   inline bool IsIdentifierStart(unibrow::uchar c);
25   inline bool IsIdentifierPart(unibrow::uchar c);
26   inline bool IsLineTerminator(unibrow::uchar c);
27   inline bool IsLineTerminatorSequence(unibrow::uchar c, unibrow::uchar next);
28 
29   inline bool IsWhiteSpace(unibrow::uchar c);
30   inline bool IsWhiteSpaceOrLineTerminator(unibrow::uchar c);
31 
32  private:
33   unibrow::Predicate<IdentifierStart, 128> kIsIdentifierStart;
34   unibrow::Predicate<IdentifierPart, 128> kIsIdentifierPart;
35   unibrow::Predicate<WhiteSpace, 128> kIsWhiteSpace;
36   unibrow::Predicate<WhiteSpaceOrLineTerminator, 128>
37       kIsWhiteSpaceOrLineTerminator;
38   StaticResource<Utf8Decoder> utf8_decoder_;
39 
40   DISALLOW_COPY_AND_ASSIGN(UnicodeCache);
41 };
42 
43 }  // namespace internal
44 }  // namespace v8
45 
46 #endif  // V8_UNICODE_CACHE_H_
47