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

Side by Side Diff: src/unicode-inl.h

Issue 638643002: Update unicode to 7.0.0. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: addressed comment Created 6 years, 2 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/unicode-decoder.cc ('k') | test/cctest/test-strings.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 2007-2010 the V8 project authors. All rights reserved. 1 // Copyright 2007-2010 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 #ifndef V8_UNICODE_INL_H_ 5 #ifndef V8_UNICODE_INL_H_
6 #define V8_UNICODE_INL_H_ 6 #define V8_UNICODE_INL_H_
7 7
8 #include "src/unicode.h" 8 #include "src/unicode.h"
9 #include "src/base/logging.h" 9 #include "src/base/logging.h"
10 #include "src/utils.h" 10 #include "src/utils.h"
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 } else { 50 } else {
51 entries_[c & kMask] = CacheEntry(c, 0); 51 entries_[c & kMask] = CacheEntry(c, 0);
52 return 0; 52 return 0;
53 } 53 }
54 } else { 54 } else {
55 return length; 55 return length;
56 } 56 }
57 } 57 }
58 58
59 59
60 uint16_t Latin1::ConvertNonLatin1ToLatin1(uint16_t c) {
61 DCHECK(c > Latin1::kMaxChar);
62 switch (c) {
63 // This are equivalent characters in unicode.
64 case 0x39c:
65 case 0x3bc:
66 return 0xb5;
67 // This is an uppercase of a Latin-1 character
68 // outside of Latin-1.
69 case 0x178:
70 return 0xff;
71 }
72 return 0;
73 }
74
75
76 unsigned Utf8::EncodeOneByte(char* str, uint8_t c) { 60 unsigned Utf8::EncodeOneByte(char* str, uint8_t c) {
77 static const int kMask = ~(1 << 6); 61 static const int kMask = ~(1 << 6);
78 if (c <= kMaxOneByteChar) { 62 if (c <= kMaxOneByteChar) {
79 str[0] = c; 63 str[0] = c;
80 return 1; 64 return 1;
81 } 65 }
82 str[0] = 0xC0 | (c >> 6); 66 str[0] = 0xC0 | (c >> 6);
83 str[1] = 0x80 | (c & kMask); 67 str[1] = 0x80 | (c & kMask);
84 return 2; 68 return 2;
85 } 69 }
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 if (Utf16::IsTrailSurrogate(c) && 130 if (Utf16::IsTrailSurrogate(c) &&
147 Utf16::IsLeadSurrogate(previous)) { 131 Utf16::IsLeadSurrogate(previous)) {
148 return kSizeOfUnmatchedSurrogate - kBytesSavedByCombiningSurrogates; 132 return kSizeOfUnmatchedSurrogate - kBytesSavedByCombiningSurrogates;
149 } 133 }
150 return 3; 134 return 3;
151 } else { 135 } else {
152 return 4; 136 return 4;
153 } 137 }
154 } 138 }
155 139
156 Utf8DecoderBase::Utf8DecoderBase()
157 : unbuffered_start_(NULL),
158 utf16_length_(0),
159 last_byte_of_buffer_unused_(false) {}
160
161 Utf8DecoderBase::Utf8DecoderBase(uint16_t* buffer,
162 unsigned buffer_length,
163 const uint8_t* stream,
164 unsigned stream_length) {
165 Reset(buffer, buffer_length, stream, stream_length);
166 }
167
168 template<unsigned kBufferSize>
169 Utf8Decoder<kBufferSize>::Utf8Decoder(const char* stream, unsigned length)
170 : Utf8DecoderBase(buffer_,
171 kBufferSize,
172 reinterpret_cast<const uint8_t*>(stream),
173 length) {
174 }
175
176 template<unsigned kBufferSize>
177 void Utf8Decoder<kBufferSize>::Reset(const char* stream, unsigned length) {
178 Utf8DecoderBase::Reset(buffer_,
179 kBufferSize,
180 reinterpret_cast<const uint8_t*>(stream),
181 length);
182 }
183
184 template <unsigned kBufferSize>
185 unsigned Utf8Decoder<kBufferSize>::WriteUtf16(uint16_t* data,
186 unsigned length) const {
187 DCHECK(length > 0);
188 if (length > utf16_length_) length = utf16_length_;
189 // memcpy everything in buffer.
190 unsigned buffer_length =
191 last_byte_of_buffer_unused_ ? kBufferSize - 1 : kBufferSize;
192 unsigned memcpy_length = length <= buffer_length ? length : buffer_length;
193 v8::internal::MemCopy(data, buffer_, memcpy_length * sizeof(uint16_t));
194 if (length <= buffer_length) return length;
195 DCHECK(unbuffered_start_ != NULL);
196 // Copy the rest the slow way.
197 WriteUtf16Slow(unbuffered_start_,
198 data + buffer_length,
199 length - buffer_length);
200 return length;
201 }
202
203 } // namespace unibrow 140 } // namespace unibrow
204 141
205 #endif // V8_UNICODE_INL_H_ 142 #endif // V8_UNICODE_INL_H_
OLDNEW
« no previous file with comments | « src/unicode-decoder.cc ('k') | test/cctest/test-strings.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698