Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2437.mcz==================== Summary ====================
Name: VMMaker.oscog-eem.2437
Author: eem
Time: 24 August 2018, 8:54:30.280616 pm
UUID: 0e97c106-dd0b-437b-b1aa-e15257288c3f
Ancestors: VMMaker.oscog-eem.2436
StackInterpreter:
Fix signature of reapAndResetErrorCodeTo:header: to leiminate warnings.
Slang: Fix a slip in type inference. Named constants have types too.
=============== Diff against VMMaker.oscog-eem.2436 ===============
Item was changed:
----- Method: CCodeGenerator>>typeOfVariable: (in category 'C code generator') -----
typeOfVariable: varName "<String>"
self assert: varName isString.
scopeStack reverseDo:
[:dict|
(dict includesKey: varName) ifTrue:
[^self
extractTypeFor: varName
fromDeclaration: (dict at: varName)]].
+ (variableDeclarations
+ at: varName
+ ifAbsent:
+ [apiVariables
+ ifNotNil: [apiVariables at: varName ifAbsent: []]
+ ifNil: []]) ifNotNil:
+ [:decl| ^self extractTypeFor: varName fromDeclaration: decl].
+ ^(constants at: varName ifAbsent: []) ifNotNil:
+ [:const|
+ const value isInteger
+ ifTrue: [#sqInt]
+ ifFalse:
+ [const value isFloat ifTrue:
+ [#double]]]!
- ^self
- extractTypeFor: varName
- fromDeclaration: (variableDeclarations
- at: varName
- ifAbsent:
- [apiVariables
- ifNotNil: [apiVariables at: varName ifAbsent: [^nil]]
- ifNil: [^nil]])!
Item was changed:
----- Method: StackInterpreter>>reapAndResetErrorCodeTo:header: (in category 'primitive support') -----
reapAndResetErrorCodeTo: theSP header: methodHeader
"Assuming the primFailCode is non-zero, check if the method consumes the error code
and if so, assign it through theSP. Then zero the primFailCode. This is infrequent code,
so keep it out of the common path."
+ <var: 'theSP' type: #'char *'>
<inline: #never>
| initialPC |
self assert: primFailCode ~= 0.
initialPC := (self initialIPForHeader: methodHeader method: newMethod) + (self sizeOfCallPrimitiveBytecode: methodHeader).
(objectMemory byteAt: initialPC) = (self longStoreBytecodeForHeader: methodHeader) ifTrue:
[stackPages longAtPointer: theSP put: self getErrorObjectFromPrimFailCode].
primFailCode := 0!