From b71e5c167d53b670ddf34f18753a7f3822880498 Mon Sep 17 00:00:00 2001 From: Fabio Niephaus Date: Sat, 13 Mar 2021 12:13:38 +0100 Subject: [PATCH] Add CallTargetBrowserRuby for TruffleRuby - Refactor and improve CallTargetBrowser to allow sharing - Update a test --- .../instance/testCallTarget.st | 2 +- .../methodProperties.json | 2 +- .../class/callTargetInfoStringFor..st | 14 +++--- .../{instance => class}/textColorFor.with..st | 0 .../instance/callTargetInfoContents.st | 2 +- .../instance/countsToMessages..st | 8 +++- .../instance/messageList.st | 2 +- .../methodProperties.json | 12 ++--- .../CallTargetBrowserRuby.class/README.md | 0 .../class/callTargetFor.of..st | 5 +++ .../class/methodFor.of..st | 3 ++ .../class/methodGetter.st | 5 +++ .../class/methodList..st | 4 ++ .../class/methodListGetter.st | 5 +++ .../CallTargetBrowserRuby.class/class/open.st | 3 ++ .../instance/autoUpdate.st | 3 ++ .../instance/buildCallTargetPaneWith..st | 8 ++++ .../instance/buildMethodListWith..st | 12 +++++ .../instance/buildModuleListWith..st | 10 +++++ .../instance/buildWith..st | 7 +++ .../instance/callTargetInfo.st | 5 +++ .../instance/countsToMethods..st | 20 +++++++++ .../instance/initialExtent.st | 3 ++ .../instance/inspectCallTarget.st | 3 ++ .../instance/labelString.st | 7 +++ .../instance/methodIconAt..st | 3 ++ .../instance/methodList.st | 16 +++++++ .../instance/methodListIndex..st | 3 ++ .../instance/methodListIndex.st | 3 ++ .../instance/methodListMenu..st | 14 ++++++ .../instance/moduleList.st | 4 ++ .../instance/moduleListIndex..st | 3 ++ .../instance/moduleListIndex.st | 3 ++ .../instance/open.st | 3 ++ .../instance/selectedCallTarget.st | 8 ++++ .../instance/selectedMethod.st | 8 ++++ .../instance/selectedMethodName..st | 6 +++ .../instance/selectedMethodName.st | 4 ++ .../instance/selectedMethods.st | 5 +++ .../instance/selectedModuleName..st | 8 ++++ .../instance/selectedModuleName.st | 4 ++ .../instance/sortAlphabetically.st | 3 ++ .../instance/sortBy..st | 5 +++ .../instance/sortBy.st | 4 ++ .../instance/sortByCallAndLoopCount.st | 3 ++ .../instance/sortByCallCount.st | 3 ++ .../instance/sortByKnownCallSiteCount.st | 3 ++ .../instance/sortByNonTrivialNodeCount.st | 3 ++ .../instance/stepIn..st | 6 +++ .../instance/toggleAutoUpdate.st | 3 ++ .../instance/wantsStepsIn..st | 3 ++ .../methodProperties.json | 45 +++++++++++++++++++ .../properties.json | 18 ++++++++ 53 files changed, 321 insertions(+), 18 deletions(-) rename src/TruffleSqueak-Utilities.package/CallTargetBrowser.class/{instance => class}/textColorFor.with..st (100%) create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/README.md create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/class/callTargetFor.of..st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/class/methodFor.of..st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/class/methodGetter.st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/class/methodList..st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/class/methodListGetter.st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/class/open.st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/autoUpdate.st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/buildCallTargetPaneWith..st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/buildMethodListWith..st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/buildModuleListWith..st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/buildWith..st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/callTargetInfo.st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/countsToMethods..st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/initialExtent.st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/inspectCallTarget.st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/labelString.st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/methodIconAt..st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/methodList.st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/methodListIndex..st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/methodListIndex.st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/methodListMenu..st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/moduleList.st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/moduleListIndex..st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/moduleListIndex.st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/open.st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/selectedCallTarget.st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/selectedMethod.st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/selectedMethodName..st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/selectedMethodName.st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/selectedMethods.st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/selectedModuleName..st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/selectedModuleName.st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/sortAlphabetically.st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/sortBy..st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/sortBy.st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/sortByCallAndLoopCount.st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/sortByCallCount.st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/sortByKnownCallSiteCount.st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/sortByNonTrivialNodeCount.st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/stepIn..st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/toggleAutoUpdate.st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/wantsStepsIn..st create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/methodProperties.json create mode 100644 src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/properties.json diff --git a/src/TruffleSqueak-Tests.package/TruffleSqueakTest.class/instance/testCallTarget.st b/src/TruffleSqueak-Tests.package/TruffleSqueakTest.class/instance/testCallTarget.st index 5bf38beb0..0ff5b1169 100644 --- a/src/TruffleSqueak-Tests.package/TruffleSqueakTest.class/instance/testCallTarget.st +++ b/src/TruffleSqueak-Tests.package/TruffleSqueakTest.class/instance/testCallTarget.st @@ -10,5 +10,5 @@ testCallTarget self deny: method callTarget isNil. - string := CallTargetBrowser callTargetInfoStringFor: method. + string := CallTargetBrowser callTargetInfoStringFor: method callTarget. self assert: (string includesSubstring: 'knownCallSiteCount') diff --git a/src/TruffleSqueak-Tests.package/TruffleSqueakTest.class/methodProperties.json b/src/TruffleSqueak-Tests.package/TruffleSqueakTest.class/methodProperties.json index e48df57d5..78aa72d06 100644 --- a/src/TruffleSqueak-Tests.package/TruffleSqueakTest.class/methodProperties.json +++ b/src/TruffleSqueak-Tests.package/TruffleSqueakTest.class/methodProperties.json @@ -5,7 +5,7 @@ "assertSorted:name:" : "fn 1/25/2020 15:24", "testAdoptInstanceArrays" : "fn 1/31/2020 10:20", "testArrayStatistics" : "fn 5/13/2020 17:37", - "testCallTarget" : "fn 2/22/2021 19:14", + "testCallTarget" : "fn 3/12/2021 11:08", "testLayoutStatistics" : "fn 5/13/2020 17:37", "testTestMapConsistency" : "fn 3/9/2021 15:59", "testVMIntrospection" : "fn 3/11/2021 12:03" } } diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowser.class/class/callTargetInfoStringFor..st b/src/TruffleSqueak-Utilities.package/CallTargetBrowser.class/class/callTargetInfoStringFor..st index 2737886f1..cdaedee91 100644 --- a/src/TruffleSqueak-Utilities.package/CallTargetBrowser.class/class/callTargetInfoStringFor..st +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowser.class/class/callTargetInfoStringFor..st @@ -1,6 +1,6 @@ helpers -callTargetInfoStringFor: aCompiledMethod - ^ aCompiledMethod callTarget +callTargetInfoStringFor: aCallTarget + ^ aCallTarget ifNil: [ 'no call target available' ] ifNotNil: [ :c | 'name: {1} @@ -24,9 +24,11 @@ included call nodes: ifNil: [ 'all n/a' ] ifNotNil: [ :p | p getTypes ifNil: [ 'all n/a' ] - ifNotNil: [ :t | ((t asCollection allButFirst: 3) collect: [ :ea | ea + ifNotNil: [ :t | (t asCollection collect: [ :ea | ea ifNil: ['n/a'] ifNotNil: [ ea getSimpleName asString ]]) joinSeparatedBy: ', ' ] ]. - (c getCallNodes asCollection collect: [ :ea | - ea getCurrentCallTarget toString asString]) - joinSeparatedBy: String cr, ' - ' } ] + (c getCallNodes asCollection + ifNotEmpty: [:n | (n collect: [ :ea | + ea getCurrentCallTarget toString asString]) + joinSeparatedBy: String cr, ' - ' ] + ifEmpty: [ 'n/a' ] ) } ] diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowser.class/instance/textColorFor.with..st b/src/TruffleSqueak-Utilities.package/CallTargetBrowser.class/class/textColorFor.with..st similarity index 100% rename from src/TruffleSqueak-Utilities.package/CallTargetBrowser.class/instance/textColorFor.with..st rename to src/TruffleSqueak-Utilities.package/CallTargetBrowser.class/class/textColorFor.with..st diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowser.class/instance/callTargetInfoContents.st b/src/TruffleSqueak-Utilities.package/CallTargetBrowser.class/instance/callTargetInfoContents.st index ed3c9f726..a4e5e0c23 100644 --- a/src/TruffleSqueak-Utilities.package/CallTargetBrowser.class/instance/callTargetInfoContents.st +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowser.class/instance/callTargetInfoContents.st @@ -2,5 +2,5 @@ message list callTargetInfoContents ^ contents := self selectedClassOrMetaClass methodDict at: self selectedMessageName - ifPresent: [ :cm | self class callTargetInfoStringFor: cm ] + ifPresent: [ :cm | self class callTargetInfoStringFor: cm callTarget ] ifAbsent: [ 'not found' ] diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowser.class/instance/countsToMessages..st b/src/TruffleSqueak-Utilities.package/CallTargetBrowser.class/instance/countsToMessages..st index 835eb35a8..0eb60ac56 100644 --- a/src/TruffleSqueak-Utilities.package/CallTargetBrowser.class/instance/countsToMessages..st +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowser.class/instance/countsToMessages..st @@ -7,8 +7,12 @@ countsToMessages: aMessageList result at: (callTarget ifNil: [-1] ifNotNil: [ :c | self sortBy caseOf: { - [#callCount] -> [ c getCallCount ln ]. - [#callAndLoopCount] -> [ c getCallAndLoopCount ln ]. + [#callCount] -> [ | v | + v := c getCallCount. + v > 0 ifTrue: [ v ln ] ifFalse: [ v ] ]. + [#callAndLoopCount] -> [ | v | + v := c getCallAndLoopCount. + v > 0 ifTrue: [ v ln ] ifFalse: [ v ] ]. [#knownCallSiteCount] -> [ c getKnownCallSiteCount ]. [#nonTrivialNodeCount] -> [ c getNonTrivialNodeCount ] } ] ) ifPresent: [ :v | v add: ea ] diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowser.class/instance/messageList.st b/src/TruffleSqueak-Utilities.package/CallTargetBrowser.class/instance/messageList.st index 0b6f5b353..212738bf8 100644 --- a/src/TruffleSqueak-Utilities.package/CallTargetBrowser.class/instance/messageList.st +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowser.class/instance/messageList.st @@ -11,6 +11,6 @@ messageList sortedCounts do: [ :count | result addAll: ((countsToMessages at: count) collect: [ :ea | ea asText - addAttribute: (self textColorFor: count with: highestCount) + addAttribute: (self class textColorFor: count with: highestCount) yourself])]. ^ result \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowser.class/methodProperties.json b/src/TruffleSqueak-Utilities.package/CallTargetBrowser.class/methodProperties.json index c1ec7bbab..ec229033f 100644 --- a/src/TruffleSqueak-Utilities.package/CallTargetBrowser.class/methodProperties.json +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowser.class/methodProperties.json @@ -1,17 +1,18 @@ { "class" : { - "callTargetInfoStringFor:" : "fn 2/27/2021 17:28", + "callTargetInfoStringFor:" : "fn 3/12/2021 14:05", "showClassIcons" : "fn 2/16/2021 22:17", - "showMessageIcons" : "fn 2/16/2021 22:17" }, + "showMessageIcons" : "fn 2/16/2021 22:17", + "textColorFor:with:" : "fn 3/12/2021 11:14" }, "instance" : { - "callTargetInfoContents" : "fn 2/18/2021 10:12", + "callTargetInfoContents" : "fn 3/12/2021 11:08", "contentsSymbolQuints" : "fn 2/17/2021 12:00", - "countsToMessages:" : "fn 2/17/2021 14:33", + "countsToMessages:" : "fn 3/12/2021 11:48", "defaultBrowserTitle" : "fn 2/16/2021 16:54", "formattedLabel:forSelector:inClass:" : "fn 2/16/2021 22:10", "inspectCallTarget" : "fn 2/17/2021 14:50", "mainMessageListMenu:" : "fn 2/17/2021 14:51", - "messageList" : "fn 2/16/2021 22:13", + "messageList" : "fn 3/12/2021 11:14", "selectedMessage" : "fn 2/17/2021 12:26", "showCallTargetInfo:" : "fn 2/17/2021 12:28", "showingCallTargetInfo" : "fn 2/17/2021 12:01", @@ -23,6 +24,5 @@ "sortByCallCount" : "fn 2/16/2021 17:30", "sortByKnownCallSiteCount" : "fn 2/16/2021 17:39", "sortByNonTrivialNodeCount" : "fn 2/16/2021 17:39", - "textColorFor:with:" : "fn 2/17/2021 11:08", "toggleCallTargetInfo" : "fn 2/17/2021 12:28", "updateListsAndCodeIn:" : "fn 2/21/2021 15:59" } } diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/README.md b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/README.md new file mode 100644 index 000000000..e69de29bb diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/class/callTargetFor.of..st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/class/callTargetFor.of..st new file mode 100644 index 000000000..8ebd18797 --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/class/callTargetFor.of..st @@ -0,0 +1,5 @@ +helpers +callTargetFor: aMethodName of: aModuleName + ^ (TruffleSqueakUtilities primitiveGetVMObject: ( + self methodFor: aMethodName of: aModuleName)) + method callTarget \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/class/methodFor.of..st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/class/methodFor.of..st new file mode 100644 index 000000000..0735ee69a --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/class/methodFor.of..st @@ -0,0 +1,3 @@ +helpers +methodFor: aMethodName of: aModuleName + ^ self methodGetter value: aModuleName value: aMethodName \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/class/methodGetter.st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/class/methodGetter.st new file mode 100644 index 000000000..ea5c52783 --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/class/methodGetter.st @@ -0,0 +1,5 @@ +helpers +methodGetter + "MethodGetter := nil" + ^ MethodGetter ifNil: [ MethodGetter := Polyglot eval: 'ruby' string: + 'Proc.new{|mod_name,meth_name| m1 = Object.const_get(mod_name); m2 = meth_name.to_s.to_sym; if m1.methods(false).include?(m2);m1.method(m2);else;m1.instance_method(m2);end}' ] \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/class/methodList..st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/class/methodList..st new file mode 100644 index 000000000..dd00acf5f --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/class/methodList..st @@ -0,0 +1,4 @@ +helpers +methodList: aModuleName + ^ ((self methodListGetter value: aModuleName) asCollection + collect: [:ea | ea asString]) sorted \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/class/methodListGetter.st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/class/methodListGetter.st new file mode 100644 index 000000000..2d7b73380 --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/class/methodListGetter.st @@ -0,0 +1,5 @@ +helpers +methodListGetter + "MethodListGetter := nil" + ^ MethodListGetter ifNil: [ MethodListGetter := Polyglot eval: 'ruby' string: + 'Proc.new{|mod_name| m = Object.const_get(mod_name); m.methods(false).concat(m.instance_methods(false))}' ] \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/class/open.st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/class/open.st new file mode 100644 index 000000000..081435e5f --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/class/open.st @@ -0,0 +1,3 @@ +opening +open + self new open \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/autoUpdate.st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/autoUpdate.st new file mode 100644 index 000000000..13daa681b --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/autoUpdate.st @@ -0,0 +1,3 @@ +accessing +autoUpdate + ^ autoUpdate ifNil: [ autoUpdate := true ] \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/buildCallTargetPaneWith..st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/buildCallTargetPaneWith..st new file mode 100644 index 000000000..33a25add3 --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/buildCallTargetPaneWith..st @@ -0,0 +1,8 @@ +toolbuilder +buildCallTargetPaneWith: builder + | textSpec | + textSpec := builder pluggableTextSpec new. + textSpec + model: self; + getText: #callTargetInfo. + ^ textSpec \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/buildMethodListWith..st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/buildMethodListWith..st new file mode 100644 index 000000000..850435aed --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/buildMethodListWith..st @@ -0,0 +1,12 @@ +toolbuilder +buildMethodListWith: builder + | listSpec | + listSpec := builder pluggableListSpec new. + listSpec + model: self; + list: #methodList; + getIndex: #methodListIndex; + setIndex: #methodListIndex:; + icon: #methodIconAt:; + menu: #methodListMenu:. + ^ listSpec diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/buildModuleListWith..st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/buildModuleListWith..st new file mode 100644 index 000000000..0b0152f49 --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/buildModuleListWith..st @@ -0,0 +1,10 @@ +toolbuilder +buildModuleListWith: builder + | listSpec | + listSpec := builder pluggableListSpec new. + listSpec + model: self; + list: #moduleList; + getIndex: #moduleListIndex; + setIndex: #moduleListIndex:. + ^ listSpec \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/buildWith..st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/buildWith..st new file mode 100644 index 000000000..cf45bf60b --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/buildWith..st @@ -0,0 +1,7 @@ +toolbuilder +buildWith: builder + ^ builder build: (self buildWindowWith: builder specs: { + (0@0 corner: 0.25@1) -> [self buildModuleListWith: builder]. + (0.25@0 corner: 0.5@1) -> [self buildMethodListWith: builder]. + (0.5@0 corner: 1@1) -> [self buildCallTargetPaneWith: builder]. + }) \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/callTargetInfo.st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/callTargetInfo.st new file mode 100644 index 000000000..82776c61d --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/callTargetInfo.st @@ -0,0 +1,5 @@ +call targets +callTargetInfo + ^ self selectedCallTarget + ifNotNil: [ :c | CallTargetBrowser callTargetInfoStringFor: c ] + ifNil: [ 'no call target available' ] \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/countsToMethods..st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/countsToMethods..st new file mode 100644 index 000000000..7d3156eda --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/countsToMethods..st @@ -0,0 +1,20 @@ +methods +countsToMethods: aMethodList + | result | + result := Dictionary new. + aMethodList do: [ :ea | | callTarget | + callTarget := (self class callTargetFor: ea of: self selectedModuleName). + result + at: (callTarget ifNil: [-1] ifNotNil: [ :c | + self sortBy caseOf: { + [#callCount] -> [ | v | + v := c getCallCount. + v > 0 ifTrue: [ v ln ] ifFalse: [ v ] ]. + [#callAndLoopCount] -> [ | v | + v := c getCallAndLoopCount. + v > 0 ifTrue: [ v ln ] ifFalse: [ v ] ]. + [#knownCallSiteCount] -> [ c getKnownCallSiteCount ]. + [#nonTrivialNodeCount] -> [ c getNonTrivialNodeCount ] } ] ) + ifPresent: [ :v | v add: ea asString ] + ifAbsentPut: [ OrderedCollection with: ea ] ]. + ^ result \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/initialExtent.st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/initialExtent.st new file mode 100644 index 000000000..667bcd6a2 --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/initialExtent.st @@ -0,0 +1,3 @@ +overrides +initialExtent + ^ 800 @ 400 \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/inspectCallTarget.st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/inspectCallTarget.st new file mode 100644 index 000000000..379a58988 --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/inspectCallTarget.st @@ -0,0 +1,3 @@ +call targets +inspectCallTarget + self selectedCallTarget inspect \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/labelString.st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/labelString.st new file mode 100644 index 000000000..c5531d40a --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/labelString.st @@ -0,0 +1,7 @@ +toolbuilder +labelString + | label | + label := 'CallTargetBrowser for TruffleRuby'. + self selectedModuleName + ifNotNil: [ :name | label := label, ': ', name ]. + ^ label \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/methodIconAt..st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/methodIconAt..st new file mode 100644 index 000000000..dd8346d35 --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/methodIconAt..st @@ -0,0 +1,3 @@ +methods +methodIconAt: anIndex + ^ nil \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/methodList.st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/methodList.st new file mode 100644 index 000000000..925d6daca --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/methodList.st @@ -0,0 +1,16 @@ +methods +methodList + | methods countsToMessages sortedCounts highestCount result | + methods := self selectedMethods. + (self sortBy == #alphabetically or: [ methods isEmpty]) + ifTrue: [ ^ methods ]. + countsToMessages := self countsToMethods: methods. + result := OrderedCollection new. + sortedCounts := countsToMessages keysInOrder reversed. + highestCount := sortedCounts first max: 1. + sortedCounts do: [ :count | + result addAll: ((countsToMessages at: count) collect: [ :ea | + ea asText + addAttribute: (CallTargetBrowser textColorFor: count with: highestCount) + yourself])]. + ^ result \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/methodListIndex..st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/methodListIndex..st new file mode 100644 index 000000000..e6b2110fd --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/methodListIndex..st @@ -0,0 +1,3 @@ +methods +methodListIndex: anInteger + self selectedMethodName: (self methodList at: anInteger ifPresent: [ :t | t asString ] ifAbsent: [ nil ]) \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/methodListIndex.st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/methodListIndex.st new file mode 100644 index 000000000..3c1ef5e9a --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/methodListIndex.st @@ -0,0 +1,3 @@ +methods +methodListIndex + ^ self methodList indexOf: self selectedMethodName \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/methodListMenu..st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/methodListMenu..st new file mode 100644 index 000000000..c5bf6e504 --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/methodListMenu..st @@ -0,0 +1,14 @@ +methods +methodListMenu: aMenu + ^ aMenu + add: 'inspect method' action: #inspectMethod; + add: 'inspect call target' action: #inspectCallTarget; + addLine; + add: ('toggle auto-update ', (self autoUpdate ifTrue: [ '(on)' ] ifFalse: [ '(off)' ])) action: #toggleAutoUpdate; + addLine; + add: 'sort alphabetically' action: #sortAlphabetically; + add: 'sort by call and loop count (default)' action: #sortByCallAndLoopCount; + add: 'sort by call count' action: #sortByCallCount; + add: 'sort by known call site count' action: #sortByKnownCallSiteCount; + add: 'sort by non-trivial node count' action: #sortByNonTrivialNodeCount; + yourself \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/moduleList.st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/moduleList.st new file mode 100644 index 000000000..8aa36500f --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/moduleList.st @@ -0,0 +1,4 @@ +modules +moduleList + ^ ((Polyglot eval: 'ruby' string: 'Object.constants') + asCollection collect: [ :ea | ea asString ]) sorted \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/moduleListIndex..st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/moduleListIndex..st new file mode 100644 index 000000000..c61d71973 --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/moduleListIndex..st @@ -0,0 +1,3 @@ +modules +moduleListIndex: anInteger + self selectedModuleName: (self moduleList at: anInteger ifAbsent: [ nil ]) \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/moduleListIndex.st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/moduleListIndex.st new file mode 100644 index 000000000..b0f67d23b --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/moduleListIndex.st @@ -0,0 +1,3 @@ +modules +moduleListIndex + ^ self moduleList indexOf: self selectedModuleName \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/open.st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/open.st new file mode 100644 index 000000000..b9f1a5362 --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/open.st @@ -0,0 +1,3 @@ +initialize-release +open + ^ ToolBuilder open: self \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/selectedCallTarget.st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/selectedCallTarget.st new file mode 100644 index 000000000..84f403fb3 --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/selectedCallTarget.st @@ -0,0 +1,8 @@ +call targets +selectedCallTarget + ^ self selectedModuleName + ifNil: [ nil ] + ifNotNil: [ :moduleName | + self selectedMethodName + ifNil: [ nil ] + ifNotNil: [ :methodName | self class callTargetFor: methodName of: moduleName] ] \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/selectedMethod.st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/selectedMethod.st new file mode 100644 index 000000000..d4e93780d --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/selectedMethod.st @@ -0,0 +1,8 @@ +methods +selectedMethod + ^ self selectedModuleName + ifNil: [ nil ] + ifNotNil: [ :moduleName | + self selectedMethodName + ifNil: [ nil ] + ifNotNil: [ :methodName | self class methodFor: methodName of: moduleName] ] \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/selectedMethodName..st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/selectedMethodName..st new file mode 100644 index 000000000..adf247c3f --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/selectedMethodName..st @@ -0,0 +1,6 @@ +accessing +selectedMethodName: anObject + + selectedMethodName := anObject. + self changed: #methodListIndex. + self changed: #callTargetInfo. \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/selectedMethodName.st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/selectedMethodName.st new file mode 100644 index 000000000..ff1f5851c --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/selectedMethodName.st @@ -0,0 +1,4 @@ +accessing +selectedMethodName + + ^ selectedMethodName \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/selectedMethods.st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/selectedMethods.st new file mode 100644 index 000000000..bcec82d1e --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/selectedMethods.st @@ -0,0 +1,5 @@ +methods +selectedMethods + ^ self selectedModuleName + ifNotNil: [ :name | self class methodList: name ] + ifNil: [ #() ] \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/selectedModuleName..st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/selectedModuleName..st new file mode 100644 index 000000000..3ee939968 --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/selectedModuleName..st @@ -0,0 +1,8 @@ +accessing +selectedModuleName: anObject + + selectedModuleName := anObject. + selectedMethodName := nil. + self changed: #moduleListIndex. + self changed: #methodList. + self changed: #relabel. \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/selectedModuleName.st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/selectedModuleName.st new file mode 100644 index 000000000..f37630d8e --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/selectedModuleName.st @@ -0,0 +1,4 @@ +accessing +selectedModuleName + + ^ selectedModuleName \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/sortAlphabetically.st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/sortAlphabetically.st new file mode 100644 index 000000000..c3ec4ffce --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/sortAlphabetically.st @@ -0,0 +1,3 @@ +sorting +sortAlphabetically + self sortBy: #alphabetically \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/sortBy..st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/sortBy..st new file mode 100644 index 000000000..0f783638a --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/sortBy..st @@ -0,0 +1,5 @@ +sorting +sortBy: anObject + + sortBy := anObject. + self changed: #methodList \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/sortBy.st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/sortBy.st new file mode 100644 index 000000000..a757d5af3 --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/sortBy.st @@ -0,0 +1,4 @@ +sorting +sortBy + + ^ sortBy ifNil: [ sortBy := #callAndLoopCount ] \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/sortByCallAndLoopCount.st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/sortByCallAndLoopCount.st new file mode 100644 index 000000000..89ea16b4a --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/sortByCallAndLoopCount.st @@ -0,0 +1,3 @@ +sorting +sortByCallAndLoopCount + self sortBy: #callAndLoopCount \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/sortByCallCount.st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/sortByCallCount.st new file mode 100644 index 000000000..408c373dc --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/sortByCallCount.st @@ -0,0 +1,3 @@ +sorting +sortByCallCount + self sortBy: #callCount \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/sortByKnownCallSiteCount.st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/sortByKnownCallSiteCount.st new file mode 100644 index 000000000..78abdde4f --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/sortByKnownCallSiteCount.st @@ -0,0 +1,3 @@ +sorting +sortByKnownCallSiteCount + self sortBy: #knownCallSiteCount \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/sortByNonTrivialNodeCount.st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/sortByNonTrivialNodeCount.st new file mode 100644 index 000000000..6223d5baa --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/sortByNonTrivialNodeCount.st @@ -0,0 +1,3 @@ +sorting +sortByNonTrivialNodeCount + self sortBy: #nonTrivialNodeCount \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/stepIn..st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/stepIn..st new file mode 100644 index 000000000..dbc647027 --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/stepIn..st @@ -0,0 +1,6 @@ +testing +stepIn: aSystemWindow + self selectedModuleName ifNotNil: [ + self changed: #methodList. + self selectedMethodName ifNotNil: [ + self changed: #callTargetInfo ] ] \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/toggleAutoUpdate.st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/toggleAutoUpdate.st new file mode 100644 index 000000000..efdcadfde --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/toggleAutoUpdate.st @@ -0,0 +1,3 @@ +accessing +toggleAutoUpdate + autoUpdate := autoUpdate not \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/wantsStepsIn..st b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/wantsStepsIn..st new file mode 100644 index 000000000..998621808 --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/instance/wantsStepsIn..st @@ -0,0 +1,3 @@ +testing +wantsStepsIn: aWindow + ^ self autoUpdate \ No newline at end of file diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/methodProperties.json b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/methodProperties.json new file mode 100644 index 000000000..70bf9a0cc --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/methodProperties.json @@ -0,0 +1,45 @@ +{ + "class" : { + "callTargetFor:of:" : "fn 3/12/2021 11:40", + "methodFor:of:" : "fn 3/12/2021 11:40", + "methodGetter" : "fn 3/12/2021 13:53", + "methodList:" : "fn 3/12/2021 13:00", + "methodListGetter" : "fn 3/12/2021 13:43", + "open" : "fn 3/12/2021 10:12" }, + "instance" : { + "autoUpdate" : "fn 3/12/2021 11:54", + "buildCallTargetPaneWith:" : "fn 3/12/2021 11:13", + "buildMethodListWith:" : "fn 3/12/2021 11:13", + "buildModuleListWith:" : "fn 3/12/2021 11:13", + "buildWith:" : "fn 3/12/2021 12:54", + "callTargetInfo" : "fn 3/12/2021 11:41", + "countsToMethods:" : "fn 3/12/2021 11:48", + "initialExtent" : "fn 3/12/2021 12:54", + "inspectCallTarget" : "fn 3/12/2021 11:41", + "labelString" : "fn 3/12/2021 11:36", + "methodIconAt:" : "fn 3/12/2021 10:32", + "methodList" : "fn 3/12/2021 13:38", + "methodListIndex" : "fn 3/12/2021 10:34", + "methodListIndex:" : "fn 3/12/2021 11:32", + "methodListMenu:" : "fn 3/12/2021 11:54", + "moduleList" : "fn 3/12/2021 10:59", + "moduleListIndex" : "fn 3/12/2021 10:54", + "moduleListIndex:" : "fn 3/12/2021 10:35", + "open" : "fn 3/12/2021 10:13", + "selectedCallTarget" : "fn 3/12/2021 11:41", + "selectedMethod" : "fn 3/12/2021 11:41", + "selectedMethodName" : "fn 3/12/2021 10:33", + "selectedMethodName:" : "fn 3/12/2021 10:58", + "selectedMethods" : "fn 3/12/2021 11:19", + "selectedModuleName" : "fn 3/12/2021 10:31", + "selectedModuleName:" : "fn 3/12/2021 15:17", + "sortAlphabetically" : "fn 3/12/2021 11:11", + "sortBy" : "fn 3/12/2021 11:11", + "sortBy:" : "fn 3/12/2021 11:52", + "sortByCallAndLoopCount" : "fn 3/12/2021 11:11", + "sortByCallCount" : "fn 3/12/2021 11:11", + "sortByKnownCallSiteCount" : "fn 3/12/2021 11:11", + "sortByNonTrivialNodeCount" : "fn 3/12/2021 11:11", + "stepIn:" : "fn 3/12/2021 11:49", + "toggleAutoUpdate" : "fn 3/12/2021 11:44", + "wantsStepsIn:" : "fn 3/12/2021 11:45" } } diff --git a/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/properties.json b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/properties.json new file mode 100644 index 000000000..d6f44dfe3 --- /dev/null +++ b/src/TruffleSqueak-Utilities.package/CallTargetBrowserRuby.class/properties.json @@ -0,0 +1,18 @@ +{ + "category" : "TruffleSqueak-Utilities", + "classinstvars" : [ + ], + "classvars" : [ + "MethodGetter", + "MethodListGetter" ], + "commentStamp" : "", + "instvars" : [ + "selectedModuleName", + "selectedMethodName", + "sortBy", + "autoUpdate" ], + "name" : "CallTargetBrowserRuby", + "pools" : [ + ], + "super" : "Model", + "type" : "normal" }