| 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/compiler.h" |     7 #include "src/compiler.h" | 
|     8  |     8  | 
|     9 #include "src/bootstrapper.h" |     9 #include "src/bootstrapper.h" | 
|    10 #include "src/codegen.h" |    10 #include "src/codegen.h" | 
| (...skipping 26 matching lines...) Expand all  Loading... | 
|    37   if (!IsAligned(reinterpret_cast<intptr_t>(data), kPointerAlignment)) { |    37   if (!IsAligned(reinterpret_cast<intptr_t>(data), kPointerAlignment)) { | 
|    38     byte* copy = NewArray<byte>(length); |    38     byte* copy = NewArray<byte>(length); | 
|    39     DCHECK(IsAligned(reinterpret_cast<intptr_t>(copy), kPointerAlignment)); |    39     DCHECK(IsAligned(reinterpret_cast<intptr_t>(copy), kPointerAlignment)); | 
|    40     CopyBytes(copy, data, length); |    40     CopyBytes(copy, data, length); | 
|    41     data_ = copy; |    41     data_ = copy; | 
|    42     AcquireDataOwnership(); |    42     AcquireDataOwnership(); | 
|    43   } |    43   } | 
|    44 } |    44 } | 
|    45  |    45  | 
|    46  |    46  | 
|    47 CompilationInfo::CompilationInfo(Handle<Script> script, |    47 CompilationInfo::CompilationInfo(Handle<Script> script, Zone* zone) | 
|    48                                  Zone* zone) |  | 
|    49     : flags_(StrictModeField::encode(SLOPPY)), |    48     : flags_(StrictModeField::encode(SLOPPY)), | 
|    50       script_(script), |    49       script_(script), | 
 |    50       source_stream_(NULL), | 
|    51       osr_ast_id_(BailoutId::None()), |    51       osr_ast_id_(BailoutId::None()), | 
|    52       parameter_count_(0), |    52       parameter_count_(0), | 
|    53       this_has_uses_(true), |    53       this_has_uses_(true), | 
|    54       optimization_id_(-1), |    54       optimization_id_(-1), | 
|    55       ast_value_factory_(NULL), |    55       ast_value_factory_(NULL), | 
|    56       ast_value_factory_owned_(false) { |    56       ast_value_factory_owned_(false) { | 
|    57   Initialize(script->GetIsolate(), BASE, zone); |    57   Initialize(script->GetIsolate(), BASE, zone); | 
|    58 } |    58 } | 
|    59  |    59  | 
|    60  |    60  | 
|    61 CompilationInfo::CompilationInfo(Isolate* isolate, Zone* zone) |    61 CompilationInfo::CompilationInfo(Isolate* isolate, Zone* zone) | 
|    62     : flags_(StrictModeField::encode(SLOPPY)), |    62     : flags_(StrictModeField::encode(SLOPPY)), | 
|    63       script_(Handle<Script>::null()), |    63       script_(Handle<Script>::null()), | 
|    64       osr_ast_id_(BailoutId::None()), |    64       osr_ast_id_(BailoutId::None()), | 
|    65       parameter_count_(0), |    65       parameter_count_(0), | 
|    66       this_has_uses_(true), |    66       this_has_uses_(true), | 
|    67       optimization_id_(-1), |    67       optimization_id_(-1), | 
|    68       ast_value_factory_(NULL), |    68       ast_value_factory_(NULL), | 
|    69       ast_value_factory_owned_(false) { |    69       ast_value_factory_owned_(false) { | 
|    70   Initialize(isolate, STUB, zone); |    70   Initialize(isolate, STUB, zone); | 
|    71 } |    71 } | 
|    72  |    72  | 
|    73  |    73  | 
|    74 CompilationInfo::CompilationInfo(Handle<SharedFunctionInfo> shared_info, |    74 CompilationInfo::CompilationInfo(Handle<SharedFunctionInfo> shared_info, | 
|    75                                  Zone* zone) |    75                                  Zone* zone) | 
|    76     : flags_(StrictModeField::encode(SLOPPY) | IsLazy::encode(true)), |    76     : flags_(StrictModeField::encode(SLOPPY) | IsLazy::encode(true)), | 
|    77       shared_info_(shared_info), |    77       shared_info_(shared_info), | 
|    78       script_(Handle<Script>(Script::cast(shared_info->script()))), |    78       script_(Handle<Script>(Script::cast(shared_info->script()))), | 
 |    79       source_stream_(NULL), | 
|    79       osr_ast_id_(BailoutId::None()), |    80       osr_ast_id_(BailoutId::None()), | 
|    80       parameter_count_(0), |    81       parameter_count_(0), | 
|    81       this_has_uses_(true), |    82       this_has_uses_(true), | 
|    82       optimization_id_(-1), |    83       optimization_id_(-1), | 
|    83       ast_value_factory_(NULL), |    84       ast_value_factory_(NULL), | 
|    84       ast_value_factory_owned_(false) { |    85       ast_value_factory_owned_(false) { | 
|    85   Initialize(script_->GetIsolate(), BASE, zone); |    86   Initialize(script_->GetIsolate(), BASE, zone); | 
|    86 } |    87 } | 
|    87  |    88  | 
|    88  |    89  | 
|    89 CompilationInfo::CompilationInfo(Handle<JSFunction> closure, |    90 CompilationInfo::CompilationInfo(Handle<JSFunction> closure, Zone* zone) | 
|    90                                  Zone* zone) |  | 
|    91     : flags_(StrictModeField::encode(SLOPPY) | IsLazy::encode(true)), |    91     : flags_(StrictModeField::encode(SLOPPY) | IsLazy::encode(true)), | 
|    92       closure_(closure), |    92       closure_(closure), | 
|    93       shared_info_(Handle<SharedFunctionInfo>(closure->shared())), |    93       shared_info_(Handle<SharedFunctionInfo>(closure->shared())), | 
|    94       script_(Handle<Script>(Script::cast(shared_info_->script()))), |    94       script_(Handle<Script>(Script::cast(shared_info_->script()))), | 
 |    95       source_stream_(NULL), | 
|    95       context_(closure->context()), |    96       context_(closure->context()), | 
|    96       osr_ast_id_(BailoutId::None()), |    97       osr_ast_id_(BailoutId::None()), | 
|    97       parameter_count_(0), |    98       parameter_count_(0), | 
|    98       this_has_uses_(true), |    99       this_has_uses_(true), | 
|    99       optimization_id_(-1), |   100       optimization_id_(-1), | 
|   100       ast_value_factory_(NULL), |   101       ast_value_factory_(NULL), | 
|   101       ast_value_factory_owned_(false) { |   102       ast_value_factory_owned_(false) { | 
|   102   Initialize(script_->GetIsolate(), BASE, zone); |   103   Initialize(script_->GetIsolate(), BASE, zone); | 
|   103 } |   104 } | 
|   104  |   105  | 
|   105  |   106  | 
|   106 CompilationInfo::CompilationInfo(HydrogenCodeStub* stub, |   107 CompilationInfo::CompilationInfo(HydrogenCodeStub* stub, Isolate* isolate, | 
|   107                                  Isolate* isolate, |  | 
|   108                                  Zone* zone) |   108                                  Zone* zone) | 
|   109     : flags_(StrictModeField::encode(SLOPPY) | IsLazy::encode(true)), |   109     : flags_(StrictModeField::encode(SLOPPY) | IsLazy::encode(true)), | 
 |   110       source_stream_(NULL), | 
|   110       osr_ast_id_(BailoutId::None()), |   111       osr_ast_id_(BailoutId::None()), | 
|   111       parameter_count_(0), |   112       parameter_count_(0), | 
|   112       this_has_uses_(true), |   113       this_has_uses_(true), | 
|   113       optimization_id_(-1), |   114       optimization_id_(-1), | 
|   114       ast_value_factory_(NULL), |   115       ast_value_factory_(NULL), | 
|   115       ast_value_factory_owned_(false) { |   116       ast_value_factory_owned_(false) { | 
|   116   Initialize(isolate, STUB, zone); |   117   Initialize(isolate, STUB, zone); | 
|   117   code_stub_ = stub; |   118   code_stub_ = stub; | 
|   118 } |   119 } | 
|   119  |   120  | 
|   120  |   121  | 
 |   122 CompilationInfo::CompilationInfo(ExternalSourceStream* stream, Isolate* isolate, | 
 |   123                                  Zone* zone) | 
 |   124     : flags_(StrictModeField::encode(SLOPPY)), | 
 |   125       source_stream_(stream), | 
 |   126       osr_ast_id_(BailoutId::None()), | 
 |   127       parameter_count_(0), | 
 |   128       this_has_uses_(true), | 
 |   129       optimization_id_(-1), | 
 |   130       ast_value_factory_(NULL), | 
 |   131       ast_value_factory_owned_(false) { | 
 |   132   Initialize(isolate, BASE, zone); | 
 |   133 } | 
 |   134  | 
 |   135  | 
|   121 void CompilationInfo::Initialize(Isolate* isolate, |   136 void CompilationInfo::Initialize(Isolate* isolate, | 
|   122                                  Mode mode, |   137                                  Mode mode, | 
|   123                                  Zone* zone) { |   138                                  Zone* zone) { | 
|   124   isolate_ = isolate; |   139   isolate_ = isolate; | 
|   125   function_ = NULL; |   140   function_ = NULL; | 
|   126   scope_ = NULL; |   141   scope_ = NULL; | 
|   127   global_scope_ = NULL; |   142   global_scope_ = NULL; | 
|   128   extension_ = NULL; |   143   extension_ = NULL; | 
|   129   cached_data_ = NULL; |   144   cached_data_ = NULL; | 
|   130   compile_options_ = ScriptCompiler::kNoCompileOptions; |   145   compile_options_ = ScriptCompiler::kNoCompileOptions; | 
|   131   zone_ = zone; |   146   zone_ = zone; | 
|   132   deferred_handles_ = NULL; |   147   deferred_handles_ = NULL; | 
|   133   code_stub_ = NULL; |   148   code_stub_ = NULL; | 
|   134   prologue_offset_ = Code::kPrologueOffsetNotSet; |   149   prologue_offset_ = Code::kPrologueOffsetNotSet; | 
|   135   opt_count_ = shared_info().is_null() ? 0 : shared_info()->opt_count(); |   150   opt_count_ = shared_info().is_null() ? 0 : shared_info()->opt_count(); | 
|   136   no_frame_ranges_ = isolate->cpu_profiler()->is_profiling() |   151   no_frame_ranges_ = isolate->cpu_profiler()->is_profiling() | 
|   137                    ? new List<OffsetRange>(2) : NULL; |   152                    ? new List<OffsetRange>(2) : NULL; | 
|   138   for (int i = 0; i < DependentCode::kGroupCount; i++) { |   153   for (int i = 0; i < DependentCode::kGroupCount; i++) { | 
|   139     dependencies_[i] = NULL; |   154     dependencies_[i] = NULL; | 
|   140   } |   155   } | 
|   141   if (mode == STUB) { |   156   if (mode == STUB) { | 
|   142     mode_ = STUB; |   157     mode_ = STUB; | 
|   143     return; |   158     return; | 
|   144   } |   159   } | 
|   145   mode_ = mode; |   160   mode_ = mode; | 
|   146   abort_due_to_dependency_ = false; |   161   abort_due_to_dependency_ = false; | 
|   147   if (script_->type()->value() == Script::TYPE_NATIVE) MarkAsNative(); |   162   if (!script_.is_null() && script_->type()->value() == Script::TYPE_NATIVE) { | 
 |   163     MarkAsNative(); | 
 |   164   } | 
|   148   if (isolate_->debug()->is_active()) MarkAsDebug(); |   165   if (isolate_->debug()->is_active()) MarkAsDebug(); | 
|   149  |   166  | 
|   150   if (!shared_info_.is_null()) { |   167   if (!shared_info_.is_null()) { | 
|   151     DCHECK(strict_mode() == SLOPPY); |   168     DCHECK(strict_mode() == SLOPPY); | 
|   152     SetStrictMode(shared_info_->strict_mode()); |   169     SetStrictMode(shared_info_->strict_mode()); | 
|   153   } |   170   } | 
|   154   set_bailout_reason(kUnknown); |   171   set_bailout_reason(kUnknown); | 
|   155  |   172  | 
|   156   if (!shared_info().is_null() && shared_info()->is_compiled()) { |   173   if (!shared_info().is_null() && shared_info()->is_compiled()) { | 
|   157     // We should initialize the CompilationInfo feedback vector from the |   174     // We should initialize the CompilationInfo feedback vector from the | 
| (...skipping 648 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   806   if (!CompileUnoptimizedCode(&info)) return; |   823   if (!CompileUnoptimizedCode(&info)) return; | 
|   807   if (!info.shared_info().is_null()) { |   824   if (!info.shared_info().is_null()) { | 
|   808     Handle<ScopeInfo> scope_info = ScopeInfo::Create(info.scope(), |   825     Handle<ScopeInfo> scope_info = ScopeInfo::Create(info.scope(), | 
|   809                                                      info.zone()); |   826                                                      info.zone()); | 
|   810     info.shared_info()->set_scope_info(*scope_info); |   827     info.shared_info()->set_scope_info(*scope_info); | 
|   811   } |   828   } | 
|   812   tracker.RecordRootFunctionInfo(info.code()); |   829   tracker.RecordRootFunctionInfo(info.code()); | 
|   813 } |   830 } | 
|   814  |   831  | 
|   815  |   832  | 
|   816 static bool DebuggerWantsEagerCompilation(CompilationInfo* info, |  | 
|   817                                           bool allow_lazy_without_ctx = false) { |  | 
|   818   return LiveEditFunctionTracker::IsActive(info->isolate()) || |  | 
|   819          (info->isolate()->DebuggerHasBreakPoints() && !allow_lazy_without_ctx); |  | 
|   820 } |  | 
|   821  |  | 
|   822  |  | 
|   823 static Handle<SharedFunctionInfo> CompileToplevel(CompilationInfo* info) { |   833 static Handle<SharedFunctionInfo> CompileToplevel(CompilationInfo* info) { | 
|   824   Isolate* isolate = info->isolate(); |   834   Isolate* isolate = info->isolate(); | 
|   825   PostponeInterruptsScope postpone(isolate); |   835   PostponeInterruptsScope postpone(isolate); | 
|   826   DCHECK(!isolate->native_context().is_null()); |   836   DCHECK(!isolate->native_context().is_null()); | 
|   827   Handle<Script> script = info->script(); |   837   Handle<Script> script = info->script(); | 
|   828  |   838  | 
|   829   // TODO(svenpanne) Obscure place for this, perhaps move to OnBeforeCompile? |   839   // TODO(svenpanne) Obscure place for this, perhaps move to OnBeforeCompile? | 
|   830   FixedArray* array = isolate->native_context()->embedder_data(); |   840   FixedArray* array = isolate->native_context()->embedder_data(); | 
|   831   script->set_context_data(array->get(0)); |   841   script->set_context_data(array->get(0)); | 
|   832  |   842  | 
|   833   isolate->debug()->OnBeforeCompile(script); |   843   isolate->debug()->OnBeforeCompile(script); | 
|   834  |   844  | 
|   835   DCHECK(info->is_eval() || info->is_global()); |   845   DCHECK(info->is_eval() || info->is_global()); | 
|   836  |   846  | 
|   837   bool parse_allow_lazy = |  | 
|   838       (info->compile_options() == ScriptCompiler::kConsumeParserCache || |  | 
|   839        String::cast(script->source())->length() > FLAG_min_preparse_length) && |  | 
|   840       !DebuggerWantsEagerCompilation(info); |  | 
|   841  |  | 
|   842   if (!parse_allow_lazy && |  | 
|   843       (info->compile_options() == ScriptCompiler::kProduceParserCache || |  | 
|   844        info->compile_options() == ScriptCompiler::kConsumeParserCache)) { |  | 
|   845     // We are going to parse eagerly, but we either 1) have cached data produced |  | 
|   846     // by lazy parsing or 2) are asked to generate cached data. We cannot use |  | 
|   847     // the existing data, since it won't contain all the symbols we need for |  | 
|   848     // eager parsing. In addition, it doesn't make sense to produce the data |  | 
|   849     // when parsing eagerly. That data would contain all symbols, but no |  | 
|   850     // functions, so it cannot be used to aid lazy parsing later. |  | 
|   851     info->SetCachedData(NULL, ScriptCompiler::kNoCompileOptions); |  | 
|   852   } |  | 
|   853  |  | 
|   854   Handle<SharedFunctionInfo> result; |   847   Handle<SharedFunctionInfo> result; | 
|   855  |   848  | 
|   856   { VMState<COMPILER> state(info->isolate()); |   849   { VMState<COMPILER> state(info->isolate()); | 
|   857     if (!Parser::Parse(info, parse_allow_lazy)) { |   850     if (info->function() == NULL) { | 
|   858       return Handle<SharedFunctionInfo>::null(); |   851       // Parse the script if needed (if it's already parsed, function() returns | 
 |   852       // non-NULL. | 
 |   853       bool parse_allow_lazy = | 
 |   854           (info->compile_options() == ScriptCompiler::kConsumeParserCache || | 
 |   855            String::cast(script->source())->length() > | 
 |   856                FLAG_min_preparse_length) && | 
 |   857           !Compiler::DebuggerWantsEagerCompilation(info); | 
 |   858  | 
 |   859       if (!parse_allow_lazy && | 
 |   860           (info->compile_options() == ScriptCompiler::kProduceParserCache || | 
 |   861            info->compile_options() == ScriptCompiler::kConsumeParserCache)) { | 
 |   862         // We are going to parse eagerly, but we either 1) have cached data | 
 |   863         // produced | 
 |   864         // by lazy parsing or 2) are asked to generate cached data. We cannot | 
 |   865         // use | 
 |   866         // the existing data, since it won't contain all the symbols we need for | 
 |   867         // eager parsing. In addition, it doesn't make sense to produce the data | 
 |   868         // when parsing eagerly. That data would contain all symbols, but no | 
 |   869         // functions, so it cannot be used to aid lazy parsing later. | 
 |   870         info->SetCachedData(NULL, ScriptCompiler::kNoCompileOptions); | 
 |   871       } | 
 |   872       if (!Parser::Parse(info, parse_allow_lazy)) { | 
 |   873         return Handle<SharedFunctionInfo>::null(); | 
 |   874       } | 
|   859     } |   875     } | 
|   860  |   876  | 
|   861     FunctionLiteral* lit = info->function(); |   877     FunctionLiteral* lit = info->function(); | 
|   862     LiveEditFunctionTracker live_edit_tracker(isolate, lit); |   878     LiveEditFunctionTracker live_edit_tracker(isolate, lit); | 
|   863  |   879  | 
|   864     // Measure how long it takes to do the compilation; only take the |   880     // Measure how long it takes to do the compilation; only take the | 
|   865     // rest of the function into account to avoid overlap with the |   881     // rest of the function into account to avoid overlap with the | 
|   866     // parsing statistics. |   882     // parsing statistics. | 
|   867     HistogramTimer* rate = info->is_eval() |   883     HistogramTimer* rate = info->is_eval() | 
|   868           ? info->isolate()->counters()->compile_eval() |   884           ? info->isolate()->counters()->compile_eval() | 
| (...skipping 26 matching lines...) Expand all  Loading... | 
|   895     PROFILE(isolate, CodeCreateEvent( |   911     PROFILE(isolate, CodeCreateEvent( | 
|   896                 log_tag, *info->code(), *result, info, *script_name)); |   912                 log_tag, *info->code(), *result, info, *script_name)); | 
|   897     GDBJIT(AddCode(script_name, script, info->code(), info)); |   913     GDBJIT(AddCode(script_name, script, info->code(), info)); | 
|   898  |   914  | 
|   899     // Hint to the runtime system used when allocating space for initial |   915     // Hint to the runtime system used when allocating space for initial | 
|   900     // property space by setting the expected number of properties for |   916     // property space by setting the expected number of properties for | 
|   901     // the instances of the function. |   917     // the instances of the function. | 
|   902     SetExpectedNofPropertiesFromEstimate(result, |   918     SetExpectedNofPropertiesFromEstimate(result, | 
|   903                                          lit->expected_property_count()); |   919                                          lit->expected_property_count()); | 
|   904  |   920  | 
|   905     script->set_compilation_state(Script::COMPILATION_STATE_COMPILED); |   921     if (!script.is_null()) | 
 |   922       script->set_compilation_state(Script::COMPILATION_STATE_COMPILED); | 
|   906  |   923  | 
|   907     live_edit_tracker.RecordFunctionInfo(result, lit, info->zone()); |   924     live_edit_tracker.RecordFunctionInfo(result, lit, info->zone()); | 
|   908   } |   925   } | 
|   909  |   926  | 
|   910   isolate->debug()->OnAfterCompile(script); |   927   isolate->debug()->OnAfterCompile(script); | 
|   911  |   928  | 
|   912   return result; |   929   return result; | 
|   913 } |   930 } | 
|   914  |   931  | 
|   915  |   932  | 
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1052     } |  1069     } | 
|  1053  |  1070  | 
|  1054     if (result.is_null()) isolate->ReportPendingMessages(); |  1071     if (result.is_null()) isolate->ReportPendingMessages(); | 
|  1055   } else if (result->ic_age() != isolate->heap()->global_ic_age()) { |  1072   } else if (result->ic_age() != isolate->heap()->global_ic_age()) { | 
|  1056     result->ResetForNewContext(isolate->heap()->global_ic_age()); |  1073     result->ResetForNewContext(isolate->heap()->global_ic_age()); | 
|  1057   } |  1074   } | 
|  1058   return result; |  1075   return result; | 
|  1059 } |  1076 } | 
|  1060  |  1077  | 
|  1061  |  1078  | 
 |  1079 Handle<SharedFunctionInfo> Compiler::CompileStreamedScript( | 
 |  1080     CompilationInfo* info, int source_length) { | 
 |  1081   Isolate* isolate = info->isolate(); | 
 |  1082   isolate->counters()->total_load_size()->Increment(source_length); | 
 |  1083   isolate->counters()->total_compile_size()->Increment(source_length); | 
 |  1084  | 
 |  1085   // TODO(marja): FLAG_use_strict is not honoured and won't be; when the real | 
 |  1086   // code caching lands, streaming needs to be adapted to use it. | 
 |  1087  | 
 |  1088   if (FLAG_use_strict) info->SetStrictMode(STRICT); | 
 |  1089  | 
 |  1090   Handle<SharedFunctionInfo> result = CompileToplevel(info); | 
 |  1091  | 
 |  1092   if (result.is_null()) isolate->ReportPendingMessages(); | 
 |  1093   return result; | 
 |  1094 } | 
 |  1095  | 
 |  1096  | 
|  1062 Handle<SharedFunctionInfo> Compiler::BuildFunctionInfo( |  1097 Handle<SharedFunctionInfo> Compiler::BuildFunctionInfo( | 
|  1063     FunctionLiteral* literal, Handle<Script> script, |  1098     FunctionLiteral* literal, Handle<Script> script, | 
|  1064     CompilationInfo* outer_info) { |  1099     CompilationInfo* outer_info) { | 
|  1065   // Precondition: code has been parsed and scopes have been analyzed. |  1100   // Precondition: code has been parsed and scopes have been analyzed. | 
|  1066   CompilationInfoWithZone info(script); |  1101   CompilationInfoWithZone info(script); | 
|  1067   info.SetFunction(literal); |  1102   info.SetFunction(literal); | 
|  1068   info.PrepareForCompilation(literal->scope()); |  1103   info.PrepareForCompilation(literal->scope()); | 
|  1069   info.SetStrictMode(literal->scope()->strict_mode()); |  1104   info.SetStrictMode(literal->scope()->strict_mode()); | 
|  1070   if (outer_info->will_serialize()) info.PrepareForSerializing(); |  1105   if (outer_info->will_serialize()) info.PrepareForSerializing(); | 
|  1071  |  1106  | 
| (...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1351         log_tag, *code, *shared, info, script_name, line_num, column_num)); |  1386         log_tag, *code, *shared, info, script_name, line_num, column_num)); | 
|  1352   } |  1387   } | 
|  1353  |  1388  | 
|  1354   GDBJIT(AddCode(Handle<String>(shared->DebugName()), |  1389   GDBJIT(AddCode(Handle<String>(shared->DebugName()), | 
|  1355                  Handle<Script>(info->script()), |  1390                  Handle<Script>(info->script()), | 
|  1356                  Handle<Code>(info->code()), |  1391                  Handle<Code>(info->code()), | 
|  1357                  info)); |  1392                  info)); | 
|  1358 } |  1393 } | 
|  1359  |  1394  | 
|  1360  |  1395  | 
 |  1396 bool Compiler::DebuggerWantsEagerCompilation(CompilationInfo* info, | 
 |  1397                                              bool allow_lazy_without_ctx) { | 
 |  1398   return LiveEditFunctionTracker::IsActive(info->isolate()) || | 
 |  1399          (info->isolate()->DebuggerHasBreakPoints() && !allow_lazy_without_ctx); | 
 |  1400 } | 
 |  1401  | 
 |  1402  | 
|  1361 CompilationPhase::CompilationPhase(const char* name, CompilationInfo* info) |  1403 CompilationPhase::CompilationPhase(const char* name, CompilationInfo* info) | 
|  1362     : name_(name), info_(info), zone_(info->isolate()) { |  1404     : name_(name), info_(info), zone_(info->isolate()) { | 
|  1363   if (FLAG_hydrogen_stats) { |  1405   if (FLAG_hydrogen_stats) { | 
|  1364     info_zone_start_allocation_size_ = info->zone()->allocation_size(); |  1406     info_zone_start_allocation_size_ = info->zone()->allocation_size(); | 
|  1365     timer_.Start(); |  1407     timer_.Start(); | 
|  1366   } |  1408   } | 
|  1367 } |  1409 } | 
|  1368  |  1410  | 
|  1369  |  1411  | 
|  1370 CompilationPhase::~CompilationPhase() { |  1412 CompilationPhase::~CompilationPhase() { | 
| (...skipping 11 matching lines...) Expand all  Loading... | 
|  1382   AllowHandleDereference allow_deref; |  1424   AllowHandleDereference allow_deref; | 
|  1383   bool tracing_on = info()->IsStub() |  1425   bool tracing_on = info()->IsStub() | 
|  1384       ? FLAG_trace_hydrogen_stubs |  1426       ? FLAG_trace_hydrogen_stubs | 
|  1385       : (FLAG_trace_hydrogen && |  1427       : (FLAG_trace_hydrogen && | 
|  1386          info()->closure()->PassesFilter(FLAG_trace_hydrogen_filter)); |  1428          info()->closure()->PassesFilter(FLAG_trace_hydrogen_filter)); | 
|  1387   return (tracing_on && |  1429   return (tracing_on && | 
|  1388       base::OS::StrChr(const_cast<char*>(FLAG_trace_phase), name_[0]) != NULL); |  1430       base::OS::StrChr(const_cast<char*>(FLAG_trace_phase), name_[0]) != NULL); | 
|  1389 } |  1431 } | 
|  1390  |  1432  | 
|  1391 } }  // namespace v8::internal |  1433 } }  // namespace v8::internal | 
| OLD | NEW |