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

Side by Side Diff: src/scanner-base.cc

Issue 6759025: Version 3.2.6 (Closed) Base URL: https://v8.googlecode.com/svn/trunk
Patch Set: Created 9 years, 8 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 | « src/scanner-base.h ('k') | src/stub-cache.h » ('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 2010 the V8 project authors. All rights reserved. 1 // Copyright 2010 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
11 // with the distribution. 11 // with the distribution.
12 // * Neither the name of Google Inc. nor the names of its 12 // * Neither the name of Google Inc. nor the names of its
13 // contributors may be used to endorse or promote products derived 13 // contributors may be used to endorse or promote products derived
14 // from this software without specific prior written permission. 14 // from this software without specific prior written permission.
15 // 15 //
16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 17 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 18 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 19 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 20 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 21 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 27
28 // Features shared by parsing and pre-parsing scanners. 28 // Features shared by parsing and pre-parsing scanners.
29 29
30 #include "v8.h"
31
32 /*
33 TODO(isolates): I incldue v8.h instead of these because we need Isolate and
34 some classes (NativeAllocationChecker) are moved into isolate.h
35 #include "../include/v8stdint.h" 30 #include "../include/v8stdint.h"
36 */
37 #include "scanner-base.h" 31 #include "scanner-base.h"
38 #include "char-predicates-inl.h" 32 #include "char-predicates-inl.h"
39 33
40 namespace v8 { 34 namespace v8 {
41 namespace internal { 35 namespace internal {
42 36
43 // ---------------------------------------------------------------------------- 37 // ----------------------------------------------------------------------------
44 // Compound predicates. 38 // Compound predicates.
45 39
46 bool ScannerConstants::IsIdentifier(unibrow::CharacterStream* buffer) { 40 bool ScannerConstants::IsIdentifier(unibrow::CharacterStream* buffer) {
47 // Checks whether the buffer contains an identifier (no escape). 41 // Checks whether the buffer contains an identifier (no escape).
48 if (!buffer->has_more()) return false; 42 if (!buffer->has_more()) return false;
49 if (!kIsIdentifierStart.get(buffer->GetNext())) { 43 if (!kIsIdentifierStart.get(buffer->GetNext())) {
50 return false; 44 return false;
51 } 45 }
52 while (buffer->has_more()) { 46 while (buffer->has_more()) {
53 if (!kIsIdentifierPart.get(buffer->GetNext())) { 47 if (!kIsIdentifierPart.get(buffer->GetNext())) {
54 return false; 48 return false;
55 } 49 }
56 } 50 }
57 return true; 51 return true;
58 } 52 }
59 53
60 // ---------------------------------------------------------------------------- 54 // ----------------------------------------------------------------------------
61 // Scanner 55 // Scanner
62 56
63 Scanner::Scanner(Isolate* isolate) 57 Scanner::Scanner(ScannerConstants* scanner_constants)
64 : scanner_constants_(isolate->scanner_constants()), 58 : scanner_constants_(scanner_constants),
65 octal_pos_(kNoOctalLocation) { 59 octal_pos_(kNoOctalLocation) {
66 } 60 }
67 61
68 62
69 uc32 Scanner::ScanHexEscape(uc32 c, int length) { 63 uc32 Scanner::ScanHexEscape(uc32 c, int length) {
70 ASSERT(length <= 4); // prevent overflow 64 ASSERT(length <= 4); // prevent overflow
71 65
72 uc32 digits[4]; 66 uc32 digits[4];
73 uc32 x = 0; 67 uc32 x = 0;
74 for (int i = 0; i < length; i++) { 68 for (int i = 0; i < length; i++) {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 if (c != '0' || i > 0) { 107 if (c != '0' || i > 0) {
114 octal_pos_ = source_pos() - i - 1; // Already advanced 108 octal_pos_ = source_pos() - i - 1; // Already advanced
115 } 109 }
116 return x; 110 return x;
117 } 111 }
118 112
119 113
120 // ---------------------------------------------------------------------------- 114 // ----------------------------------------------------------------------------
121 // JavaScriptScanner 115 // JavaScriptScanner
122 116
123 JavaScriptScanner::JavaScriptScanner(Isolate* isolate) : Scanner(isolate) {} 117 JavaScriptScanner::JavaScriptScanner(ScannerConstants* scanner_contants)
118 : Scanner(scanner_contants) { }
124 119
125 120
126 Token::Value JavaScriptScanner::Next() { 121 Token::Value JavaScriptScanner::Next() {
127 current_ = next_; 122 current_ = next_;
128 has_line_terminator_before_next_ = false; 123 has_line_terminator_before_next_ = false;
129 Scan(); 124 Scan();
130 return current_.token; 125 return current_.token;
131 } 126 }
132 127
133 128
(...skipping 826 matching lines...) Expand 10 before | Expand all | Expand 10 after
960 if (MatchKeywordStart(input, "with", 1, Token::WITH)) return; 955 if (MatchKeywordStart(input, "with", 1, Token::WITH)) return;
961 break; 956 break;
962 case UNMATCHABLE: 957 case UNMATCHABLE:
963 break; 958 break;
964 } 959 }
965 // On fallthrough, it's a failure. 960 // On fallthrough, it's a failure.
966 state_ = UNMATCHABLE; 961 state_ = UNMATCHABLE;
967 } 962 }
968 963
969 } } // namespace v8::internal 964 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/scanner-base.h ('k') | src/stub-cache.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698