[Vm-dev] VM Maker: VMMaker.oscog-eem.926.mcz
commits at source.squeak.org
commits at source.squeak.org
Thu Nov 13 23:55:39 UTC 2014
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.926.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.926
Author: eem
Time: 13 November 2014, 3:52:55.604 pm
UUID: 9c0b0c9e-ba3b-4f54-bdf1-d9c1c18af828
Ancestors: VMMaker.oscog-eem.925
Make buildCaseStmt:in: look for code in all the right places
=============== Diff against VMMaker.oscog-eem.925 ===============
Item was changed:
----- Method: TMethod>>buildCaseStmt:in: (in category 'transformations') -----
buildCaseStmt: aSendNode in: aCodeGen
"Build a case statement node for the given send of dispatchOn:in:."
"Note: the first argument is the variable to be dispatched on. The second argument is a constant node holding an array of unary selectors, which will be turned into sends to self."
| unimplemented errorMessage |
+ (aSendNode args size >= 2
+ and: [aSendNode args second isConstant
+ and: [aSendNode args second value isArray]]) ifFalse:
- ((aSendNode args size >= 2) and:
- [aSendNode args second isConstant and:
- [aSendNode args second value class = Array]]) ifFalse:
[self error: 'wrong node structure for a case statement'].
+ unimplemented := aSendNode args second value select: [:s| (aCodeGen methodNamed: s) isNil].
- unimplemented := aSendNode args second value reject: [:s| self definingClass includesSelector: s].
unimplemented isEmpty ifFalse:
[errorMessage := 'The following selectors in case statement "', (aSendNode printString copyUpTo: $#), '..." are unimplemented: ',
(String streamContents: [:s| unimplemented do: [:sel| s crtab; store: sel]]).
aCodeGen logger nextPutAll: errorMessage; cr; flush.
(self confirm: errorMessage
orCancel: aCodeGen abortBlock) ifFalse:
[self halt]].
^TCaseStmtNode new
setExpression: aSendNode args first
selectors: aSendNode args second value
arguments: (aSendNode args copyFrom: 3 to: aSendNode args size)!
More information about the Vm-dev
mailing list