diff -r 00977607da34 -r 148e5441d916 src/share/vm/runtime/arguments.cpp --- a/src/share/vm/runtime/arguments.cpp Tue Sep 15 11:09:34 2009 -0700 +++ b/src/share/vm/runtime/arguments.cpp Tue Sep 15 21:53:47 2009 -0700 @@ -2639,16 +2639,22 @@ if (EnableInvokeDynamic && !EnableMethodHandles) { if (!FLAG_IS_DEFAULT(EnableMethodHandles)) { - warning("forcing EnableMethodHandles true to allow EnableInvokeDynamic"); + warning("forcing EnableMethodHandles true because EnableInvokeDynamic is true"); } EnableMethodHandles = true; } if (EnableMethodHandles && !AnonymousClasses) { if (!FLAG_IS_DEFAULT(AnonymousClasses)) { - warning("forcing AnonymousClasses true to enable EnableMethodHandles"); + warning("forcing AnonymousClasses true because EnableMethodHandles is true"); } AnonymousClasses = true; } + if ((EnableMethodHandles || AnonymousClasses) && ScavengeRootsInCode == 0) { + if (!FLAG_IS_DEFAULT(ScavengeRootsInCode)) { + warning("forcing ScavengeRootsInCode non-zero because EnableMethodHandles or AnonymousClasses is true"); + } + ScavengeRootsInCode = 1; + } if (PrintGCDetails) { // Turn on -verbose:gc options as well