src/share/vm/prims/methodHandles.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File
*** old/src/share/vm/prims/methodHandles.cpp	Tue Aug 30 18:43:15 2011
--- new/src/share/vm/prims/methodHandles.cpp	Tue Aug 30 18:43:15 2011

*** 156,165 **** --- 156,167 ---- "adapter_fold/2/ref", "adapter_fold/3/ref", "adapter_fold/4/ref", "adapter_fold/5/ref", + "adapter_opt_profiling", + NULL }; // Adapters. MethodHandlesAdapterBlob* MethodHandles::_adapter_code = NULL;
*** 2651,2660 **** --- 2653,2667 ---- jint new_conversion = adapter_conversion(conv_op, src, dest, stack_move, vminfo); // Finalize the conversion field. (Note that it is final to Java code.) java_lang_invoke_AdapterMethodHandle::set_conversion(mh(), new_conversion); + if (java_lang_invoke_CountingMethodHandle::is_instance(mh())) { + assert(ek_orig == _adapter_retype_only, "only one handled"); + ek_opt = _adapter_opt_profiling; + } + // Done! java_lang_invoke_MethodHandle::set_vmentry(mh(), entry(ek_opt)); // There should be enough memory barriers on exit from native methods // to ensure that the MH is fully initialized to all threads before
*** 2903,2914 **** --- 2910,2925 ---- case MethodHandles::GC_JVM_STACK_MOVE_UNIT: // return number of words per slot, signed according to stack direction return MethodHandles::stack_move_unit(); case MethodHandles::GC_CONV_OP_IMPLEMENTED_MASK: return MethodHandles::adapter_conversion_ops_supported_mask(); ! case MethodHandles::GC_OP_ROT_ARGS_DOWN_LIMIT_BIAS: return MethodHandles::OP_ROT_ARGS_DOWN_LIMIT_BIAS; ! case MethodHandles::GC_COUNT_GWT: + #ifdef COMPILER2 + return true; + #else + return false; + #endif } return 0; } JVM_END

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