Thanks to some patches from jessevdam++ on TT #549, I think we have a viable way forward in removing the UnionVal structure. The patch is very large, but I've been looking it over for the past two days and have gotten a good idea about what it all does. The current version is applied in the pmc_sans_unionval branch.
1) Removes the UnionVal structure from the PMC structure. 2) Combines the PMC_EXT structure into the PMC structure. The net effect of these first two is that the PMC structure itself is the same size, but we no longer need to manage PMC_EXTs so there is an inherent decrease in memory consumption and increase in allocator performance. Also, accesses to data that had been stored in PMC_EXT should now be slightly faster and more cache-friendly. 3) Removes all special-purpose code from the GC for managing PMC_EXT 4) Removes definition of the UnionVal structure entirely PObjs that still used it have been redesigned to use the necessary pointers directly 5) Renames several accessor macros to more accurately reflect what types they work with 6) Adds several functions to check small object and memory pools for corruption (Though I'm not entirely sure yet what the performance implications are, or whether these checks are optional) 7) Adds lots of documentation about the behavior of the memory system This branch isn't going anywhere until after the Tuesday release at the earliest. However, I would like to ask for some help in testing this branch, including testing several languages running on top of it. Also I would like to hear opinions from people about this. I know we have talked about removing UnionVal and PMC_EXT in the past, but this is a pretty sudden surge in progress on those. Thanks, --Andrew Whitworth _______________________________________________ http://lists.parrot.org/mailman/listinfo/parrot-dev
