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

commits at source.squeak.org commits at source.squeak.org
Sat Aug 25 03:55:01 UTC 2018


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!



More information about the Vm-dev mailing list