[Vm-dev] Re: [Cog] reproducable crash with SmallInteger as methods
Mariano Martinez Peck
marianopeck at gmail.com
Fri Dec 17 17:54:28 UTC 2010
And this change in #primitiveIndexOf:
also fixes the #flushCache in SmallInteger.
Because if you use SmallInteger as methods, you need to implement
#flushCache because it is used in MethodDIctionary >> #at:put:
But before this change, this crashes because of the send to
But since now #primitiveIndexOf: is working, #primitiveFlushCacheByMethod
doesn't fail anymore with SmallInteger :)
On Fri, Dec 17, 2010 at 11:01 AM, Mariano Martinez Peck <
marianopeck at gmail.com> wrote:
> Hi Eliot. I "fix/patch" it by chaging primitiveIndexOf: to this:
> primitiveIndexOf: methodPointer
> "Note: We now have 10 bits of primitive index, but they are in two
> for temporary backward compatibility. The time to unpack is
> since the derived primitive function pointer is stored in the method
> | primBits |
> (objectMemory isOopCompiledMethod: methodPointer)
> [primBits := ((self headerOf: methodPointer) >> 1) bitAnd:
> ^(primBits bitAnd: 16r1FF) + (primBits >> 19)]
> [^ 0 ].
> at least for my case, it patches the problem. Still, I have no idea:
> - the implicance/side effect of this change
> - why in development was crashing but not in deployment.
> On Thu, Dec 16, 2010 at 5:27 PM, Mariano Martinez Peck <
> marianopeck at gmail.com> wrote:
>> Hi Eliot. Today I can reproduce a do-it that crash Cog, when using
>> SmallIntegers as compiled methods. The problem is actually that IT ONLY
>> crashes when compiling in XCode with "Development". However, if I compile
>> with "Deployment", it doesn't crash....
>> The code is this:
>> SmallInteger compile: 'flushCache "emtpy"'.
>> SmallInteger compile: 'run: aSelector with: arguments in: aReceiver
>> Transcript show: ''something''.'.
>> TestCase compile: 'foo ^ ''foo'' '.
>> TestCase methodDict at: #foo put: 5.
>> TestCase new foo.
>> I really don't understand how this can work in "Deployment" but not in
>> "Development" since the code is the same as I know. Maybe when debugging
>> certain functions/methods are called that crash?
>> Thanks for any tip.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Vm-dev