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

Side by Side Diff: src/parsing/scanner.h

Issue 2044233004: Speed up adding literal chars when the buffer is known to be one-byte (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 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
« no previous file with comments | « no previous file | src/parsing/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 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Features shared by parsing and pre-parsing scanners. 5 // Features shared by parsing and pre-parsing scanners.
6 6
7 #ifndef V8_PARSING_SCANNER_H_ 7 #ifndef V8_PARSING_SCANNER_H_
8 #define V8_PARSING_SCANNER_H_ 8 #define V8_PARSING_SCANNER_H_
9 9
10 #include "src/allocation.h" 10 #include "src/allocation.h"
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 151
152 // ---------------------------------------------------------------------------- 152 // ----------------------------------------------------------------------------
153 // LiteralBuffer - Collector of chars of literals. 153 // LiteralBuffer - Collector of chars of literals.
154 154
155 class LiteralBuffer { 155 class LiteralBuffer {
156 public: 156 public:
157 LiteralBuffer() : is_one_byte_(true), position_(0), backing_store_() { } 157 LiteralBuffer() : is_one_byte_(true), position_(0), backing_store_() { }
158 158
159 ~LiteralBuffer() { backing_store_.Dispose(); } 159 ~LiteralBuffer() { backing_store_.Dispose(); }
160 160
161 INLINE(void AddChar(uint32_t code_unit)) { 161 INLINE(void AddChar(char code_unit)) {
162 if (position_ >= backing_store_.length()) ExpandBuffer();
163 DCHECK(is_one_byte_);
vogelheim 2016/06/09 12:05:15 Maybe also dcheck whether code_unit is actually as
164 backing_store_[position_] = static_cast<byte>(code_unit);
165 position_ += kOneByteSize;
166 return;
167 }
168
169 INLINE(void AddChar(uc32 code_unit)) {
162 if (position_ >= backing_store_.length()) ExpandBuffer(); 170 if (position_ >= backing_store_.length()) ExpandBuffer();
163 if (is_one_byte_) { 171 if (is_one_byte_) {
164 if (code_unit <= unibrow::Latin1::kMaxChar) { 172 if (code_unit <= unibrow::Latin1::kMaxChar) {
165 backing_store_[position_] = static_cast<byte>(code_unit); 173 backing_store_[position_] = static_cast<byte>(code_unit);
166 position_ += kOneByteSize; 174 position_ += kOneByteSize;
167 return; 175 return;
168 } 176 }
169 ConvertToTwoByte(); 177 ConvertToTwoByte();
170 } 178 }
171 if (code_unit <= unibrow::Utf16::kMaxNonSurrogateCharCode) { 179 if (code_unit <= unibrow::Utf16::kMaxNonSurrogateCharCode) {
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after
550 : &raw_literal_buffer0_; 558 : &raw_literal_buffer0_;
551 free_buffer->Reset(); 559 free_buffer->Reset();
552 next_.raw_literal_chars = free_buffer; 560 next_.raw_literal_chars = free_buffer;
553 } 561 }
554 562
555 INLINE(void AddLiteralChar(uc32 c)) { 563 INLINE(void AddLiteralChar(uc32 c)) {
556 DCHECK_NOT_NULL(next_.literal_chars); 564 DCHECK_NOT_NULL(next_.literal_chars);
557 next_.literal_chars->AddChar(c); 565 next_.literal_chars->AddChar(c);
558 } 566 }
559 567
568 INLINE(void AddLiteralChar(char c)) {
569 DCHECK_NOT_NULL(next_.literal_chars);
570 next_.literal_chars->AddChar(c);
571 }
572
560 INLINE(void AddRawLiteralChar(uc32 c)) { 573 INLINE(void AddRawLiteralChar(uc32 c)) {
561 DCHECK_NOT_NULL(next_.raw_literal_chars); 574 DCHECK_NOT_NULL(next_.raw_literal_chars);
562 next_.raw_literal_chars->AddChar(c); 575 next_.raw_literal_chars->AddChar(c);
563 } 576 }
564 577
565 INLINE(void ReduceRawLiteralLength(int delta)) { 578 INLINE(void ReduceRawLiteralLength(int delta)) {
566 DCHECK_NOT_NULL(next_.raw_literal_chars); 579 DCHECK_NOT_NULL(next_.raw_literal_chars);
567 next_.raw_literal_chars->ReduceLength(delta); 580 next_.raw_literal_chars->ReduceLength(delta);
568 } 581 }
569 582
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
807 bool allow_harmony_exponentiation_operator_; 820 bool allow_harmony_exponentiation_operator_;
808 821
809 MessageTemplate::Template scanner_error_; 822 MessageTemplate::Template scanner_error_;
810 Location scanner_error_location_; 823 Location scanner_error_location_;
811 }; 824 };
812 825
813 } // namespace internal 826 } // namespace internal
814 } // namespace v8 827 } // namespace v8
815 828
816 #endif // V8_PARSING_SCANNER_H_ 829 #endif // V8_PARSING_SCANNER_H_
OLDNEW
« no previous file with comments | « no previous file | src/parsing/scanner.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698