mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-20 19:14:38 +02:00
8036619: Shark: add LLVM 3.4 support
Reviewed-by: twisti
This commit is contained in:
parent
7d7f4bf62a
commit
694a2d010b
7 changed files with 101 additions and 38 deletions
|
@ -25,6 +25,9 @@
|
||||||
|
|
||||||
# Setup common to Zero (non-Shark) and Shark versions of VM
|
# Setup common to Zero (non-Shark) and Shark versions of VM
|
||||||
|
|
||||||
|
# override this from the main file because some version of llvm do not like -Wundef
|
||||||
|
WARNING_FLAGS = -Wpointer-arith -Wsign-compare -Wunused-function -Wunused-value
|
||||||
|
|
||||||
# The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized
|
# The copied fdlibm routines in sharedRuntimeTrig.o must not be optimized
|
||||||
OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
|
OPT_CFLAGS/sharedRuntimeTrig.o = $(OPT_CFLAGS/NOOPT)
|
||||||
# The copied fdlibm routines in sharedRuntimeTrans.o must not be optimized
|
# The copied fdlibm routines in sharedRuntimeTrans.o must not be optimized
|
||||||
|
|
|
@ -36,21 +36,43 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <llvm/Analysis/Verifier.h>
|
#include <llvm/Analysis/Verifier.h>
|
||||||
|
#include <llvm/ExecutionEngine/ExecutionEngine.h>
|
||||||
|
|
||||||
|
// includes specific to each version
|
||||||
|
#if SHARK_LLVM_VERSION <= 31
|
||||||
|
#include <llvm/Support/IRBuilder.h>
|
||||||
|
#include <llvm/Type.h>
|
||||||
#include <llvm/Argument.h>
|
#include <llvm/Argument.h>
|
||||||
#include <llvm/Constants.h>
|
#include <llvm/Constants.h>
|
||||||
#include <llvm/DerivedTypes.h>
|
#include <llvm/DerivedTypes.h>
|
||||||
#include <llvm/ExecutionEngine/ExecutionEngine.h>
|
|
||||||
#include <llvm/Instructions.h>
|
#include <llvm/Instructions.h>
|
||||||
#include <llvm/LLVMContext.h>
|
#include <llvm/LLVMContext.h>
|
||||||
#include <llvm/Module.h>
|
#include <llvm/Module.h>
|
||||||
#if SHARK_LLVM_VERSION <= 31
|
#elif SHARK_LLVM_VERSION <= 32
|
||||||
#include <llvm/Support/IRBuilder.h>
|
|
||||||
#else
|
|
||||||
#include <llvm/IRBuilder.h>
|
#include <llvm/IRBuilder.h>
|
||||||
|
#include <llvm/Type.h>
|
||||||
|
#include <llvm/Argument.h>
|
||||||
|
#include <llvm/Constants.h>
|
||||||
|
#include <llvm/DerivedTypes.h>
|
||||||
|
#include <llvm/Instructions.h>
|
||||||
|
#include <llvm/LLVMContext.h>
|
||||||
|
#include <llvm/Module.h>
|
||||||
|
#else // SHARK_LLVM_VERSION <= 34
|
||||||
|
#include <llvm/IR/IRBuilder.h>
|
||||||
|
#include <llvm/IR/Argument.h>
|
||||||
|
#include <llvm/IR/Constants.h>
|
||||||
|
#include <llvm/IR/DerivedTypes.h>
|
||||||
|
#include <llvm/ExecutionEngine/ExecutionEngine.h>
|
||||||
|
#include <llvm/IR/Instructions.h>
|
||||||
|
#include <llvm/IR/LLVMContext.h>
|
||||||
|
#include <llvm/IR/Module.h>
|
||||||
|
#include <llvm/ADT/StringRef.h>
|
||||||
|
#include <llvm/IR/Type.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// common includes
|
||||||
#include <llvm/Support/Threading.h>
|
#include <llvm/Support/Threading.h>
|
||||||
#include <llvm/Support/TargetSelect.h>
|
#include <llvm/Support/TargetSelect.h>
|
||||||
#include <llvm/Type.h>
|
|
||||||
#include <llvm/ExecutionEngine/JITMemoryManager.h>
|
#include <llvm/ExecutionEngine/JITMemoryManager.h>
|
||||||
#include <llvm/Support/CommandLine.h>
|
#include <llvm/Support/CommandLine.h>
|
||||||
#include <llvm/ExecutionEngine/MCJIT.h>
|
#include <llvm/ExecutionEngine/MCJIT.h>
|
||||||
|
|
|
@ -364,3 +364,7 @@ const char* SharkCompiler::methodname(const char* klass, const char* method) {
|
||||||
*(dst++) = '\0';
|
*(dst++) = '\0';
|
||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SharkCompiler::print_timers() {
|
||||||
|
// do nothing
|
||||||
|
}
|
||||||
|
|
|
@ -56,6 +56,9 @@ class SharkCompiler : public AbstractCompiler {
|
||||||
// Compile a normal (bytecode) method and install it in the VM
|
// Compile a normal (bytecode) method and install it in the VM
|
||||||
void compile_method(ciEnv* env, ciMethod* target, int entry_bci);
|
void compile_method(ciEnv* env, ciMethod* target, int entry_bci);
|
||||||
|
|
||||||
|
// Print compilation timers and statistics
|
||||||
|
void print_timers();
|
||||||
|
|
||||||
// Generate a wrapper for a native (JNI) method
|
// Generate a wrapper for a native (JNI) method
|
||||||
nmethod* generate_native_wrapper(MacroAssembler* masm,
|
nmethod* generate_native_wrapper(MacroAssembler* masm,
|
||||||
methodHandle target,
|
methodHandle target,
|
||||||
|
|
|
@ -744,6 +744,10 @@ bool SharkInlinerHelper::do_field_access(bool is_get, bool is_field) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SharkInliner::attempt_inline(ciMethod *target, SharkState *state) {
|
bool SharkInliner::attempt_inline(ciMethod *target, SharkState *state) {
|
||||||
|
if (!Inline) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (SharkIntrinsics::is_intrinsic(target)) {
|
if (SharkIntrinsics::is_intrinsic(target)) {
|
||||||
SharkIntrinsics::inline_intrinsic(target, state);
|
SharkIntrinsics::inline_intrinsic(target, state);
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -59,18 +59,6 @@ void SharkMemoryManager::endFunctionBody(const Function* F,
|
||||||
entry->set_code_limit(FunctionEnd);
|
entry->set_code_limit(FunctionEnd);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned char* SharkMemoryManager::startExceptionTable(const Function* F,
|
|
||||||
uintptr_t& ActualSize) {
|
|
||||||
return mm()->startExceptionTable(F, ActualSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
void SharkMemoryManager::endExceptionTable(const Function* F,
|
|
||||||
unsigned char* TableStart,
|
|
||||||
unsigned char* TableEnd,
|
|
||||||
unsigned char* FrameRegister) {
|
|
||||||
mm()->endExceptionTable(F, TableStart, TableEnd, FrameRegister);
|
|
||||||
}
|
|
||||||
|
|
||||||
void SharkMemoryManager::setMemoryWritable() {
|
void SharkMemoryManager::setMemoryWritable() {
|
||||||
mm()->setMemoryWritable();
|
mm()->setMemoryWritable();
|
||||||
}
|
}
|
||||||
|
@ -79,10 +67,6 @@ void SharkMemoryManager::setMemoryExecutable() {
|
||||||
mm()->setMemoryExecutable();
|
mm()->setMemoryExecutable();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SharkMemoryManager::deallocateExceptionTable(void *ptr) {
|
|
||||||
mm()->deallocateExceptionTable(ptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
void SharkMemoryManager::deallocateFunctionBody(void *ptr) {
|
void SharkMemoryManager::deallocateFunctionBody(void *ptr) {
|
||||||
mm()->deallocateFunctionBody(ptr);
|
mm()->deallocateFunctionBody(ptr);
|
||||||
}
|
}
|
||||||
|
@ -96,14 +80,6 @@ void* SharkMemoryManager::getPointerToNamedFunction(const std::string &Name, boo
|
||||||
return mm()->getPointerToNamedFunction(Name, AbortOnFailure);
|
return mm()->getPointerToNamedFunction(Name, AbortOnFailure);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t* SharkMemoryManager::allocateCodeSection(uintptr_t Size, unsigned Alignment, unsigned SectionID) {
|
|
||||||
return mm()->allocateCodeSection(Size, Alignment, SectionID);
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t* SharkMemoryManager::allocateDataSection(uintptr_t Size, unsigned Alignment, unsigned SectionID) {
|
|
||||||
return mm()->allocateDataSection(Size, Alignment, SectionID);
|
|
||||||
}
|
|
||||||
|
|
||||||
void SharkMemoryManager::setPoisonMemory(bool poison) {
|
void SharkMemoryManager::setPoisonMemory(bool poison) {
|
||||||
mm()->setPoisonMemory(poison);
|
mm()->setPoisonMemory(poison);
|
||||||
}
|
}
|
||||||
|
@ -112,3 +88,45 @@ unsigned char *SharkMemoryManager::allocateSpace(intptr_t Size,
|
||||||
unsigned int Alignment) {
|
unsigned int Alignment) {
|
||||||
return mm()->allocateSpace(Size, Alignment);
|
return mm()->allocateSpace(Size, Alignment);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if SHARK_LLVM_VERSION <= 32
|
||||||
|
|
||||||
|
uint8_t* SharkMemoryManager::allocateCodeSection(uintptr_t Size, unsigned Alignment, unsigned SectionID) {
|
||||||
|
return mm()->allocateCodeSection(Size, Alignment, SectionID);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t* SharkMemoryManager::allocateDataSection(uintptr_t Size, unsigned Alignment, unsigned SectionID) {
|
||||||
|
return mm()->allocateDataSection(Size, Alignment, SectionID);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SharkMemoryManager::deallocateExceptionTable(void *ptr) {
|
||||||
|
mm()->deallocateExceptionTable(ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned char* SharkMemoryManager::startExceptionTable(const Function* F,
|
||||||
|
uintptr_t& ActualSize) {
|
||||||
|
return mm()->startExceptionTable(F, ActualSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SharkMemoryManager::endExceptionTable(const Function* F,
|
||||||
|
unsigned char* TableStart,
|
||||||
|
unsigned char* TableEnd,
|
||||||
|
unsigned char* FrameRegister) {
|
||||||
|
mm()->endExceptionTable(F, TableStart, TableEnd, FrameRegister);
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
uint8_t *SharkMemoryManager::allocateCodeSection(uintptr_t Size, unsigned Alignment, unsigned SectionID, StringRef SectionName) {
|
||||||
|
return mm()->allocateCodeSection(Size, Alignment, SectionID, SectionName);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t* SharkMemoryManager::allocateDataSection(uintptr_t Size, unsigned Alignment, unsigned SectionID, StringRef SectionName, bool IsReadOnly) {
|
||||||
|
return mm()->allocateDataSection(Size, Alignment, SectionID, SectionName, IsReadOnly);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SharkMemoryManager::finalizeMemory(std::string *ErrMsg) {
|
||||||
|
return mm()->finalizeMemory(ErrMsg);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
@ -69,23 +69,32 @@ class SharkMemoryManager : public llvm::JITMemoryManager {
|
||||||
void endFunctionBody(const llvm::Function* F,
|
void endFunctionBody(const llvm::Function* F,
|
||||||
unsigned char* FunctionStart,
|
unsigned char* FunctionStart,
|
||||||
unsigned char* FunctionEnd);
|
unsigned char* FunctionEnd);
|
||||||
unsigned char* startExceptionTable(const llvm::Function* F,
|
|
||||||
uintptr_t& ActualSize);
|
|
||||||
void endExceptionTable(const llvm::Function* F,
|
|
||||||
unsigned char* TableStart,
|
|
||||||
unsigned char* TableEnd,
|
|
||||||
unsigned char* FrameRegister);
|
|
||||||
void *getPointerToNamedFunction(const std::string &Name, bool AbortOnFailure = true);
|
void *getPointerToNamedFunction(const std::string &Name, bool AbortOnFailure = true);
|
||||||
uint8_t *allocateCodeSection(uintptr_t Size, unsigned Alignment, unsigned SectionID);
|
|
||||||
uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment, unsigned SectionID);
|
|
||||||
void setPoisonMemory(bool);
|
void setPoisonMemory(bool);
|
||||||
uint8_t* allocateGlobal(uintptr_t, unsigned int);
|
uint8_t* allocateGlobal(uintptr_t, unsigned int);
|
||||||
void setMemoryWritable();
|
void setMemoryWritable();
|
||||||
void setMemoryExecutable();
|
void setMemoryExecutable();
|
||||||
void deallocateExceptionTable(void *ptr);
|
|
||||||
void deallocateFunctionBody(void *ptr);
|
void deallocateFunctionBody(void *ptr);
|
||||||
unsigned char *allocateSpace(intptr_t Size,
|
unsigned char *allocateSpace(intptr_t Size,
|
||||||
unsigned int Alignment);
|
unsigned int Alignment);
|
||||||
|
|
||||||
|
#if SHARK_LLVM_VERSION <= 32
|
||||||
|
uint8_t *allocateCodeSection(uintptr_t Size, unsigned Alignment, unsigned SectionID);
|
||||||
|
uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment, unsigned SectionID);
|
||||||
|
unsigned char* startExceptionTable(const llvm::Function* F,
|
||||||
|
uintptr_t& ActualSize);
|
||||||
|
void deallocateExceptionTable(void *ptr);
|
||||||
|
void endExceptionTable(const llvm::Function* F,
|
||||||
|
unsigned char* TableStart,
|
||||||
|
unsigned char* TableEnd,
|
||||||
|
unsigned char* FrameRegister);
|
||||||
|
#else
|
||||||
|
uint8_t *allocateCodeSection(uintptr_t Size, unsigned Alignment, unsigned SectionID, llvm::StringRef SectionName);
|
||||||
|
uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment, unsigned SectionID, llvm::StringRef SectionName, bool IsReadOnly);
|
||||||
|
bool finalizeMemory(std::string *ErrMsg = 0);
|
||||||
|
#endif
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SHARE_VM_SHARK_SHARKMEMORYMANAGER_HPP
|
#endif // SHARE_VM_SHARK_SHARKMEMORYMANAGER_HPP
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue