[Vm-dev] VM Maker: VMMaker.oscog-eem.2946.mcz
commits at source.squeak.org
commits at source.squeak.org
Fri Mar 5 20:30:59 UTC 2021
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2946.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.2946
Author: eem
Time: 5 March 2021, 12:30:49.883238 pm
UUID: 461911e1-d450-4f05-8a40-7b0470487041
Ancestors: VMMaker.oscog-eem.2945
Nuke the obsolete polling input primitives primitiveMouseButtons, primitiveKbdNext et al. These really are irrelevant to all images that run on Cog VMs.
Fix a couple of compiler warnings.
=============== Diff against VMMaker.oscog-eem.2945 ===============
Item was changed:
----- Method: CogMethodZone>>cogMethodContaining: (in category 'jit - api') -----
cogMethodContaining: mcpc
"Answer the method containing mcpc for the purposes of code zone compaction,
where mcpc is actually the value of instructionPointer at the time of a compaction."
<var: 'mcpc' type: #usqInt>
<api>
| cogMethod prevMethod |
mcpc > limitAddress ifTrue:
[^nil].
mcpc < baseAddress ifTrue:
[cogit assertMcpcIsPrimReturn: mcpc.
^nil].
+ self assert: mcpc < self freeStart.
- self assert: mcpc < self limitZony.
cogMethod := coInterpreter cCoerceSimple: baseAddress to: #'CogMethod *'.
[cogMethod asUnsignedInteger < mcpc] whileTrue:
[prevMethod := cogMethod.
cogMethod := self methodAfter: cogMethod].
"Since mcpc is actually instructionPointer we expect that it is either at the stack check
(normal code zone reclamation invoked through checkForEventsMayContextSwitch:)
or is in a primitive, immediately following the call of the C primitive routine."
self assert: (prevMethod notNil
and: [mcpc = (prevMethod asUnsignedInteger + prevMethod stackCheckOffset)
or: [(cogit backEnd isCallPrecedingReturnPC: mcpc)
and: [(coInterpreter
primitiveIndexOfMethod: prevMethod methodObject
header: prevMethod methodHeader) > 0
or: [(cogit backEnd callTargetFromReturnAddress: mcpc) = cogit ceCheckForInterruptTrampoline]]]]).
^prevMethod!
Item was changed:
----- Method: InterpreterPrimitives>>primitiveKbdNext (in category 'I/O primitives') -----
primitiveKbdNext
"Obsolete on virtually all platforms; old style input polling code.
Return the next keycode and remove it from the input buffer. The low byte is the 8-bit ISO character. The next four bits are the Smalltalk modifier bits <cmd><option><ctrl><shift>."
+ <option: #Legacy>
-
| keystrokeWord |
self pop: 1.
keystrokeWord := self ioGetKeystroke.
keystrokeWord >= 0
ifTrue: [self pushInteger: keystrokeWord]
ifFalse: [self push: objectMemory nilObject].!
Item was changed:
----- Method: InterpreterPrimitives>>primitiveKbdPeek (in category 'I/O primitives') -----
primitiveKbdPeek
"Obsolete on virtually all platforms; old style input polling code.
Return the next keycode and without removing it from the input buffer. The low byte is the 8-bit ISO character. The next four bits are the Smalltalk modifier bits <cmd><option><ctrl><shift>."
+ <option: #Legacy>
-
| keystrokeWord |
self pop: 1.
keystrokeWord := self ioPeekKeystroke.
keystrokeWord >= 0
ifTrue: [self pushInteger: keystrokeWord]
ifFalse: [self push: objectMemory nilObject].!
Item was changed:
----- Method: InterpreterPrimitives>>primitiveMouseButtons (in category 'I/O primitives') -----
primitiveMouseButtons
"Obsolete on virtually all platforms; old style input polling code.
Return the mouse button state. The low three bits encode the state of the <red><yellow><blue> mouse buttons. The next four bits encode the Smalltalk modifier bits <cmd><option><ctrl><shift>."
+ <option: #Legacy>
-
| buttonWord |
self pop: 1.
buttonWord := self ioGetButtonState.
self pushInteger: buttonWord.!
Item was changed:
----- Method: InterpreterPrimitives>>primitiveMousePoint (in category 'I/O primitives') -----
primitiveMousePoint
"Obsolete on virtually all platforms; old style input polling code.
Return a Point indicating current position of the mouse. Note that mouse coordinates may be negative if the mouse moves above or to the left of the top-left corner of the Smalltalk window."
+ <option: #Legacy>
-
| pointWord x y |
pointWord := self ioMousePoint.
x := self signExtend16: ((pointWord >> 16) bitAnd: 16rFFFF).
y := self signExtend16: (pointWord bitAnd: 16rFFFF).
self pop: 1 thenPush: (self makePointwithxValue: x yValue: y)!
Item was changed:
----- Method: InterpreterPrimitives>>traceInputEvent: (in category 'I/O primitive support') -----
traceInputEvent: evtBuf
<var: #evtBuf declareC: 'sqIntptr_t evtBuf[8]'>
| eventTypeNames |
eventTypeNames := self
cCoerce: #('None' 'Mouse' 'Keyboard' 'DragDropFiles' 'Menu' 'Window' 'Complex' 'MouseWheel' 'Plugin')
to: #'char **'.
'Event%s/%d @ %u\t\t%d/%x %d/%x\n\t%d/%x %d/%x\t %d/%x %p\n'
f: #stderr
printf: { ((evtBuf at: 0) between: 0 and: 8)
ifTrue: [eventTypeNames at: (evtBuf at: 0)]
ifFalse: ['?'].
evtBuf at: 0.
evtBuf at: 1. "timestamp"
evtBuf at: 2. evtBuf at: 2. evtBuf at: 3. evtBuf at: 3.
evtBuf at: 4. evtBuf at: 4. evtBuf at: 5. evtBuf at: 5.
evtBuf at: 6. evtBuf at: 6.
+ (evtBuf at: 7) asVoidPointer } "windowIndex"!
- evtBuf at: 7 } "windowIndex"!
Item was changed:
----- Method: StackInterpreter class>>initializePrimitiveTable (in category 'initialization') -----
(excessive size, no diff calculated)
More information about the Vm-dev
mailing list