[Vm-dev] CogMT

Marcel Taeumel marcel.taeumel at hpi.de
Wed Aug 4 13:16:24 UTC 2021

Hi, there.

> For us clueless end users and application tier coders, what will we see when this is done?

For example, you could then do a an expensive FFI call in any Squeak process other than the "UI process" in Morphic. Morphic would stay responsive. That FFI-calling process would wait on a semaphore and continue when the call returns. Just like you would design other in-image worker processes (with priorities) to keep the system responsive.

At the moment, the entire interpreter loop is blocked during that FFI call, which means that Squeak's process scheduling does not work. You will notice this even while fetching (smaller) chunks of network traffic in a low-priority process (ie., < 40) from time to time. Those little hiccups.

Am 01.08.2021 23:53:05 schrieb gettimothy <gettimothy at zoho.com>:
For us clueless end users and application tier coders, what will we see when this is done?

A folllow up newbie question...

Squeak in morphic is, I assume, single threaded -- Test runner must run to completion before morphic events are processed-- for example.

Does this MT FFI create a possibility of  two xterm based Squeeak REPLs  interacting , correctly, with Cog/Spur ?

---- On Sat, 31 Jul 2021 15:13:15 -0400 bera.clement at gmail.com wrote ----

It's about threaded FFI implemented in the VM.

On Thu, Jul 29, 2021 at 4:29 PM Marcel Taeumel <marcel.taeumel at hpi.de [mailto:marcel.taeumel at hpi.de]> wrote:

Hi all!

Here is a rather broad question: What is "CogMT" about? For whom are those multiple threads (MT)? :-)

The only build configuration I can find is build.linux64ARMv8/squeak.cogmt.spur. There is an issue with the type of sqOSSemaphore. That got me interested in the idea of CogMT ... which predates ARMv8 by a lot, right?



2021-07-29T11:17:34.6297654Z In file included from /home/runner/work/opensmalltalk-vm/opensmalltalk-vm/spur64src/vm/cogitARMv8.c:16,
2021-07-29T11:17:34.6305778Z from /home/runner/work/opensmalltalk-vm/opensmalltalk-vm/spur64src/vm/cogit.c:11:
2021-07-29T11:17:34.6312562Z /home/runner/work/opensmalltalk-vm/opensmalltalk-vm/platforms/unix/vm/sqPlatformSpecific.h:75:4: error: conflicting types for 'sqOSSemaphore'
2021-07-29T11:17:34.6323676Z } sqOSSemaphore;
2021-07-29T11:17:34.6324255Z ^~~~~~~~~~~~~
2021-07-29T11:17:34.6325724Z In file included from /home/runner/work/opensmalltalk-vm/opensmalltalk-vm/platforms/Cross/vm/sqMemoryAccess.h:472,
2021-07-29T11:17:34.6327528Z from /home/runner/work/opensmalltalk-vm/opensmalltalk-vm/platforms/unix/vm/sqPlatformSpecific.h:35,
2021-07-29T11:17:34.6329210Z from /home/runner/work/opensmalltalk-vm/opensmalltalk-vm/spur64src/vm/cogitARMv8.c:16,
2021-07-29T11:17:34.6330958Z from /home/runner/work/opensmalltalk-vm/opensmalltalk-vm/spur64src/vm/cogit.c:11:
2021-07-29T11:17:34.6332629Z /home/runner/work/opensmalltalk-vm/opensmalltalk-vm/platforms/unix/vm/sqPlatformSpecific.h:75:4: note: previous declaration of 'sqOSSemaphore' was here
2021-07-29T11:17:34.6333826Z } sqOSSemaphore;
2021-07-29T11:17:34.6334219Z ^~~~~~~~~~~~~
2021-07-29T11:17:34.9588384Z In file included from /home/runner/work/opensmalltalk-vm/opensmalltalk-vm/platforms/Cross/vm/dispdbg.h:8,
2021-07-29T11:17:34.9589908Z from /home/runner/work/opensmalltalk-vm/opensmalltalk-vm/spur64src/vm/cogitARMv8.c:19,
2021-07-29T11:17:34.9591283Z from /home/runner/work/opensmalltalk-vm/opensmalltalk-vm/spur64src/vm/cogit.c:11:
2021-07-29T11:17:34.9593124Z /home/runner/work/opensmalltalk-vm/opensmalltalk-vm/spur64src/vm/cogitARMv8.c: In function 'allMachineCodeObjectReferencesValid':
2021-07-29T11:17:34.9605356Z /home/runner/work/opensmalltalk-vm/opensmalltalk-vm/spur64src/vm/cogitARMv8.c:7855:52: warning: passing argument 2 of 'mapForperformUntilarg' from incompatible pointer type [-Wincompatible-pointer-types]
2021-07-29T11:17:34.9607673Z if (!(asserta((mapForperformUntilarg(cogMethod, checkIfValidOopRefAndTargetpccogMethod, cogMethod)) == 0))) {
2021-07-29T11:17:34.9608918Z ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Clément Béra
https://clementbera.github.io/ [https://clementbera.github.io/]
https://clementbera.wordpress.com/ [https://clementbera.wordpress.com/]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20210804/6502caaf/attachment.html>

More information about the Vm-dev mailing list