[vmkit-commits] [vmkit] r198510 - Fix a bug in instanceof: if obj is null, return 0. Execute now more than 60000 bytecodes :)
Gael Thomas
gael.thomas at lip6.fr
Sat Jan 4 10:29:58 PST 2014
Author: gthomas
Date: Sat Jan 4 12:29:58 2014
New Revision: 198510
URL: http://llvm.org/viewvc/llvm-project?rev=198510&view=rev
Log:
Fix a bug in instanceof: if obj is null, return 0. Execute now more than 60000 bytecodes :)
Modified:
vmkit/branches/mcjit/lib/j3/openjdk/j3openjdk.cc
vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc
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=198510&r1=198509&r2=198510&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/openjdk/j3openjdk.cc (original)
+++ vmkit/branches/mcjit/lib/j3/openjdk/j3openjdk.cc Sat Jan 4 12:29:58 2014
@@ -124,6 +124,72 @@ jobject JNICALL JVM_InitProperties(JNIEn
*/
JavaObject * prop = *(JavaObject**)p;
llvm_gcroot(prop, 0);
+
+ setProperty(vm, prop, "java.vm.specification.version", "1.0");
+ setProperty(vm, prop, "java.vm.specification.vendor",
+ "Sun Microsystems, Inc");
+ setProperty(vm, prop, "java.vm.specification.name",
+ "Java Virtual Machine Specification");
+ setProperty(vm, prop, "java.specification.version", "1.5");
+ setProperty(vm, prop, "java.specification.vendor", "Sun Microsystems, Inc");
+ setProperty(vm, prop, "java.specification.name",
+ "Java Platform API Specification");
+ setProperty(vm, prop, "java.version", "1.5");
+ setProperty(vm, prop, "java.runtime.version", "1.5");
+ setProperty(vm, prop, "java.vendor", "The VMKit Project");
+ setProperty(vm, prop, "java.vendor.url", "http://vmkit.llvm.org");
+
+ tmp = getenv("JAVA_HOME");
+ if (!tmp) tmp = "";
+ setProperty(vm, prop, "java.home", tmp);
+
+ JnjvmBootstrapLoader* JCL = vm->bootstrapLoader;
+ setProperty(vm, prop, "java.class.version", "49.0");
+ setProperty(vm, prop, "java.class.path", vm->classpath);
+ setProperty(vm, prop, "java.boot.class.path", JCL->bootClasspathEnv);
+ setProperty(vm, prop, "sun.boot.class.path", JCL->bootClasspathEnv);
+ setProperty(vm, prop, "java.vm.version", "0.28");
+ setProperty(vm, prop, "java.vm.vendor", "The VMKit Project");
+ setProperty(vm, prop, "java.vm.name", "J3");
+ setProperty(vm, prop, "java.specification.version", "1.5");
+ setProperty(vm, prop, "java.io.tmpdir", "/tmp");
+
+
+ setProperty(vm, prop, "build.compiler", "gcj");
+ setProperty(vm, prop, "gcj.class.path", JCL->bootClasspathEnv);
+ setProperty(vm, prop, "gnu.classpath.boot.library.path",
+ JCL->libClasspathEnv);
+ //setProperty(vm, prop, "java.library.path", TODO: getenv("LD_LIBRARY_PATH"))
+ setProperty(vm, prop, "sun.boot.library.path", JCL->libClasspathEnv);
+
+ // Align behavior with GNU Classpath for now, to pass mauve test
+ setProperty(vm, prop, "sun.lang.ClassLoader.allowArraySyntax", "true");
+
+ setUnameProp(vm, prop);
+
+ setProperty(vm, prop, "file.separator", vm->dirSeparator);
+ setProperty(vm, prop, "path.separator", vm->envSeparator);
+ setProperty(vm, prop, "line.separator", "\n");
+
+ tmp = getenv("USERNAME");
+ if (!tmp) tmp = getenv("LOGNAME");
+ if (!tmp) tmp = getenv("NAME");
+ if (!tmp) tmp = "";
+ setProperty(vm, prop, "user.name", tmp);
+
+ tmp = getenv("HOME");
+ if (!tmp) tmp = "";
+ setProperty(vm, prop, "user.home", tmp);
+
+ tmp = getenv("PWD");
+ if (!tmp) tmp = "";
+ setProperty(vm, prop, "user.dir", tmp);
+
+ // Disable this property. The Classpath iconv implementation is really
+ // not optimized (it over-abuses JNI calls).
+ //setProperty(vm, prop, "gnu.classpath.nio.charset.provider.iconv", "true");
+ setProperty(vm, prop, "file.encoding", "ISO8859_1");
+ setProperty(vm, prop, "gnu.java.util.zoneinfo.dir", "/usr/share/zoneinfo");
setProperties(prop);
setCommandLineProperties(prop);
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=198510&r1=198509&r2=198510&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3codegen.cc Sat Jan 4 12:29:58 2014
@@ -433,17 +433,6 @@ void J3CodeGen::invokeVirtual(uint32_t i
llvm::Value* func = builder->CreateBitCast(builder->CreateLoad(builder->CreateGEP(vt(obj), gepFunc)),
target->signature()->functionType(target->access())->getPointerTo());
- char buf[65536]; snprintf(buf, 65536, "%s::%s%s",
- target->cl()->name()->cStr(),
- target->name()->cStr(),
- target->signature()->name()->cStr());
- builder->CreateCall5(funcEchoDebugExecute,
- builder->getInt32(2),
- buildString("Invoking %s %p::%d\n"),
- buildString(buf),
- vt(obj),
- funcEntry);
-
invoke(0, target, func);
}
@@ -600,13 +589,13 @@ llvm::Value* J3CodeGen::isAssignableTo(l
void J3CodeGen::instanceof(llvm::Value* obj, J3ObjectType* type) {
llvm::BasicBlock* after = forwardBranch("instanceof-after", codeReader->tell(), 0, 0);
- llvm::BasicBlock* ok = newBB("instanceof-ok");
+ llvm::BasicBlock* nok = newBB("instanceof-null");
llvm::BasicBlock* test = newBB("instanceof");
- builder->CreateCondBr(builder->CreateIsNull(obj), ok, test);
+ builder->CreateCondBr(builder->CreateIsNull(obj), nok, test);
- builder->SetInsertPoint(ok);
- stack.push(builder->getInt32(1));
+ builder->SetInsertPoint(nok);
+ stack.push(builder->getInt32(0));
builder->CreateBr(after);
stack.drop(1);
More information about the vmkit-commits
mailing list