Older blog entries for gonzo (starting at number 1)

Kaffe Open VM

After many frustrating days spent debugging my verifier for Kaffe, I've decided to scrap my experimental subroutine verification algorithm for the time being. Jim and Dalibor would like to see the verifier completely checked in before releasing 1.1.1, so I'm gonna get on my horse the next couple days to finish the debugging.

It turns out that I may have to rewrite much of Kaffe's Class instance creation code as type checking in the verifier sometimes requires a pointer to an instance of a Class that has not be loaded, so it would be nice to be able to create a Class instance, add it to the classpool without loading the actual Class or initializing its values, and only load it later when necessary. Hopefully I'll be able to take care of this this afternoon so that I can check in the rest of Pass 3b.


I've acquired a job part-time as a bartender for when I arrive in China at the end of November/beginning of December. I'm also thinking about teaching English full-time (20 hrs/week there) but I'm also looking for a potential job developing for Red Flag Linux, which would be a trip. Unfortunately, my inability to speak Mandarin is hindering my efforts to find such a job :). Hopefully I'll be able to buy a cheap computer when I get there so that I can continue working on Kaffe in my spare time.

I'm going to steal Dalibor's diary format :)

Kaffe Open VM

I had wanted to finish the last section of the bytecode verifier (pass 3b) this past weekend, but the haze of 4th of July (damn the British! ;>) alcohol clouding my mind made it pretty freaking difficult to concentrate on anything. My goal for today is to finish up most of pass 3b, excepting subroutines.

I'm actually trying out an experimental way of dealing with subroutines. Most verifiers use really basic algorithms that make pretty unfair assumptions about the code, such as that a subroutine block contains no branches out of the block itself. In Java programs this isn't a problem as subroutines are generally only put into code by a compiler for handling try-finally clauses. However, it's still pretty restrictive. I want my code to be able to handle more complex subroutine situations using stacks of simulated operand stacks and local variables arrays during merging instead of using just one simulated set per instruction (or per basic block).

Prepping for China

In September I leave the US for Switzerland. I'm going to work my way over land from there to Beijing. This week my goal is to purchase health insurance and start getting the shots I need to get. Last year I went to Sumatra, Indonesia for a month and received most of the necessary boosters, but didn't have time to get the Japanese Encephalytis (sp?) vaccine, which is a big worry during certain seasons in some parts of China.

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!