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