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

Side by Side Diff: src/log.cc

Issue 121173009: String:WriteUtf8: Add REPLACE_INVALID_UTF8 option (Closed) Base URL: git://github.com/v8/v8.git@master
Patch Set: DISALLOW_INVALID_UTF8 flag and fixes Created 6 years, 11 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
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 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
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 int uc16_length = Min(str->length(), kUtf16BufferSize); 113 int uc16_length = Min(str->length(), kUtf16BufferSize);
114 String::WriteToFlat(str, utf16_buffer, 0, uc16_length); 114 String::WriteToFlat(str, utf16_buffer, 0, uc16_length);
115 int previous = unibrow::Utf16::kNoPreviousCharacter; 115 int previous = unibrow::Utf16::kNoPreviousCharacter;
116 for (int i = 0; i < uc16_length && utf8_pos_ < kUtf8BufferSize; ++i) { 116 for (int i = 0; i < uc16_length && utf8_pos_ < kUtf8BufferSize; ++i) {
117 uc16 c = utf16_buffer[i]; 117 uc16 c = utf16_buffer[i];
118 if (c <= unibrow::Utf8::kMaxOneByteChar) { 118 if (c <= unibrow::Utf8::kMaxOneByteChar) {
119 utf8_buffer_[utf8_pos_++] = static_cast<char>(c); 119 utf8_buffer_[utf8_pos_++] = static_cast<char>(c);
120 } else { 120 } else {
121 int char_length = unibrow::Utf8::Length(c, previous); 121 int char_length = unibrow::Utf8::Length(c, previous);
122 if (utf8_pos_ + char_length > kUtf8BufferSize) break; 122 if (utf8_pos_ + char_length > kUtf8BufferSize) break;
123 // @TODO Fix this Utf8::Encode call site somehow.
123 unibrow::Utf8::Encode(utf8_buffer_ + utf8_pos_, c, previous); 124 unibrow::Utf8::Encode(utf8_buffer_ + utf8_pos_, c, previous);
124 utf8_pos_ += char_length; 125 utf8_pos_ += char_length;
125 } 126 }
126 previous = c; 127 previous = c;
127 } 128 }
128 } 129 }
129 130
130 void AppendBytes(const char* bytes, int size) { 131 void AppendBytes(const char* bytes, int size) {
131 size = Min(size, kUtf8BufferSize - utf8_pos_); 132 size = Min(size, kUtf8BufferSize - utf8_pos_);
132 OS::MemCopy(utf8_buffer_ + utf8_pos_, bytes, size); 133 OS::MemCopy(utf8_buffer_ + utf8_pos_, bytes, size);
(...skipping 2029 matching lines...) Expand 10 before | Expand all | Expand 10 after
2162 if (jit_logger_) { 2163 if (jit_logger_) {
2163 removeCodeEventListener(jit_logger_); 2164 removeCodeEventListener(jit_logger_);
2164 delete jit_logger_; 2165 delete jit_logger_;
2165 jit_logger_ = NULL; 2166 jit_logger_ = NULL;
2166 } 2167 }
2167 2168
2168 return log_->Close(); 2169 return log_->Close();
2169 } 2170 }
2170 2171
2171 } } // namespace v8::internal 2172 } } // namespace v8::internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698