| Index: src/parser.cc
|
| diff --git a/src/parser.cc b/src/parser.cc
|
| index 29b1fe74c6058a344f12d75e5d9407f0b86d1ae6..d620457217b2a637fa3c0a754dec7268d4e1488b 100644
|
| --- a/src/parser.cc
|
| +++ b/src/parser.cc
|
| @@ -257,8 +257,13 @@ Handle<String> Parser::LookupSymbol(int symbol_id) {
|
| if (static_cast<unsigned>(symbol_id)
|
| >= static_cast<unsigned>(symbol_cache_.length())) {
|
| if (scanner().is_literal_ascii()) {
|
| - return isolate()->factory()->LookupOneByteSymbol(
|
| + Handle<String> symbol = isolate()->factory()->LookupOneByteSymbol(
|
| Vector<const uint8_t>::cast(scanner().literal_ascii_string()));
|
| + if (scanner().is_literal_printable_ascii() &&
|
| + symbol->map() == isolate()->heap()->ascii_symbol_map()) {
|
| + symbol->set_map(isolate()->heap()->printable_ascii_symbol_map());
|
| + }
|
| + return symbol;
|
| } else {
|
| return isolate()->factory()->LookupTwoByteSymbol(
|
| scanner().literal_utf16_string());
|
| @@ -3610,7 +3615,7 @@ Expression* Parser::ParsePrimaryExpression(bool* ok) {
|
|
|
| case Token::NUMBER: {
|
| Consume(Token::NUMBER);
|
| - ASSERT(scanner().is_literal_ascii());
|
| + ASSERT(scanner().is_literal_printable_ascii());
|
| double value = StringToDouble(isolate()->unicode_cache(),
|
| scanner().literal_ascii_string(),
|
| ALLOW_HEX | ALLOW_OCTALS);
|
| @@ -4086,7 +4091,7 @@ Expression* Parser::ParseObjectLiteral(bool* ok) {
|
| }
|
| case Token::NUMBER: {
|
| Consume(Token::NUMBER);
|
| - ASSERT(scanner().is_literal_ascii());
|
| + ASSERT(scanner().is_literal_printable_ascii());
|
| double value = StringToDouble(isolate()->unicode_cache(),
|
| scanner().literal_ascii_string(),
|
| ALLOW_HEX | ALLOW_OCTALS);
|
| @@ -4839,7 +4844,8 @@ Handle<String> Parser::ParseIdentifierNameOrGetOrSet(bool* is_get,
|
| bool* ok) {
|
| Handle<String> result = ParseIdentifierName(ok);
|
| if (!*ok) return Handle<String>();
|
| - if (scanner().is_literal_ascii() && scanner().literal_length() == 3) {
|
| + if (scanner().is_literal_printable_ascii() &&
|
| + scanner().literal_length() == 3) {
|
| const char* token = scanner().literal_ascii_string().start();
|
| *is_get = strncmp(token, "get", 3) == 0;
|
| *is_set = !*is_get && strncmp(token, "set", 3) == 0;
|
|
|