| 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 42 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|    53  |    53  | 
|    54 CompilationInfo::CompilationInfo(Handle<Script> script, Zone* zone) |    54 CompilationInfo::CompilationInfo(Handle<Script> script, Zone* zone) | 
|    55     : isolate_(script->GetIsolate()), |    55     : isolate_(script->GetIsolate()), | 
|    56       flags_(LanguageModeField::encode(CLASSIC_MODE)), |    56       flags_(LanguageModeField::encode(CLASSIC_MODE)), | 
|    57       function_(NULL), |    57       function_(NULL), | 
|    58       scope_(NULL), |    58       scope_(NULL), | 
|    59       global_scope_(NULL), |    59       global_scope_(NULL), | 
|    60       script_(script), |    60       script_(script), | 
|    61       extension_(NULL), |    61       extension_(NULL), | 
|    62       pre_parse_data_(NULL), |    62       pre_parse_data_(NULL), | 
|    63       osr_ast_id_(AstNode::kNoNumber), |    63       osr_ast_id_(BailoutId::None()), | 
|    64       zone_(zone), |    64       zone_(zone), | 
|    65       deferred_handles_(NULL) { |    65       deferred_handles_(NULL) { | 
|    66   Initialize(BASE); |    66   Initialize(BASE); | 
|    67 } |    67 } | 
|    68  |    68  | 
|    69  |    69  | 
|    70 CompilationInfo::CompilationInfo(Handle<SharedFunctionInfo> shared_info, |    70 CompilationInfo::CompilationInfo(Handle<SharedFunctionInfo> shared_info, | 
|    71                                  Zone* zone) |    71                                  Zone* zone) | 
|    72     : isolate_(shared_info->GetIsolate()), |    72     : isolate_(shared_info->GetIsolate()), | 
|    73       flags_(LanguageModeField::encode(CLASSIC_MODE) | |    73       flags_(LanguageModeField::encode(CLASSIC_MODE) | | 
|    74              IsLazy::encode(true)), |    74              IsLazy::encode(true)), | 
|    75       function_(NULL), |    75       function_(NULL), | 
|    76       scope_(NULL), |    76       scope_(NULL), | 
|    77       global_scope_(NULL), |    77       global_scope_(NULL), | 
|    78       shared_info_(shared_info), |    78       shared_info_(shared_info), | 
|    79       script_(Handle<Script>(Script::cast(shared_info->script()))), |    79       script_(Handle<Script>(Script::cast(shared_info->script()))), | 
|    80       extension_(NULL), |    80       extension_(NULL), | 
|    81       pre_parse_data_(NULL), |    81       pre_parse_data_(NULL), | 
|    82       osr_ast_id_(AstNode::kNoNumber), |    82       osr_ast_id_(BailoutId::None()), | 
|    83       zone_(zone), |    83       zone_(zone), | 
|    84       deferred_handles_(NULL) { |    84       deferred_handles_(NULL) { | 
|    85   Initialize(BASE); |    85   Initialize(BASE); | 
|    86 } |    86 } | 
|    87  |    87  | 
|    88  |    88  | 
|    89 CompilationInfo::CompilationInfo(Handle<JSFunction> closure, Zone* zone) |    89 CompilationInfo::CompilationInfo(Handle<JSFunction> closure, Zone* zone) | 
|    90     : isolate_(closure->GetIsolate()), |    90     : isolate_(closure->GetIsolate()), | 
|    91       flags_(LanguageModeField::encode(CLASSIC_MODE) | |    91       flags_(LanguageModeField::encode(CLASSIC_MODE) | | 
|    92              IsLazy::encode(true)), |    92              IsLazy::encode(true)), | 
|    93       function_(NULL), |    93       function_(NULL), | 
|    94       scope_(NULL), |    94       scope_(NULL), | 
|    95       global_scope_(NULL), |    95       global_scope_(NULL), | 
|    96       closure_(closure), |    96       closure_(closure), | 
|    97       shared_info_(Handle<SharedFunctionInfo>(closure->shared())), |    97       shared_info_(Handle<SharedFunctionInfo>(closure->shared())), | 
|    98       script_(Handle<Script>(Script::cast(shared_info_->script()))), |    98       script_(Handle<Script>(Script::cast(shared_info_->script()))), | 
|    99       extension_(NULL), |    99       extension_(NULL), | 
|   100       pre_parse_data_(NULL), |   100       pre_parse_data_(NULL), | 
|   101       osr_ast_id_(AstNode::kNoNumber), |   101       osr_ast_id_(BailoutId::None()), | 
|   102       zone_(zone), |   102       zone_(zone), | 
|   103       deferred_handles_(NULL) { |   103       deferred_handles_(NULL) { | 
|   104   Initialize(BASE); |   104   Initialize(BASE); | 
|   105 } |   105 } | 
|   106  |   106  | 
|   107  |   107  | 
|   108 CompilationInfo::~CompilationInfo() { |   108 CompilationInfo::~CompilationInfo() { | 
|   109   delete deferred_handles_; |   109   delete deferred_handles_; | 
|   110 } |   110 } | 
|   111  |   111  | 
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   249   // language, we cannot optimize functions with too many formal parameters |   249   // language, we cannot optimize functions with too many formal parameters | 
|   250   // or perform on-stack replacement for function with too many |   250   // or perform on-stack replacement for function with too many | 
|   251   // stack-allocated local variables. |   251   // stack-allocated local variables. | 
|   252   // |   252   // | 
|   253   // The encoding is as a signed value, with parameters and receiver using |   253   // The encoding is as a signed value, with parameters and receiver using | 
|   254   // the negative indices and locals the non-negative ones. |   254   // the negative indices and locals the non-negative ones. | 
|   255   const int parameter_limit = -LUnallocated::kMinFixedIndex; |   255   const int parameter_limit = -LUnallocated::kMinFixedIndex; | 
|   256   const int locals_limit = LUnallocated::kMaxFixedIndex; |   256   const int locals_limit = LUnallocated::kMaxFixedIndex; | 
|   257   Scope* scope = info()->scope(); |   257   Scope* scope = info()->scope(); | 
|   258   if ((scope->num_parameters() + 1) > parameter_limit || |   258   if ((scope->num_parameters() + 1) > parameter_limit || | 
|   259       (info()->osr_ast_id() != AstNode::kNoNumber && |   259       (!info()->osr_ast_id().IsNone() && | 
|   260        scope->num_parameters() + 1 + scope->num_stack_slots() > locals_limit)) { |   260        scope->num_parameters() + 1 + scope->num_stack_slots() > locals_limit)) { | 
|   261     return AbortOptimization(); |   261     return AbortOptimization(); | 
|   262   } |   262   } | 
|   263  |   263  | 
|   264   // Take --hydrogen-filter into account. |   264   // Take --hydrogen-filter into account. | 
|   265   Handle<String> name = info()->function()->debug_name(); |   265   Handle<String> name = info()->function()->debug_name(); | 
|   266   if (*FLAG_hydrogen_filter != '\0') { |   266   if (*FLAG_hydrogen_filter != '\0') { | 
|   267     Vector<const char> filter = CStrVector(FLAG_hydrogen_filter); |   267     Vector<const char> filter = CStrVector(FLAG_hydrogen_filter); | 
|   268     if ((filter[0] == '-' |   268     if ((filter[0] == '-' | 
|   269          && name->IsEqualTo(filter.SubVector(1, filter.length()))) |   269          && name->IsEqualTo(filter.SubVector(1, filter.length()))) | 
| (...skipping 431 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   701  |   701  | 
|   702   if (V8::UseCrankshaft() && |   702   if (V8::UseCrankshaft() && | 
|   703       !function.is_null() && |   703       !function.is_null() && | 
|   704       !shared->optimization_disabled()) { |   704       !shared->optimization_disabled()) { | 
|   705     // If we're asked to always optimize, we compile the optimized |   705     // If we're asked to always optimize, we compile the optimized | 
|   706     // version of the function right away - unless the debugger is |   706     // version of the function right away - unless the debugger is | 
|   707     // active as it makes no sense to compile optimized code then. |   707     // active as it makes no sense to compile optimized code then. | 
|   708     if (FLAG_always_opt && |   708     if (FLAG_always_opt && | 
|   709         !Isolate::Current()->DebuggerHasBreakPoints()) { |   709         !Isolate::Current()->DebuggerHasBreakPoints()) { | 
|   710       CompilationInfoWithZone optimized(function); |   710       CompilationInfoWithZone optimized(function); | 
|   711       optimized.SetOptimizing(AstNode::kNoNumber); |   711       optimized.SetOptimizing(BailoutId::None()); | 
|   712       return Compiler::CompileLazy(&optimized); |   712       return Compiler::CompileLazy(&optimized); | 
|   713     } |   713     } | 
|   714   } |   714   } | 
|   715   return true; |   715   return true; | 
|   716 } |   716 } | 
|   717  |   717  | 
|   718  |   718  | 
|   719 static void InstallCodeCommon(CompilationInfo* info) { |   719 static void InstallCodeCommon(CompilationInfo* info) { | 
|   720   Handle<SharedFunctionInfo> shared = info->shared_info(); |   720   Handle<SharedFunctionInfo> shared = info->shared_info(); | 
|   721   Handle<Code> code = info->code(); |   721   Handle<Code> code = info->code(); | 
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   830     return; |   830     return; | 
|   831   } |   831   } | 
|   832  |   832  | 
|   833   SmartPointer<CompilationInfo> info(new CompilationInfoWithZone(closure)); |   833   SmartPointer<CompilationInfo> info(new CompilationInfoWithZone(closure)); | 
|   834   VMState state(isolate, PARALLEL_COMPILER_PROLOGUE); |   834   VMState state(isolate, PARALLEL_COMPILER_PROLOGUE); | 
|   835   PostponeInterruptsScope postpone(isolate); |   835   PostponeInterruptsScope postpone(isolate); | 
|   836  |   836  | 
|   837   Handle<SharedFunctionInfo> shared = info->shared_info(); |   837   Handle<SharedFunctionInfo> shared = info->shared_info(); | 
|   838   int compiled_size = shared->end_position() - shared->start_position(); |   838   int compiled_size = shared->end_position() - shared->start_position(); | 
|   839   isolate->counters()->total_compile_size()->Increment(compiled_size); |   839   isolate->counters()->total_compile_size()->Increment(compiled_size); | 
|   840   info->SetOptimizing(AstNode::kNoNumber); |   840   info->SetOptimizing(BailoutId::None()); | 
|   841  |   841  | 
|   842   { |   842   { | 
|   843     CompilationHandleScope handle_scope(*info); |   843     CompilationHandleScope handle_scope(*info); | 
|   844  |   844  | 
|   845     if (InstallCodeFromOptimizedCodeMap(*info)) return; |   845     if (InstallCodeFromOptimizedCodeMap(*info)) return; | 
|   846  |   846  | 
|   847     if (ParserApi::Parse(*info, kNoParsingFlags)) { |   847     if (ParserApi::Parse(*info, kNoParsingFlags)) { | 
|   848       LanguageMode language_mode = info->function()->language_mode(); |   848       LanguageMode language_mode = info->function()->language_mode(); | 
|   849       info->SetLanguageMode(language_mode); |   849       info->SetLanguageMode(language_mode); | 
|   850       shared->set_language_mode(language_mode); |   850       shared->set_language_mode(language_mode); | 
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1027     } |  1027     } | 
|  1028   } |  1028   } | 
|  1029  |  1029  | 
|  1030   GDBJIT(AddCode(Handle<String>(shared->DebugName()), |  1030   GDBJIT(AddCode(Handle<String>(shared->DebugName()), | 
|  1031                  Handle<Script>(info->script()), |  1031                  Handle<Script>(info->script()), | 
|  1032                  Handle<Code>(info->code()), |  1032                  Handle<Code>(info->code()), | 
|  1033                  info)); |  1033                  info)); | 
|  1034 } |  1034 } | 
|  1035  |  1035  | 
|  1036 } }  // namespace v8::internal |  1036 } }  // namespace v8::internal | 
| OLD | NEW |