[vmkit-commits] [vmkit] r198289 - Add some annotation names

Gael Thomas gael.thomas at lip6.fr
Wed Jan 1 16:02:16 PST 2014


Author: gthomas
Date: Wed Jan  1 18:02:15 2014
New Revision: 198289

URL: http://llvm.org/viewvc/llvm-project?rev=198289&view=rev
Log:
Add some annotation names

Modified:
    vmkit/branches/mcjit/include/j3/j3.h
    vmkit/branches/mcjit/include/j3/j3class.h
    vmkit/branches/mcjit/include/j3/j3constants.h
    vmkit/branches/mcjit/lib/j3/openjdk/j3lib.cc
    vmkit/branches/mcjit/lib/j3/vm/j3.cc
    vmkit/branches/mcjit/lib/j3/vm/j3class.cc
    vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc
    vmkit/branches/mcjit/lib/j3/vm/j3constants.cc

Modified: vmkit/branches/mcjit/include/j3/j3.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3.h?rev=198289&r1=198288&r2=198289&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3.h (original)
+++ vmkit/branches/mcjit/include/j3/j3.h Wed Jan  1 18:02:15 2014
@@ -13,6 +13,7 @@
 #include "j3/j3typesdef.h"
 #include "j3/j3jni.h"
 #include "j3/j3monitor.h"
+#include "j3/j3constants.h"
 
 namespace j3 {
 	class J3InitialClassLoader;
@@ -50,6 +51,11 @@ namespace j3 {
 
 		static J3*  create();
 
+#define defJavaConstantName(name, id) \
+	  const vmkit::Name* name;
+	  onJavaConstantNames(defJavaConstantName)
+#undef defJavaConstantName
+
 #define defPrimitive(name, ctype, llvmtype, scale)	\
 		J3Primitive* type##name;
 		onJavaTypes(defPrimitive)
@@ -73,6 +79,7 @@ namespace j3 {
 		J3Method*        classClassInit;
 		J3Field*         classClassVMData;
 
+		J3Class*         threadClass;
 		J3Field*         threadClassVMData;
 		J3Method*        threadClassRun;
 
@@ -81,12 +88,6 @@ namespace j3 {
 		J3Field*         fieldClassSlot;
 		J3Method*        fieldClassInit;
 
-		const vmkit::Name* codeAttr;
-		const vmkit::Name* constantValueAttr;
-		const vmkit::Name* initName;
-		const vmkit::Name* clinitName;
-		const vmkit::Name* clinitSign;
-
 		llvm::Type* typeJNIEnvPtr;
 		llvm::Type* typeJ3VirtualTablePtr;
 		llvm::Type* typeJ3Type;

Modified: vmkit/branches/mcjit/include/j3/j3class.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3class.h?rev=198289&r1=198288&r2=198289&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3class.h (original)
+++ vmkit/branches/mcjit/include/j3/j3class.h Wed Jan  1 18:02:15 2014
@@ -244,8 +244,6 @@ namespace j3 {
 
 		J3Field*            findVirtualField(const vmkit::Name* name, const J3Type* type, bool error=1);
 		J3Field*            findStaticField(const vmkit::Name* name, const J3Type* type, bool error=1);
-		J3Field*            findVirtualField(const wchar_t* name, const J3Type* type, bool error=1);
-		J3Field*            findStaticField(const wchar_t* name, const J3Type* type, bool error=1);
 	};
 
 	class J3ArrayClass : public J3ObjectType {

Modified: vmkit/branches/mcjit/include/j3/j3constants.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3constants.h?rev=198289&r1=198288&r2=198289&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3constants.h (original)
+++ vmkit/branches/mcjit/include/j3/j3constants.h Wed Jan  1 18:02:15 2014
@@ -23,12 +23,23 @@ namespace j3 {
 
 		static const int MAGIC = 0xcafebabe;
 
-		static wchar_t codeAttr[];
-		static wchar_t constantValueAttr[];
+#define onJavaConstantNames(_)																					\
+		_(clinitName,                 L"<clinit>")													\
+		_(clinitSign,                 L"()V")																\
+		_(initName,                   L"<init>")														\
+																																				\
+		_(codeAttribute,              L"Code")															\
+		_(constantValueAttribute,     L"ConstantValue")											\
+		_(annotationsAttribute,       L"RuntimeVisibleAnnotations")					\
+		_(exceptionsAttribute,        L"Exceptions")												\
+		_(lineNumberTableAttribute,   L"LineNumberTable")										\
+		_(innerClassesAttribute,      L"InnerClasses")											\
+		_(sourceFileAttribute,        L"SourceFile")												\
+		_(signatureAttribute,         L"Signature")													\
+		_(enclosingMethodAttribute,   L"EnclosingMethod")										\
+		_(paramAnnotationsAttribute,  L"RuntimeVisibleParameterAnnotations") \
+		_(annotationDefaultAttribute, L"AnnotationDefault")
 
-		static wchar_t clinitName[];
-		static wchar_t clinitSign[];
-		static wchar_t initName[];
 		static char    nativePrefix[];
 
 		static void initialize(vmkit::Names* names);

Modified: vmkit/branches/mcjit/lib/j3/openjdk/j3lib.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/openjdk/j3lib.cc?rev=198289&r1=198288&r2=198289&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/openjdk/j3lib.cc (original)
+++ vmkit/branches/mcjit/lib/j3/openjdk/j3lib.cc Wed Jan  1 18:02:15 2014
@@ -23,26 +23,26 @@ static const char* rtjar = OPENJDK_HOME"
 
 void J3Lib::bootstrap(J3* vm) {
 	J3ObjectHandle* prev = J3Thread::get()->tell();
-
+	J3Class* threadGroupClass = vm->initialClassLoader->loadClass(vm->names()->get(L"java/lang/ThreadGroup"));
 	J3Method*       sysThreadGroupInit = vm->initialClassLoader->method(0, 
-																																			L"java/lang/ThreadGroup", 
-																																			J3Cst::initName, 
-																																			L"()V");
+																																			threadGroupClass, 
+																																			vm->initName, 
+																																			vm->names()->get(L"()V"));
 	J3ObjectHandle* sysThreadGroup = J3ObjectHandle::doNewObject(sysThreadGroupInit->cl());
 	sysThreadGroupInit->invokeSpecial(sysThreadGroup);
 
 
 	J3Method*       appThreadGroupInit = vm->initialClassLoader->method(0, 
-																																			L"java/lang/ThreadGroup", 
-																																			J3Cst::initName, 
-																																			L"(Ljava/lang/ThreadGroup;Ljava/lang/String;)V");
+																																			threadGroupClass,
+																																			vm->initName, 
+																																			vm->names()->get(L"(Ljava/lang/ThreadGroup;Ljava/lang/String;)V"));
 	J3ObjectHandle* appThreadGroup = J3ObjectHandle::doNewObject(appThreadGroupInit->cl());
 	appThreadGroupInit->invokeSpecial(appThreadGroup, sysThreadGroup, vm->utfToString("main"));
 
 	J3Method*       threadInit = vm->initialClassLoader->method(0,
-																															L"java/lang/Thread",
-																															J3Cst::initName,
-																															L"(Ljava/lang/ThreadGroup;Ljava/lang/String;)V");
+																															vm->threadClass,
+																															vm->initName,
+																															vm->names()->get(L"(Ljava/lang/ThreadGroup;Ljava/lang/String;)V"));
 	J3ObjectHandle* mainThread = J3ObjectHandle::doNewObject(threadInit->cl());
 
 	J3Thread::get()->assocJavaThread(mainThread);

Modified: vmkit/branches/mcjit/lib/j3/vm/j3.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3.cc?rev=198289&r1=198288&r2=198289&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3.cc Wed Jan  1 18:02:15 2014
@@ -30,12 +30,13 @@ J3::J3(vmkit::BumpAllocator* allocator)
 	_names(allocator),
 	monitorManager(allocator),
 	llvmSignatures(llvmFunctionTypeLess, allocator) {
+
+#define defJavaConstantName(name, id) \
+	name = names()->get(id);
+	onJavaConstantNames(defJavaConstantName)
+#undef defJavaConstantName
+
 	pthread_mutex_init(&stringsMutex, 0);
-	constantValueAttr = names()->get(J3Cst::constantValueAttr);
-	codeAttr =          names()->get(J3Cst::codeAttr);
-	clinitName =        names()->get(J3Cst::clinitName);
-	clinitSign =        names()->get(J3Cst::clinitSign);
-	initName =          names()->get(J3Cst::initName);
 	interfaceTrampoline = J3Trampoline::buildInterfaceTrampoline(allocator);
 }
 
@@ -97,8 +98,8 @@ void J3::run() {
 #define z_class(clName)                      initialClassLoader->loadClass(names()->get(clName))
 #define z_method(access, cl, name, sign)     initialClassLoader->method(access, cl, name, sign)
 #define z_field(access, cl, name, type)      J3Cst::isStatic(access)	\
-			? cl->findStaticField(name, type)																\
-			: cl->findVirtualField(name, type);
+			? cl->findStaticField(names()->get(name), type)									\
+			: cl->findVirtualField(names()->get(name), type);
 
 
 	nbArrayInterfaces    = 2;
@@ -110,22 +111,23 @@ void J3::run() {
 	objectClass              = z_class(L"java/lang/Object");
 	
 	stringClass              = z_class(L"java/lang/String");
-	stringClassInit          = z_method(0, stringClass, J3Cst::initName, L"([CZ)V");
+	stringClassInit          = z_method(0, stringClass, initName, names()->get(L"([CZ)V"));
 	stringClassValue         = z_field(0, stringClass, L"value", charArrayClass);
 
 	classClass               = z_class(L"java/lang/Class");
 	J3Field hf(J3Cst::ACC_PRIVATE, names()->get(L"** vmData **"), typeLong);
 	classClass->resolve(&hf, 1);
-	classClassInit           = z_method(0, classClass, J3Cst::initName, L"()V");
-	classClassVMData         = z_field(0, classClass, hf.name(), hf.type());
+	classClassInit           = z_method(0, classClass, initName, names()->get(L"()V"));
+	classClassVMData         = classClass->findVirtualField(hf.name(), hf.type());
 
-	threadClassRun           = z_method(0, z_class(L"java/lang/Thread"), L"run", L"()V");
+	threadClass              = z_class(L"java/lang/Thread");
+	threadClassRun           = z_method(0, threadClass, L"run", L"()V");
 	threadClassVMData        = initialClassLoader->loadClass(names()->get("java/lang/Thread"))
 		->findVirtualField(names()->get(L"eetop"), typeLong);
 
 	fieldClass               = z_class(L"java/lang/reflect/Field");
-	fieldClassInit           = z_method(0, fieldClass, J3Cst::initName, 
-																			L"(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;IILjava/lang/String;[B)V");
+	fieldClassInit           = z_method(0, fieldClass, initName, 
+																			names()->get(L"(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;IILjava/lang/String;[B)V"));
 	fieldClassClass          = z_field(0, fieldClass, L"clazz", classClass);
 	fieldClassSlot           = z_field(0, fieldClass, L"slot", typeInteger);
 #if 0
@@ -251,9 +253,7 @@ void J3::printStackTrace() {
 }
 
 void J3::forceSymbolDefinition() {
-	J3Value val;
 	J3ArrayObject a; a.length(); /* J3ArrayObject */
-	printf("---> %p\n", &val.valFloat);
 	J3LockRecord* l = new J3LockRecord(); /* J3LockRecord */
 	try {
 		throw (void*)0;

Modified: vmkit/branches/mcjit/lib/j3/vm/j3class.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3class.cc?rev=198289&r1=198288&r2=198289&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3class.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3class.cc Wed Jan  1 18:02:15 2014
@@ -362,14 +362,6 @@ J3Field* J3Class::findStaticField(const
 	return res;
 }
 
-J3Field* J3Class::findVirtualField(const wchar_t* name, const J3Type* type, bool error) {
-	return findVirtualField(loader()->vm()->names()->get(name), type, error);
-}
-
-J3Field* J3Class::findStaticField(const wchar_t* name, const J3Type* type, bool error) {
-	return findStaticField(loader()->vm()->names()->get(name), type, error);
-}
-
 void J3Class::registerNative(const vmkit::Name* methName, const vmkit::Name* methSign, void* fnPtr) {
 	resolve();
 	J3Method* res = staticLayout()->findMethod(methName, methSign);
@@ -406,7 +398,7 @@ void J3Class::doInitialise() {
 
 		for(size_t i=0; i<staticLayout()->nbFields(); i++) {
 			J3Field* cur = staticLayout()->fields() + i;
-			J3Attribute* attr = cur->attributes()->lookup(loader()->vm()->constantValueAttr);
+			J3Attribute* attr = cur->attributes()->lookup(loader()->vm()->constantValueAttribute);
 
 			if(attr) {
 				J3Reader reader(bytes());

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=198289&r1=198288&r2=198289&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc Wed Jan  1 18:02:15 2014
@@ -1529,7 +1529,7 @@ void J3CodeGen::explore() {
 #endif
 
 void J3CodeGen::generateJava() {
-	J3Attribute* attr = method->attributes()->lookup(vm->codeAttr);
+	J3Attribute* attr = method->attributes()->lookup(vm->codeAttribute);
 
 	if(!attr)
 		J3::classFormatError(cl, L"No Code attribute in %ls %ls", method->name()->cStr(), method->sign()->cStr());

Modified: vmkit/branches/mcjit/lib/j3/vm/j3constants.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3constants.cc?rev=198289&r1=198288&r2=198289&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3constants.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3constants.cc Wed Jan  1 18:02:15 2014
@@ -8,12 +8,6 @@
 
 using namespace j3;
 
-wchar_t J3Cst::codeAttr[] = L"Code";
-wchar_t J3Cst::constantValueAttr[] = L"ConstantValue";
-
-wchar_t J3Cst::clinitName[] = L"<clinit>";
-wchar_t J3Cst::clinitSign[] = L"()V";
-wchar_t J3Cst::initName[]   = L"<init>";
 char    J3Cst::nativePrefix[] = "Java_";
 
 const vmkit::Name* J3Cst::rewrite(J3* vm, const vmkit::Name* clName, const vmkit::Name* orig) {





More information about the vmkit-commits mailing list