for review (XXL): 6655638 method handles for invokedynamic
Christian Thalinger
Christian.Thalinger at Sun.COM
Thu Feb 5 04:44:29 PST 2009
On Tue, 2009-01-20 at 02:53 -0800, John Rose wrote:
> Please give it a look.
I'm trying to understand it but it's really huge.
src/share/vm/runtime/globals.hpp:
+ product(bool, MethodHandleSupport, false, \
+ "support method handles (true by default under JSR 292") \
There's a missing ) before the closing ".
src/share/vm/runtime/sharedRuntime.hpp:
! static char* generate_class_cast_message(const char* name, const char* klass);
! static char* generate_class_cast_message(const char* name, const char* klass,
+ const char* gripe = " cannot be cast to ");
name and klass have a @param comment but gripe does not.
src/cpu/sparc/vm/methodHandles_sparc.cpp (I know SPARC does not work
yet):
75 // fetch the MethodType from the method handle into G5_method_type
76 {
77 Register tem = G5_method;
78 for (int* pchase = methodOopDesc::method_type_pointer_chase(); (*pchase) != -1; pchase++) {
79 __ ld_ptr(tem, *pchase, G5_method_type);
80 tem = G5_method_type; // yes, it's the same register...
81 }
82 }
What size can *pchase be? Is it possibly too large for ld_ptr?
116 // - rax: method handle type (already checked at call site, then unused)
117 // - rsi: sender SP (must preserve)
118 // - rdx: garbage temp, can blow away
Wrong register names.
I'm not finished yet, will continue later...
-- Christian
More information about the hotspot-compiler-dev
mailing list