Re: Create binary from GCJ generated assembly

Bryce McKinlay <[email protected]>
Newsgroups gmane.comp.gcc.java.devel
Message-ID <[email protected]>
On Wed, Oct 28, 2009 at 11:05 AM, isuru herath <[email protected]> wrote:

> Thanks a lot for the quick reply. I did accordingly. But results were not the same. My program is a multi threaded shared counter.
> so in my Java code I have
>
> counter++
>
> I need to surround this with two xchg instructions. like
>
> xchg
> counter++
> xchg
>
> so that I can count number of read and write operations between two xchg instructions.
>
> with gcc I got both as 1 which is correct.
> with gcj and JNI I got 47 read operations and 29 write operations
> with gcj and CNI I got 6 read operations and 6 write operations

This is because you are making calls into native code from Java. GCJ
cannot inline native code into your Java code. Calls are not free -
you are measuring the overhead of returning back from native code into
Java code and vice-versa.

If you need to add asm instructions to GCJ compiled code, you can
generate assembler using something like:

gcj -S MyClass.java

Then, edit the resulting assembler .s file to add the instructions.
Finally, link it with something like:

 gcj MyClass.s --main=MyClass

Bryce
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.