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