[vmkit-commits] [vmkit] r199064 - implement NewDirectByteBuffer
Gael Thomas
gael.thomas at lip6.fr
Sun Jan 12 14:01:54 PST 2014
Author: gthomas
Date: Sun Jan 12 16:01:54 2014
New Revision: 199064
URL: http://llvm.org/viewvc/llvm-project?rev=199064&view=rev
Log:
implement NewDirectByteBuffer
Modified:
vmkit/branches/mcjit/lib/j3/openjdk/j3lib.cc
vmkit/branches/mcjit/lib/j3/vm/j3class.cc
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=199064&r1=199063&r2=199064&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/openjdk/j3lib.cc (original)
+++ vmkit/branches/mcjit/lib/j3/openjdk/j3lib.cc Sun Jan 12 16:01:54 2014
@@ -75,26 +75,9 @@ void J3Lib::loadSystemLibraries(J3ClassL
}
J3ObjectHandle* J3Lib::newDirectByteBuffer(void* address, size_t len) {
-#if 0
- JavaObject* res = 0;
- llvm_gcroot(res, 0);
-
- BEGIN_JNI_EXCEPTION
-
- JavaThread* th = JavaThread::get();
- Jnjvm* myvm = th->getJVM();
- UserClass* BB = myvm->upcalls->newDirectByteBuffer;
-
- res = BB->doNew(myvm);
-
- myvm->upcalls->InitDirectByteBuffer->invokeIntSpecial(myvm, BB, res,
- (uint64_t)(uintptr_t)address, (int)capacity);
-
- jobject ret = (jobject)th->pushJNIRef(res);
- RETURN_FROM_JNI(ret);
- END_JNI_EXCEPTION
-
- RETURN_FROM_JNI(0);
-#endif
- J3::internalError("not yet implemented");
+ J3* vm = J3Thread::get()->vm();
+ J3Class* cl = vm->initialClassLoader->loadClass(vm->names()->get("java/nio/DirectByteBuffer"));
+ J3ObjectHandle* res = J3ObjectHandle::doNewObject(cl);
+ cl->findMethod(0, vm->initName, vm->initialClassLoader->getSignature(0, vm->names()->get("(JI)V")))->invokeSpecial(res, address, len);
+ return res;
}
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=199064&r1=199063&r2=199064&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3class.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3class.cc Sun Jan 12 16:01:54 2014
@@ -282,11 +282,13 @@ uintptr_t J3Layout::structSize() {
}
J3Method* J3Layout::localFindMethod(const vmkit::Name* name, J3Signature* signature) {
+ //fprintf(stderr, " --- lookup %s::%s in %s\n", name->cStr(), signature->name()->cStr(), J3Layout::name()->cStr());
+
for(size_t i=0; i<nbMethods(); i++) {
J3Method* cur = methods()[i];
- //printf("%s - %s\n", cur->name()->cStr(), cur->signature()->cStr());
- //printf("%s - %s\n", name->cStr(), signature->cStr());
+ //fprintf(stderr, "%s::%s%s\n", cur->cl()->name()->cStr(), cur->name()->cStr(), cur->signature()->name()->cStr());
+
if(cur->name() == name && cur->signature() == signature) {
return cur;
}
More information about the vmkit-commits
mailing list