<br><br><div class="gmail_quote">On Thu, Mar 19, 2009 at 6:28 AM, Iain Bason <span dir="ltr">&lt;<a href="mailto:iain@thebasons.com">iain@thebasons.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im"><br>
On Mar 17, 2009, at 11:47 PM, Eliot Miranda wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Part of my complaint is the name, Scaleable Processor ARCitecture.  The current SPARC requires 6 (reads it and weep, _6_) 32-bit instructions to synthesize an arbitrary 64-bit literal.  It hasn&#39;t scaled to 64-bits; consequently there are a range of addressing models in 64-bit SPARC compilers, 20-something-bits 40-something bits (I forget the details) and 64-bits.  By contrast there are 10-byte instructions that do 64-bit literals loads in x86-64.  So a 200% overhead vs a 25% overhead.<br>

<br>
</blockquote>
<br></div>
It doesn&#39;t seem to matter, though, for C/C++/Fortran programs.  In those benchmarks where SPARC is slower in 64-bit mode than 32-bit mode, the slowdown is due to the benchmark&#39;s data structures being larger because of 64-bit pointers.  Loading a 64 bit literal is ugly, but so what?</blockquote>
<div><br></div><div>A JIT has to update instructions.  A JIT that embeds literals in instructions will have to update instructions on garbage collection or throw away code containing them or use an indirection.  The SPARC makes the update instructions approach painfully complex and slow.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Is there some reason why Smalltalk would need to do more loads of 64 bit literals than C/C++/Fortran?</blockquote>
<div><br></div><div>Yes.  Object references in code.  None of C, C++ or Fortran have implementations that use moveable literals.  Many Smalltalk implementations do.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br><font color="#888888">
<br>
Iain<br>
<br>
<br>
</font></blockquote></div><br>