[LLVMdev] Running VMKit's AOT Java Compiler

David Brazdil david.brazdil at gmail.com
Sat Mar 8 11:20:43 PST 2014


Hi Gaël

Thanks for looking into this. I've made a little progress myself. "llcj"
must be run from the root directory of the compiled Java class files, i.e.
the "tools/trainer/Release+Asserts" directory. Then its call to "vmjc"
succeeds, it calls "opt", but then it fails again when it tries to run
"llc", saying that it cannot find the vmkit garbage collector. So I added
the "static-gc-printer.so" with a "-load" option.

Now it finds the GC, but that still fails with:

llc: VmkitGCPrinter.cpp:270: llvm::Constant *FindMetadata(const
llvm::Function &): Assertion `0 && "Should have found a JavaMethod"' failed.
0  llc                  0x0000000000ff1295
llvm::sys::PrintStackTrace(_IO_FILE*) + 37
1  llc                  0x0000000000ff1753
2  libpthread.so.0      0x00007fce83f1b880
3  libc.so.6            0x00007fce8317a389 gsignal + 57
4  libc.so.6            0x00007fce8317b788 abort + 328
5  libc.so.6            0x00007fce831734a6
6  libc.so.6            0x00007fce83173552
7  static-gc-printer.so 0x00007fce82f41a7e
8  static-gc-printer.so 0x00007fce82f41fe2
9  llc                  0x0000000000b58781
llvm::AsmPrinter::doFinalization(llvm::Module&) + 1217
10 llc                  0x0000000000f8fa1e
llvm::FPPassManager::doFinalization(llvm::Module&) + 94
11 llc                  0x0000000000f8fd2e
llvm::MPPassManager::runOnModule(llvm::Module&) + 686
12 llc                  0x0000000000f904df
llvm::PassManagerImpl::run(llvm::Module&) + 543
13 llc                  0x0000000000524f2a main + 6506
14 libc.so.6            0x00007fce83166b05 __libc_start_main + 245
15 llc                  0x00000000005234f3
Stack dump:
0. Program arguments:
/home/db538/vmkit/llvm-3.3.src/Release+Asserts/bin/llc
/tmp/llvm_xJHwnR/HelloWorld.bc -disable-fp-elim -load
/home/db538/vmkit/vmkit/Release+Asserts/lib/static-gc-printer.so -o
/tmp/llvm_xJHwnR/HelloWorld.s

I checked and the method it's looking for is
"JnJVM_HelloWorld_main___3Ljava_lang_String_2". Thoughts?

Thanks,
Dave



On Fri, Mar 7, 2014 at 6:55 PM, Gaël Thomas <gael.thomas at lip6.fr> wrote:

> Hi David,
>
> I don't know where is the problem, but I'm investigating that :)
> Basically, I never had to use llcj and I don't know how and if it
> works... I send you a mail as soon as I understand how llcj should
> work.
>
> Gaël
>
>
> 2014-03-07 15:06 GMT+01:00 David Brazdil <david.brazdil at gmail.com>:
> > Hi,
> > I'm new to VMKit and I'm trying to use its AOT Java compiler but I'm
> > immediately getting an error message which I don't understand.
> >
> > Everything was compiler as suggested in the Getting Started tutorial,
> using
> > GNU Classpath. I try to run:
> >
> >     llcj ../../tools/trainer/Release+Asserts/HelloWorld.class
> >
> > and get the following output:
> >
> >     Can not materiale a function in AOT mode.0  vmjc
> > 0x0000000000f2cea5 llvm::sys::PrintStackTrace(_IO_FILE*) + 37
> >     1  vmjc            0x0000000000f2d363
> >     2  libpthread.so.0 0x00007f4fbbe83880
> >     3  libc.so.6       0x00007f4fbb0e2389 gsignal + 57
> >     4  libc.so.6       0x00007f4fbb0e3788 abort + 328
> >     5  vmjc            0x000000000052f6f9
> >     6  vmjc            0x00000000005739cc
> >     7  vmjc            0x0000000000573795
> >     8  vmjc            0x0000000000572d24
> > j3::JavaMethod::invokeIntStatic(j3::Jnjvm*, j3::Class*, ...) + 116
> >     9  vmjc            0x0000000000587c9e
> > j3::Class::initialiseClass(j3::Jnjvm*) + 574
> >     10 vmjc            0x0000000000574c82
> >     11 vmjc            0x0000000000574a45
> >     12 vmjc            0x00000000005735a4
> > j3::JavaMethod::invokeJavaObjectStatic(j3::Jnjvm*, j3::Class*, ...) + 116
> >     13 vmjc            0x000000000058a921
> > j3::Jnjvm::noClassDefFoundError(j3::Class*, vmkit::UTF8 const*) + 1665
> >     14 vmjc            0x000000000056c2bb j3::Class::readClass() + 427
> >     15 vmjc            0x0000000000591a78
> > j3::JnjvmClassLoader::constructClass(vmkit::UTF8 const*,
> j3::ClassBytes*) +
> > 360
> >     16 vmjc            0x0000000000591743
> > j3::JnjvmBootstrapLoader::internalLoad(vmkit::UTF8 const*, bool,
> > j3::JavaString*) + 131
> >     17 vmjc            0x0000000000591d76
> > j3::JnjvmClassLoader::loadName(vmkit::UTF8 const*, bool, bool,
> > j3::JavaString*) + 38
> >     18 vmjc            0x000000000052b43a
> mainCompilerStart(j3::JavaThread*)
> > + 586
> >     19 vmjc            0x00000000005b0300
> > vmkit::Thread::internalThreadStart(vmkit::Thread*) + 528
> >     20 libpthread.so.0 0x00007f4fbbe7c0a2
> >     21 libc.so.6       0x00007f4fbb192d1d clone + 109
> >
> > This is produced inside the JavaAOTCompiler.h, in method
> materializeFunction
> > which is called from JavaMethod::compiledPtr. What am I doing wrong?
> >
> > Cheers,
> > David
> >
> > _______________________________________________
> > LLVM Developers mailing list
> > LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> >
>
>
>
> --
> -------------------------------------------------------------------
> Gaël Thomas, Associate Professor, UPMC
> http://pagesperso-systeme.lip6.fr/Gael.Thomas/
> -------------------------------------------------------------------
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140308/fca90ed8/attachment.html>


More information about the llvm-dev mailing list