Bytecode generation, Source code mappings, JCov, Future (Patch)
Alex Rau
alex at retroduction.org
Mon Apr 21 10:07:08 PDT 2008
Here's a patch which enables the compiler to generate trace
information. By using -Xtrace as compiler argument the compiler
generates .trace files beside the .class files. A trace file consists
of n Integer tupel < trace serial id, source code offset start,
source code offset end> with fields (standard java) big-endian
encoding. The trace serial ids are referenced in the byte code of
each class in an attribute TraceID ( embedded in the code attribute
of every method). This patch provides functional tests except for
adding the attribute in the class file (difficult to test). I have to
very the latter that it works as it should and/or find a way to test
that.
However it should be sufficient to discuss the implementation. As
soon as the patch is acceptable I'll submit the SCA.
Some implementation comments:
- the current encoding of the trace files are *not* ASCII files as I
initially said to workaround the open question how Integer's should
be represented in ASCII (fixed length vs. variable length with field
separators)
- the output is written by a separate TraceWriter class beside
ClassWriter. I think in general this is fine, however TraceWriter and
ClassWriter both are more coupled to CRTable than I like. I think
CRTable knows a little bit too much about representation in class and
trace files
- existing JCov stuff is mostly untouched and reused for creating the
trace files
Best Regards,
Alex
-------------- next part --------------
A non-text attachment was scrubbed...
Name: tracepatch.diff
Type: application/octet-stream
Size: 80348 bytes
Desc: not available
Url : http://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20080421/dff9f6b6/tracepatch.diff
-------------- next part --------------
PS: to be applied in ./langtools/ with patch -p1 < tracepatch.diff
On 19.04.2008, at 20:34, John Rose wrote:
> On Apr 19, 2008, at 4:27 AM, Alex Rau wrote:
>> what John meant with token serial numbers
>
> Serial = sequentially assigned. For some definition of token,
> first token in file gets serial number 1, second gets 2, etc. If
> complete file has N tokens, last token serial number is N. It's
> almost the same as byte offset, just (a) more compact and (b) more
> stable under semantically null edits. FWIW.
>
> Use byte offsets for simplicity!
>
> -- John
More information about the compiler-dev
mailing list