> Am Fr., 27. Dez. 2019 um 23:29 Uhr schrieb Nicolas Cellier <
> nicolas.cellier.aka.nice(a)gmail.com>:
> Currently, we have to generate:
> - an EventKeyDown at each keydown, and at each repeat
BTW, I built current (Linux/Arm64) with DEBUG_MOUSE_EVENT and
DEBUG_KEYBOARD_EVENT.
Most unexpected results.
E.g. for every single up-or-down 'click' on the mouse wheel, I see three
(count 'em 3) events (DOWN/Key/UP).
I was expecting to see a single event.
Is there a deep reason against a single composite report per wheel
'click' ?
I understand about history, but ..
Thanks much,
-KenD
Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2648.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.2648
Author: eem
Time: 29 December 2019, 12:51:45.495048 pm
UUID: c41a5ec7-bfee-41d7-b911-46d59c5a9651
Ancestors: VMMaker.oscog-eem.2647
Comments, categories and simulation slips.
=============== Diff against VMMaker.oscog-eem.2647 ===============
Item was changed:
+ ----- Method: CogIA32Compiler>>isJumpAt: (in category 'testing') -----
- ----- Method: CogIA32Compiler>>isJumpAt: (in category 'disassembly') -----
isJumpAt: pc
| op |
op := objectMemory byteAt: pc.
^ (op between: 16r70 and: 16r7F) "short conditional jumps"
or: [op = 16rE9 "long unconditional jump"
or: [op = 16rEB "short unconditional jump"
or: [op = 16r0F "long conditional jumps"
and: [(objectMemory byteAt: pc + 1) between: 16r80 and: 16r8F]]]]!
Item was changed:
----- Method: CogOutOfLineLiteralsARMCompiler>>mapEntryAddress (in category 'generate machine code') -----
mapEntryAddress
"Typically map entries apply to the end of an instruction, for two reasons:
a) to cope with literals embedded in variable-length instructions, since, e.g.
on x86, the literal typically comes at the end of the instruction.
b) in-line cache detection is based on return addresses, which are typically
to the instruction following a call.
+ But on ARM using CogOutOfLineLiteralsARMCompiler we use out-of-line literals
+ so the mapEntryAddress of a literal is simply the instruction's address."
- But with out-of-line literals it is more convenient to annotate the literal itself."
<inline: true>
^opcode = Literal
ifTrue: [address]
ifFalse: [address + machineCodeSize]!
Item was changed:
+ ----- Method: CogX64Compiler>>isJumpAt: (in category 'testing') -----
- ----- Method: CogX64Compiler>>isJumpAt: (in category 'disassembly') -----
isJumpAt: pc
| op |
op := objectMemory byteAt: pc.
^ (op between: 16r70 and: 16r7F) "short conditional jumps"
or: [op = 16rE9 "long unconditional jump"
or: [op = 16rEB "short unconditional jump"
or: [(op = 16r0F "long conditional jumps"
and: [(objectMemory byteAt: pc + 1) between: 16r80 and: 16r8F])
or: [op = 16r48 "full unconditional jumps"
and: [(objectMemory byteAt: pc + 1) = 16rA1
and: [(objectMemory byteAt: pc + 10) = 16rFF
and: [(objectMemory byteAt: pc + 11) = 16rE0]]]]]]]!
Item was changed:
+ ----- Method: Spur32BitCoMemoryManager>>isInHeapBounds: (in category 'debug support') -----
- ----- Method: Spur32BitCoMemoryManager>>isInHeapBounds: (in category 'plugin support') -----
isInHeapBounds: address
"Answer if the given address is within the entire range ST object memory.
For quick checking during leak checking only!!"
^(self oop: address isGreaterThanOrEqualTo: memory)
and: [self oop: address isLessThan: endOfMemory]!
Item was added:
+ ----- Method: Spur32BitMMLECoSimulator>>isInHeapBounds: (in category 'debug support') -----
+ isInHeapBounds: address
+ "Answer if the given address is within the entire range ST object memory.
+ For quick checking during leak checking only!!"
+ ^(self oop: address isGreaterThanOrEqualTo: cogit cogCodeBase)
+ and: [self oop: address isLessThan: endOfMemory]!
Item was changed:
+ ----- Method: Spur64BitCoMemoryManager>>isInHeapBounds: (in category 'debug support') -----
- ----- Method: Spur64BitCoMemoryManager>>isInHeapBounds: (in category 'plugin support') -----
isInHeapBounds: address
"Answer if the given address is within the entire range ST object memory.
For quick checking during leak checking only!!"
^(self oop: address isGreaterThanOrEqualTo: memory)
and: [self oop: address isLessThan: endOfMemory]!
Item was added:
+ ----- Method: Spur64BitMMLECoSimulator>>isInHeapBounds: (in category 'debug support') -----
+ isInHeapBounds: address
+ "Answer if the given address is within the entire range ST object memory.
+ For quick checking during leak checking only!!"
+ ^(self oop: address isGreaterThanOrEqualTo: cogit cogCodeBase)
+ and: [self oop: address isLessThan: endOfMemory]!
Item was changed:
+ ----- Method: SpurMemoryManager>>isInHeapBounds: (in category 'debug support') -----
- ----- Method: SpurMemoryManager>>isInHeapBounds: (in category 'plugin support') -----
isInHeapBounds: address
"Answer if the given address is within the entire range ST object memory.
For quick checking during leak checking only!!"
^(self oop: address isGreaterThanOrEqualTo: newSpaceStart)
and: [self oop: address isLessThan: endOfMemory]!
Branch: refs/heads/Cog
Home: https://github.com/OpenSmalltalk/opensmalltalk-vm
Commit: a9c7fd5fc6b9c100bb5e58d09ed3c3d46f461f63
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/a9c7fd5fc6b9c100bb…
Author: Eliot Miranda <eliot.miranda(a)gmail.com>
Date: 2019-12-29 (Sun, 29 Dec 2019)
Changed paths:
M platforms/Cross/plugins/Squeak3D/b3dMain.c
Log Message:
-----------
Fix the crash in b3dMainLoop when "If the edge is not on top toggle its (back) fills".
This fixes several crashes with cases submitted by Stéphane Rolindin.
Thanks, Stéph!
Greetings,
I have a side project to get the vm-display-fbdev up on Linux using
libevdev.
I am at the point where I have hacked the evtest program to capture
events bu need more info to "fill out the forms" (i.e. register events).
At this point I am confused as to the current state of "Cross Platform
Input Event" handling.
A state machine and usage API would be most helpful.
Current Status:
Events come in at each (debounced) keypress, with repeats
[sample-events.txt].
KeyModifiers (and MouseBUttons) are tracked as expected [misc-code.txt]
I need to fill in the event structures [e.g. record-key.txt].
I have been looking through the "Porting Squeak" and source code.
As the "Cross-platform differences for CTRL keys" topic has been raised
here, a state machine recognizer would be helpful to understand how
mouse/key/trackpad/gamepad/.. events are recognized across platforms --
along with scancode>keycode translation mappings.
Perhaps a good project to undertake?
Any hints appreciated. I really am confused as to what mappings are
required.
Thanks much,
-KenD
Hi All,
clearly floating point arithmetic (used in determining colors) needs a
little work, but the ARMv8 JIT is coming along:
[image: first armv8 display.png]
_,,,^..^,,,_
best, Eliot