src/share/vm/prims/methodHandles.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/prims/methodHandles.cpp	Wed Mar 30 07:00:28 2011
--- new/src/share/vm/prims/methodHandles.cpp	Wed Mar 30 07:00:28 2011

*** 110,120 **** --- 110,120 ---- //------------------------------------------------------------------------------ // MethodHandles::generate_adapters // void MethodHandles::generate_adapters() { ! if (!EnableMethodHandles || SystemDictionary::MethodHandle_klass() == NULL) return; ! if (!EnableInvokeDynamic || SystemDictionary::MethodHandle_klass() == NULL) return; assert(_adapter_code == NULL, "generate only once"); ResourceMark rm; TraceTime timer("MethodHandles adapters generation", TraceStartupTime);
*** 141,151 **** --- 141,151 ---- } void MethodHandles::set_enabled(bool z) { if (_enabled != z) { ! guarantee(z && EnableMethodHandles, "can only enable once, and only if -XX:+EnableMethodHandles"); ! guarantee(z && EnableInvokeDynamic, "can only enable once, and only if -XX:+EnableInvokeDynamic"); _enabled = z; } } // Note: A method which does not have a TRAPS argument cannot block in the GC
*** 2577,2587 **** --- 2577,2586 ---- // static native int getMembers(Class<?> defc, String matchName, String matchSig, // int matchFlags, Class<?> caller, int skip, MemberName[] results); {CC"getMembers", CC"("CLS""STRG""STRG"I"CLS"I["MEM")I", FN_PTR(MHN_getMembers)} }; // More entry points specifically for EnableInvokeDynamic. // FIXME: Remove methods2 after AllowTransitionalJSR292 is removed. static JNINativeMethod methods2[] = { {CC"registerBootstrap", CC"("CLS MH")V", FN_PTR(MHN_registerBootstrap)}, {CC"getBootstrap", CC"("CLS")"MH, FN_PTR(MHN_getBootstrap)}, {CC"setCallSiteTarget", CC"("CST MH")V", FN_PTR(MHN_setCallSiteTarget)}
*** 2616,2629 **** --- 2615,2626 ---- // This one function is exported, used by NativeLookup. JVM_ENTRY(void, JVM_RegisterMethodHandleMethods(JNIEnv *env, jclass MHN_class)) { assert(MethodHandles::spot_check_entry_names(), "entry enum is OK"); // note: this explicit warning-producing stuff will be replaced by auto-detection of the JSR 292 classes if (!EnableMethodHandles) { warning("JSR 292 method handles are disabled in this JVM. Use -XX:+UnlockExperimentalVMOptions -XX:+EnableMethodHandles to enable."); + if (!EnableInvokeDynamic) { + warning("JSR 292 is disabled in this JVM. Use -XX:+UnlockDiagnosticVMOptions -XX:+EnableInvokeDynamic to enable."); return; // bind nothing } if (SystemDictionary::MethodHandleNatives_klass() != NULL && SystemDictionary::MethodHandleNatives_klass() != java_lang_Class::as_klassOop(JNIHandles::resolve(MHN_class))) {
*** 2700,2714 **** --- 2697,2706 ---- MethodHandles::generate_adapters(); MethodHandles::set_enabled(true); } if (!EnableInvokeDynamic) { warning("JSR 292 invokedynamic is disabled in this JVM. Use -XX:+UnlockExperimentalVMOptions -XX:+EnableInvokeDynamic to enable."); return; // bind nothing } if (AllowTransitionalJSR292) { ThreadToNativeFromVM ttnfv(thread); int status = env->RegisterNatives(MHN_class, methods2, sizeof(methods2)/sizeof(JNINativeMethod)); if (env->ExceptionOccurred()) {

src/share/vm/prims/methodHandles.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File