[Win32] VM Update for 2.7/2.8

Raab, Andreas Andreas.Raab at disney.com
Wed May 24 19:18:15 UTC 2000


Bert,

> > Well, the "1 tinyBenchmarks" numbers are quite impressive.  I get
> > about 12% speedup in message sends and 70% in bytecodes.
> 
> Andreas: do these speedups only come from Ian's label-goto-hack in the
> interpreter loop?

Mainly two things: Explicit register assignment for interpret() (wins BIG on
Intel) as well as the labeled gotos. I've not (yet) come around to
automatically generate inlined versions of #sendLiteralSelectorBytecode (on
MSVC that gave another 10% in boost) since unfortunately EGCS' CSE pass is
sometimes too clever. It eliminates common expressions that would be faster
if not eliminated, such as

	movl _method, %eax
	movl 4(%eax), %eax
	movl %eax, _messageSelector
	jmp L1234
...
L1234:
	movl $0, _argumentCount
	jmp commonSend

Anyone out there knowing how to instruct EGCS to make a tradeoff in speed
vs. space in CSE?! I'm also trying to look into a couple of other issues
that might be important - if anyone knows how to make EGCS forget about the
explicit register assignment in a couple of places (such as #commonSend) let
me know.

  - A.





More information about the Squeak-dev mailing list