Hi,
The following code: CompiledMethod allInstances inject: (CompiledMethod allInstances first) into: [:m :i | i size > m size ifTrue: [i] ifFalse: [m]].
gives the largest method as an object. Is there an efficient way to trace back the method selector and its class without doing a brute force lookup?
TIA .. Subbu
On Fri, 25 May 2007 12:18:38 +0200, subbukk wrote:
Hi,
The following code: CompiledMethod allInstances inject: (CompiledMethod allInstances first) into: [:m :i | i size > m size ifTrue: [i] ifFalse: [m]].
gives the largest method as an object. Is there an efficient way to trace back the method selector and its class without doing a brute force lookup?
On pre-traits images you'd need (aMethod who) but from 3.9 on #who is deprecated. If you're on 3.9 the comment in #who tells the fast way.
/Klaus
TIA .. Subbu
On May 25, 2007, at 12:18 , subbukk wrote:
Hi,
The following code: CompiledMethod allInstances inject: (CompiledMethod allInstances first) into: [:m :i | i size > m size ifTrue: [i] ifFalse: [m]].
gives the largest method as an object.
Note that
CompiledMethod someInstance
is much more efficient than
CompiledMethod allInstances first
Is there an efficient way to trace back the method selector and its class without doing a brute force lookup?
Not in 3.8, but I think later versions might cache the owner of CMs. Anyway, you might want to try this:
(CompiledMethod allInstances detectMax: [:m | m size]) who
- Bert -
beginners@lists.squeakfoundation.org