Lines Matching refs:function
8 #include "include/v8-function.h"
31 #include "src/objects/js-function-inl.h"
86 bool IsAsmWasmFunction(Isolate* isolate, JSFunction function) {
91 return function.shared().HasAsmWasmData() ||
92 function.code().builtin_id() == Builtin::kInstantiateAsmJs;
152 Handle<JSFunction> function = Handle<JSFunction>::cast(function_object);
154 if (function->HasAttachedOptimizedCode()) {
155 Deoptimizer::DeoptimizeFunction(*function);
165 Handle<JSFunction> function;
167 // Find the JavaScript function on the top of the stack.
169 if (!it.done()) function = handle(it.frame()->function(), isolate);
170 if (function.is_null()) return CrashUnlessFuzzing(isolate);
172 if (function->HasAttachedOptimizedCode()) {
173 Deoptimizer::DeoptimizeFunction(*function);
225 bool CanOptimizeFunction(Handle<JSFunction> function, Isolate* isolate,
230 Handle<JSFunction> function, Isolate* isolate,
235 if (!function->shared().allows_lazy_compilation()) {
239 // If function isn't compiled, compile it now.
241 !Compiler::Compile(isolate, function, Compiler::CLEAR_EXCEPTION,
248 if (function->shared().optimization_disabled() &&
249 function->shared().disabled_optimization_reason() ==
254 if (IsAsmWasmFunction(isolate, *function)) {
259 PendingOptimizationTable::MarkedForOptimization(isolate, function);
263 if (function->HasAvailableOptimizedCode() ||
264 function->HasAvailableCodeKind(kind)) {
265 DCHECK(function->HasAttachedOptimizedCode() ||
266 function->ChecksTieringState());
268 PendingOptimizationTable::FunctionWasOptimized(isolate, function);
278 bool CanOptimizeFunction<CodeKind::MAGLEV>(Handle<JSFunction> function,
283 CHECK(!IsAsmWasmFunction(isolate, *function));
288 return function->GetActiveTier() < CodeKind::MAGLEV;
299 Handle<JSFunction> function = Handle<JSFunction>::cast(function_object);
304 function->shared().is_compiled_scope(isolate));
305 if (!CanOptimizeFunction<kCodeKind>(function, isolate, &is_compiled_scope)) {
320 // This function may not have been lazily compiled yet, even though its shared
321 // function has.
322 if (!function->is_compiled()) {
323 DCHECK(function->shared().HasBytecodeArray());
325 if (function->shared().HasBaselineCode()) {
326 codet = function->shared().baseline_code(kAcquireLoad);
328 function->set_code(codet);
331 TraceManualRecompile(*function, kCodeKind, concurrency_mode);
332 JSFunction::EnsureFeedbackVector(isolate, function, &is_compiled_scope);
333 function->MarkForOptimization(isolate, CodeKind::TURBOFAN, concurrency_mode);
338 bool EnsureFeedbackVector(Isolate* isolate, Handle<JSFunction> function) {
339 // Check function allows lazy compilation.
340 if (!function->shared().allows_lazy_compilation()) return false;
342 if (function->has_feedback_vector()) return true;
344 // If function isn't compiled, compile it now.
346 function->shared().is_compiled_scope(function->GetIsolate()));
352 !function->is_compiled() && !function->has_closure_feedback_cell_array();
354 !Compiler::Compile(isolate, function, Compiler::CLEAR_EXCEPTION,
359 // Ensure function has a feedback vector to hold type feedback for
361 JSFunction::EnsureFeedbackVector(isolate, function, &is_compiled_scope);
374 Handle<JSFunction> function = Handle<JSFunction>::cast(function_object);
377 function->shared(isolate).is_compiled_scope(isolate);
379 if (!function->shared(isolate).IsUserJavaScript()) {
385 !Compiler::Compile(isolate, function, Compiler::CLEAR_EXCEPTION,
390 if (!Compiler::CompileBaseline(isolate, function, Compiler::CLEAR_EXCEPTION,
395 return *function;
398 // TODO(v8:7700): Remove this function once we no longer need it to measure
405 Handle<JSFunction> function = args.at<JSFunction>(0);
411 codet = Maglev::Compile(isolate, function).ToHandleChecked();
414 Maglev::Compile(isolate, function);
419 function->set_code(*codet);
433 Handle<JSFunction> function = args.at<JSFunction>(0);
434 return isolate->heap()->ToBoolean(function->ActiveTierIsMaglev());
441 Handle<JSFunction> function = args.at<JSFunction>(0);
446 function->shared().is_compiled_scope(isolate));
447 if (!CanOptimizeFunction<kCodeKind>(function, isolate, &is_compiled_scope)) {
451 DCHECK(function->is_compiled());
456 TraceManualRecompile(*function, kCodeKind, concurrency_mode);
457 JSFunction::EnsureFeedbackVector(isolate, function, &is_compiled_scope);
458 function->MarkForOptimization(isolate, kCodeKind, concurrency_mode);
478 Handle<JSFunction> function = args.at<JSFunction>(0);
479 EnsureFeedbackVector(isolate, function);
488 Handle<JSFunction> function = args.at<JSFunction>(0);
501 if (!EnsureFeedbackVector(isolate, function)) {
505 // If optimization is disabled for the function, return without making it
507 if (function->shared().optimization_disabled() &&
508 function->shared().disabled_optimization_reason() ==
513 if (IsAsmWasmFunction(isolate, *function)) return CrashUnlessFuzzing(isolate);
519 isolate, function, allow_heuristic_optimization);
570 Handle<JSFunction> function;
579 // Find the JavaScript function on the top of the stack.
582 if (!it.done()) function = handle(it.frame()->function(), isolate);
583 if (function.is_null()) return CrashUnlessFuzzing(isolate);
589 if (!function->shared().allows_lazy_compilation()) {
593 if (function->shared().optimization_disabled() &&
594 function->shared().disabled_optimization_reason() ==
600 PendingOptimizationTable::MarkedForOptimization(isolate, function);
603 if (function->HasAvailableOptimizedCode()) {
604 DCHECK(function->HasAttachedOptimizedCode() ||
605 function->ChecksTieringState());
606 // If function is already optimized, remove the bytecode array from the
609 PendingOptimizationTable::FunctionWasOptimized(isolate, function);
619 // Ensure that the function is marked for non-concurrent optimization, so that
624 function->ShortPrint(scope.file());
628 function->shared().is_compiled_scope(isolate));
629 JSFunction::EnsureFeedbackVector(isolate, function, &is_compiled_scope);
630 function->MarkForOptimization(isolate, CodeKind::TURBOFAN,
633 isolate->tiering_manager()->RequestOsrAtNextOpportunity(*function);
655 // queue more than one OSR job for each function).
660 isolate, function, osr_offset, UnoptimizedFrame::cast(it.frame()),
676 // Find the JavaScript function on the top of the stack.
678 Handle<JSFunction> function = handle(it.frame()->function(), isolate);
679 if (function.is_null()) return CrashUnlessFuzzing(isolate);
688 function->shared().is_compiled_scope(isolate));
689 Compiler::CompileBaseline(isolate, function, Compiler::CLEAR_EXCEPTION,
700 Handle<JSFunction> function = Handle<JSFunction>::cast(function_object);
701 Handle<SharedFunctionInfo> sfi(function->shared(), isolate);
742 Handle<JSFunction> function = Handle<JSFunction>::cast(function_object);
745 switch (function->tiering_state()) {
763 if (function->HasAttachedOptimizedCode()) {
764 CodeT code = function->code();
776 if (function->HasAttachedCodeKind(CodeKind::BASELINE)) {
779 if (function->ActiveTierIsIgnition()) {
788 if (it.frame()->function() == *function) {
882 Handle<JSFunction> function = args.at<JSFunction>(0);
883 function->ClearTypeFeedbackInfo();
1195 // Get the function and make sure it is compiled.