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 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
277 if (scanner().is_literal_ascii()) { | 277 if (scanner().is_literal_ascii()) { |
278 result = isolate()->factory()->LookupAsciiSymbol( | 278 result = isolate()->factory()->LookupAsciiSymbol( |
279 scanner().literal_ascii_string()); | 279 scanner().literal_ascii_string()); |
280 } else { | 280 } else { |
281 result = isolate()->factory()->LookupTwoByteSymbol( | 281 result = isolate()->factory()->LookupTwoByteSymbol( |
282 scanner().literal_uc16_string()); | 282 scanner().literal_uc16_string()); |
283 } | 283 } |
284 symbol_cache_.at(symbol_id) = result; | 284 symbol_cache_.at(symbol_id) = result; |
285 return result; | 285 return result; |
286 } | 286 } |
287 COUNTERS->total_preparse_symbols_skipped()->Increment(); | 287 isolate()->counters()->total_preparse_symbols_skipped()->Increment(); |
288 return result; | 288 return result; |
289 } | 289 } |
290 | 290 |
291 | 291 |
292 FunctionEntry ScriptDataImpl::GetFunctionEntry(int start) { | 292 FunctionEntry ScriptDataImpl::GetFunctionEntry(int start) { |
293 // The current pre-data entry must be a FunctionEntry with the given | 293 // The current pre-data entry must be a FunctionEntry with the given |
294 // start position. | 294 // start position. |
295 if ((function_index_ + FunctionEntry::kSize <= store_.length()) | 295 if ((function_index_ + FunctionEntry::kSize <= store_.length()) |
296 && (static_cast<int>(store_[function_index_]) == start)) { | 296 && (static_cast<int>(store_[function_index_]) == start)) { |
297 int index = function_index_; | 297 int index = function_index_; |
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
592 parenthesized_function_(false) { | 592 parenthesized_function_(false) { |
593 AstNode::ResetIds(); | 593 AstNode::ResetIds(); |
594 } | 594 } |
595 | 595 |
596 | 596 |
597 FunctionLiteral* Parser::ParseProgram(Handle<String> source, | 597 FunctionLiteral* Parser::ParseProgram(Handle<String> source, |
598 bool in_global_context, | 598 bool in_global_context, |
599 StrictModeFlag strict_mode) { | 599 StrictModeFlag strict_mode) { |
600 CompilationZoneScope zone_scope(DONT_DELETE_ON_EXIT); | 600 CompilationZoneScope zone_scope(DONT_DELETE_ON_EXIT); |
601 | 601 |
602 HistogramTimerScope timer(COUNTERS->parse()); | 602 HistogramTimerScope timer(isolate()->counters()->parse()); |
603 COUNTERS->total_parse_size()->Increment(source->length()); | 603 isolate()->counters()->total_parse_size()->Increment(source->length()); |
604 fni_ = new FuncNameInferrer(); | 604 fni_ = new FuncNameInferrer(); |
605 | 605 |
606 // Initialize parser state. | 606 // Initialize parser state. |
607 source->TryFlatten(); | 607 source->TryFlatten(); |
608 if (source->IsExternalTwoByteString()) { | 608 if (source->IsExternalTwoByteString()) { |
609 // Notice that the stream is destroyed at the end of the branch block. | 609 // Notice that the stream is destroyed at the end of the branch block. |
610 // The last line of the blocks can't be moved outside, even though they're | 610 // The last line of the blocks can't be moved outside, even though they're |
611 // identical calls. | 611 // identical calls. |
612 ExternalTwoByteStringUC16CharacterStream stream( | 612 ExternalTwoByteStringUC16CharacterStream stream( |
613 Handle<ExternalTwoByteString>::cast(source), 0, source->length()); | 613 Handle<ExternalTwoByteString>::cast(source), 0, source->length()); |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
674 ASSERT(target_stack_ == NULL); | 674 ASSERT(target_stack_ == NULL); |
675 | 675 |
676 // If there was a syntax error we have to get rid of the AST | 676 // If there was a syntax error we have to get rid of the AST |
677 // and it is not safe to do so before the scope has been deleted. | 677 // and it is not safe to do so before the scope has been deleted. |
678 if (result == NULL) zone_scope->DeleteOnExit(); | 678 if (result == NULL) zone_scope->DeleteOnExit(); |
679 return result; | 679 return result; |
680 } | 680 } |
681 | 681 |
682 FunctionLiteral* Parser::ParseLazy(CompilationInfo* info) { | 682 FunctionLiteral* Parser::ParseLazy(CompilationInfo* info) { |
683 CompilationZoneScope zone_scope(DONT_DELETE_ON_EXIT); | 683 CompilationZoneScope zone_scope(DONT_DELETE_ON_EXIT); |
684 HistogramTimerScope timer(COUNTERS->parse_lazy()); | 684 HistogramTimerScope timer(isolate()->counters()->parse_lazy()); |
685 Handle<String> source(String::cast(script_->source())); | 685 Handle<String> source(String::cast(script_->source())); |
686 COUNTERS->total_parse_size()->Increment(source->length()); | 686 isolate()->counters()->total_parse_size()->Increment(source->length()); |
687 | 687 |
688 Handle<SharedFunctionInfo> shared_info = info->shared_info(); | 688 Handle<SharedFunctionInfo> shared_info = info->shared_info(); |
689 // Initialize parser state. | 689 // Initialize parser state. |
690 source->TryFlatten(); | 690 source->TryFlatten(); |
691 if (source->IsExternalTwoByteString()) { | 691 if (source->IsExternalTwoByteString()) { |
692 ExternalTwoByteStringUC16CharacterStream stream( | 692 ExternalTwoByteStringUC16CharacterStream stream( |
693 Handle<ExternalTwoByteString>::cast(source), | 693 Handle<ExternalTwoByteString>::cast(source), |
694 shared_info->start_position(), | 694 shared_info->start_position(), |
695 shared_info->end_position()); | 695 shared_info->end_position()); |
696 FunctionLiteral* result = ParseLazy(info, &stream, &zone_scope); | 696 FunctionLiteral* result = ParseLazy(info, &stream, &zone_scope); |
(...skipping 2904 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3601 if (is_lazily_compiled && pre_data() != NULL) { | 3601 if (is_lazily_compiled && pre_data() != NULL) { |
3602 FunctionEntry entry = pre_data()->GetFunctionEntry(function_block_pos); | 3602 FunctionEntry entry = pre_data()->GetFunctionEntry(function_block_pos); |
3603 if (!entry.is_valid()) { | 3603 if (!entry.is_valid()) { |
3604 ReportInvalidPreparseData(name, CHECK_OK); | 3604 ReportInvalidPreparseData(name, CHECK_OK); |
3605 } | 3605 } |
3606 end_pos = entry.end_pos(); | 3606 end_pos = entry.end_pos(); |
3607 if (end_pos <= function_block_pos) { | 3607 if (end_pos <= function_block_pos) { |
3608 // End position greater than end of stream is safe, and hard to check. | 3608 // End position greater than end of stream is safe, and hard to check. |
3609 ReportInvalidPreparseData(name, CHECK_OK); | 3609 ReportInvalidPreparseData(name, CHECK_OK); |
3610 } | 3610 } |
3611 COUNTERS->total_preparse_skipped()->Increment( | 3611 isolate()->counters()->total_preparse_skipped()->Increment( |
3612 end_pos - function_block_pos); | 3612 end_pos - function_block_pos); |
3613 // Seek to position just before terminal '}'. | 3613 // Seek to position just before terminal '}'. |
3614 scanner().SeekForward(end_pos - 1); | 3614 scanner().SeekForward(end_pos - 1); |
3615 materialized_literal_count = entry.literal_count(); | 3615 materialized_literal_count = entry.literal_count(); |
3616 expected_property_count = entry.property_count(); | 3616 expected_property_count = entry.property_count(); |
3617 only_simple_this_property_assignments = false; | 3617 only_simple_this_property_assignments = false; |
3618 this_property_assignments = isolate()->factory()->empty_fixed_array(); | 3618 this_property_assignments = isolate()->factory()->empty_fixed_array(); |
3619 Expect(Token::RBRACE, CHECK_OK); | 3619 Expect(Token::RBRACE, CHECK_OK); |
3620 } else { | 3620 } else { |
3621 ParseSourceElements(body, Token::RBRACE, CHECK_OK); | 3621 ParseSourceElements(body, Token::RBRACE, CHECK_OK); |
(...skipping 1524 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5146 info->is_global(), | 5146 info->is_global(), |
5147 info->StrictMode()); | 5147 info->StrictMode()); |
5148 } | 5148 } |
5149 } | 5149 } |
5150 | 5150 |
5151 info->SetFunction(result); | 5151 info->SetFunction(result); |
5152 return (result != NULL); | 5152 return (result != NULL); |
5153 } | 5153 } |
5154 | 5154 |
5155 } } // namespace v8::internal | 5155 } } // namespace v8::internal |
OLD | NEW |