Hi, this method of Interpreter is used for debugging, and should print the name of the class passed in console:<div><br></div><div><div>printNameOfClass: classOop count: cnt</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>&quot;Details: The count argument is used to avoid a possible infinite recursion if classOop is a corrupted object.&quot;</div>

<div><br></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>cnt &lt;= 0 ifTrue: [ ^ self print: &#39;bad class&#39; ].</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>(self sizeBitsOf: classOop) = (7 * self bytesPerWord)<span class="Apple-tab-span" style="white-space:pre">        </span>&quot;(Metaclass instSize+1 * 4)&quot;</div>

<div><span class="Apple-tab-span" style="white-space:pre">                </span>ifTrue: [self printNameOfClass: (self fetchPointer: 5 &quot;thisClass&quot; ofObject: classOop) </div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span>count: cnt - 1.</div>

<div><span class="Apple-tab-span" style="white-space:pre">                                </span>self print: &#39; class&#39;]</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>ifFalse: [self printStringOf: (self fetchPointer: 6 &quot;name&quot; ofObject: classOop)]</div>

<div><br></div><div>it&#39;s logic is this: if the classOop is of a normal Class instance, it should use the instance var number six, which corresponds to the class&#39; name. If not, then the classOop represents a Metaclass instance, and then it will fetch inst var number 5, which is the corresponding class, print its name, and then print &#39;class&#39; to let you distinguish it that it is a metaclass.</div>

<div><br></div><div>The problem of the method is that it determines if it&#39;s a class instance or a metaclass instance by looking at the size of the oop, which seems to have changed, at least in pharo (Metaclass instSize+1 * 4 = 36 = 9*bytesPerWord). </div>

<div><br></div><div>The method could be fixed by changing 7 to 9 then. But it will break if Metaclass changes again. So I have this idea: make it check if the classOop is a metaclass instance. Metaclass class is not a special object, but can be obtained by accessing any special one, like with </div>

<div><br></div><div>Integer class class</div><div><br></div><div>or directly with</div><div><br></div><div>nil class class class (!!)</div><div><br></div><div>then the proposed code is:</div><div><br></div><div><meta http-equiv="content-type" content="text/html; charset=utf-8"><span class="Apple-style-span" style="white-space: pre;">printNameOfClass: classOop count: cnt
        &quot;Details: The count argument is used to avoid a possible infinite recursion if classOop is a corrupted object.&quot;
        | metaclassClass |
        cnt &lt;= 0 ifTrue: [ ^ self print: &#39;bad class&#39; ].
        metaclassClass := self fetchClassOf: (self fetchClassOf: (self fetchPointer: ClassInteger ofObject: specialObjectsOop)).
        metaclassClass = (self fetchClassOf: classOop) &quot;Is it a metaclass?&quot;
                ifTrue: [self printNameOfClass: (self fetchPointer: 5 &quot;thisClass&quot; ofObject: classOop) 
                                        count: cnt - 1.
                                self print: &#39; class&#39;]
        ifFalse: [self printStringOf: (self fetchPointer: 6 &quot;name&quot; ofObject: classOop)]</span></div><div><br></div><div><br></div><div>I&#39;d also like to have this included too:</div><div><br></div><div><div>printClassOf: oop</div>

<div><span class="Apple-tab-span" style="white-space:pre">        </span>&quot;Print the class of the oop in console&quot;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>self printNameOfClass: (self fetchClassOf: oop) count: 5. </div>

</div><div><br></div><div>which is simple but pretty much useful.</div><div><br></div><div>What do you think?</div><div><br></div><div>Regards,</div><div>           Javier.</div><br>-- <br>Javier Pimás<br>Ciudad de Buenos Aires<br>


</div>