| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 609 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 620 v8::Extension* extension, | 620 v8::Extension* extension, |
| 621 ScriptDataImpl* pre_data, | 621 ScriptDataImpl* pre_data, |
| 622 Handle<Object> script_data, | 622 Handle<Object> script_data, |
| 623 NativesFlag natives) { | 623 NativesFlag natives) { |
| 624 Isolate* isolate = source->GetIsolate(); | 624 Isolate* isolate = source->GetIsolate(); |
| 625 int source_length = source->length(); | 625 int source_length = source->length(); |
| 626 isolate->counters()->total_load_size()->Increment(source_length); | 626 isolate->counters()->total_load_size()->Increment(source_length); |
| 627 isolate->counters()->total_compile_size()->Increment(source_length); | 627 isolate->counters()->total_compile_size()->Increment(source_length); |
| 628 | 628 |
| 629 // The VM is in the COMPILER state until exiting this function. | 629 // The VM is in the COMPILER state until exiting this function. |
| 630 VMState state(isolate, COMPILER); | 630 VMState<COMPILER> state(isolate); |
| 631 | 631 |
| 632 CompilationCache* compilation_cache = isolate->compilation_cache(); | 632 CompilationCache* compilation_cache = isolate->compilation_cache(); |
| 633 | 633 |
| 634 // Do a lookup in the compilation cache but not for extensions. | 634 // Do a lookup in the compilation cache but not for extensions. |
| 635 Handle<SharedFunctionInfo> result; | 635 Handle<SharedFunctionInfo> result; |
| 636 if (extension == NULL) { | 636 if (extension == NULL) { |
| 637 result = compilation_cache->LookupScript(source, | 637 result = compilation_cache->LookupScript(source, |
| 638 script_name, | 638 script_name, |
| 639 line_offset, | 639 line_offset, |
| 640 column_offset, | 640 column_offset, |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 694 bool is_global, | 694 bool is_global, |
| 695 LanguageMode language_mode, | 695 LanguageMode language_mode, |
| 696 ParseRestriction restriction, | 696 ParseRestriction restriction, |
| 697 int scope_position) { | 697 int scope_position) { |
| 698 Isolate* isolate = source->GetIsolate(); | 698 Isolate* isolate = source->GetIsolate(); |
| 699 int source_length = source->length(); | 699 int source_length = source->length(); |
| 700 isolate->counters()->total_eval_size()->Increment(source_length); | 700 isolate->counters()->total_eval_size()->Increment(source_length); |
| 701 isolate->counters()->total_compile_size()->Increment(source_length); | 701 isolate->counters()->total_compile_size()->Increment(source_length); |
| 702 | 702 |
| 703 // The VM is in the COMPILER state until exiting this function. | 703 // The VM is in the COMPILER state until exiting this function. |
| 704 VMState state(isolate, COMPILER); | 704 VMState<COMPILER> state(isolate); |
| 705 | 705 |
| 706 // Do a lookup in the compilation cache; if the entry is not there, invoke | 706 // Do a lookup in the compilation cache; if the entry is not there, invoke |
| 707 // the compiler and add the result to the cache. | 707 // the compiler and add the result to the cache. |
| 708 Handle<SharedFunctionInfo> result; | 708 Handle<SharedFunctionInfo> result; |
| 709 CompilationCache* compilation_cache = isolate->compilation_cache(); | 709 CompilationCache* compilation_cache = isolate->compilation_cache(); |
| 710 result = compilation_cache->LookupEval(source, | 710 result = compilation_cache->LookupEval(source, |
| 711 context, | 711 context, |
| 712 is_global, | 712 is_global, |
| 713 language_mode, | 713 language_mode, |
| 714 scope_position); | 714 scope_position); |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 857 return false; | 857 return false; |
| 858 } | 858 } |
| 859 | 859 |
| 860 | 860 |
| 861 bool Compiler::CompileLazy(CompilationInfo* info) { | 861 bool Compiler::CompileLazy(CompilationInfo* info) { |
| 862 Isolate* isolate = info->isolate(); | 862 Isolate* isolate = info->isolate(); |
| 863 | 863 |
| 864 ZoneScope zone_scope(info->zone(), DELETE_ON_EXIT); | 864 ZoneScope zone_scope(info->zone(), DELETE_ON_EXIT); |
| 865 | 865 |
| 866 // The VM is in the COMPILER state until exiting this function. | 866 // The VM is in the COMPILER state until exiting this function. |
| 867 VMState state(isolate, COMPILER); | 867 VMState<COMPILER> state(isolate); |
| 868 | 868 |
| 869 PostponeInterruptsScope postpone(isolate); | 869 PostponeInterruptsScope postpone(isolate); |
| 870 | 870 |
| 871 Handle<SharedFunctionInfo> shared = info->shared_info(); | 871 Handle<SharedFunctionInfo> shared = info->shared_info(); |
| 872 int compiled_size = shared->end_position() - shared->start_position(); | 872 int compiled_size = shared->end_position() - shared->start_position(); |
| 873 isolate->counters()->total_compile_size()->Increment(compiled_size); | 873 isolate->counters()->total_compile_size()->Increment(compiled_size); |
| 874 | 874 |
| 875 if (InstallCodeFromOptimizedCodeMap(info)) return true; | 875 if (InstallCodeFromOptimizedCodeMap(info)) return true; |
| 876 | 876 |
| 877 // Generate the AST for the lazily compiled function. | 877 // Generate the AST for the lazily compiled function. |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 921 isolate, Logger::TimerEventScope::v8_recompile_synchronous); | 921 isolate, Logger::TimerEventScope::v8_recompile_synchronous); |
| 922 | 922 |
| 923 if (!isolate->optimizing_compiler_thread()->IsQueueAvailable()) { | 923 if (!isolate->optimizing_compiler_thread()->IsQueueAvailable()) { |
| 924 if (FLAG_trace_parallel_recompilation) { | 924 if (FLAG_trace_parallel_recompilation) { |
| 925 PrintF(" ** Compilation queue, will retry opting on next run.\n"); | 925 PrintF(" ** Compilation queue, will retry opting on next run.\n"); |
| 926 } | 926 } |
| 927 return; | 927 return; |
| 928 } | 928 } |
| 929 | 929 |
| 930 SmartPointer<CompilationInfo> info(new CompilationInfoWithZone(closure)); | 930 SmartPointer<CompilationInfo> info(new CompilationInfoWithZone(closure)); |
| 931 VMState state(isolate, PARALLEL_COMPILER); | 931 VMState<COMPILER> state(isolate); |
| 932 PostponeInterruptsScope postpone(isolate); | 932 PostponeInterruptsScope postpone(isolate); |
| 933 | 933 |
| 934 Handle<SharedFunctionInfo> shared = info->shared_info(); | 934 Handle<SharedFunctionInfo> shared = info->shared_info(); |
| 935 int compiled_size = shared->end_position() - shared->start_position(); | 935 int compiled_size = shared->end_position() - shared->start_position(); |
| 936 isolate->counters()->total_compile_size()->Increment(compiled_size); | 936 isolate->counters()->total_compile_size()->Increment(compiled_size); |
| 937 info->SetOptimizing(BailoutId::None()); | 937 info->SetOptimizing(BailoutId::None()); |
| 938 | 938 |
| 939 { | 939 { |
| 940 CompilationHandleScope handle_scope(*info); | 940 CompilationHandleScope handle_scope(*info); |
| 941 | 941 |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 996 if (FLAG_trace_parallel_recompilation) { | 996 if (FLAG_trace_parallel_recompilation) { |
| 997 PrintF(" ** aborting optimization for "); | 997 PrintF(" ** aborting optimization for "); |
| 998 info->closure()->PrintName(); | 998 info->closure()->PrintName(); |
| 999 PrintF(" as it has been disabled.\n"); | 999 PrintF(" as it has been disabled.\n"); |
| 1000 } | 1000 } |
| 1001 ASSERT(!info->closure()->IsMarkedForInstallingRecompiledCode()); | 1001 ASSERT(!info->closure()->IsMarkedForInstallingRecompiledCode()); |
| 1002 return; | 1002 return; |
| 1003 } | 1003 } |
| 1004 | 1004 |
| 1005 Isolate* isolate = info->isolate(); | 1005 Isolate* isolate = info->isolate(); |
| 1006 VMState state(isolate, PARALLEL_COMPILER); | 1006 VMState<COMPILER> state(isolate); |
| 1007 Logger::TimerEventScope timer( | 1007 Logger::TimerEventScope timer( |
| 1008 isolate, Logger::TimerEventScope::v8_recompile_synchronous); | 1008 isolate, Logger::TimerEventScope::v8_recompile_synchronous); |
| 1009 // If crankshaft succeeded, install the optimized code else install | 1009 // If crankshaft succeeded, install the optimized code else install |
| 1010 // the unoptimized code. | 1010 // the unoptimized code. |
| 1011 OptimizingCompiler::Status status = optimizing_compiler->last_status(); | 1011 OptimizingCompiler::Status status = optimizing_compiler->last_status(); |
| 1012 if (status != OptimizingCompiler::SUCCEEDED) { | 1012 if (status != OptimizingCompiler::SUCCEEDED) { |
| 1013 optimizing_compiler->info()->set_bailout_reason( | 1013 optimizing_compiler->info()->set_bailout_reason( |
| 1014 "failed/bailed out last time"); | 1014 "failed/bailed out last time"); |
| 1015 status = optimizing_compiler->AbortOptimization(); | 1015 status = optimizing_compiler->AbortOptimization(); |
| 1016 } else { | 1016 } else { |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1170 } | 1170 } |
| 1171 } | 1171 } |
| 1172 | 1172 |
| 1173 GDBJIT(AddCode(Handle<String>(shared->DebugName()), | 1173 GDBJIT(AddCode(Handle<String>(shared->DebugName()), |
| 1174 Handle<Script>(info->script()), | 1174 Handle<Script>(info->script()), |
| 1175 Handle<Code>(info->code()), | 1175 Handle<Code>(info->code()), |
| 1176 info)); | 1176 info)); |
| 1177 } | 1177 } |
| 1178 | 1178 |
| 1179 } } // namespace v8::internal | 1179 } } // namespace v8::internal |
| OLD | NEW |