Reviewers: titzer,

Message:
Patch Set #1: Just pure reland.
Patch Set #2: Fixed assertion.

Description:
Remove obsolete JSFunction::IsOptimizable predicate.

This just delegates to SharedFunctionInfo::optimization_disabled and
was primarily used for assertions. Removing it due to misleading name
because already optimized functions reported being "non-optimizable".

This relands commit 181d7b85977eb752b19e1de902093783e31330ef.

[email protected]

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

Base URL: https://chromium.googlesource.com/v8/v8.git@master

Affected files (+10, -20 lines):
  M src/objects.h
  M src/objects.cc
  M src/objects-inl.h
  M src/runtime-profiler.cc
  M src/runtime/runtime-test.cc
  M test/cctest/test-compiler.cc


Index: src/objects-inl.h
diff --git a/src/objects-inl.h b/src/objects-inl.h
index fea849afaa242b3a4f25c3ca68fe8fac720f2b79..aa82b83915ca3f169cfb9a280fa4789f04c978bf 100644
--- a/src/objects-inl.h
+++ b/src/objects-inl.h
@@ -6022,11 +6022,6 @@ bool JSFunction::IsOptimized() {
 }


-bool JSFunction::IsOptimizable() {
- return code()->kind() == Code::FUNCTION && !shared()->optimization_disabled();
-}
-
-
 bool JSFunction::IsMarkedForOptimization() {
   return code() == GetIsolate()->builtins()->builtin(
       Builtins::kCompileOptimized);
Index: src/objects.cc
diff --git a/src/objects.cc b/src/objects.cc
index 90985eea7dfb4c3c6defb83c14a75541f1582b14..129ba3f64ed0b91e4276e4f770a1e0c6e7ad8971 100644
--- a/src/objects.cc
+++ b/src/objects.cc
@@ -9804,7 +9804,8 @@ void JSFunction::JSFunctionIterateBody(int object_size, ObjectVisitor* v) {
 void JSFunction::MarkForOptimization() {
   Isolate* isolate = GetIsolate();
   DCHECK(!IsOptimized());
-  DCHECK(shared()->allows_lazy_compilation() || IsOptimizable());
+  DCHECK(shared()->allows_lazy_compilation() ||
+         !shared()->optimization_disabled());
   set_code_no_write_barrier(
       isolate->builtins()->builtin(Builtins::kCompileOptimized));
   // No write barrier required, since the builtin is part of the root set.
@@ -9828,7 +9829,8 @@ void JSFunction::AttemptConcurrentOptimization() {
   }
   DCHECK(!IsInOptimizationQueue());
   DCHECK(!IsOptimized());
-  DCHECK(shared()->allows_lazy_compilation() || IsOptimizable());
+  DCHECK(shared()->allows_lazy_compilation() ||
+         !shared()->optimization_disabled());
   DCHECK(isolate->concurrent_recompilation_enabled());
   if (FLAG_trace_concurrent_recompilation) {
     PrintF("  ** Marking ");
@@ -9836,7 +9838,7 @@ void JSFunction::AttemptConcurrentOptimization() {
     PrintF(" for concurrent recompilation.\n");
   }
   set_code_no_write_barrier(
- GetIsolate()->builtins()->builtin(Builtins::kCompileOptimizedConcurrent));
+      isolate->builtins()->builtin(Builtins::kCompileOptimizedConcurrent));
   // No write barrier required, since the builtin is part of the root set.
 }

Index: src/objects.h
diff --git a/src/objects.h b/src/objects.h
index 129c6c35ac9e58f09fc69b881a8c7c2ff1d22726..59960c70503b1aaa92c3ed55cf60d00c884ef7f0 100644
--- a/src/objects.h
+++ b/src/objects.h
@@ -7614,9 +7614,6 @@ class JSFunction: public JSObject {
   // Tells whether or not this function has been optimized.
   inline bool IsOptimized();

-  // Tells whether or not this function can be optimized.
-  inline bool IsOptimizable();
-
   // Mark this function for lazy recompilation. The function will be
   // recompiled the next time it is executed.
   void MarkForOptimization();
Index: src/runtime-profiler.cc
diff --git a/src/runtime-profiler.cc b/src/runtime-profiler.cc
index 22567d3b90576be19f829e6a55ea33c5b4d68e53..838888aeb1dca635d7903abcfae57d13980e199c 100644
--- a/src/runtime-profiler.cc
+++ b/src/runtime-profiler.cc
@@ -88,8 +88,6 @@ static void GetICCounts(SharedFunctionInfo* shared,


 void RuntimeProfiler::Optimize(JSFunction* function, const char* reason) {
-  DCHECK(function->IsOptimizable());
-
   if (FLAG_trace_opt && function->PassesFilter(FLAG_hydrogen_filter)) {
     PrintF("[marking ");
     function->ShortPrint();
@@ -217,7 +215,7 @@ void RuntimeProfiler::OptimizeNow() {
       }
       continue;
     }
-    if (!function->IsOptimizable()) continue;
+    if (function->IsOptimized()) continue;

     int ticks = shared_code->profiler_ticks();

Index: src/runtime/runtime-test.cc
diff --git a/src/runtime/runtime-test.cc b/src/runtime/runtime-test.cc
index e115ba9e2477110208be70a60c197dba08bbb443..631bf0778b136c5de3b178dcfe8cb325c431a6f9 100644
--- a/src/runtime/runtime-test.cc
+++ b/src/runtime/runtime-test.cc
@@ -88,7 +88,7 @@ RUNTIME_FUNCTION(Runtime_OptimizeFunctionOnNextCall) {
   // The following assertion was lifted from the DCHECK inside
   // JSFunction::MarkForOptimization().
   RUNTIME_ASSERT(function->shared()->allows_lazy_compilation() ||
-                 function->IsOptimizable());
+                 !function->shared()->optimization_disabled());

   // If the function is already optimized, just return.
   if (function->IsOptimized()) return isolate->heap()->undefined_value();
@@ -132,7 +132,7 @@ RUNTIME_FUNCTION(Runtime_OptimizeOsr) {
   // The following assertion was lifted from the DCHECK inside
   // JSFunction::MarkForOptimization().
   RUNTIME_ASSERT(function->shared()->allows_lazy_compilation() ||
-                 function->IsOptimizable());
+                 !function->shared()->optimization_disabled());

   // If the function is already optimized, just return.
   if (function->IsOptimized()) return isolate->heap()->undefined_value();
Index: test/cctest/test-compiler.cc
diff --git a/test/cctest/test-compiler.cc b/test/cctest/test-compiler.cc
index ef09891cb7d7eee60fdc8cef6d514f28ed78dd30..57704f9c1ee023364c00eed7eda6aa7a2beda1f0 100644
--- a/test/cctest/test-compiler.cc
+++ b/test/cctest/test-compiler.cc
@@ -395,10 +395,8 @@ TEST(OptimizedCodeSharing) {
*v8::Local<v8::Function>::Cast(env->Global()->Get(v8_str("closure1"))));
     Handle<JSFunction> fun2 = v8::Utils::OpenHandle(
*v8::Local<v8::Function>::Cast(env->Global()->Get(v8_str("closure2"))));
-    CHECK(fun1->IsOptimized()
- || !CcTest::i_isolate()->use_crankshaft() | | !fun1->IsOptimizable());
-    CHECK(fun2->IsOptimized()
- || !CcTest::i_isolate()->use_crankshaft() | | !fun2->IsOptimizable());
+    CHECK(fun1->IsOptimized() || !CcTest::i_isolate()->use_crankshaft());
+    CHECK(fun2->IsOptimized() || !CcTest::i_isolate()->use_crankshaft());
     CHECK_EQ(fun1->code(), fun2->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/d/optout.

Reply via email to