Index: src/compiler.cc |
diff --git a/src/compiler.cc b/src/compiler.cc |
index ce7a43c5412d8c32ad3584489271540741c396ef..82412a3b16a0b5ba30672d08adbab1dc805e0f20 100644 |
--- a/src/compiler.cc |
+++ b/src/compiler.cc |
@@ -276,6 +276,18 @@ Code::Flags CompilationInfo::flags() const { |
} |
+// Primitive functions are unlikely to be picked up by the stack-walking |
+// profiler, so they trigger their own optimization when they're called |
+// for the SharedFunctionInfo::kCallsUntilPrimitiveOptimization-th time. |
+bool CompilationInfo::ShouldSelfOptimize() { |
+ return FLAG_crankshaft && |
+ !function()->flags()->Contains(kDontSelfOptimize) && |
+ !function()->dont_optimize() && |
+ function()->scope()->AllowsLazyCompilation() && |
+ (shared_info().is_null() || !shared_info()->optimization_disabled()); |
+} |
+ |
+ |
void CompilationInfo::PrepareForCompilation(Scope* scope) { |
DCHECK(scope_ == NULL); |
scope_ = scope; |