[FIX][VMM] CCodeGenerator fixes for non-inlined VM

Ian Piumarta ian.piumarta at inria.fr
Thu Sep 11 18:22:46 UTC 2003


On Thu, 11 Sep 2003, Ian Piumarta wrote:

> I'll try building a non-inlined VM anyway, just to make sure it works.

No cigar.  The attached changeset fixes a problem where the preIncrement
operator was failing to attach the global struct prefix to its operand.  
After applying the changes, adding

  UnixVMMaker>>doInlining
    ^false

and regenerating the VM, I get a working, non-inlined VM:

 '75294117 bytecodes/sec; 2931774 sends/sec'  (regular)
 '10914051 bytecodes/sec;  594140 sends/sec'  (non-inlined)

  emilia$ size bld/squeak*
  __TEXT  __DATA  __OBJC  others  dec     hex
  1024000 225280  0       2854912 4104192 3ea000  bld/squeak (non-inline)
  995328  229376  0       2813952 4038656 3da000  bld/squeak (regular)

Ian


-------------- next part --------------
'From Squeak3.6beta of ''4 July 2003'' [latest update: #5411] on 11 September 2003 at 8:17:31 pm'!
"Change Set:		CCGenNonInlined-ikp
Date:			11 September 2003
Author:			Ian Piumarta

Fixes global struct prefix for preIncrement operator"!


!CCodeGenerator methodsFor: 'C translation' stamp: 'ikp 9/11/2003 20:08'!
generatePreIncrement: msgNode on: aStream indent: level
	"Generate the C code for this message onto the given stream."

	| varNode |
	varNode _ msgNode receiver.
	varNode isVariable
		ifFalse: [ self error: 'preIncrement can only be applied to variables' ].
	aStream nextPutAll: '++'.
	aStream nextPutAll: (self returnPrefixFromVariable: varNode name).
! !



More information about the Squeak-dev mailing list