[M3commit] [modula3/cm3] 961ec4: Add record of current test output, for future comp...

Rodney Bates rodney.m.bates at acm.org
Tue Jul 21 18:14:43 CEST 2015


  Branch: refs/heads/master
  Home:   https://github.com/modula3/cm3
  Commit: 961ec4fb76ac8658a6b1ed4dd2e7416633bcd5f8
      https://github.com/modula3/cm3/commit/961ec4fb76ac8658a6b1ed4dd2e7416633bcd5f8
  Author: Rodney Bates <rodney.m.bates at acm.org>
  Date:   2015-07-18 (Sat, 18 Jul 2015)

  Changed paths:
    A m3-libs/libunicode/tests/unird/README

  Log Message:
  -----------
  Add record of current test output, for future comparison.

 Changes to be committed:

	new file:   m3-libs/libunicode/tests/unird/README


  Commit: a857b5c1caa5917a4754280d324edd82540b06fa
      https://github.com/modula3/cm3/commit/a857b5c1caa5917a4754280d324edd82540b06fa
  Author: Rodney Bates <rodney.m.bates at acm.org>
  Date:   2015-07-21 (Tue, 21 Jul 2015)

  Changed paths:
    M m3-libs/m3core/src/thread/PTHREAD/ThreadPThread.m3
    A m3-libs/m3core/src/thread/PTHREAD/ThreadPThread0.m3
    M m3-libs/m3core/src/thread/PTHREAD/m3makefile

  Log Message:
  -----------
  O(1) FIFO wakeup of waiters on both Mutexs and Conditions.

Formerly, Mutex wakeup was FIFO but used an O(n) per wakeup algorithm,
while Condition wakeup was LIFO but O(1).  Make both cases
FIFO and O(1) by using one-way, circularly linked lists, with
the origin pointer pointing to the list tail.  No change in
object types needed.

This showed slight reductions in number of "appears starved or deadlocked"
messages in the thread test at m3-libs/m3core/tests/thread, for a few
combinations of thread count and iteration count.  Total runtime variations
were in the noise.  In some cases, 4-core CPU utilizations appeared slightly
higher in a visual graph.

Also documented non-obvious dynamically-changing rule about what mutex
protects two fields in an Activation.

Since this is both fragile and potentially high-stakes, the
old version of ThreadPThread.m3 is now committed in
m3-libs/m3core/src/thread/PTHREAD/ThreadPThread0.m3, for quicker reversion,
should bugs appear.  Look in the m3makefile for quick comment in/out to revert.
You will probably have to clean, compile (to link), and ship all involved
libraries and your main program.

 Changes to be committed:

	modified:   thread/PTHREAD/ThreadPThread.m3
	new file:   thread/PTHREAD/ThreadPThread0.m3
	modified:   thread/PTHREAD/m3makefile


  Commit: 3ab68ebfb6b08b6972883db5c127ee5eb79eaa14
      https://github.com/modula3/cm3/commit/3ab68ebfb6b08b6972883db5c127ee5eb79eaa14
  Author: Rodney Bates <rodney.m.bates at acm.org>
  Date:   2015-07-21 (Tue, 21 Jul 2015)

  Changed paths:
    M m3-sys/m3back/src/M3C.m3

  Log Message:
  -----------
  Merge branch 'master' of https://github.com/modula3/cm3


Compare: https://github.com/modula3/cm3/compare/902dc7f1dc70...3ab68ebfb6b0


More information about the M3commit mailing list