[vmkit-commits] [vmkit] r198864 - modifs methodology

Gael Thomas gael.thomas at lip6.fr
Thu Jan 9 05:03:46 PST 2014


Author: gthomas
Date: Thu Jan  9 07:03:45 2014
New Revision: 198864

URL: http://llvm.org/viewvc/llvm-project?rev=198864&view=rev
Log:
modifs methodology

Modified:
    vmkit/branches/mcjit/include/j3/j3.h
    vmkit/branches/mcjit/include/j3/j3classloader.h
    vmkit/branches/mcjit/include/j3/j3codegen.h
    vmkit/branches/mcjit/include/j3/j3meta.def
    vmkit/branches/mcjit/lib/j3/openjdk/j3openjdk.cc
    vmkit/branches/mcjit/lib/j3/vm/j3.cc
    vmkit/branches/mcjit/lib/j3/vm/j3class.cc
    vmkit/branches/mcjit/lib/j3/vm/j3classloader.cc
    vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc
    vmkit/branches/mcjit/lib/j3/vm/j3options.cc
    vmkit/branches/mcjit/lib/vmkit/thread.cc

Modified: vmkit/branches/mcjit/include/j3/j3.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3.h?rev=198864&r1=198863&r2=198864&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3.h (original)
+++ vmkit/branches/mcjit/include/j3/j3.h Thu Jan  9 07:03:45 2014
@@ -85,6 +85,9 @@ namespace j3 {
 		J3Method*        classClassInit;
 		J3Field*         classClassVMData;
 
+		J3Class*         classClassLoader;
+		J3Field*         classClassLoaderVMData;
+
 		J3Class*         threadClass;
 		J3Field*         threadClassVMData;
 		J3Method*        threadClassRun;
@@ -126,6 +129,8 @@ namespace j3 {
 		J3ObjectHandle*            utfToString(const char* name, bool doPush=1);
 		J3ObjectHandle*            nameToString(const vmkit::Name* name, bool doPush=1);
 		J3ObjectHandle*            arrayToString(J3ObjectHandle* array, bool doPush=1);
+		const vmkit::Name*         arrayToName(J3ObjectHandle* array);
+		const vmkit::Name*         stringToName(J3ObjectHandle* str);
 
 		void                       run();
 		void                       start(int argc, char** argv);

Modified: vmkit/branches/mcjit/include/j3/j3classloader.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3classloader.h?rev=198864&r1=198863&r2=198864&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3classloader.h (original)
+++ vmkit/branches/mcjit/include/j3/j3classloader.h Thu Jan  9 07:03:45 2014
@@ -63,7 +63,8 @@ namespace j3 {
 		uint32_t                      interfaceIndex(J3Method* signature);
 
 		J3GlobalReferences*           globalReferences() { return &_globalReferences; }
-		
+
+		static J3ClassLoader*         nativeClassLoader(J3ObjectHandle* jloader);
 		J3ObjectHandle*               javaClassLoader(bool doPush=1);
 
 		J3Class*                      defineClass(const vmkit::Name* name, J3ClassBytes* bytes);

Modified: vmkit/branches/mcjit/include/j3/j3codegen.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3codegen.h?rev=198864&r1=198863&r2=198864&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3codegen.h (original)
+++ vmkit/branches/mcjit/include/j3/j3codegen.h Thu Jan  9 07:03:45 2014
@@ -167,6 +167,7 @@ namespace j3 {
 
 		static void         echoDebugEnter(uint32_t isLeave, const char* msg, ...);
 		static void         echoDebugExecute(uint32_t level, const char* msg, ...);
+		static void         echoElement(uint32_t level, uint32_t type, uintptr_t elmt);
 
 #define _x(name, id)														\
 		llvm::Function* name;

Modified: vmkit/branches/mcjit/include/j3/j3meta.def
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3meta.def?rev=198864&r1=198863&r2=198864&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3meta.def (original)
+++ vmkit/branches/mcjit/include/j3/j3meta.def Thu Jan  9 07:03:45 2014
@@ -19,6 +19,7 @@ _x(funcJ3ThreadTell,             "j3::J3
 _x(funcJ3ThreadRestore,          "j3::J3Thread::restore(j3::J3ObjectHandle*)")
 _x(funcEchoDebugEnter,           "j3::J3CodeGen::echoDebugEnter(unsigned int, char const*, ...)")
 _x(funcEchoDebugExecute,         "j3::J3CodeGen::echoDebugExecute(unsigned int, char const*, ...)")
+_x(funcEchoElement,              "j3::J3CodeGen::echoElement(unsigned int, unsigned int, unsigned long)")
 _x(funcIsAssignableTo,           "j3::J3VirtualTable::isAssignableTo(j3::J3VirtualTable*)")
 _x(funcFastIsAssignableToPrimaryChecker, "j3::J3VirtualTable::fastIsAssignableToPrimaryChecker(j3::J3VirtualTable*, unsigned int)")
 _x(funcFastIsAssignableToNonPrimaryChecker, "j3::J3VirtualTable::fastIsAssignableToNonPrimaryChecker(j3::J3VirtualTable*)")

Modified: vmkit/branches/mcjit/lib/j3/openjdk/j3openjdk.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/openjdk/j3openjdk.cc?rev=198864&r1=198863&r2=198864&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/openjdk/j3openjdk.cc (original)
+++ vmkit/branches/mcjit/lib/j3/openjdk/j3openjdk.cc Thu Jan  9 07:03:45 2014
@@ -20,7 +20,6 @@ using namespace j3;
 
 #define NYI() { J3Thread::get()->vm()->internalError("not yet implemented: '%s'", __PRETTY_FUNCTION__); }
 
-
 /*************************************************************************
  PART 0
  ************************************************************************/
@@ -67,12 +66,7 @@ jstring JNICALL JVM_InternString(JNIEnv*
 
 	J3* vm = J3Thread::get()->vm();
 
-	J3ObjectHandle* value = str->getObject(vm->stringClassValue);
-	char copy[J3Utf16Decoder::maxSize(value)];
-	
-	J3Utf16Decoder::decode(value, copy);
-
-	res = vm->utfToString(copy);
+	res = vm->nameToString(vm->stringToName(str));
 
 	leaveJVM(); 
 	return res;
@@ -86,12 +80,22 @@ jlong JNICALL JVM_CurrentTimeMillis(JNIE
 	enterJVM(); 
 	struct timeval tv;
 	gettimeofday(&tv, 0);
-	res = tv.tv_sec*1e3 + tv.tv_usec/1000;
+	res = tv.tv_sec*1e3 + tv.tv_usec/1e3;
+	leaveJVM(); 
+	return res;
+}
+
+jlong JNICALL JVM_NanoTime(JNIEnv* env, jclass ignored) { 
+	/* TODO: better timer? */
+	jlong res;
+	enterJVM(); 
+	struct timeval tv;
+	gettimeofday(&tv, 0);
+	res = tv.tv_sec*1e9 + tv.tv_usec*1e3;
 	leaveJVM(); 
 	return res;
 }
 
-jlong JNICALL JVM_NanoTime(JNIEnv* env, jclass ignored) { enterJVM(); NYI(); leaveJVM(); }
 void JNICALL JVM_ArrayCopy(JNIEnv* env, jclass ignored, jobject src, jint src_pos, jobject dst, jint dst_pos, jint length) { 
 	enterJVM(); 
 
@@ -145,31 +149,47 @@ jobject JNICALL JVM_InitProperties(JNIEn
 #define setPropEnv(key, val) ({ const char* tmp = getenv(val); if(!tmp) tmp = ""; setProp(key, val); })
 
 	/*
-	 * <dt>java.version         <dd>Java version number
-	 * <dt>java.vendor          <dd>Java vendor specific string
-	 * <dt>java.vendor.url      <dd>Java vendor URL
-	 * <dt>java.home            <dd>Java installation directory
-	 * <dt>java.class.version   <dd>Java class version number
-	 * <dt>java.class.path      <dd>Java classpath
-	 * <dt>os.name              <dd>Operating System Name
-	 * <dt>os.arch              <dd>Operating System Architecture
-	 * <dt>os.version           <dd>Operating System Version
-	 * <dt>file.separator       <dd>File separator ("/" on Unix)
-	 * <dt>path.separator       <dd>Path separator (":" on Unix)
-	 * <dt>line.separator       <dd>Line separator ("\n" on Unix)
-	 * <dt>user.name            <dd>User account name
-	 * <dt>user.home            <dd>User home directory
-	 * <dt>user.dir             <dd>User's current working directory
-	 */
+	** <dt>java.version         <dd>Java version number
+	** <dt>java.vendor          <dd>Java vendor specific string
+	** <dt>java.vendor.url      <dd>Java vendor URL
+	** <dt>java.home            <dd>Java installation directory
+	** <dt>java.class.version   <dd>Java class version number
+	** <dt>java.class.path      <dd>Java classpath
+	** <dt>os.name              <dd>Operating System Name
+	** <dt>os.arch              <dd>Operating System Architecture
+	** <dt>os.version           <dd>Operating System Version
+	** <dt>file.separator       <dd>File separator ("/" on Unix)
+	** <dt>path.separator       <dd>Path separator (":" on Unix)
+	** <dt>line.separator       <dd>Line separator ("\n" on Unix)
+	** <dt>user.name            <dd>User account name
+	** <dt>user.home            <dd>User home directory
+	** <dt>user.dir             <dd>User's current working directory
+	*/
+
+  struct utsname infos;
+  uname(&infos);
 
+  setProp("java.version", "1.8");
+  setProp("java.vendor", "The VMKit Project");
+  setProp("java.vendor.url", "http://vmkit.llvm.org");
+	setPropEnv("java.home", "JAVA_HOME");
+  setProp("java.class.version", "52.0");
   setProp("java.class.path", vm->options()->classpath);
-  setProp("java.boot.class.path", vm->options()->bootClasspath);
-  setProp("sun.boot.library.path", vm->options()->systemLibraryPath);
-  setProp("sun.boot.class.path", vm->options()->bootClasspath);
+	//"file:///Users/gthomas/research/vmkit4/vmkit");//vm->options()->classpath);
+  setProp("os.name", infos.sysname);
+  setProp("os.arch", infos.machine);
+  setProp("os.version", infos.release);
   setProp("file.separator", "/");
   setProp("path.separator", ":");
   setProp("line.separator", "\n");
-	setPropEnv("java.home", "JAVA_HOME");
+  setPropEnv("user.name", "USERNAME");
+  setPropEnv("user.home", "HOME");
+	setPropEnv("user.dir", "PWD");
+
+  setProp("java.boot.class.path", vm->options()->bootClasspath);
+  setProp("sun.boot.library.path", vm->options()->systemLibraryPath);
+  setProp("sun.boot.class.path", vm->options()->bootClasspath);
+
 
 #if 0
   setProp("java.vm.specification.version", "1.2");
@@ -178,22 +198,13 @@ jobject JNICALL JVM_InitProperties(JNIEn
   setProp("java.specification.version", "1.8");
   setProp("java.specification.vendor", "Sun Microsystems, Inc");
   setProp("java.specification.name", "Java Platform API Specification");
-  setProp("java.version", "1.8");
   setProp("java.runtime.version", "1.8");
-  setProp("java.vendor", "The VMKit Project");
-  setProp("java.vendor.url", "http://vmkit.llvm.org");
-  setProp("java.class.version", "52.0");
   setProp("java.vm.version", "0.5");
   setProp("java.vm.vendor", "The VMKit Project");
   setProp("java.vm.name", "J3");
   setProp("java.specification.version", "1.8");
   setPropEnv("java.library.path", "LD_LIBRARY_PATH");
 
-  struct utsname infos;
-  uname(&infos);
-  setProp("os.name", infos.sysname);
-  setProp("os.arch", infos.machine);
-  setProp("os.version", infos.release);
 
   setProp("java.io.tmpdir", "/tmp");
   JnjvmBootstrapLoader* JCL = vm->bootstrapLoader;
@@ -527,7 +538,15 @@ void JNICALL JVM_ResolveClass(JNIEnv* en
 /*
  * Find a class from a boot class loader. Returns NULL if class not found.
  */
-jclass JNICALL JVM_FindClassFromBootLoader(JNIEnv* env, const char *name) { enterJVM(); NYI(); leaveJVM(); }
+jclass JNICALL JVM_FindClassFromBootLoader(JNIEnv* env, const char *name) { 
+	jclass res;
+	enterJVM(); 
+	J3* vm = J3Thread::get()->vm();
+	J3Class* cl = vm->initialClassLoader->findLoadedClass(vm->names()->get(name));
+	res = cl ? cl->javaClass() : 0;
+	leaveJVM(); 
+	return res;
+}
 
 /*
  * Find a class from a given class loader. Throw ClassNotFoundException
@@ -567,7 +586,14 @@ jclass JNICALL JVM_FindClassFromClassLoa
 jclass JNICALL JVM_FindClassFromClass(JNIEnv* env, const char *name, jboolean init, jclass from) { enterJVM(); NYI(); leaveJVM(); }
 
 /* Find a loaded class cached by the VM */
-jclass JNICALL JVM_FindLoadedClass(JNIEnv* env, jobject loader, jstring name) { enterJVM(); NYI(); leaveJVM(); }
+jclass JNICALL JVM_FindLoadedClass(JNIEnv* env, jobject jloader, jstring name) { 
+	jclass res;
+	enterJVM(); 
+	J3Class* cl = J3ClassLoader::nativeClassLoader(jloader)->findLoadedClass(J3Thread::get()->vm()->stringToName(name));
+	res = cl ? cl->javaClass() : 0;
+	leaveJVM(); 
+	return res;
+}
 
 /* Define a class */
 jclass JNICALL JVM_DefineClass(JNIEnv* env, const char *name, jobject loader, const jbyte *buf, jsize len, jobject pd) { enterJVM(); NYI(); leaveJVM(); }

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=198864&r1=198863&r2=198864&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3.cc Thu Jan  9 07:03:45 2014
@@ -123,6 +123,10 @@ void J3::run() {
 	classClassInit           = z_method(0, classClass, initName, names()->get("()V"));
 	classClassVMData         = classClass->findField(0, hf.name(), hf.type());
 
+	classClassLoader         = z_class("java/lang/ClassLoader");
+	classClassLoader->resolve(&hf, 1);
+	classClassLoaderVMData   = classClassLoader->findField(0, hf.name(), hf.type());
+
 	threadClass              = z_class("java/lang/Thread");
 	threadClassRun           = z_method(0, threadClass, names()->get("run"), names()->get("()V"));
 	threadClassVMData        = z_field(0, threadClass, "eetop", typeLong);
@@ -151,19 +155,27 @@ void J3::run() {
 	J3Lib::bootstrap(this);
 
 	if(options()->debugLifeCycle)
-		fprintf(stderr, "  Creating the system class loader\n");
+		fprintf(stderr, "  Launching the application\n");
 
-	//options()->genDebugExecute = 1;
-	//options()->debugExecute = 2;
+	options()->genDebugExecute = 1;
+	options()->debugExecute = 5;
 
-	z_method(J3Cst::ACC_STATIC, 
-					 z_class("java/lang/ClassLoader"), 
-					 names()->get("getSystemClassLoader"),
-					 names()->get("()Ljava/lang/ClassLoader;"))
-		->invokeStatic();
-					 
+#if 0
+	J3Class* loaderClass = z_class("java/lang/ClassLoader");
+	J3ObjectHandle* sysLoader = z_method(J3Cst::ACC_STATIC, 
+																			 loaderClass,
+																			 names()->get("getSystemClassLoader"),
+																			 names()->get("()Ljava/lang/ClassLoader;"))->invokeStatic().valObject;
+#endif
+
+	J3ObjectHandle* res = z_method(J3Cst::ACC_STATIC,
+																 z_class("sun/launcher/LauncherHelper"),
+																 names()->get("checkAndLoadMain"),
+																 names()->get("(ZILjava/lang/String;)Ljava/lang/Class;"))
+		->invokeStatic(1, 1, utfToString("HelloWorld")).valObject;
+	
+	fprintf(stderr, "system class loader: sysLoader: %p - %p\n", res, res->obj());
 	//    public static ClassLoader getSystemClassLoader() {
-
 }
 
 JNIEnv* J3::jniEnv() {
@@ -212,6 +224,16 @@ J3ObjectHandle* J3::utfToString(const ch
 	return nameToString(names()->get(name), doPush);
 }
 
+const vmkit::Name* J3::arrayToName(J3ObjectHandle* array) {
+	char copy[J3Utf16Decoder::maxSize(array)];
+	J3Utf16Decoder::decode(array, copy);
+	return names()->get(copy);
+}
+
+const vmkit::Name* J3::stringToName(J3ObjectHandle* str) {
+	return arrayToName(str->getObject(stringClassValue));
+}
+
 void J3::classCastException() {
 	internalError("implement me: class cast exception");
 }

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=198864&r1=198863&r2=198864&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3class.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3class.cc Thu Jan  9 07:03:45 2014
@@ -684,7 +684,9 @@ void J3Class::fillFields(J3Field** field
 		J3Field*  cur = fields[i];
 		J3Layout* layout = J3Cst::isStatic(fields[i]->access()) ? (J3Layout*)staticLayout() : this;
 
-		//fprintf(stderr, "   adding static field: %s %s::%s\n", cur->type()->name()->cStr(), name()->cStr(), cur->name()->cStr());
+		//if(name() == J3Thread::get()->vm()->names()->get("java/lang/ClassLoader"))
+		//fprintf(stderr, " field %s: %s\n", J3Cst::isStatic(fields[i]->access()) ? "static" : "virtual", fields[i]->name()->cStr());
+
 		cur->_offset = layout->structSize();
 		cur->_slot = layout->_nbFields;
 		layout->_structSize += 1 << fields[i]->type()->logSize();

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=198864&r1=198863&r2=198864&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3classloader.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3classloader.cc Thu Jan  9 07:03:45 2014
@@ -41,6 +41,18 @@ J3ObjectHandle* J3ClassLoader::javaClass
 	return (_javaClassLoader && doPush) ? J3Thread::get()->push(_javaClassLoader) : _javaClassLoader;
 }
 
+J3ClassLoader* J3ClassLoader::nativeClassLoader(J3ObjectHandle* jloader) {
+	J3ClassLoader* res = (J3ClassLoader*)jloader->getLong(J3Thread::get()->vm()->classClassLoaderVMData);
+
+	if(!res) {
+		vmkit::BumpAllocator* allocator = vmkit::BumpAllocator::create(); 
+		res = new(allocator) J3ClassLoader(jloader, allocator);
+		jloader->setLong(J3Thread::get()->vm()->classClassLoaderVMData, (uint64_t)(uintptr_t)res);
+	}
+	
+	return res;
+}
+
 uint32_t J3ClassLoader::interfaceIndex(J3Method* method) {
 	pthread_mutex_lock(&_mutexInterfaces);
 	InterfaceMethodRefMap::iterator it = interfaces.find(method);

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=198864&r1=198863&r2=198864&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc Thu Jan  9 07:03:45 2014
@@ -28,6 +28,10 @@ using namespace j3;
 
 #define _onEndPoint() ({ if(onEndPoint()) return; })
 
+#define DEBUG_TYPE_INT    0
+#define DEBUG_TYPE_FLOAT  1
+#define DEBUG_TYPE_OBJECT 2
+
 J3CodeGen::J3CodeGen(vmkit::BumpAllocator* _allocator, J3Method* m, bool withMethod, bool withCaller) :
 	exceptions(this) {
 	
@@ -872,6 +876,24 @@ void J3CodeGen::echoDebugExecute(uint32_
 	}
 }
 
+void J3CodeGen::echoElement(uint32_t level, uint32_t type, uintptr_t elmt) {
+	if(J3Thread::get()->vm()->options()->debugExecute >= level) {
+		switch(type) {
+			case DEBUG_TYPE_INT:    
+				fprintf(stderr, "%lld", (uint64_t)elmt); 
+				break;
+
+			case DEBUG_TYPE_FLOAT:  
+				fprintf(stderr, "%lf", *((double*)&elmt)); 
+				break;
+
+			case DEBUG_TYPE_OBJECT: 
+				fprintf(stderr, "%p::%s", (void*)elmt, ((J3Object*)elmt)->vt()->type()->name()->cStr());
+				break;
+		}
+	}
+}
+
 void J3CodeGen::translate() {
 	if(vm->options()->debugTranslate > 1)
 		exceptions.dump(vm->options()->debugTranslate-1);
@@ -955,14 +977,39 @@ void J3CodeGen::translate() {
 
 		if(vm->options()->genDebugExecute) {
 			if(vm->options()->genDebugExecute > 1) {
-				for(uint32_t i=0; i<stack.topStack; i++)
-					builder->CreateCall4(funcEchoDebugExecute,
+				llvm::BasicBlock* debug = newBB("debug");
+				llvm::BasicBlock* after = newBB("after");
+				builder
+					->CreateCondBr(builder
+												 ->CreateICmpSGE(builder->CreateLoad(builder
+																														 ->CreateIntToPtr(llvm::ConstantInt::get(uintPtrTy, 
+																																																		 (uintptr_t)&vm->options()->debugExecute),
+																																							uintPtrTy->getPointerTo())),
+																				builder->getInt32(4)),
+												 debug, after);
+				builder->SetInsertPoint(debug);
+				for(uint32_t i=0; i<stack.topStack; i++) {
+					builder->CreateCall3(funcEchoDebugExecute,
+															 builder->getInt32(4),
+															 buildString("           stack[%d]: "),
+															 builder->getInt32(i));
+					if(stack.metaStack[i]->isIntegerTy())
+						builder->CreateCall3(funcEchoElement, 
+																 builder->getInt32(4),
+																 builder->getInt32(DEBUG_TYPE_INT),
+																 builder->CreateSExtOrBitCast(stack.at(i, stack.metaStack[i]), uintPtrTy));
+					else if(stack.metaStack[i]->isPointerTy())
+						builder->CreateCall3(funcEchoElement, 
+																 builder->getInt32(4),
+																 builder->getInt32(DEBUG_TYPE_OBJECT),
+																 builder->CreatePtrToInt(stack.at(i, stack.metaStack[i]), uintPtrTy));
+					builder->CreateCall2(funcEchoDebugExecute,
 															 builder->getInt32(4),
-															 buildString("           stack[%d]: %p\n"),
-															 builder->getInt32(i),
-															 stack.at(i, stack.metaStack[i]));
+															 buildString("\n"));
+				}
+				builder->CreateBr(after);
+				builder->SetInsertPoint(bb = after);
 			}
-
 			char buf[256];
 			snprintf(buf, 256, "    [%4d] executing: %-20s in %s::%s", javaPC, 
 							 J3Cst::opcodeNames[bc], cl->name()->cStr(), method->name()->cStr());

Modified: vmkit/branches/mcjit/lib/j3/vm/j3options.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3options.cc?rev=198864&r1=198863&r2=198864&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3options.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3options.cc Thu Jan  9 07:03:45 2014
@@ -13,7 +13,7 @@ J3Options::J3Options() {
 	selfBitCodePath = SELF_BITCODE;
 	bootClasspath = J3Lib::systemClassesArchives();
 	systemLibraryPath = J3Lib::systemLibraryPath();
-	classpath = "";
+	classpath = ".";
 
 	debugEnterIndent = 1;
 
@@ -25,7 +25,7 @@ J3Options::J3Options() {
 	debugLinking = 0;
 	debugLifeCycle = 1;
 
-	genDebugExecute = debugExecute ? 1 : 0;
+	genDebugExecute = 2;//debugExecute ? 1 : 0;
 
 	stackSize = 0x80*0x1000;
 }

Modified: vmkit/branches/mcjit/lib/vmkit/thread.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/vmkit/thread.cc?rev=198864&r1=198863&r2=198864&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/vmkit/thread.cc (original)
+++ vmkit/branches/mcjit/lib/vmkit/thread.cc Thu Jan  9 07:03:45 2014
@@ -36,7 +36,7 @@ void Thread::registerSignalInternal(int
   // Set the SIGSEGV handler to diagnose errors.
   struct sigaction sa;
   sigset_t mask;
-  sigfillset(&mask);
+  sigemptyset(&mask);
   sa.sa_flags = SA_SIGINFO | SA_ONSTACK | SA_NODEFER;
 	if(altStack)
 		sa.sa_flags = SA_ONSTACK;





More information about the vmkit-commits mailing list