[Vm-dev] VM Maker: VMMaker.oscog-nice.2577.mcz

commits at source.squeak.org commits at source.squeak.org
Fri Nov 8 08:58:44 UTC 2019


Nicolas Cellier uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-nice.2577.mcz

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

Name: VMMaker.oscog-nice.2577
Author: nice
Time: 8 November 2019, 9:57:41.377117 am
UUID: a0206f0c-eda9-4e33-9b6c-d99caa2d992c
Ancestors: VMMaker.oscog-eem.2576

For some reason, genSendDirectedSuper:numArgs: method is generated when BytecodeSetHasDirectedSuperSend is false (Newspeak).
This lead to completely broken generated code, which is fortunately unused, but raise false alarms for whoever might want to analyze the C code.
Workaround by generating empty method (the right fix being to not generate at all).

Avoid naming a variable 'bool' in generated methods, this might become a reserved C word (can lead to problems when compiling with -std-c99 option).

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

Item was changed:
  ----- Method: BalloonEngineSimulation>>assert: (in category 'simulation') -----
+ assert: aBoolean
+ 	aBoolean ifFalse:[^self error:'Assertion failed'].!
- assert: bool
- 	bool ifFalse:[^self error:'Assertion failed'].!

Item was changed:
  ----- Method: ImmX11Plugin>>primSetCompositionFocus: (in category 'primitives') -----
+ primSetCompositionFocus: aBoolean
- primSetCompositionFocus: bool
  
  	| ret |
  	<export: true>
  	self primitive: 'primSetCompositionFocus'
  		parameters: #(Boolean).
  	
+ 	ret := self cCode: 'setCompositionFocus(aBoolean)'.
- 	ret := self cCode: 'setCompositionFocus(bool)'.
  
  	ret = false ifTrue: [
  		interpreterProxy primitiveFail.
  		^ nil
  	].
  
  	^ ret asOop: Boolean
  !

Item was changed:
  ----- Method: ImmX11Plugin>>primSetTextEncUTF8: (in category 'primitives') -----
+ primSetTextEncUTF8: aBoolean
- primSetTextEncUTF8: bool
  
  	<export: true>
  	self primitive: 'primSetTextEncUTF8'
  		parameters: #(Boolean).
+ 	self cCode: 'textEncodingUTF8 = aBoolean'.
+ 	^ aBoolean asOop: Boolean.!
- 	self cCode: 'textEncodingUTF8 = bool'.
- 	^ bool asOop: Boolean.!

Item was changed:
  ----- Method: ObjectMemory>>booleanObjectOf: (in category 'interpreter access') -----
+ booleanObjectOf: aBool
- booleanObjectOf: bool
  	<inline: true>
+ 	^aBool ifTrue: [trueObj] ifFalse: [falseObj]!
- 	^bool ifTrue: [trueObj] ifFalse: [falseObj]!

Item was changed:
  ----- Method: SimpleStackBasedCogit>>genSendDirectedSuper:numArgs: (in category 'bytecode generator support') -----
  genSendDirectedSuper: selectorIndex numArgs: numArgs
  	<inline: false>
  	"N.B. genPushLiteralVariableGivenDirectedSuper: has already loaded tempOop with the association."
+ 	BytecodeSetHasDirectedSuperSend
+ 		ifTrue:
+ 			[| result |
+ 			result := self
+ 						genSend: selectorIndex
+ 						numArgs: numArgs
+ 						sendTable: (directedSendUsesBinding
+ 										ifTrue: [directedSuperBindingSendTrampolines]
+ 										ifFalse: [directedSuperSendTrampolines]).
+ 			directedSendUsesBinding := false.
+ 			^result]!
- 	| result |
- 	result := self
- 				genSend: selectorIndex
- 				numArgs: numArgs
- 				sendTable: (directedSendUsesBinding
- 								ifTrue: [directedSuperBindingSendTrampolines]
- 								ifFalse: [directedSuperSendTrampolines]).
- 	directedSendUsesBinding := false.
- 	^result!

Item was changed:
  ----- Method: SpurMemoryManager>>booleanObjectOf: (in category 'primitive support') -----
+ booleanObjectOf: aBool
- booleanObjectOf: bool
  	<inline: true>
+ 	^aBool ifTrue: [trueObj] ifFalse: [falseObj]!
- 	^bool ifTrue: [trueObj] ifFalse: [falseObj]!

Item was changed:
  ----- Method: StackToRegisterMappingCogit>>genSendDirectedSuper:numArgs: (in category 'bytecode generator support') -----
  genSendDirectedSuper: selectorIndex numArgs: numArgs
+ 	BytecodeSetHasDirectedSuperSend
+ 		ifTrue:
+ 			[| result |
+ 			self assert: self ssTop type = SSConstant.
+ 			tempOop := self ssTop constant.
+ 			self ssPop: 1.
+ 			self marshallSendArguments: numArgs.
+ 			result := self
+ 						genMarshalledSend: selectorIndex
+ 						numArgs: numArgs
+ 						sendTable: (directedSendUsesBinding
+ 										ifTrue: [directedSuperBindingSendTrampolines]
+ 										ifFalse: [directedSuperSendTrampolines]).
+ 			directedSendUsesBinding := false.
+ 			^result]!
- 	| result |
- 	self assert: self ssTop type = SSConstant.
- 	tempOop := self ssTop constant.
- 	self ssPop: 1.
- 	self marshallSendArguments: numArgs.
- 	result := self
- 				genMarshalledSend: selectorIndex
- 				numArgs: numArgs
- 				sendTable: (directedSendUsesBinding
- 								ifTrue: [directedSuperBindingSendTrampolines]
- 								ifFalse: [directedSuperSendTrampolines]).
- 	directedSendUsesBinding := false.
- 	^result!



More information about the Vm-dev mailing list