Lines Matching defs:info
272 Handle<JSFunction> function = info()->closure();
310 static bool MakeCrankshaftCode(CompilationInfo* info) {
311 RecompileJob job(info);
329 explicit HOptimizedGraphBuilderWithPositions(CompilationInfo* info)
330 : HOptimizedGraphBuilder(info) {
366 ASSERT(info()->IsOptimizing());
367 ASSERT(!info()->IsCompilingForDebugging());
371 ASSERT(info()->shared_info()->code()->kind() == Code::FUNCTION);
374 // shared function info.
375 ASSERT(!info()->shared_info()->optimization_disabled());
381 info()->AbortOptimization();
389 if (info()->opt_count() > kMaxOptCount) {
390 info()->set_bailout_reason(kOptimizedTooManyTimes);
402 Scope* scope = info()->scope();
404 info()->set_bailout_reason(kTooManyParameters);
409 if (info()->is_osr() &&
411 info()->set_bailout_reason(kTooManyParametersLocals);
416 if (!info()->closure()->PassesFilter(FLAG_hydrogen_filter)) {
417 info()->AbortOptimization();
425 bool should_recompile = !info()->shared_info()->has_deoptimization_support();
431 CompilationInfoWithZone unoptimized(info()->shared_info());
434 unoptimized.SetFunction(info()->function());
435 unoptimized.SetScope(info()->scope());
436 unoptimized.SetContext(info()->context());
441 Handle<SharedFunctionInfo> shared = info()->shared_info();
457 ASSERT(FLAG_always_opt || info()->shared_info()->code()->optimizable());
458 ASSERT(info()->shared_info()->has_deoptimization_support());
461 Handle<String> name = info()->function()->debug_name();
464 isolate()->GetHTracer()->TraceCompilation(info());
468 AstTyper::Run(info());
471 ? new(info()->zone()) HOptimizedGraphBuilderWithPositions(info())
472 : new(info()->zone()) HOptimizedGraphBuilder(info());
478 info()->SetCode(Handle<Code>::null());
495 if (info()->HasAbortedDueToDependencyChange()) {
530 ASSERT(!info()->HasAbortedDueToDependencyChange());
543 if (info()->bailout_reason() == kNoReason) {
544 info()->set_bailout_reason(kCodeGenerationFailed);
548 info()->SetCode(optimized_code);
552 info()->context()->native_context()->AddOptimizedCode(*info()->code());
557 static bool GenerateCode(CompilationInfo* info) {
558 bool is_optimizing = info->isolate()->use_crankshaft() &&
559 !info->IsCompilingForDebugging() &&
560 info->IsOptimizing();
563 info->isolate(), Logger::TimerEventScope::v8_recompile_synchronous);
564 return MakeCrankshaftCode(info);
566 if (info->IsOptimizing()) {
569 info->DisableOptimization();
572 info->isolate(), Logger::TimerEventScope::v8_compile_full_code);
573 return FullCodeGenerator::MakeCode(info);
578 static bool MakeCode(CompilationInfo* info) {
580 // the compilation info is set if compilation succeeded.
581 ASSERT(info->function() != NULL);
582 return Rewriter::Rewrite(info) && Scope::Analyze(info) && GenerateCode(info);
587 bool Compiler::MakeCodeForLiveEdit(CompilationInfo* info) {
589 // the compilation info is set if compilation succeeded.
590 bool succeeded = MakeCode(info);
591 if (!info->shared_info().is_null()) {
592 Handle<ScopeInfo> scope_info = ScopeInfo::Create(info->scope(),
593 info->zone());
594 info->shared_info()->set_scope_info(*scope_info);
601 static bool DebuggerWantsEagerCompilation(CompilationInfo* info,
603 return LiveEditFunctionTracker::IsActive(info->isolate()) ||
604 (info->isolate()->DebuggerHasBreakPoints() && !allow_lazy_without_ctx);
635 static Handle<SharedFunctionInfo> MakeFunctionInfo(CompilationInfo* info) {
636 Isolate* isolate = info->isolate();
640 Handle<Script> script = info->script();
646 if (info->is_eval()) {
650 if (info->is_eval()) {
667 ASSERT(info->is_eval() || info->is_global());
669 Parser parser(info);
670 if ((info->pre_parse_data() != NULL ||
672 !DebuggerWantsEagerCompilation(info))
679 FunctionLiteral* lit = info->function();
686 HistogramTimer* rate = info->is_eval()
687 ? info->isolate()->counters()->compile_eval()
688 : info->isolate()->counters()->compile();
692 if (!MakeCode(info)) {
698 ASSERT(!info->code().is_null());
704 info->code(),
705 ScopeInfo::Create(info->scope(), info->zone()));
712 info->is_eval()
715 *info->code(),
717 info,
721 info->code(),
722 info));
725 info->is_eval()
728 *info->code(),
730 info,
732 GDBJIT(AddCode(Handle<String>(), script, info->code(), info));
750 live_edit_tracker.RecordFunctionInfo(result, lit, info->zone());
813 CompilationInfoWithZone info(script);
814 info.MarkAsGlobal();
815 info.SetExtension(extension);
816 info.SetPreParseData(pre_data);
817 info.SetContext(context);
819 info.SetLanguageMode(FLAG_harmony_scoping ? EXTENDED_MODE : STRICT_MODE);
821 result = MakeFunctionInfo(&info);
863 CompilationInfoWithZone info(script);
864 info.MarkAsEval();
865 if (is_global) info.MarkAsGlobal();
866 info.SetLanguageMode(language_mode);
867 info.SetParseRestriction(restriction);
868 info.SetContext(context);
869 result = MakeFunctionInfo(&info);
898 static bool InstallFullCode(CompilationInfo* info) {
899 // Update the shared function info with the compiled code and the
900 // scope info. Please note, that the order of the shared function
901 // info initialization is important since set_scope_info might
904 Handle<SharedFunctionInfo> shared = info->shared_info();
905 Handle<Code> code = info->code();
907 Handle<JSFunction> function = info->closure();
909 ScopeInfo::Create(info->scope(), info->zone());
918 FunctionLiteral* lit = info->function();
928 if (info->isolate()->use_crankshaft() &&
935 !info->isolate()->DebuggerHasBreakPoints()) {
945 static void InstallCodeCommon(CompilationInfo* info) {
946 Handle<SharedFunctionInfo> shared = info->shared_info();
947 Handle<Code> code = info->code();
951 // function info, e.g., we might have flushed the code and must
959 Compiler::RecordFunctionCompilation(Logger::LAZY_COMPILE_TAG, info, shared);
963 static void InsertCodeIntoOptimizedCodeMap(CompilationInfo* info) {
964 Handle<Code> code = info->code();
968 if (FLAG_cache_optimized_code && !info->is_osr()) {
969 Handle<JSFunction> function = info->closure();
979 static bool InstallCodeFromOptimizedCodeMap(CompilationInfo* info) {
980 if (!info->IsOptimizing()) return false; // Nothing to look up.
983 if (FLAG_cache_optimized_code && !info->is_osr()) {
984 Handle<SharedFunctionInfo> shared = info->shared_info();
985 Handle<JSFunction> function = info->closure();
1004 bool Compiler::CompileLazy(CompilationInfo* info) {
1005 Isolate* isolate = info->isolate();
1012 Handle<SharedFunctionInfo> shared = info->shared_info();
1016 if (InstallCodeFromOptimizedCodeMap(info)) return true;
1019 if (Parser::Parse(info)) {
1026 LanguageMode language_mode = info->function()->language_mode();
1027 info->SetLanguageMode(language_mode);
1031 if (!MakeCode(info)) {
1036 InstallCodeCommon(info);
1038 if (info->IsOptimizing()) {
1040 Handle<Code> code = info->code();
1043 info->closure()->ReplaceCode(*code);
1044 InsertCodeIntoOptimizedCodeMap(info);
1046 } else if (!info->is_osr()) {
1048 return InstallFullCode(info);
1053 ASSERT(info->code().is_null());
1077 SmartPointer<CompilationInfo> info(new CompilationInfoWithZone(closure));
1078 Handle<SharedFunctionInfo> shared = info->shared_info();
1084 info->SetOptimizing(osr_ast_id);
1085 info->set_osr_pc_offset(osr_pc_offset);
1093 info->SetOptimizing(BailoutId::None());
1103 CompilationHandleScope handle_scope(*info);
1105 if (!compiling_for_osr && InstallCodeFromOptimizedCodeMap(*info)) {
1109 if (Parser::Parse(*info)) {
1110 LanguageMode language_mode = info->function()->language_mode();
1111 info->SetLanguageMode(language_mode);
1113 info->SaveHandles();
1115 if (Rewriter::Rewrite(*info) && Scope::Analyze(*info)) {
1116 RecompileJob* job = new(info->zone()) RecompileJob(*info);
1119 info.Detach();
1126 InstallFullCode(*info);
1138 SmartPointer<CompilationInfo> info(job->info());
1141 if (info->shared_info()->optimization_disabled()) {
1142 info->AbortOptimization();
1143 InstallFullCode(*info);
1146 info->closure()->PrintName();
1149 ASSERT(!info->closure()->IsInRecompileQueue());
1153 Isolate* isolate = info->isolate();
1160 if (info->HasAbortedDueToDependencyChange()) {
1161 info->set_bailout_reason(kBailedOutDueToDependencyChange);
1164 info->set_bailout_reason(kFailedBailedOutLastTime);
1167 info->set_bailout_reason(kDebuggerIsActive);
1175 InstallCodeCommon(*info);
1177 Handle<Code> code = info->code();
1178 ASSERT(info->shared_info()->scope_info() != ScopeInfo::Empty(isolate));
1179 info->closure()->ReplaceCode(*code);
1180 if (info->shared_info()->SearchOptimizedCodeMap(
1181 info->closure()->context()->native_context()) == -1) {
1182 InsertCodeIntoOptimizedCodeMap(*info);
1186 info->closure()->PrintName();
1190 info->AbortOptimization();
1191 InstallFullCode(*info);
1195 info->shared_info()->code()->set_profiler_ticks(0);
1196 ASSERT(!info->closure()->IsInRecompileQueue());
1197 return (status == RecompileJob::SUCCEEDED) ? info->code()
1205 CompilationInfoWithZone info(script);
1206 info.SetFunction(literal);
1207 info.SetScope(literal->scope());
1208 info.SetLanguageMode(literal->scope()->language_mode());
1210 Isolate* isolate = info.isolate();
1224 !DebuggerWantsEagerCompilation(&info, allow_lazy_without_ctx);
1231 info.SetCode(code);
1232 } else if (GenerateCode(&info)) {
1233 ASSERT(!info.code().is_null());
1234 scope_info = ScopeInfo::Create(info.scope(), info.zone());
1239 // Create a shared function info object.
1244 info.code(),
1247 RecordFunctionCompilation(Logger::FUNCTION_TAG, &info, result);
1255 live_edit_tracker.RecordFunctionInfo(result, literal, info.zone());
1260 // Sets the function info on a function.
1294 CompilationInfo* info,
1302 if (info
1303 info->isolate()->cpu_profiler()->is_profiling()) {
1304 Handle<Script> script = info->script();
1305 Handle<Code> code = info->code();
1306 if (*code == info->isolate()->builtins()->builtin(Builtins::kLazyCompile))
1313 PROFILE(info->isolate(),
1317 info,
1322 PROFILE(info->isolate(),
1326 info,
1327 info->isolate()->heap()->empty_string(),
1334 Handle<Script>(info->script()),
1335 Handle<Code>(info->code()),
1336 info));
1340 CompilationPhase::CompilationPhase(const char* name, CompilationInfo* info)
1341 : name_(name), info_(info), zone_(info->isolate()) {
1343 info_zone_start_allocation_size_ = info->zone()->allocation_size();
1362 bool tracing_on = info()->IsStub()
1365 info()->closure()->PassesFilter(FLAG_trace_hydrogen_filter));