On Feb 27, 2007, at 6:26 PM, Alex Blewitt wrote:
On 20/02/07, Alex Blewitt <[EMAIL PROTECTED]> wrote:
Good news everyone,
I've just managed to decode a class file with its constituent
bytecode
out to a Jar. There's a few bugs (it doesn't calculate the max stack)
and the byteccode is replaced with 'return' -- but that's only
because
pack200 does some extra mangling on the bytecode (e.g. 'super()' is
normally 2 bytes, but it's so common that there's a special 1 byte
marker for it).
I've addressed this issue, and I can now generate a subset of the
bytecode (e.g. getstatic/putstatic/invokevirtual/areturn etc.) from an
input pack file into an output Jar. There's still the tricky problem
of the arguments; essentially, each argument type (e.g. methodref,
classref, constant pool) is encoded in their own separate set of bands
which I've yet to decode/overlay).
So, whilst the EclipseCon deadline of a 'hello world' isn't that far
off, it's only going to work with a particular special set of bytecode
(though I should be able to change the message and re-run it to show
it's not a pre-recorded demo). But I want to set everyone's
expectations suitably low, because although I may have reached the
peak of the complexity, I've still got to come down the other side and
pick up all the remnants that are yet to be done. I don't see a full
implementation any time soon -- and I've been off for about a week
recently too.
Cool stuff.
Whilst I'm at EclipseCon with the wireless, I'll spend some spare time
creating/submitting a patch for the work that's done so far. I'll then
be off for a holiday and will pick up the trail again towards the end
of March ...
What, you take one vacation a month? I wish I lived in the UK :)
geir
Alex.