[Vm-dev] VM Maker: VMMaker.oscog-eem.1590.mcz

commits at source.squeak.org commits at source.squeak.org
Sun Dec 13 20:28:25 UTC 2015


Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.1590.mcz

==================== Summary ====================

Name: VMMaker.oscog-eem.1590
Author: eem
Time: 13 December 2015, 12:26:36.92 pm
UUID: 02c40a2c-a23e-4e62-98c0-810aeeba31c8
Ancestors: VMMaker.oscog-eem.1589

Slang: Now that leaves are not necessarily output more care needs to be taken to generate an empty otherwise: clause.

=============== Diff against VMMaker.oscog-eem.1589 ===============

Item was changed:
  ----- Method: TSwitchStmtNode>>emitCCodeOn:level:generator: (in category 'C code generation') -----
  emitCCodeOn: aStream level: level generator: aCodeGen
  
  	aStream crtab: level.
  	aStream nextPutAll: 'switch ('.
  	expression emitCCodeAsArgumentOn: aStream level: level generator: aCodeGen.
  	aStream nextPutAll: ') {'.
  	cases do:
  		[:tuple|
  		 [:labels :case|
  		  labels do:
  			[:label|
  			 aStream
  				crtab: level;
  				nextPutAll: 'case '.
  			label emitCCodeAsArgumentOn: aStream level: level + 1 generator: aCodeGen.
  			aStream nextPut: $:].
  		  aStream crtab: level + 1.
  		  case emitCCodeOn: aStream level: level + 1 generator: aCodeGen.
  		  case endsWithReturn ifFalse:
  			[aStream tab: level + 1; nextPutAll: 'break;']]
  			valueWithArguments: tuple].
  	aStream
  		crtab: level;
  		nextPutAll: 'default:';
  		crtab: level + 1.
  	otherwiseOrNil
  		ifNotNil:
+ 			[otherwiseOrNil emitCCodeOn: aStream level: level + 1 generator: aCodeGen.
+ 			(self stream: aStream endsWithAnyOf: '};') ifFalse:
+ 				[aStream nextPut: $;]]
- 			[otherwiseOrNil emitCCodeOn: aStream level: level + 1 generator: aCodeGen]
  		ifNil: [aStream nextPutAll: 'error("Case not found and no otherwise clause");'].
  	aStream
  		crtab: level;
  		nextPut: $}!



More information about the Vm-dev mailing list