Hi guys. I was checking MethodDictionary >> rehash and this is terribly slow because of the #become. Then I saw #rehashWithoutBecome� but it answers a different instance. I need a #rehash that does the rehash in the real object and answers self. So...I need the regular #rehash but I want to avoid the #become. Is that possible somehow?

This is the current implementation:

rehashWithoutBecome

��� | newInstance |
��� newInstance := self species new: self basicSize - 1. "Make sure it has the same capacity"
��� 1 to: self basicSize do: [ :index |
��� ��� (self basicAt: index) ifNotNil: [ :key |
��� ��� ��� newInstance at: key put: (array at: index) ] ].
��� ^newInstance

I am terrible bad with Collection and friends, but cannot we do soemthing like this:

rehashWithoutBecome

��� | newInstance |
��� newInstance := self species new: self basicSize - 1. "Make sure it has the same capacity"
���
��� 1 to: self basicSize do: [ :index |
��� ��� (self basicAt: index) ifNotNil: [ :key |
��� ��� ��� newInstance at: key put: (array at: index) ] ].
���
��� 1 to: newInstance basicSize do: [ :index |
��� ��� (newInstance basicAt: index) ifNotNil: [ :key |
��� ��� ��� self at: key put: (newInstance array at: index) ] ].
���
��� ^ self


Thanks for any help.


--
Mariano
http://marianopeck.wordpress.com