| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/v8.h" | 5 #include "src/v8.h" |
| 6 | 6 |
| 7 #include "src/api.h" | 7 #include "src/api.h" |
| 8 #include "src/ast.h" | 8 #include "src/ast.h" |
| 9 #include "src/bailout-reason.h" | 9 #include "src/bailout-reason.h" |
| 10 #include "src/base/platform/platform.h" | 10 #include "src/base/platform/platform.h" |
| (...skipping 917 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 928 // the main thread. | 928 // the main thread. |
| 929 HistogramTimerScope timer_scope(isolate()->counters()->parse_lazy()); | 929 HistogramTimerScope timer_scope(isolate()->counters()->parse_lazy()); |
| 930 Handle<String> source(String::cast(script()->source())); | 930 Handle<String> source(String::cast(script()->source())); |
| 931 isolate()->counters()->total_parse_size()->Increment(source->length()); | 931 isolate()->counters()->total_parse_size()->Increment(source->length()); |
| 932 base::ElapsedTimer timer; | 932 base::ElapsedTimer timer; |
| 933 if (FLAG_trace_parse) { | 933 if (FLAG_trace_parse) { |
| 934 timer.Start(); | 934 timer.Start(); |
| 935 } | 935 } |
| 936 Handle<SharedFunctionInfo> shared_info = info()->shared_info(); | 936 Handle<SharedFunctionInfo> shared_info = info()->shared_info(); |
| 937 | 937 |
| 938 // Lazy parsing is only done during runtime, when we're already using the |
| 939 // heap. So make the AstValueFactory also internalize all values when it |
| 940 // creates them (this is more efficient). |
| 941 ast_value_factory()->Internalize(isolate()); |
| 942 |
| 938 // Initialize parser state. | 943 // Initialize parser state. |
| 939 source = String::Flatten(source); | 944 source = String::Flatten(source); |
| 940 FunctionLiteral* result; | 945 FunctionLiteral* result; |
| 941 if (source->IsExternalTwoByteString()) { | 946 if (source->IsExternalTwoByteString()) { |
| 942 ExternalTwoByteStringUtf16CharacterStream stream( | 947 ExternalTwoByteStringUtf16CharacterStream stream( |
| 943 Handle<ExternalTwoByteString>::cast(source), | 948 Handle<ExternalTwoByteString>::cast(source), |
| 944 shared_info->start_position(), | 949 shared_info->start_position(), |
| 945 shared_info->end_position()); | 950 shared_info->end_position()); |
| 946 result = ParseLazy(&stream); | 951 result = ParseLazy(&stream); |
| 947 } else { | 952 } else { |
| (...skipping 4007 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4955 | 4960 |
| 4956 // We cannot internalize on a background thread; a foreground task will take | 4961 // We cannot internalize on a background thread; a foreground task will take |
| 4957 // care of calling Parser::Internalize just before compilation. | 4962 // care of calling Parser::Internalize just before compilation. |
| 4958 | 4963 |
| 4959 if (compile_options() == ScriptCompiler::kProduceParserCache) { | 4964 if (compile_options() == ScriptCompiler::kProduceParserCache) { |
| 4960 if (result != NULL) *info_->cached_data() = recorder.GetScriptData(); | 4965 if (result != NULL) *info_->cached_data() = recorder.GetScriptData(); |
| 4961 log_ = NULL; | 4966 log_ = NULL; |
| 4962 } | 4967 } |
| 4963 } | 4968 } |
| 4964 } } // namespace v8::internal | 4969 } } // namespace v8::internal |
| OLD | NEW |