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 > >
