Tuesday, June 13, 2006
STM Progress Report
Done in the past few days:
- Coded the easier parts of the transactional memory backend and wrote single-threaded tests for it.
- Fixed existing threading support in Parrot. They've been broken since calling conventions changed. Fixing is not really enough: it's likely that the interface will be changed to accomdate what threading functionality actually gets implemented. (There seems little point in keeping the type 1/2/3 distinction around if no one's going to get it past a type 1 versus type 2 or 3 distinction, for example.) Note that the old threading support is incomplete in rather substantial ways: for example, garbage collection of shared storage is hardly dealt with.
- Add support for making most PMCs shared and read-only. In almost (?) all cases, this will just require replacing the vtable with one that doesn't support any write operations. (This also requires identifying what the write operations are.)
- Figure out what the thread-creation, etc. API should really look like. (What different types of threads will we really support?)
- Write multithreaded STM tests now that threads can be created.
- Figure out shared object garbage collection. (There should be the beginnings of support for this already, so it can "just" be finished. -- Maybe.)
- Deal with exceptions. (I'm holding this off as the exception API is changing to lower overhead.)