[vmkit-commits] [vmkit] r199720 - Uniformize vt access from runtime.

Gael Thomas gael.thomas at lip6.fr
Tue Jan 21 02:42:26 PST 2014


Author: gthomas
Date: Tue Jan 21 04:42:26 2014
New Revision: 199720

URL: http://llvm.org/viewvc/llvm-project?rev=199720&view=rev
Log:
Uniformize vt access from runtime.

Modified:
    vmkit/branches/mcjit/include/j3/j3codegen.h
    vmkit/branches/mcjit/include/j3/j3meta.def
    vmkit/branches/mcjit/include/j3/j3symbols.h
    vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc

Modified: vmkit/branches/mcjit/include/j3/j3codegen.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3codegen.h?rev=199720&r1=199719&r2=199720&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3codegen.h (original)
+++ vmkit/branches/mcjit/include/j3/j3codegen.h Tue Jan 21 04:42:26 2014
@@ -126,6 +126,7 @@ namespace j3 {
 		llvm::Value*        staticObject(J3Class* cl);
 		llvm::Value*        vt(J3ObjectType* cl, bool resolve=0);
 		llvm::Value*        vt(llvm::Value* obj);
+		void                resolveJ3ObjectType(J3ObjectType* cl);
 		void                initialiseJ3ObjectType(J3ObjectType* cl);
 
 		void                monitorEnter(llvm::Value* obj);

Modified: vmkit/branches/mcjit/include/j3/j3meta.def
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3meta.def?rev=199720&r1=199719&r2=199720&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3meta.def (original)
+++ vmkit/branches/mcjit/include/j3/j3meta.def Tue Jan 21 04:42:26 2014
@@ -1,6 +1,6 @@
 _x(funcJ3TypeVT,                    "j3::J3Type::vt()")
-_x(funcJ3TypeVTAndResolve,          "j3::J3Type::vtAndResolve()")
-_x(funcJ3TypeInitialise,            "j3::J3Type::initialise()")
+_x(funcJ3ObjectTypeResolve,         "j3::J3Type::resolve()")
+_x(funcJ3ObjectTypeInitialise,      "j3::J3Type::initialise()")
 _x(funcJ3ClassStringAt,             "j3::J3Class::stringAt(unsigned short, bool)")
 _x(funcJ3TypeJavaClass,             "j3::J3Type::javaClass(bool, j3::J3ObjectHandle*)")
 _x(funcJniEnv,                      "j3::J3::jniEnv()")

Modified: vmkit/branches/mcjit/include/j3/j3symbols.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3symbols.h?rev=199720&r1=199719&r2=199720&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3symbols.h (original)
+++ vmkit/branches/mcjit/include/j3/j3symbols.h Tue Jan 21 04:42:26 2014
@@ -18,10 +18,13 @@ namespace j3 {
 	public:
 		J3VTSymbol() {}
 
+		J3VirtualTable* vt() { return _vt; }
+		
 		char* id() { return _id; }
-		void* getSymbolAddress() { return _vt; }
+		void* getSymbolAddress() { return vt(); }
 		
-		void  set(char* id, J3VirtualTable* vt) { _id = id; _vt = vt; }
+		void  setId(char* id) { _id = id; }
+		void  setVt(J3VirtualTable* vt) { _vt = vt; }
 	};
 
 	class J3StaticObjectSymbol : public vmkit::Symbol {

Modified: vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc?rev=199720&r1=199719&r2=199720&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc Tue Jan 21 04:42:26 2014
@@ -325,9 +325,14 @@ void J3CodeGen::monitorExit(llvm::Value*
 	builder.CreateBr(ok);
 }
 
+void J3CodeGen::resolveJ3ObjectType(J3ObjectType* cl) {
+	if(!supposeClinited() && !cl->isResolved())
+		builder.CreateCall(funcJ3ObjectTypeResolve, typeDescriptor(cl, vm->typeJ3TypePtr));
+}
+
 void J3CodeGen::initialiseJ3ObjectType(J3ObjectType* cl) {
 	if(!supposeClinited() && !cl->isInitialised())
-		builder.CreateCall(funcJ3TypeInitialise, typeDescriptor(cl, vm->typeJ3TypePtr));
+		builder.CreateCall(funcJ3ObjectTypeInitialise, typeDescriptor(cl, vm->typeJ3TypePtr));
 }
 
 llvm::Value* J3CodeGen::javaClass(J3ObjectType* type, bool doPush) {
@@ -361,8 +366,9 @@ llvm::Value* J3CodeGen::vt(llvm::Value*
 }
 
 llvm::Value* J3CodeGen::vt(J3ObjectType* type, bool doResolve) {
-	llvm::Value* func = !supposeClinited() && doResolve && !type->isResolved() ? funcJ3TypeVTAndResolve : funcJ3TypeVT;
-	return builder.CreateCall(func, typeDescriptor(type, vm->typeJ3TypePtr));
+	if(doResolve)
+		resolveJ3ObjectType(type);
+	return builder.CreateCall(funcJ3TypeVT, typeDescriptor(type, vm->typeJ3TypePtr));
 }
 
 llvm::Value* J3CodeGen::nullCheck(llvm::Value* obj) {





More information about the vmkit-commits mailing list