*** MOVED ***

NOTE: I have merged the contents of this blog with my web-site. I will not be updating this blog any more.



A cool, though shy, Andrew Haley.

(Originally posted on Advogato.)

History of GCJ

Some time back, I stumbled upon "Cygnus Foundry Java Edition - Architecture and Design Manual". This document is somewhat dated and describes the plans more than what really has been implemented in GCJ, but it is still a good read and I would highly recommend it to anyone trying to understand GCJ.

I had my "Aaaahhhh!!" moments of comprehension reading this document, especially with the "Stack Slot Compilation", "Class Metadata", "Debugging Interpreted Java", "C/C++ and Compiled Java", etc sections.

Mark Wielaard (mjw) has created "Planet Classpath", a wonderful consolidation of weblogs maintained by GNU Classpath hackers. Kudos to him.

This weekend I spent time reading "The Java Virtual Machine Specification", something that I should have a done a very long time ago. I didn't finish it and I didn't understand everything, but a lot of things have become much clearer, including the meaning of (ID[Ljava/lang/String;)Ljava/lang/Thread;. ;-)
I also played around with Jasmin, an assembler for the JVM.

In 1995-96, when I was in the final year of my undergraduate studies at IIT-K and Java was this new and cool language for creating web animations, most of us learnt this language and played around with it. "HS" was a guy who went beyond the language and used to play with the class file format and raw JVM instructions - he was promptly labelled a "weirdo" and people used to make fun of him behind his back, but were still in awe of him.

I am such a weirdo myself now. :-)
But seriously, the JVM architecture is quite simple and the instruction set is quite high-level and simple - no decent Java programmer will have much difficulty in understanding it. It is worth a dekko.

(Originally posted on Advogato.)



tromey continues to blog albeit elsewhere!

He seems to be working on a new frontend for GCJ.

Now why don't I get to know of such cool things
earlier? :-(
BTW, I finally get to see what he looks like!

(Originally posted on Advogato.)




is being merged into the GCC mainline! This project brings in an
optimisation framework for GCC Trees based on the Static
Single Assignment (SSA) form. GCC uses Trees as one of its
Intermediate Representations (IRs) - the Register Transfer
Language (RTL) being the other IR.

Trees are being cleaned
up (simplified and made language independent) into the new
"GENERIC" representation, which will then be
simplified further into the "GIMPLE" representation.
More details can be found in the
of the 2003 Annual GCC Summit.
(See the papers "Tree SSA - A New Optimization Infrastructure for GCC" by Diego Novillo and
"GENERIC and GIMPLE: A new tree representation for entire functions" by Jason Merrill.)

The current mainline now has "Variable Tracking",
that allows GCC to more accurately track and describe
variables in the generated debug information
even after optimisation - even with -fomit-frame-pointer! As a result,
-fomit-frame-pointer will become the default
for the x86 backend, freeing up a much-needed register
on this starved architecture. You will however
minimally need GDB 6.1 to be able to correctly debug
with the generated location lists. This version has
not yet been released though.

(Originally posted on Advogato.)