Re: A small favor if you can PrintAssembly on non x86?

  • From: Dennis Byrne <dennisbyrne@apache.org>
  • To: Christian Thalinger <Christian.Thalinger@sun.com>
  • Cc: discuss@openjdk.java.net, dev@base-hsdis.kenai.com
  • Subject: Re: A small favor if you can PrintAssembly on non x86?
  • Date: Fri, 27 Nov 2009 12:09:55 -0600

Thank you very much Christian.  I find it interesting that you have
one full fence for the write method while I get two on an x86.  The
write method performs two writes, so the VM must separate both writes
with a StoreStore barrier.  According to the "Here's how these
processors support barriers" section in the cookbook [1] these are no
ops on both platforms.  This explains why your compiler is not putting
a fence between both writes, so I am curious why mine still does.

Yours w/ one fence (on sparc)

  0xfa8eceac: mov  0x2a, %l0            ;...a010202a
  0xfa8eceb0: st  %l0, [ %l1 + 0x150 ]  ;...e0246150
  0xfa8eceb4: mov  1, %l2               ;...a4102001
  0xfa8eceb8: stb  %l2, [ %l1 + 0x154 ]  ;...e42c6154
  0xfa8ecebc: membar  #StoreLoad        ;...8143e002

Mine with two fences (on x86)

  0x00f7801d: mov    $0x95ba53c0,%esi   ;...bec053ba 95
                                        ;   {oop()}
  0x00f78022: mov    $0x2a,%edi         ;...bf2a0000 00
  0x00f78027: mov    %edi,0x148(%esi)   ;...89be4801 0000
  0x00f7802d: mfence                    ;...0faef0
  0x00f78030: mov    $0x1,%edi          ;...bf010000 00
  0x00f78035: mov    %edi,%ebx          ;...8bdf
  0x00f78037: mov    %bl,0x14c(%esi)    ;...889e4c01 0000
  0x00f7803d: mfence                    ;...0faef0



[1] http://gee.cs.oswego.edu/dl/jmm/cookbook.html

Dennis

On Fri, Nov 27, 2009 at 10:30 AM, Christian Thalinger
<Christian.Thalinger@sun.com> wrote:
> On Fri, 2009-11-27 at 06:42 -0900, Dennis Byrne wrote:
>> $ wget http://people.apache.org/~dennisbyrne/memory/WriterReader.java
>> $ javac WriterReader.java
>> $ java -XX:+UnlockDiagnosticVMOptions
>> -XX:PrintAssemblyOptions=hsdis-print-bytes
>> -XX:CompileCommand=print,WriterReader.write WriterReader > write.txt
>> $ java -XX:+UnlockDiagnosticVMOptions
>> -XX:PrintAssemblyOptions=hsdis-print-bytes
>> -XX:CompileCommand=print,WriterReader.read WriterReader > read.txt
>>
>> Ideal would be Itanium or PPC output.  These memory models are much
>> different and would give me more examples to write about.  The weaker
>> the better.  Sparc would still be interesting also.
>>
>> Getting a hold of a non-x86 system has been more difficult than
>> writing the article itself.  Any help you can give me is greatly
>> appreciated.
>
> I did a run on SPARC for you (had to increase the loop length a little).
>
> -- Christian
>



-- 
Dennis Byrne


A small favor if you can PrintAssembly on non x86?

Dennis Byrne 11/27/2009

Re: A small favor if you can PrintAssembly on non x86?

Christian Thalinger 11/27/2009

Re: A small favor if you can PrintAssembly on non x86?

Dennis Byrne 11/27/2009

Re: A small favor if you can PrintAssembly on non x86?

David Holmes - Sun Microsystems 11/27/2009

Re: A small favor if you can PrintAssembly on non x86?

Christian Thalinger 11/30/2009
  • Mysql
  • Glassfish
  • Jruby
  • Rails
  • Nblogo
Terms of Use; Privacy Policy;
© 2010, Oracle Corporation and/or its affiliates
(revision 20120127.ac94057)
 
 
Close
loading
Please Confirm
Close