Hm, not sure what you're seeing.. #canUncompact is implemented only Behavior as:
canUncompact ^ (Smalltalk isRunningCog or: [ Smalltalk isRunningCogit ]) ifTrue: [ (Smalltalk compactClassesArray includes: self) not ] ifFalse: [ true ]
Sounds like you are looking at the wrong version of WriteBarrier. The correct one is WriteBarrier-cmm.35.
- Chris
On Sat, Dec 10, 2011 at 5:38 PM, Mariano Martinez Peck marianopeck@gmail.com wrote:
Thanks now I understand why you asked about compact classes. However, you only implement canUncompact ^ false in CompiledMethod and ContextPart, even if with Cog there are more classes that you *cannot* uncompact.
Cheers
On Sat, Dec 10, 2011 at 5:37 PM, Chris Muller asqueaker@gmail.com wrote:
I would like to take a look to this. In which primitives you need to send #yourself for example? This is because otherwise the VM will fail / crash because it expects the parameters of a primitive to be of a certain type rather than a proxy ?
Right, this is the problem that has been solved with the new extension.
Which are those subclases you mention that override the primitive methods?
The ones that WriteBarrier dynamically instantiates for each class of object added to the WB. Please look at the WriteBarrier package (it's a small, standalone package) and it will become crystal clear.
Thanks and congrats for the release.
Thanks, Chris
-- Mariano http://marianopeck.wordpress.com