MCache 2.0 Beta -- 64Bit is here!

  • warning: include(/tmp/fortune.txt): failed to open stream: No such file or directory in /home/mohawksoft/org/www/htdocs/includes/common.inc(1696) : eval()'d code on line 1.
  • warning: include(): Failed opening '/tmp/fortune.txt' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /home/mohawksoft/org/www/htdocs/includes/common.inc(1696) : eval()'d code on line 1.

After being side tracked for about 6 months, MCache 64bit is currently in CVS and in the process of being tested.

The Phoenix library on which MCache is built is kind of old. It contains code generated over a span of more than 20 years. While it has been ported from 16 bit to 32 bit in the past, assumptions about bit depth changes made in the past were not true about the move to 64 bit from 32 bit.

The big issue is the size of "int," "unsigned int," and pointers. At the time when the code was created it, it was standard that the size of these types were the natural bit width of the machine and size of a pointer would most likely be the size of an int. In the switch to x86/AMD 64 bits, the "int" type remained 32 bits wide and pointers grew to 64 bits. This wasn't a surprise, but it presented challenges to the code base.

The biggest offender was the MNode object which is the basis of all the Phoenix data collections. MCache and several other Mohawk applications depend heavily on MNode for data storage and analysis. Over 100,000 lines of code had to be checked for errors that would be created by changing this class.

There were a couple suggestions about how to fix this, but since Phoenix is more than just a part of MCache, I couldn't embark on fixing MCache and Phoenix until the other applications could also be addressed.