RFR (L): 8003868: fix shark for latest HotSpot and LLVM [Was: Re: RFR: Fix shark for latest Hotspot and LLVM] (original) (raw)
Christian Thalinger christian.thalinger at oracle.com
Wed Nov 21 12:47:05 PST 2012
- Previous message: RFR (L): 8003868: fix shark for latest HotSpot and LLVM [Was: Re: RFR: Fix shark for latest Hotspot and LLVM]
- Next message: RFR (L): 8003868: fix shark for latest HotSpot and LLVM [Was: Re: RFR: Fix shark for latest Hotspot and LLVM]
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Nov 21, 2012, at 11:43 AM, Christian Thalinger <christian.thalinger at oracle.com> wrote:
On Nov 21, 2012, at 9:31 AM, Roman Kennke <rkennke at redhat.com> wrote:
Hi there,
during the last days I worked on fixing the Shark compiler for Hotspot to get it to build and run again, with the latest Hotspot code and LLVM. Here are some details: - A lot of changes are just to make it build and the compiler happy. For example, I had to remove a lot of 'const' qualifiers because of API changes in LLVM. - Most other changes have to do with the split of the oop and metadata class hierarchies in Hotspot. - Then there have been a few changes caused by LLVM changes and improvements, most notably the LLVM intrinsics for atomic operations (memory barrier and cmpxchg) have been removed and now have a representation directly in LLVM's IR. This makes our code a little nicer. I tested this by running a number of applications, most notably Eclipse (which is notoriously difficult on VMs), Java2Demo, SwingSet2 and a bunch of other stuff. I would like to get this integrated into OpenJDK now if possible. You can find the full webrev here: http://cr.openjdk.java.net/~rkennke/shark/webrev.00/ The changes seem to touch almost only shark files so these should be fine. One question though: _+ develop(bool, SharkShowCompiledMethods, false, _ Isn't PrintCompilation doing that already? The shared code changes look good. I filed: 8003868: fix shark for latest HotSpot and LLVM -- Chris
There are also a very minor change required in JDK: http://cr.openjdk.java.net/~rkennke/shark/webrev-jdk-00/ In order to build it, apply the patches on hsx/hotspot-comp 's hotspot and jdk repositories respectivly. Find my build script here: http://cr.openjdk.java.net/~rkennke/shark/Build8-zero-shark (Review and adjust variables to your settings, most notably you will need to change LLVMCONFIG to point to your LLVM 3.1 installation.) Please let me know if there are any issues or how we can get this integrated into Hotspot.
Finally I installed LLVM on one of our machines to be able to do a Shark build once in a while. When I try to do a jvmgshark build I get:
In file included from /usr/local/include/llvm/Support/PointerLikeTypeTraits.h:18, from /usr/local/include/llvm/ADT/PointerIntPair.h:17, from /usr/local/include/llvm/Use.h:28, from /usr/local/include/llvm/Value.h:17, from /usr/local/include/llvm/Argument.h:17, from /home/cthaling/8003868/src/share/vm/shark/llvmHeaders.hpp:39, from /home/cthaling/8003868/src/share/vm/shark/sharkEntry.hpp:29, from /home/cthaling/8003868/src/share/vm/compiler/disassembler.cpp:51: /usr/local/include/llvm/Support/DataTypes.h:53:3: error: #error "Must #define __STDC_CONSTANT_MACROS before " "#including Support/DataTypes.h"
and:
In file included from /usr/local/include/llvm/Attributes.h:18, from /usr/local/include/llvm/Argument.h:18, from /home/cthaling/8003868/src/share/vm/shark/llvmHeaders.hpp:39, from /home/cthaling/8003868/src/share/vm/shark/sharkEntry.hpp:29, from /home/cthaling/8003868/src/share/vm/compiler/disassembler.cpp:51: /usr/local/include/llvm/Support/MathExtras.h: In function ‘bool llvm::isInt(int64_t)’: /usr/local/include/llvm/Support/MathExtras.h:38: error: there are no arguments to ‘INT64_C’ that depend on a template parameter, so a declaration of ‘INT64_C’ must be available /usr/local/include/llvm/Support/MathExtras.h:38: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated) /usr/local/include/llvm/Support/MathExtras.h:38: error: there are no arguments to ‘INT64_C’ that depend on a template parameter, so a declaration of ‘INT64_C’ must be available /usr/local/include/llvm/Support/MathExtras.h: In function ‘bool llvm::isUInt(uint64_t)’: /usr/local/include/llvm/Support/MathExtras.h:64: error: there are no arguments to ‘UINT64_C’ that depend on a template parameter, so a declaration of ‘UINT64_C’ must be available /usr/local/include/llvm/Support/MathExtras.h: In function ‘bool llvm::isIntN(unsigned int, int64_t)’: /usr/local/include/llvm/Support/MathExtras.h:96: error: ‘INT64_C’ was not declared in this scope
Not sure if the latter is because of the former one. Have you seen this before?
-- Chris
Best regards, Roman
- Previous message: RFR (L): 8003868: fix shark for latest HotSpot and LLVM [Was: Re: RFR: Fix shark for latest Hotspot and LLVM]
- Next message: RFR (L): 8003868: fix shark for latest HotSpot and LLVM [Was: Re: RFR: Fix shark for latest Hotspot and LLVM]
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]