Mercurial > hg > truffle
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