Reviewers: Hannes Payer,

Description:
Fix %OptimizeFunctionOnNextCall wrt concurrent compilation.

If a function is marked or queued for concurrent compilation,
%OptimizeFunctionOnNextCall becomes a no-op. That can be wrong
if concurrent recompilation does not complete at the time we
expect the function to have been optimized.

[email protected]

Please review this at https://codereview.chromium.org/151343006/

SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files (+6, -1 lines):
  M src/runtime.cc


Index: src/runtime.cc
diff --git a/src/runtime.cc b/src/runtime.cc
index 333a2dc4b4346bc479b5e335e14bb1bdb3d96199..372d74b74ad81dc19e15c61b4cb837070cb9b3d4 100644
--- a/src/runtime.cc
+++ b/src/runtime.cc
@@ -8503,7 +8503,12 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_OptimizeFunctionOnNextCall) {
   RUNTIME_ASSERT(args.length() == 1 || args.length() == 2);
   CONVERT_ARG_HANDLE_CHECKED(JSFunction, function, 0);

- if (!function->IsOptimizable()) return isolate->heap()->undefined_value();
+  if (!function->IsOptimizable() &&
+      !function->IsMarkedForConcurrentOptimization() &&
+      !function->IsInOptimizationQueue()) {
+    return isolate->heap()->undefined_value();
+  }
+
   function->MarkForOptimization();

   Code* unoptimized = function->shared()->code();


--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to