Ups....you are right bill, my example was wrong....it should be:
SmallInteger class >> initialize
self addInstVarName: 'Zaraza'.
On Mon, Dec 13, 2010 at 10:05 PM, Mariano Martinez Peck <
[email protected]> wrote:
>
>
> On Mon, Dec 13, 2010 at 9:42 PM, Schwab,Wilhelm K
> <[email protected]>wrote:
>
>> Mariano,
>>
>> SmallInteger is handled as (in Dolphin parlance) as an immediate object,
>> meaning that they are encoded entirely in the object pointer; as such, they
>> can't have instance variables. Object cannot have ivs either, because it
>> has subclasses that are so constrained.
>>
>
> Hi Bill, thanks. Yes, in SqueakVM it is the same...but I am adding an
> instVar to the SmallInteger CLASS, not to their instances ;)
> but still...,maybe the VM assumes that the SmallInteger CLASS is of certain
> fixed size.
>
> mariano
>
>
>>
>> Bill
>>
>>
>> ________________________________________
>> From: [email protected] [
>> [email protected]] On Behalf Of Mariano
>> Martinez Peck [[email protected]]
>> Sent: Monday, December 13, 2010 3:16 PM
>> To: Pharo Development; Squeak Development Discussion Virtual Machine
>> Subject: [Pharo-project] Is SmallInteger a really too dangerous class?
>>
>> Hi folks. Sorry for the cross-post, I am not sure if it is image or vm
>> problem.
>>
>> If I implement this:
>>
>> SmallInteger >> initialize
>> self addInstVarName: 'Zaraza'.
>>
>> I have the error: 'SmallInteger cannot be changed'
>>
>> This is because SmallInteger is in the ClassBuilder >> tooDangerousClasses
>> and the error is in ClassBuilder >> name: className inEnvironment: env
>> subclassOf: newSuper type: type instanceVariableNames: instVarString
>> classVariableNames: classVarString poolDictionaries: poolString category:
>> category unsafe: unsafe
>>
>> Now....since this is Smalltalk, I can just comment something, continue, or
>> any other kind of hack so that I can add class variables to SmallInetger.
>> For my CompiledMethod proxies stuff, I am using SmallIntegers and I have
>> some crashes (one is due to a corrupt heap and Eliot said something about
>> sizes)...I wonder if this is related to this...So the question is: is
>> really SMallInteger a too dangerous class so that it cannot be changed? not
>> even adding a class variable??? does the VM assume that the class
>> SmallInetger has a fixed size? if true, where?
>>
>> Thanks in advance
>>
>> Mariano
>>
>>
>