Remove overzealous check from %OptimizeFunctionOnNextCall.
authormstarzinger <mstarzinger@chromium.org>
Mon, 19 Jan 2015 15:51:50 +0000 (07:51 -0800)
committerCommit bot <commit-bot@chromium.org>
Mon, 19 Jan 2015 15:52:00 +0000 (15:52 +0000)
R=titzer@chromium.org

Review URL: https://codereview.chromium.org/863443003

Cr-Commit-Position: refs/heads/master@{#26142}

src/runtime/runtime-test.cc
test/mjsunit/compiler/opt-next-call-turbo.js [new file with mode: 0644]
test/mjsunit/compiler/opt-next-call.js

index a66e766..1778401 100644 (file)
@@ -64,11 +64,6 @@ RUNTIME_FUNCTION(Runtime_OptimizeFunctionOnNextCall) {
   // If the function is already optimized, just return.
   if (function->IsOptimized()) return isolate->heap()->undefined_value();
 
-  // If the function cannot optimized, just return.
-  if (function->shared()->optimization_disabled()) {
-    return isolate->heap()->undefined_value();
-  }
-
   function->MarkForOptimization();
 
   Code* unoptimized = function->shared()->code();
diff --git a/test/mjsunit/compiler/opt-next-call-turbo.js b/test/mjsunit/compiler/opt-next-call-turbo.js
new file mode 100644 (file)
index 0000000..3a7bf6e
--- /dev/null
@@ -0,0 +1,23 @@
+// Copyright 2015 the V8 project authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Flags: --allow-natives-syntax --turbo-filter=*
+
+function foo() {
+  with ({ value:"fooed" }) { return value; }
+}
+
+%OptimizeFunctionOnNextCall(foo);
+assertEquals("fooed", foo());
+assertOptimized(foo);
+
+function bar() {
+  with ({ value:"bared" }) { return value; }
+}
+
+assertEquals("bared", bar());
+%OptimizeFunctionOnNextCall(bar);
+assertEquals("bared", bar());
+// TODO(mstarzinger): Still not optimized, make sure it is.
+// assertOptimized(bar);
index 6366c7d..3d7e74f 100644 (file)
@@ -11,3 +11,12 @@ function foo() {
 %OptimizeFunctionOnNextCall(foo);
 assertEquals("fooed", foo());
 assertOptimized(foo);
+
+function bar() {
+  return "bared";
+}
+
+assertEquals("bared", bar());
+%OptimizeFunctionOnNextCall(bar);
+assertEquals("bared", bar());
+assertOptimized(bar);