Chromium Code Reviews| Index: src/parser.cc |
| diff --git a/src/parser.cc b/src/parser.cc |
| index e6c0e2645e4decdf522c9118af01ddf56b6d240c..efc7df7b48885309c48993853f83c96cc25ee601 100644 |
| --- a/src/parser.cc |
| +++ b/src/parser.cc |
| @@ -5336,8 +5336,13 @@ ZoneList<Expression*>* Parser::TemplateRawStrings(const TemplateLiteral* lit, |
| raw_chars[to_index++] = ch; |
| } |
| - const AstRawString* raw_str = ast_value_factory()->GetOneByteString( |
| - OneByteVector(raw_chars.get(), to_index)); |
| + unibrow::Utf8Decoder<256> decoder(raw_chars.get(), to_index); |
|
Dmitry Lomov (no reviews)
2014/11/25 13:16:21
Use cached decoder from isoalte()->unicode_cache()
caitp (gmail)
2014/11/26 14:12:01
Should this be cached outside of the loop? But, do
|
| + int utf16_length = decoder.Utf16Length(); |
| + uc16* utf16_buffer = zone()->NewArray<uc16>(utf16_length); |
| + to_index = decoder.WriteUtf16(utf16_buffer, utf16_length); |
| + const AstRawString* raw_str = ast_value_factory()->GetTwoByteString( |
| + Vector<const uint16_t>(reinterpret_cast<const uint16_t*>(utf16_buffer), |
| + to_index)); |
| Literal* raw_lit = factory()->NewStringLiteral(raw_str, span_start - 1); |
| raw_strings->Add(raw_lit, zone()); |
| } |