[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