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

Unified Diff: src/parser.cc

Issue 745233002: Fix raw TemplateLiteral spans with non-ascii characters (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 6 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | test/mjsunit/harmony/templates.js » ('j') | test/mjsunit/harmony/templates.js » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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());
}
« no previous file with comments | « no previous file | test/mjsunit/harmony/templates.js » ('j') | test/mjsunit/harmony/templates.js » ('J')

Powered by Google App Engine
This is Rietveld 408576698