[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