[llvm-commits] [vmkit] r51333 - in /vmkit/trunk/lib/JnJVM/VMCore: JavaJIT.cpp JavaJIT.h JavaJITOpcodes.cpp JavaThread.cpp JavaThread.h
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Tue May 20 13:45:19 PDT 2008
Author: geoffray
Date: Tue May 20 15:45:19 2008
New Revision: 51333
URL: http://llvm.org/viewvc/llvm-project?rev=51333&view=rev
Log:
Inline simple functions.
Modified:
vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.h
vmkit/trunk/lib/JnJVM/VMCore/JavaJITOpcodes.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaThread.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaThread.h
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.cpp?rev=51333&r1=51332&r2=51333&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.cpp Tue May 20 15:45:19 2008
@@ -38,7 +38,6 @@
#include "JavaTypes.h"
#include "JavaUpcalls.h"
#include "Jnjvm.h"
-#include "JnjvmModule.h"
#include "JnjvmModuleProvider.h"
#include "NativeUtil.h"
#include "Reader.h"
@@ -51,56 +50,6 @@
using namespace jnjvm;
using namespace llvm;
-BasicBlock* JavaJIT::createBasicBlock(const char* name) {
- return llvm::BasicBlock::Create(name, llvmFunction);
-}
-
-Value* JavaJIT::top() {
- return stack.back().first;
-}
-
-Value* JavaJIT::pop() {
- llvm::Value * ret = top();
- stack.pop_back();
- return ret;
-}
-
-Value* JavaJIT::popAsInt() {
- llvm::Value * ret = top();
- const AssessorDesc* ass = topFunc();
- stack.pop_back();
-
- if (ret->getType() != Type::Int32Ty) {
- if (ass == AssessorDesc::dChar) {
- ret = new ZExtInst(ret, Type::Int32Ty, "", currentBlock);
- } else {
- ret = new SExtInst(ret, Type::Int32Ty, "", currentBlock);
- }
- }
-
- return ret;
-}
-
-void JavaJIT::push(llvm::Value* val, const AssessorDesc* ass) {
- assert(LLVMAssessorInfo::AssessorInfo[ass->numId].llvmType == val->getType());
- stack.push_back(std::make_pair(val, ass));
-}
-
-void JavaJIT::push(std::pair<llvm::Value*, const AssessorDesc*> pair) {
- assert(LLVMAssessorInfo::AssessorInfo[pair.second->numId].llvmType ==
- pair.first->getType());
- stack.push_back(pair);
-}
-
-
-const AssessorDesc* JavaJIT::topFunc() {
- return stack.back().second;
-}
-
-uint32 JavaJIT::stackSize() {
- return stack.size();
-}
-
void JavaJIT::invokeVirtual(uint16 index) {
JavaCtpInfo* ctpInfo = compilingClass->ctpInfo;
@@ -187,12 +136,6 @@
#endif
}
-std::pair<llvm::Value*, const AssessorDesc*> JavaJIT::popPair() {
- std::pair<Value*, const AssessorDesc*> ret = stack.back();
- stack.pop_back();
- return ret;
-}
-
llvm::Function* JavaJIT::nativeCompile(void* natPtr) {
PRINT_DEBUG(JNJVM_COMPILE, 1, COLOR_NORMAL, "native compile %s\n",
@@ -1711,8 +1654,31 @@
}
}
-extern void convertValue(Value*& val, const Type* t1, BasicBlock* currentBlock,
- bool usign);
+void JavaJIT::convertValue(Value*& val, const Type* t1, BasicBlock* currentBlock,
+ bool usign) {
+ const Type* t2 = val->getType();
+ if (t1 != t2) {
+ if (t1->isInteger() && t2->isInteger()) {
+ if (t2->getPrimitiveSizeInBits() < t1->getPrimitiveSizeInBits()) {
+ if (usign) {
+ val = new ZExtInst(val, t1, "", currentBlock);
+ } else {
+ val = new SExtInst(val, t1, "", currentBlock);
+ }
+ } else {
+ val = new TruncInst(val, t1, "", currentBlock);
+ }
+ } else if (t1->isFloatingPoint() && t2->isFloatingPoint()) {
+ if (t2->getPrimitiveSizeInBits() < t1->getPrimitiveSizeInBits()) {
+ val = new FPExtInst(val, t1, "", currentBlock);
+ } else {
+ val = new FPTruncInst(val, t1, "", currentBlock);
+ }
+ } else if (isa<PointerType>(t1) && isa<PointerType>(t2)) {
+ val = new BitCastInst(val, t1, "", currentBlock);
+ }
+ }
+}
void JavaJIT::setStaticField(uint16 index) {
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.h?rev=51333&r1=51332&r2=51333&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.h Tue May 20 15:45:19 2008
@@ -28,9 +28,11 @@
#include "mvm/Object.h"
#include "mvm/PrintBuffer.h"
+#include "JavaTypes.h"
+#include "JnjvmModule.h"
+
namespace jnjvm {
-class AssessorDesc;
class CacheNode;
class Class;
class JavaField;
@@ -107,14 +109,58 @@
// stack manipulation
std::vector< std::pair<llvm::Value*, const AssessorDesc*> > stack;
- void push(llvm::Value* val, const AssessorDesc* ass);
- void push(std::pair<llvm::Value*, const AssessorDesc*> pair);
- llvm::Value* pop();
- llvm::Value* popAsInt();
- llvm::Value* top();
- const AssessorDesc* topFunc();
- std::pair<llvm::Value*, const AssessorDesc*> popPair();
- uint32 stackSize();
+ void push(llvm::Value* val, const AssessorDesc* ass) {
+ assert(LLVMAssessorInfo::AssessorInfo[ass->numId].llvmType ==
+ val->getType());
+ stack.push_back(std::make_pair(val, ass));
+ }
+
+ void push(std::pair<llvm::Value*, const AssessorDesc*> pair) {
+ assert(LLVMAssessorInfo::AssessorInfo[pair.second->numId].llvmType ==
+ pair.first->getType());
+ stack.push_back(pair);
+ }
+
+ llvm::Value* pop() {
+ llvm::Value * ret = top();
+ stack.pop_back();
+ return ret;
+ }
+
+ llvm::Value* top() {
+ return stack.back().first;
+ }
+
+ const AssessorDesc* topFunc() {
+ return stack.back().second;
+ }
+
+ uint32 stackSize() {
+ return stack.size();
+ }
+
+ llvm::Value* popAsInt() {
+ llvm::Value * ret = top();
+ const AssessorDesc* ass = topFunc();
+ stack.pop_back();
+
+ if (ret->getType() != llvm::Type::Int32Ty) {
+ if (ass == AssessorDesc::dChar || ass == AssessorDesc::dBool) {
+ ret = new llvm::ZExtInst(ret, llvm::Type::Int32Ty, "", currentBlock);
+ } else {
+ ret = new llvm::SExtInst(ret, llvm::Type::Int32Ty, "", currentBlock);
+ }
+ }
+
+ return ret;
+
+ }
+
+ std::pair<llvm::Value*, const AssessorDesc*> popPair() {
+ std::pair<llvm::Value*, const AssessorDesc*> ret = stack.back();
+ stack.pop_back();
+ return ret;
+ }
// exceptions
std::vector<llvm::BasicBlock*> jsrs;
@@ -128,7 +174,9 @@
// block manipulation
llvm::BasicBlock* currentBlock;
- llvm::BasicBlock* createBasicBlock(const char* name = "");
+ llvm::BasicBlock* createBasicBlock(const char* name = "") {
+ return llvm::BasicBlock::Create(name, llvmFunction);
+ }
void setCurrentBlock(llvm::BasicBlock* block);
// branches
@@ -196,6 +244,10 @@
llvm::BasicBlock *InsertAtEnd);
+ void convertValue(llvm::Value*& val, const llvm::Type* t1,
+ llvm::BasicBlock* currentBlock, bool usign);
+
+
// wide status
bool wide;
uint32 WREAD_U1(uint8* bytecodes, bool init, uint32 &i);
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaJITOpcodes.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaJITOpcodes.cpp?rev=51333&r1=51332&r2=51333&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaJITOpcodes.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaJITOpcodes.cpp Tue May 20 15:45:19 2008
@@ -33,7 +33,6 @@
#include "JavaThread.h"
#include "JavaTypes.h"
#include "Jnjvm.h"
-#include "JnjvmModule.h"
#include "OpcodeNames.def"
@@ -100,32 +99,6 @@
}
}
-void convertValue(Value*& val, const Type* t1, BasicBlock* currentBlock,
- bool usign) {
- const Type* t2 = val->getType();
- if (t1 != t2) {
- if (t1->isInteger() && t2->isInteger()) {
- if (t2->getPrimitiveSizeInBits() < t1->getPrimitiveSizeInBits()) {
- if (usign) {
- val = new ZExtInst(val, t1, "", currentBlock);
- } else {
- val = new SExtInst(val, t1, "", currentBlock);
- }
- } else {
- val = new TruncInst(val, t1, "", currentBlock);
- }
- } else if (t1->isFloatingPoint() && t2->isFloatingPoint()) {
- if (t2->getPrimitiveSizeInBits() < t1->getPrimitiveSizeInBits()) {
- val = new FPExtInst(val, t1, "", currentBlock);
- } else {
- val = new FPTruncInst(val, t1, "", currentBlock);
- }
- } else if (isa<PointerType>(t1) && isa<PointerType>(t2)) {
- val = new BitCastInst(val, t1, "", currentBlock);
- }
- }
-}
-
void JavaJIT::compileOpcodes(uint8* bytecodes, uint32 codeLength) {
wide = false;
uint32 jsrIndex = 0;
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaThread.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaThread.cpp?rev=51333&r1=51332&r2=51333&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaThread.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaThread.cpp Tue May 20 15:45:19 2008
@@ -34,43 +34,3 @@
delete lock;
delete varcond;
}
-
-JavaThread* JavaThread::get() {
- return (JavaThread*)Thread::threadKey->get();
-}
-
-void JavaThread::initialise(JavaObject* thread, Jnjvm* isolate) {
- this->javaThread = thread;
- this->isolate = isolate;
- this->lock = mvm::Lock::allocNormal();
- this->varcond = mvm::Cond::allocCond();
- this->interruptFlag = 0;
- this->state = StateRunning;
- this->self = mvm::Thread::self();
- this->pendingException = 0;
-}
-
-JavaObject* JavaThread::currentThread() {
- JavaThread* result = get();
- if (result != 0)
- return result->javaThread;
- else
- return 0;
-}
-
-void JavaThread::throwPendingException() {
- JavaThread* th = JavaThread::get();
- assert(th->pendingException);
- void* exc = __cxa_allocate_exception(0);
- th->internalPendingException = exc;
- __cxa_throw(exc, 0, 0);
-}
-
-void JavaThread::returnFromNative() {
- assert(sjlj_buffers.size());
-#if defined(__MACH__)
- longjmp((int*)sjlj_buffers.back(), 1);
-#else
- longjmp((__jmp_buf_tag*)sjlj_buffers.back(), 1);
-#endif
-}
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaThread.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaThread.h?rev=51333&r1=51332&r2=51333&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaThread.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaThread.h Tue May 20 15:45:19 2008
@@ -51,9 +51,27 @@
virtual void TRACER;
virtual void destroyer(size_t sz);
- void initialise(JavaObject* thread, Jnjvm* isolate);
- static JavaThread* get();
- static JavaObject* currentThread();
+ void initialise(JavaObject* thread, Jnjvm* isolate) {
+ this->javaThread = thread;
+ this->isolate = isolate;
+ this->lock = mvm::Lock::allocNormal();
+ this->varcond = mvm::Cond::allocCond();
+ this->interruptFlag = 0;
+ this->state = StateRunning;
+ this->self = mvm::Thread::self();
+ this->pendingException = 0;
+ }
+
+ static JavaThread* get() {
+ return (JavaThread*)Thread::threadKey->get();
+ }
+ static JavaObject* currentThread() {
+ JavaThread* result = get();
+ if (result != 0)
+ return result->javaThread;
+ else
+ return 0;
+ }
static void* getException() {
return (void*)
@@ -69,7 +87,13 @@
__cxa_throw(exc, 0, 0);
}
- static void throwPendingException();
+ static void throwPendingException() {
+ JavaThread* th = JavaThread::get();
+ assert(th->pendingException);
+ void* exc = __cxa_allocate_exception(0);
+ th->internalPendingException = exc;
+ __cxa_throw(exc, 0, 0);
+ }
static void clearException() {
JavaThread* th = JavaThread::get();
@@ -88,7 +112,14 @@
return JavaThread::get()->pendingException;
}
- void returnFromNative();
+ void returnFromNative() {
+ assert(sjlj_buffers.size());
+#if defined(__MACH__)
+ longjmp((int*)sjlj_buffers.back(), 1);
+#else
+ longjmp((__jmp_buf_tag*)sjlj_buffers.back(), 1);
+#endif
+ }
};
} // end namespace jnjvm
More information about the llvm-commits
mailing list