Simple dynamic language using invokedynamic

Christian Thalinger Christian.Thalinger at Sun.COM
Wed Jun 24 06:48:47 PDT 2009


Jochen Theodorou wrote:
> thanks... but this seems to say, that all the patches got applied. And 
> then that means that for me the mlvm is not working at all. Even simple 
> things won't do.
> 
> strange... all of a sudden I get a compilation error:
> 
>> /home/blackdrag/coding/davinci/mlvm/sources/hotspot/src/cpu/x86/vm/methodHandles_x86.cpp: In function 'void trace_method_handle_stub(const char*, oopDesc*, intptr_t*, intptr_t*)':
>> /home/blackdrag/coding/davinci/mlvm/sources/hotspot/src/cpu/x86/vm/methodHandles_x86.cpp:276: error: format '%016lx' expects type 'long unsigned int', but argument 3 has type 'oopDesc*'
>> /home/blackdrag/coding/davinci/mlvm/sources/hotspot/src/cpu/x86/vm/methodHandles_x86.cpp:276: error: format '%016lx' expects type 'long unsigned int', but argument 4 has type 'intptr_t*'
>> make[7]: *** [methodHandles_x86.o] Error 1
> 

Yeah, that one is trivial and should be fixed in the hotspot repository. 
  IIRC it only fails with GCC on Linux.  This is a fix:

diff --git a/src/cpu/x86/vm/methodHandles_x86.cpp 
b/src/cpu/x86/vm/methodHandles_x86.cpp
--- a/src/cpu/x86/vm/methodHandles_x86.cpp
+++ b/src/cpu/x86/vm/methodHandles_x86.cpp
@@ -273,7 +273,7 @@ void trace_method_handle_stub(const char
                                intptr_t* entry_sp,
                                intptr_t* saved_sp) {
    // called as a leaf from native code: do not block the JVM!
-  printf("MH %s "PTR_FORMAT" "PTR_FORMAT" "INTX_FORMAT"\n", 
adaptername, mh, entry_sp, entry_sp - saved_sp);
+  printf("MH %s "PTR_FORMAT" "PTR_FORMAT" "INTX_FORMAT"\n", 
adaptername, (intptr_t) mh, (intptr_t) entry_sp, entry_sp - saved_sp);
  }
  #endif //PRODUCT

John, should we open a bug for that one or are there plans to commit 
other MethodHandle stuff to the hotspot repository soon?

-- Christian



More information about the mlvm-dev mailing list