Weird problem...having several "implementors" for the same method and class

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Weird problem...having several "implementors" for the same method and class

Mariano Martinez Peck
Sorry, I know the subject of the mail is confusing, I am confused myself. Ok, I am doing hacky stuff and playing with CompiledMethod proxies, but I have a problem searching for implementors.

So, I have for example CompiledMethodProxy >> mareaUninstall.

But when I search for implementors of "mareaUninstall" in the popup of implementors it shows FOUR times, "CompiledMethodProxy >> mareaUninstall"... why ???   it should appear only once..

I attach an screenshot. Does anyone know what can be happening?

thanks in advance,

Mariano

Screen shot 2010-11-26 at 11.00.23 AM.png (43K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Weird problem...having several "implementors" for the same method and class

Benjamin Van Ryseghem (Pharo)

On Nov 26, 2010, at 11:01 AM, Mariano Martinez Peck wrote:

> Sorry, I know the subject of the mail is confusing, I am confused  
> myself. Ok, I am doing hacky stuff and playing with CompiledMethod  
> proxies, but I have a problem searching for implementors.

Did you try to make copies of this method ?

Ben

>
> So, I have for example CompiledMethodProxy >> mareaUninstall.
>
> But when I search for implementors of "mareaUninstall" in the popup  
> of implementors it shows FOUR times, "CompiledMethodProxy >>  
> mareaUninstall"... why ???   it should appear only once..
>
> I attach an screenshot. Does anyone know what can be happening?
>
> thanks in advance,
>
> Mariano
> <Screen shot 2010-11-26 at 11.00.23 AM.png>


Reply | Threaded
Open this post in threaded view
|

Re: Weird problem...having several "implementors" for the same method and class

Eliot Miranda-2
In reply to this post by Mariano Martinez Peck
My guess is that you have multiple copies of the CompiledMethodProxy class, which can happen by various snafus.  Use SystemNavigation default obsoleteClasses inspect to track them down.  You can select the real one by insisting that theRealOne == (Smalltalk at: #CompiledMethodProxy) and nuking the other ones.

HTH
Eiot

On Fri, Nov 26, 2010 at 2:01 AM, Mariano Martinez Peck <[hidden email]> wrote:
Sorry, I know the subject of the mail is confusing, I am confused myself. Ok, I am doing hacky stuff and playing with CompiledMethod proxies, but I have a problem searching for implementors.

So, I have for example CompiledMethodProxy >> mareaUninstall.

But when I search for implementors of "mareaUninstall" in the popup of implementors it shows FOUR times, "CompiledMethodProxy >> mareaUninstall"... why ???   it should appear only once..

I attach an screenshot. Does anyone know what can be happening?

thanks in advance,

Mariano

Reply | Threaded
Open this post in threaded view
|

Re: Weird problem...having several "implementors" for the same method and class

Igor Stasenko
I had some image which for some classes also shown implementors twice.
And i think the reason was same: due to some hacking, a duplicate
classes is hang in image,
with same name.

On 26 November 2010 18:53, Eliot Miranda <[hidden email]> wrote:

> My guess is that you have multiple copies of the CompiledMethodProxy class,
> which can happen by various snafus.  Use SystemNavigation default
> obsoleteClasses inspect to track them down.  You can select the real one by
> insisting that theRealOne == (Smalltalk at: #CompiledMethodProxy) and nuking
> the other ones.
> HTH
> Eiot
>
> On Fri, Nov 26, 2010 at 2:01 AM, Mariano Martinez Peck
> <[hidden email]> wrote:
>>
>> Sorry, I know the subject of the mail is confusing, I am confused myself.
>> Ok, I am doing hacky stuff and playing with CompiledMethod proxies, but I
>> have a problem searching for implementors.
>>
>> So, I have for example CompiledMethodProxy >> mareaUninstall.
>>
>> But when I search for implementors of "mareaUninstall" in the popup of
>> implementors it shows FOUR times, "CompiledMethodProxy >> mareaUninstall"...
>> why ???   it should appear only once..
>>
>> I attach an screenshot. Does anyone know what can be happening?
>>
>> thanks in advance,
>>
>> Mariano
>
>



--
Best regards,
Igor Stasenko AKA sig.

Reply | Threaded
Open this post in threaded view
|

Re: Weird problem...having several "implementors" for the same method and class

Mariano Martinez Peck
In reply to this post by Benjamin Van Ryseghem (Pharo)
Benjamin: do, I don't do any copy explicitly.

Eliot: yes, I thought it should be somethig related to that. Even more, I already tried Smalltalk fixObsoleteReferences, but still the same problem. Now, I have inspected those 4 copies of the CompiledMethodClass , and see the pointers to them, and all of them are pointed from an array.

Here I attach an screenshot of the array and my proxies. Now the problem is that I don't know which is that array, nor how to fix it. Do you imagine which array can be? If I try to do a chase pointers of that array, the image hungs...

I tried also evaluating ScriptLoader new cleanUpForRelease that does a lot cleanings...but they remain there.

If I load all my code in a fresh image, I dont have it 4 times...only one. So I guess that something happened in my image.

The array you see in the picture has:

 'an Array(BalloonState UndefinedObject Boolean FillStyle Authorizer ConnectionQueue Password ChangeRecord MidiPrimTester BitBlt MailAddressParser PopUpMenu Random BalloonEdgeData Magnitude TTKernPair LimitingLineStreamWrapper TTFontReader Message PseudoClass EllipseMidpointTracer DamageRecorder BalloonBezierSimulation RemoteString Model Color ImageReadWriter TextContainer TTGlyph AsyncFile ClassCategoryReader RealEstateAgent Rectangle BalloonSolidFillSimulation JPEGHuffmanTable NetNameResolver TTFontDescription ProcessorScheduler Scanner Collection TextAttribute BalloonEngine Stream Link BalloonBuffer TextPrinter Delay SerialPort MimeConverter FileDirectory CornerRounder CompressedBoundaryShape TTFontTableDirEntry MailAddressToken BalloonLineSimulation DiskProxy LineSegment TTContourConstruction Point DisplayObject InstructionStream BalloonFillData Url FakeClassPool ParseStack Morph DisplayTransform ObjectScanner TTPoint Utilities ListItemWrapper ClassBuilder NullEncoder ExceptionSet TextStyle DigitalSignatureAlgorithm SecureHashAlgorithm ThirtyTwoBitRegister ZipEncoderNode ZipEncoderTree HaloSpec MessageSend ClassChangeRecord MethodChangeRecord MIMEHeaderValue FontSet AbstractFont ColorMap ExternalSemaphoreTable GZipSurrogateStream ImageSegment Command CommandHistory HTTPLoader HTTPDownloadRequest AbstractLauncher AutoStart FilePackage MorphicEventDispatcher MouseOverHandler LayoutCell LayoutFrame LayoutPolicy LayoutProperties MailMessage Archive HTTPClient JPEGColorComponent TextComposer ExternalSettings ParseNode MouseClickState BorderStyle UUIDGenerator ExternalDropHandler EventManager WeakMessageSend AppRegistry InstructionClient Socket Imports Exception TestCase TestResource TestSuite SharedPool SpaceTally SpaceTallyItem PackageInfo ProtocolClient Beeper LRUCache MenuIcons BreakpointManager TimeZone Stopwatch BadEqualer BadHasher PrototypeTester AbstractEvent SystemChangeNotifier CompiledMethodWithNode MczInstaller AbstractSoundSystem EventHandler ArchiveMember SystemNavigation PackageServices PackageOrganizer Categorizer Monitor UCSTable EncodedCharSet CompoundTextConverterState ImmAbstractPlatform SparseXTable XTableForFixedFont XTableForUnicodeFont CombinedChar StrikeFontFixer X11Encoding IdentityGlyphMap ISOLanguageDefinition Locale LocaleID StringMorphAttributeScanner DefaultExternalDropHandler InternetConfiguration PrimCallControllerAbstract ExceptionTester NaturalLanguageFormTranslator FilePath MCAncestry MCConflict MCDefinition MCDefinitionIndex MCDependencySorter MCDoItParser MCMergeRecord MCMerger MCMock MCMockClassD MCMockClassE MCMockClassF MCMockClassG MCMockClassH MCMockClassI MCMockDependency MCPackage MCPackageCache MCPackageManager MCPatch MCPatcher MCPatchOperation MCReader MCRepository MCScanner MCSnapshot MCTool MCToolWindowBuilder MCVariableDefinition MCVersion MCVersionDependency MCVersionLoader MCVersionMerger MCVersionNotification MCVersionSorter MCWriter MCConfiguration SocketStream URI URIAuthority ToolBuilder UIManager WidgetStub MCFrontier FileServices StandardToolSet FixUnderscores LocatedMethod TraitBehavior TraitComposition TraitMethodDescription TraitTransformation BDFFontReader Mutex MutexSet Pragma AbstractObjectsAsMethod LanguageEnvironment MorphHierarchy Behavior MCRepositoryGroup DeepCopier MethodFinder TestResult RxCharSetParser RxMatchOptimizer RxParser RxmLink RxmTerminator RxsNode ServerDirectory ClassFactoryForTestCase EditCommand ProcessSpecificVariable HostSystemMenus HostSystemMenusMenuItem HostSystemMenusProxy HostWindowProxy MorphicEvent FT2BitmapSize FT2GlyphSlot FT2Handle FT2Outline FT2Version FontFamilyAbstract FontFamilyMemberAbstract FontProviderAbstract FreeTypeCache FreeTypeFileInfoAbstract FreeTypeGlyphRenderer FreeTypeNameParser FreeTypeSettings LogicalFontManager CharacterScanner ExampleRadioButtonModel ListModel ObjectStringConverter SoundTheme TaskbarTask TextHighlight ThemeIcons UITheme Shape JoinSection JoinSide TestRunner MIMEType MIMEDocument Announcement AnnouncementSpy Announcer OSPlatform Clipboard ParagraphEditor DebuggerMethodMap Compiler ParseNodeVisitor BlockClosure CollectionCombinator InputEventFetcher InputEventHandler ThreadSafeTranscript HMAC HashFunction MOPTestClassA MOPTestClassB MOPTestClassC MOPTestClassD MethodReference NullSound NewParagraph Author MCPackageLoader MethodAddition AdditionalMethodState ScriptLoader GoferOperation TextLine PragmaCollector TextConverter MorphExtension MorphTreeColumn MorphTreeMorphSelection SettingFilter SettingTreeBuilder StandardFonts NetworkSystemSettings SoundSettings SystemVersion PSMCSystemSettings TaskListSystemSettings TaskbarSystemSettings SecurityManager Gofer GoferReference CompiledMethodTrailer CuvierMorphPreferences DeprecationPreferences FreeTypePreferences LocalePreferences MCConfigurationPreferences MorphicPreferences NetworkPreferences Preference PreferenceView PreferenceViewRegistry Preferences PreferencesUnloader TaskListMorphPreferences UIThemePreferences PolymorphSystemSettings SystemSystemSettings CompilerSystemSettings FreeTypeSystemSettings InputEventSensorSystemSettings MCSystemSettings CodeHolderSystemSettings DebugSystemSettings RxMatcher ToolBuilderSpec NumberParser MenuRegistrationExample WorldState BuiltinSettingStyle DisplaySettings GraphicFontSettings PersonDataExample SettingNodeBuilder SettingTree PragmaSetting CodeLoader MockForCompilation MockTranscript TextStopConditions DirectoryEntry SmalltalkImage HashTableSizes MenuRegistration Editor CustomHelp HelpBrowser HelpBuilder HelpIcons HelpTopic SystemHelp SystemReference ConfigurationOfPharoCore AdvancedHelpBrowserDummy ChangeSet NaturalLanguageTranslator DiffElement DifferatorSystemSettings TextDiffBuilder SUnitUnloader BrowserSystemSettings TotalCost MultiCharacterScanner ConfigurationOfPharo ConfigurationOfMetacello MetacelloConfigTemplate MetacelloDirective MetacelloLoadData MetacelloLoaderPolicy MetacelloMCVersionSpecLoader MetacelloPlatform MetacelloProject MetacelloSpec MetacelloSpecLoader MetacelloVersionConstructor MetacelloVisitedPackages ConfigurationOfGofer ConfigurationOfOCompletion ConfigurationOfProfStef ConfigurationOfOmniBrowser ConfigurationOfPharoNonCore ConfigurationOfRefactoringBrowser ConfigurationOfScriptManager ConfigurationOfShout ConfigurationOfNile ConfigurationOfAutomaticMethodCategorizer ConfigurationOfNewInspector ConfigurationOfPharoMorphicExtras ConfigurationOfPharoSound ConfigurationOfObjectMetaTools ConfigurationOfHelpSystem RBParseTreeRule RBParser RBProgramNode RBProgramNodeVisitor RBScanner RBSmallDictionary RBStringReplacement RBToken RBAbstractClass RBAbstractCondition RBMethod RBMethodName RBNamespace Refactoring RefactoringManager SHParserST80 SHRange SHTextStyler ASampleClass AbstractType CommonCollection TypeCollector TypeMerger TypingResultKeeper ECContext ECController ECEntry ECEntryDescription ECModel ECPreferences ECSymbols ECTypeInfo OCompletionTable OEmptyModel OEntryList ORecentChanges OBAnnouncement OBAnnouncer OBAutoSelection OBBrowser OBBuilder OBColumn OBCommand OBCommandCluster OBDefinition OBFan OBFilter OBList OBMetaEdge OBMetaNode OBNode OBPanel OBPlatform OBSubtree OBSwitch OBTextSelection OBButtonModel OBMorphicIcons OBAnnotationRequest OBBrowserPlatform OBClassReference OBMercuryQuery OBMetagraphBuilder OBMethodVersion OBSystemBrowserAdaptor RBRefactoryTestDataApp RBLintRuleTest RBSpellChecker ECTestSuperClass BogusA BogusC BogusDamage BogusF BogusG BogusH BogusI BogusInfo BogusJ BogusB OBFakeMenu OBFakeMenuItem OBFakeWidget AutomaticMethodCategorizer AutomaticMethodCategorizerApplier AutomaticMethodCategorizerMockParentClass CategorizationRulesExample MethodCategoriesFinderBehavior MethodCategorizationRuleBehavior MethodCategorySelectionStrategyBehavior MockSystemChangeNotifier AIFFFileReader AbstractScoreEvent AbstractSound CompressedSoundData Envelope FFT FWT MIDIFileReader MIDIInputParser MIDIScore MIDISynth MIDISynthChannel SampledInstrument SimpleMIDIPort SoundCodec SoundPlayer SoundRecorder SunAudioFileWriter DDCFDummy DynamicDeadCodeFinder ObjectAsMethodWrapper ObjectAsMethodWrapperDummy ProtocolCatcher ProtocolCatcherWithoutObject NIAction NINode RBLexicalScope RBVariableBinding NSCollectionStream NSDecoder NSAbstractDataStream NSAbstractDeflateStream NSAbstractInflateStream NSCompressedSourceStream NSDrainer NSDummyStream NSFileStream NSHistory NSLimitedWriteStream NSLink NSLinkedListStream NSMailAddressTokenizer NSMockBufferedStream NSPipeEntry NSRandom NSSharedQueue NSTextStream NSZipEncoder OpenFileStreamRegistry AbstractTutorial Lesson LessonView ProfStef TutorialNode TutorialPlayer ProfStefBrowser MockLessonView MetacelloProjectRefTutorialConfig MetacelloReferenceConfig MetacelloTutorialConfig MetacelloMCTestsAbstractConfig DEVImageCreator PharoDevSettingStyle ConfigurationOfVMMaker CArray CCodeGenerator CObjectAccessor InterpreterPlugin InterpreterProxy InterpreterSimulationObject ObjectMemory TMethod TParseNode VMMaker MemoryAccess B3DActiveEdgeTable B3DFillList B3DPrimitiveEdge B3DPrimitiveEdgeList B3DPrimitiveFace B3DPrimitiveFaceAttributes B3DPrimitiveObject B3DScanner RefactoryChange RefactoryChangeManager RBLintRule SmalllintChecker SmalllintContext BrowserEnvironment RBSmalllintTestObject SHPreferences SHStyleSetting ObjectSwapper UnusedObjectDiscoverer UnusedObjectStadistics MockClassSuperclass MockCompiledMethodObject ProxySuperclass ClassWith2Var ClassProxyFileOut CompiledMethodSwapper LoggerStrategy SimpleLogger MyAppLogger MareaLogger ConfigurationOfUsedObjects ConfigurationOfMarea ClassWithDNU RBRefactoryTyper Benchmark MacroBenchmarks SlopstoneBenchmark SmopstoneBenchmark FLAnalyzer FLBenchmarkResult FLBenchmarks FLBenchmarksRepeatingCSVExporter FLBenchmarksSubsetsCSVExporter FLClusterSerializer FLInstanceVariablesMapping FLMaterializer FLObjectAnalyzer FLSerializer Pair MareaSerializer CompiledMethodProxy CompiledMethodProxy CompiledMethodProxy CompiledMethodProxy)'



thanks in advance,

mariano



On Fri, Nov 26, 2010 at 11:06 AM, Benjamin <[hidden email]> wrote:

On Nov 26, 2010, at 11:01 AM, Mariano Martinez Peck wrote:

Sorry, I know the subject of the mail is confusing, I am confused myself. Ok, I am doing hacky stuff and playing with CompiledMethod proxies, but I have a problem searching for implementors.

Did you try to make copies of this method ?

Ben


So, I have for example CompiledMethodProxy >> mareaUninstall.

But when I search for implementors of "mareaUninstall" in the popup of implementors it shows FOUR times, "CompiledMethodProxy >> mareaUninstall"... why ???   it should appear only once..

I attach an screenshot. Does anyone know what can be happening?

thanks in advance,

Mariano
<Screen shot 2010-11-26 at 11.00.23 AM.png>




compiledMethodProxies.png (671K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Weird problem...having several "implementors" for the same method and class

Mariano Martinez Peck
In reply to this post by Igor Stasenko


On Sat, Nov 27, 2010 at 3:26 AM, Igor Stasenko <[hidden email]> wrote:
I had some image which for some classes also shown implementors twice.
And i think the reason was same: due to some hacking,

hehhehehe  in my case I did several hacking but the suspect one was to remove the bytecode shortcut for #class  in the Compiler:
    (ParseNode classVarNamed:  'StdSelectors') removeKey: #class ifAbsent: [].

And then I override #class in CompiledMethodProxy....and while trying to make it work, I probably generated these duplicates.

a duplicate
classes is hang in image,
with same name.

Yes, but what it is weird is that the duplicates (in my case) are not in Smalltalk globals, or obsolete...they are in that array that I don't know which is it heheh

Cheers

mariano
 

On 26 November 2010 18:53, Eliot Miranda <[hidden email]> wrote:
> My guess is that you have multiple copies of the CompiledMethodProxy class,
> which can happen by various snafus.  Use SystemNavigation default
> obsoleteClasses inspect to track them down.  You can select the real one by
> insisting that theRealOne == (Smalltalk at: #CompiledMethodProxy) and nuking
> the other ones.
> HTH
> Eiot
>
> On Fri, Nov 26, 2010 at 2:01 AM, Mariano Martinez Peck
> <[hidden email]> wrote:
>>
>> Sorry, I know the subject of the mail is confusing, I am confused myself.
>> Ok, I am doing hacky stuff and playing with CompiledMethod proxies, but I
>> have a problem searching for implementors.
>>
>> So, I have for example CompiledMethodProxy >> mareaUninstall.
>>
>> But when I search for implementors of "mareaUninstall" in the popup of
>> implementors it shows FOUR times, "CompiledMethodProxy >> mareaUninstall"...
>> why ???   it should appear only once..
>>
>> I attach an screenshot. Does anyone know what can be happening?
>>
>> thanks in advance,
>>
>> Mariano
>
>



--
Best regards,
Igor Stasenko AKA sig.