Revision: 3152 Author: eliot Date: 2014-11-26 11:57:25 -0800 (Wed, 26 Nov 2014) Log Message: ----------- Make sure to compile the SmallFloat64 primitives.
Modified Paths: -------------- branches/Cog/image/MorphFloat.st
Modified: branches/Cog/image/MorphFloat.st =================================================================== --- branches/Cog/image/MorphFloat.st 2014-11-26 01:09:16 UTC (rev 3151) +++ branches/Cog/image/MorphFloat.st 2014-11-26 19:57:25 UTC (rev 3152) @@ -102,7 +102,27 @@ [:s :m| m methodClassAssociation: binding]. bfc organization removeEmptyCategories; sortCategories]. + "shrink method dictionaries after removals; rehash does not shrink :-(" + {boxedFloat. boxedFloat class} do: + [:bfc| | nmd | + nmd := MethodDictionary new. + bfc selectorsAndMethodsDo: + [:s :m| nmd at: s put: m]. + bfc methodDict: nmd].
+ "Compile the SmallFloat64 primitives. + These have primitive number 500 + the corresponding boxed primitive number" + boxedFloat selectors do: + [:s| | code | + code := (boxedFloat sourceCodeAt: s) asString. + code := code copyReplaceAll: '<primitive: ' with: '<primitive: 5'. + smallFloat + compile: code + classified: (boxedFloat organization categoryOfElement: s) + withStamp: 'eem 11/25/2014 7:54' + notifying: nil]. + smallFloat organization sortCategories. + boxedFloat comment: 'My instances hold 64-bit Floats in heap objects. This is the only representation on 32-bit systems. But on 64-bit systems SmallFloat64 holds a subset of the full 64-bit double-precision range in immediate objects.' stamp: 'eem 11/25/2014 7:54'. smallFloat comment: 'My instances represent 64-bit Floats whose exponent fits in 8 bits as immediate objects. This representation is only available on 64-bit systems, not 32-bit systems.'