changeset 2165:a7367756024b

Merge
author twisti
date Fri, 21 Jan 2011 01:16:13 -0800
parents bb2c2878f134 (diff) 377371490991 (current diff)
children aa4b04b68652
files src/share/vm/ci/bcEscapeAnalyzer.cpp src/share/vm/gc_implementation/g1/concurrentZFThread.cpp src/share/vm/gc_implementation/g1/concurrentZFThread.hpp
diffstat 2 files changed, 8 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/vm/ci/bcEscapeAnalyzer.cpp	Thu Jan 20 13:57:12 2011 -0800
+++ b/src/share/vm/ci/bcEscapeAnalyzer.cpp	Fri Jan 21 01:16:13 2011 -0800
@@ -233,6 +233,10 @@
 
   // compute size of arguments
   int arg_size = target->arg_size();
+  if (code == Bytecodes::_invokedynamic) {
+    assert(!target->is_static(), "receiver explicit in method");
+    arg_size--;  // implicit, not really on stack
+  }
   if (!target->is_loaded() && code == Bytecodes::_invokestatic) {
     arg_size--;
   }
@@ -250,6 +254,10 @@
     ArgumentMap arg = state._stack[i];
     skip_callee = !is_argument(arg) || !is_arg_stack(arg) || (directly_recursive && arg.is_singleton(i - arg_base));
   }
+  // For now we conservatively skip invokedynamic.
+  if (code == Bytecodes::_invokedynamic) {
+    skip_callee = true;
+  }
   if (skip_callee) {
     TRACE_BCEA(3, tty->print_cr("[EA] skipping method %s::%s", holder->name()->as_utf8(), target->name()->as_utf8()));
     for (i = 0; i < arg_size; i++) {
--- a/src/share/vm/runtime/arguments.cpp	Thu Jan 20 13:57:12 2011 -0800
+++ b/src/share/vm/runtime/arguments.cpp	Fri Jan 21 01:16:13 2011 -0800
@@ -3029,15 +3029,6 @@
     }
     ScavengeRootsInCode = 1;
   }
-#ifdef COMPILER2
-  if (EnableInvokeDynamic && DoEscapeAnalysis) {
-    // TODO: We need to find rules for invokedynamic and EA.  For now,
-    // simply disable EA by default.
-    if (FLAG_IS_DEFAULT(DoEscapeAnalysis)) {
-      DoEscapeAnalysis = false;
-    }
-  }
-#endif
 
   if (PrintGCDetails) {
     // Turn on -verbose:gc options as well