OLD | NEW |
1 // Copyright 2010 the V8 project authors. All rights reserved. | 1 // Copyright 2010 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 3346 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3357 result = VariableProxySentinel::identifier_proxy(); | 3357 result = VariableProxySentinel::identifier_proxy(); |
3358 } else { | 3358 } else { |
3359 result = top_scope_->NewUnresolved(name, inside_with()); | 3359 result = top_scope_->NewUnresolved(name, inside_with()); |
3360 } | 3360 } |
3361 break; | 3361 break; |
3362 } | 3362 } |
3363 | 3363 |
3364 case Token::NUMBER: { | 3364 case Token::NUMBER: { |
3365 Consume(Token::NUMBER); | 3365 Consume(Token::NUMBER); |
3366 double value = | 3366 double value = |
3367 StringToDouble(scanner_.literal_string(), ALLOW_HEX | ALLOW_OCTALS); | 3367 StringToDouble(scanner_.literal(), ALLOW_HEX | ALLOW_OCTALS); |
3368 result = NewNumberLiteral(value); | 3368 result = NewNumberLiteral(value); |
3369 break; | 3369 break; |
3370 } | 3370 } |
3371 | 3371 |
3372 case Token::STRING: { | 3372 case Token::STRING: { |
3373 Consume(Token::STRING); | 3373 Consume(Token::STRING); |
3374 Handle<String> symbol = | 3374 Handle<String> symbol = |
3375 factory()->LookupSymbol(scanner_.literal_string(), | 3375 factory()->LookupSymbol(scanner_.literal_string(), |
3376 scanner_.literal_length()); | 3376 scanner_.literal_length()); |
3377 result = NEW(Literal(symbol)); | 3377 result = NEW(Literal(symbol)); |
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3715 if (!string.is_null() && string->AsArrayIndex(&index)) { | 3715 if (!string.is_null() && string->AsArrayIndex(&index)) { |
3716 key = NewNumberLiteral(index); | 3716 key = NewNumberLiteral(index); |
3717 break; | 3717 break; |
3718 } | 3718 } |
3719 key = NEW(Literal(string)); | 3719 key = NEW(Literal(string)); |
3720 break; | 3720 break; |
3721 } | 3721 } |
3722 case Token::NUMBER: { | 3722 case Token::NUMBER: { |
3723 Consume(Token::NUMBER); | 3723 Consume(Token::NUMBER); |
3724 double value = | 3724 double value = |
3725 StringToDouble(scanner_.literal_string(), ALLOW_HEX | ALLOW_OCTALS); | 3725 StringToDouble(scanner_.literal(), ALLOW_HEX | ALLOW_OCTALS); |
3726 key = NewNumberLiteral(value); | 3726 key = NewNumberLiteral(value); |
3727 break; | 3727 break; |
3728 } | 3728 } |
3729 default: | 3729 default: |
3730 if (Token::IsKeyword(next)) { | 3730 if (Token::IsKeyword(next)) { |
3731 Consume(next); | 3731 Consume(next); |
3732 Handle<String> string = | 3732 Handle<String> string = |
3733 factory()->LookupSymbol(scanner_.literal_string(), | 3733 factory()->LookupSymbol(scanner_.literal_string(), |
3734 scanner_.literal_length()); | 3734 scanner_.literal_length()); |
3735 key = NEW(Literal(string)); | 3735 key = NEW(Literal(string)); |
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3976 } | 3976 } |
3977 | 3977 |
3978 | 3978 |
3979 Expression* Parser::ParseV8Intrinsic(bool* ok) { | 3979 Expression* Parser::ParseV8Intrinsic(bool* ok) { |
3980 // CallRuntime :: | 3980 // CallRuntime :: |
3981 // '%' Identifier Arguments | 3981 // '%' Identifier Arguments |
3982 | 3982 |
3983 Expect(Token::MOD, CHECK_OK); | 3983 Expect(Token::MOD, CHECK_OK); |
3984 Handle<String> name = ParseIdentifier(CHECK_OK); | 3984 Handle<String> name = ParseIdentifier(CHECK_OK); |
3985 Runtime::Function* function = | 3985 Runtime::Function* function = |
3986 Runtime::FunctionForName(scanner_.literal_string()); | 3986 Runtime::FunctionForName(scanner_.literal()); |
3987 ZoneList<Expression*>* args = ParseArguments(CHECK_OK); | 3987 ZoneList<Expression*>* args = ParseArguments(CHECK_OK); |
3988 if (function == NULL && extension_ != NULL) { | 3988 if (function == NULL && extension_ != NULL) { |
3989 // The extension structures are only accessible while parsing the | 3989 // The extension structures are only accessible while parsing the |
3990 // very first time not when reparsing because of lazy compilation. | 3990 // very first time not when reparsing because of lazy compilation. |
3991 top_scope_->ForceEagerCompilation(); | 3991 top_scope_->ForceEagerCompilation(); |
3992 } | 3992 } |
3993 | 3993 |
3994 // Check for built-in macros. | 3994 // Check for built-in macros. |
3995 if (!is_pre_parsing_) { | 3995 if (!is_pre_parsing_) { |
3996 if (function == Runtime::FunctionForId(Runtime::kIS_VAR)) { | 3996 if (function == Runtime::FunctionForId(Runtime::kIS_VAR)) { |
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4263 const char* literal_string = scanner_.literal_string(); | 4263 const char* literal_string = scanner_.literal_string(); |
4264 if (literal_length == 0) { | 4264 if (literal_length == 0) { |
4265 return NEW(Literal(Factory::empty_string())); | 4265 return NEW(Literal(Factory::empty_string())); |
4266 } | 4266 } |
4267 Vector<const char> literal(literal_string, literal_length); | 4267 Vector<const char> literal(literal_string, literal_length); |
4268 return NEW(Literal(Factory::NewStringFromUtf8(literal, TENURED))); | 4268 return NEW(Literal(Factory::NewStringFromUtf8(literal, TENURED))); |
4269 } | 4269 } |
4270 case Token::NUMBER: { | 4270 case Token::NUMBER: { |
4271 Consume(Token::NUMBER); | 4271 Consume(Token::NUMBER); |
4272 ASSERT(scanner_.literal_length() > 0); | 4272 ASSERT(scanner_.literal_length() > 0); |
4273 double value = StringToDouble(scanner_.literal_string(), | 4273 double value = StringToDouble(scanner_.literal(), |
4274 NO_FLAGS, // Hex, octal or trailing junk. | 4274 NO_FLAGS, // Hex, octal or trailing junk. |
4275 OS::nan_value()); | 4275 OS::nan_value()); |
4276 return NewNumberLiteral(value); | 4276 return NewNumberLiteral(value); |
4277 } | 4277 } |
4278 case Token::FALSE_LITERAL: | 4278 case Token::FALSE_LITERAL: |
4279 Consume(Token::FALSE_LITERAL); | 4279 Consume(Token::FALSE_LITERAL); |
4280 return NEW(Literal(Factory::false_value())); | 4280 return NEW(Literal(Factory::false_value())); |
4281 case Token::TRUE_LITERAL: | 4281 case Token::TRUE_LITERAL: |
4282 Consume(Token::TRUE_LITERAL); | 4282 Consume(Token::TRUE_LITERAL); |
4283 return NEW(Literal(Factory::true_value())); | 4283 return NEW(Literal(Factory::true_value())); |
(...skipping 1022 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5306 parser.ParseLazy(script_source, name, | 5306 parser.ParseLazy(script_source, name, |
5307 start_position, end_position, is_expression); | 5307 start_position, end_position, is_expression); |
5308 return result; | 5308 return result; |
5309 } | 5309 } |
5310 | 5310 |
5311 | 5311 |
5312 #undef NEW | 5312 #undef NEW |
5313 | 5313 |
5314 | 5314 |
5315 } } // namespace v8::internal | 5315 } } // namespace v8::internal |
OLD | NEW |