[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