[vmkit-commits] [vmkit] r196271 - route getSymbolAddress to the appropriate symbol, resolution is not yet implemented
Gael Thomas
gael.thomas at lip6.fr
Tue Dec 3 04:34:42 PST 2013
Author: gthomas
Date: Tue Dec 3 06:34:41 2013
New Revision: 196271
URL: http://llvm.org/viewvc/llvm-project?rev=196271&view=rev
Log:
route getSymbolAddress to the appropriate symbol, resolution is not yet implemented
Added:
vmkit/branches/mcjit/lib/j3/vm/j3symbol.cc
Modified:
vmkit/branches/mcjit/include/j3/j3classloader.h
vmkit/branches/mcjit/include/j3/j3codegen.h
vmkit/branches/mcjit/include/j3/j3symbol.h
vmkit/branches/mcjit/lib/j3/vm/j3classloader.cc
Modified: vmkit/branches/mcjit/include/j3/j3classloader.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3classloader.h?rev=196271&r1=196270&r2=196271&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3classloader.h (original)
+++ vmkit/branches/mcjit/include/j3/j3classloader.h Tue Dec 3 06:34:41 2013
@@ -4,6 +4,8 @@
#include <map>
#include <vector>
+#include "llvm/ExecutionEngine/SectionMemoryManager.h"
+
#include "vmkit/allocator.h"
#include "vmkit/names.h"
@@ -31,7 +33,7 @@ namespace j3 {
class J3Class;
class J3Symbol;
- class J3ClassLoader {
+ class J3ClassLoader : public llvm::SectionMemoryManager {
struct J3MethodLess : public std::binary_function<wchar_t*,wchar_t*,bool> {
bool operator()(const J3Method* lhs, const J3Method* rhs) const;
};
@@ -63,6 +65,9 @@ namespace j3 {
void wrongType(J3Class* from, const vmkit::Name* type);
J3Type* getTypeInternal(J3Class* from, const vmkit::Name* type, uint32_t start, uint32_t* end);
+
+ uint64_t getSymbolAddress(const std::string &Name);
+
protected:
std::vector<void*, vmkit::StdAllocator<void*> > nativeLibraries;
@@ -71,7 +76,6 @@ namespace j3 {
J3ClassLoader(J3* vm, J3ObjectHandle* javaClassLoader, vmkit::BumpAllocator* allocator);
void addSymbol(const char* id, J3Symbol* symbol);
- J3Symbol* getSymbol(const char* id);
static void destroy(J3ClassLoader* loader);
Modified: vmkit/branches/mcjit/include/j3/j3codegen.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3codegen.h?rev=196271&r1=196270&r2=196271&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3codegen.h (original)
+++ vmkit/branches/mcjit/include/j3/j3codegen.h Tue Dec 3 06:34:41 2013
@@ -96,73 +96,73 @@ namespace j3 {
bool isWide;
- uint32_t wideReadU1();
- uint32_t wideReadS1();
+ uint32_t wideReadU1();
+ uint32_t wideReadS1();
- llvm::Value* nullCheck(llvm::Value* obj);
+ llvm::Value* nullCheck(llvm::Value* obj);
- bool onEndPoint();
- llvm::BasicBlock* forwardBranch(const char* id, uint32_t pc, bool doAlloc, bool doPush);
- void condBr(llvm::Value* op);
+ bool onEndPoint();
+ llvm::BasicBlock* forwardBranch(const char* id, uint32_t pc, bool doAlloc, bool doPush);
+ void condBr(llvm::Value* op);
- llvm::Value* flatten(llvm::Value* v, J3Type* type);
- llvm::Value* unflatten(llvm::Value* v, J3Type* type);
+ llvm::Value* flatten(llvm::Value* v, J3Type* type);
+ llvm::Value* unflatten(llvm::Value* v, J3Type* type);
- llvm::Value* handleToObject(llvm::Value* obj);
- llvm::Value* javaClass(J3ObjectType* type);
- llvm::Value* staticInstance(J3Class* cl);
- llvm::Value* vt(J3Type* cl);
- llvm::Value* vt(llvm::Value* obj);
- void initialiseJ3Type(J3Type* cl);
+ llvm::Value* handleToObject(llvm::Value* obj);
+ llvm::Value* javaClass(J3ObjectType* type);
+ llvm::Value* staticInstance(J3Class* cl);
+ llvm::Value* vt(J3Type* cl);
+ llvm::Value* vt(llvm::Value* obj);
+ void initialiseJ3Type(J3Type* cl);
- llvm::Value* isAssignableTo(llvm::Value* obj, J3Type* type);
- void instanceof(llvm::Value* obj, J3Type* type);
- void checkCast(llvm::Value* obj, J3Type* type);
+ llvm::Value* isAssignableTo(llvm::Value* obj, J3Type* type);
+ void instanceof(llvm::Value* obj, J3Type* type);
+ void checkCast(llvm::Value* obj, J3Type* type);
- void floatToInteger(J3Type* from, J3Type* to);
- void compareFP(bool isL);
- void compareLong();
+ void floatToInteger(J3Type* from, J3Type* to);
+ void compareFP(bool isL);
+ void compareLong();
- void get(llvm::Value* obj, J3Field* field);
- void getField(uint32_t idx);
- void getStatic(uint32_t idx);
+ void get(llvm::Value* obj, J3Field* field);
+ void getField(uint32_t idx);
+ void getStatic(uint32_t idx);
- void put(llvm::Value* obj, llvm::Value* val, J3Field* field);
- void putField(uint32_t idx);
- void putStatic(uint32_t idx);
+ void put(llvm::Value* obj, llvm::Value* val, J3Field* field);
+ void putField(uint32_t idx);
+ void putStatic(uint32_t idx);
- void invoke(J3Method* method, llvm::Value* func);
- void invokeVirtual(uint32_t idx);
- void invokeStatic(uint32_t idx);
- void invokeSpecial(uint32_t idx);
+ void invoke(J3Method* method, llvm::Value* func);
+ void invokeVirtual(uint32_t idx);
+ void invokeStatic(uint32_t idx);
+ void invokeSpecial(uint32_t idx);
- llvm::Value* arrayContent(J3Type* cType, llvm::Value* array, llvm::Value* idx);
+ llvm::Value* arrayContent(J3Type* cType, llvm::Value* array, llvm::Value* idx);
- void arrayBoundCheck(llvm::Value* obj, llvm::Value* idx);
- llvm::Value* arrayLength(llvm::Value* obj);
- llvm::Value* arrayLengthPtr(llvm::Value* obj);
- void arrayStore(J3Type* cType);
- void arrayLoad(J3Type* cType);
+ void arrayBoundCheck(llvm::Value* obj, llvm::Value* idx);
+ llvm::Value* arrayLength(llvm::Value* obj);
+ llvm::Value* arrayLengthPtr(llvm::Value* obj);
+ void arrayStore(J3Type* cType);
+ void arrayLoad(J3Type* cType);
- void newArray(uint8_t atype);
- void newArray(J3ArrayClass* type);
- void newObject(J3Class* cl);
+ void newArray(uint8_t atype);
+ void newArray(J3ArrayClass* type);
+ void newObject(J3Class* cl);
- void ldc(uint32_t idx);
+ void ldc(uint32_t idx);
- void translate();
+ void translate();
- void initExceptionNode(J3ExceptionNode** pnode, uint32_t pc, J3ExceptionNode* node);
- void addToExceptionNode(J3ExceptionNode* node, J3ExceptionEntry* entry);
- void closeExceptionNode(J3ExceptionNode* node);
+ void initExceptionNode(J3ExceptionNode** pnode, uint32_t pc, J3ExceptionNode* node);
+ void addToExceptionNode(J3ExceptionNode* node, J3ExceptionEntry* entry);
+ void closeExceptionNode(J3ExceptionNode* node);
- void generateJava();
- void generateNative();
+ void generateJava();
+ void generateNative();
- llvm::Value* buildString(const char* msg);
+ llvm::Value* buildString(const char* msg);
- static void echoDebugEnter(uint32_t isLeave, const char* msg, ...);
- static void echoDebugExecute(uint32_t level, const char* msg, ...);
+ static void echoDebugEnter(uint32_t isLeave, const char* msg, ...);
+ static void echoDebugExecute(uint32_t level, const char* msg, ...);
llvm::Function* funcJ3MethodIndex;
llvm::Function* funcJ3TypeVT;
Modified: vmkit/branches/mcjit/include/j3/j3symbol.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3symbol.h?rev=196271&r1=196270&r2=196271&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3symbol.h (original)
+++ vmkit/branches/mcjit/include/j3/j3symbol.h Tue Dec 3 06:34:41 2013
@@ -6,9 +6,7 @@
namespace j3 {
class J3Symbol : public vmkit::PermanentObject {
public:
- virtual int isMethodPointer() { return 0; }
- virtual int isMethodDescriptor() { return 0; }
- virtual int isTypeDescriptor() { return 0; }
+ uint64_t getSymbolAddress();
};
};
Modified: vmkit/branches/mcjit/lib/j3/vm/j3classloader.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3classloader.cc?rev=196271&r1=196270&r2=196271&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3classloader.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3classloader.cc Tue Dec 3 06:34:41 2013
@@ -69,11 +69,11 @@ void J3ClassLoader::addSymbol(const char
pthread_mutex_unlock(&_mutexSymbolTable);
}
-J3Symbol* J3ClassLoader::getSymbol(const char* id) {
+uint64_t J3ClassLoader::getSymbolAddress(const std::string &Name) {
pthread_mutex_lock(&_mutexSymbolTable);
- J3Symbol* res = _symbolTable[id];
+ J3Symbol* res = _symbolTable[Name.c_str()];
pthread_mutex_unlock(&_mutexSymbolTable);
- return res;
+ return res->getSymbolAddress();
}
void* J3ClassLoader::lookupNativeFunctionPointer(J3Method* method, const char* symbol) {
Added: vmkit/branches/mcjit/lib/j3/vm/j3symbol.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3symbol.cc?rev=196271&view=auto
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3symbol.cc (added)
+++ vmkit/branches/mcjit/lib/j3/vm/j3symbol.cc Tue Dec 3 06:34:41 2013
@@ -0,0 +1,9 @@
+#include "j3/j3symbol.h"
+#include "j3/j3thread.h"
+#include "j3/j3.h"
+
+using namespace j3;
+
+uint64_t J3Symbol::getSymbolAddress() {
+ J3Thread::get()->vm()->internalError(L"implement me: getSymbolAddress");
+}
More information about the vmkit-commits
mailing list