Menu

Project begins, source code is ready.

I developed GC algorithm on Jikes rvm and ported the OPT compiler to x86_64. All of the work is currently available as patches under MRP project, a fork of RVM. Hopefully they'd be part of the code base.

During the R&&D process, I find low level debugging necessary and gdb is mandatory. When vm is not stable, only gdb can help. I need gdb to do difficult work: disassemble, signal handling, stack examine and core file reading. To further improve the interoperability between java and gdb, I use the gdb-jit interface. V8 of javascript,LLVM of CLang all have supported the interface.

I adapted code from eclipse cdt utils(org.eclipse.cdt.utils.elf.,org.eclipse.cdt.utils.debug.). The original code base only have readers and I added generators for elf and dwarf, and there comes the name "elf4j".

RVM use a provider interface to access elf4j,notify all the monitored compiled method and then generate elf files for registered ones.
RVM uses two kinds of frame pointers: $rbp and [$rsi+0xa0]. To generate .eh_frame section for JNI compiled method, normal method and JNI call back method, I used dwarf expression to calculate cfa, and caller rsi,rbp. The caller rsi uses a val_offset(N)
rule, not offset(N) rule. Involved dwarf expressions include DW_OP_deref
,DW_OP_litx,DW_OP_bregx.

A single method is put inside one elf file. Monitored methods are registered with package+class+method name prefixes. Users can use package prefixes along to simplify describing interested targets.
Dwarf sections generated includes .debug_line,.eh_frame, .debug_abbrev, .debug_info,.debug_pubnames, .debug_pubtypes, .debug_aranges.

Posted by Da Feng 2011-10-14 Labels: introduction

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.