diff --git a/packages/Babylonian-Compiler.package/BPCompiler.class/instance/compile.ifFail..st b/packages/Babylonian-Compiler.package/BPCompiler.class/instance/compile.ifFail..st index 5d3452c0..b4d0ee53 100644 --- a/packages/Babylonian-Compiler.package/BPCompiler.class/instance/compile.ifFail..st +++ b/packages/Babylonian-Compiler.package/BPCompiler.class/instance/compile.ifFail..st @@ -1,20 +1,4 @@ public access compile: aCueWithBPSource ifFail: failBlock - "This method expects source code which has annotations embedded in comments, if any." - | originalMethodNode bpSource basicCue | - bpSource := aCueWithBPSource sourceStream contents asString. - basicCue := CompilationCue - source: bpSource readStream - context: aCueWithBPSource context - receiver: aCueWithBPSource receiver - class: aCueWithBPSource getClass - environment: aCueWithBPSource environment - requestor: aCueWithBPSource requestor. - originalMethodNode := super compile: basicCue ifFail: failBlock. - self haltOnce. - bpSource := originalMethodNode sourceText asString. - (self methodSourceRequiresBPLayers: bpSource) ifTrue: [ - (self compileInstrumentedVersionOf: aCueWithBPSource) ifFalse: failBlock]. - - ^ originalMethodNode \ No newline at end of file + ^ self compileCue: aCueWithBPSource noPattern: false ifFail: failBlock \ No newline at end of file diff --git a/packages/Babylonian-Compiler.package/BPCompiler.class/instance/compileCue.noPattern.ifFail..st b/packages/Babylonian-Compiler.package/BPCompiler.class/instance/compileCue.noPattern.ifFail..st new file mode 100644 index 00000000..843b5b71 --- /dev/null +++ b/packages/Babylonian-Compiler.package/BPCompiler.class/instance/compileCue.noPattern.ifFail..st @@ -0,0 +1,24 @@ +public access +compileCue: aCueWithBPSource noPattern: aBoolean ifFail: failBlock + + + "This method expects source code which has annotations embedded in comments, if any." + | originalMethodNode bpSource basicCue | + + aBoolean ifTrue: [self error: 'Cannot use BPCompiler for methods without patterns.']. + + bpSource := aCueWithBPSource sourceStream contents asString. + basicCue := CompilationCue + source: bpSource readStream + context: aCueWithBPSource context + receiver: aCueWithBPSource receiver + class: aCueWithBPSource getClass + environment: aCueWithBPSource environment + requestor: aCueWithBPSource requestor. + originalMethodNode := super compileCue: basicCue noPattern: aBoolean ifFail: failBlock. + + bpSource := originalMethodNode sourceText asString. + (self methodSourceRequiresBPLayers: bpSource) ifTrue: [ + (self compileInstrumentedVersionOf: aCueWithBPSource) ifFalse: failBlock]. + + ^ originalMethodNode \ No newline at end of file diff --git a/packages/Babylonian-Compiler.package/BPCompiler.class/methodProperties.json b/packages/Babylonian-Compiler.package/BPCompiler.class/methodProperties.json index 4edae0ef..cd04a510 100644 --- a/packages/Babylonian-Compiler.package/BPCompiler.class/methodProperties.json +++ b/packages/Babylonian-Compiler.package/BPCompiler.class/methodProperties.json @@ -1,13 +1,14 @@ { "class" : { - "bpInstrumentedLayerName" : "pre 11/25/2020 11:41", - "compilerClass" : "pre 11/25/2020 11:17", + "bpInstrumentedLayerName" : " 1/15/2021 09:22:32", + "compilerClass" : "cmfcmf 10/30/2020 12:39", "exampleTextAnchor" : "pre 11/8/2019 12:05" }, "instance" : { "annotationKeywords" : "pre 11/8/2019 20:29", - "backgroundCompileInstrumentedVersionOf:basedOn:" : "pre 10/12/2020 15:36", - "compile:ifFail:" : "pre 10/12/2020 15:28", - "compileInstrumentedVersionOf:" : "pre 1/11/2021 15:51", + "backgroundCompileInstrumentedVersionOf:basedOn:" : "pre 8/20/2020 15:46", + "compile:ifFail:" : "cmfcmf 10/27/2020 11:15", + "compileCue:noPattern:ifFail:" : "cmfcmf 10/30/2020 12:39", + "compileInstrumentedVersionOf:" : "pre 8/17/2020 08:58", "keywords" : "pre 7/26/2019 14:00", "methodSourceRequiresBPLayers:" : "pre 11/11/2019 15:49", "parse:" : "pre 1/11/2021 15:51", diff --git a/packages/Babylonian-Core.package/BPByteCodeAssociation.class/README.md b/packages/Babylonian-Core.package/BPByteCodeAssociation.class/README.md new file mode 100644 index 00000000..6975a138 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeAssociation.class/README.md @@ -0,0 +1 @@ +I am an association that is considered equal in the context of a literal if my key as well as my value is equal to another instance of myself. diff --git a/packages/Babylonian-Core.package/BPByteCodeAssociation.class/instance/literalEqual..st b/packages/Babylonian-Core.package/BPByteCodeAssociation.class/instance/literalEqual..st new file mode 100644 index 00000000..5eb91660 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeAssociation.class/instance/literalEqual..st @@ -0,0 +1,4 @@ +literals +literalEqual: other + + ^ self class == other class and: [self key == other key] and: [self value == other value] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeAssociation.class/methodProperties.json b/packages/Babylonian-Core.package/BPByteCodeAssociation.class/methodProperties.json new file mode 100644 index 00000000..420503de --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeAssociation.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "literalEqual:" : "cmfcmf 10/22/2020 12:59" } } diff --git a/packages/Babylonian-Core.package/BPByteCodeAssociation.class/properties.json b/packages/Babylonian-Core.package/BPByteCodeAssociation.class/properties.json new file mode 100644 index 00000000..f84c5d57 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeAssociation.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Core-Callgraph-ByteCode", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "cmfcmf 10/20/2020 12:33", + "instvars" : [ + ], + "name" : "BPByteCodeAssociation", + "pools" : [ + ], + "super" : "Association", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/README.md b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/customEvent.data..st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/customEvent.data..st new file mode 100644 index 00000000..637142ae --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/customEvent.data..st @@ -0,0 +1,5 @@ +tracing +customEvent: aSymbol data: anObject + + + self value ifNotNil: [:t | t customEvent: aSymbol data: anObject] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/deactivateDuring..st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/deactivateDuring..st new file mode 100644 index 00000000..176778fa --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/deactivateDuring..st @@ -0,0 +1,4 @@ +process local +deactivateDuring: aBlock + + ^ self value: nil during: aBlock \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/enter.invocation..st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/enter.invocation..st new file mode 100644 index 00000000..e58d6cdc --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/enter.invocation..st @@ -0,0 +1,5 @@ +tracing +enter: aString invocation: aNumber + + + self value ifNotNil: [:t | t enter: aString invocation: aNumber] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/exit.invocation.returns..st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/exit.invocation.returns..st new file mode 100644 index 00000000..68a0753a --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/exit.invocation.returns..st @@ -0,0 +1,5 @@ +tracing +exit: aString invocation: aNumber returns: aBoolean + + + self value ifNotNil: [:t | t exit: aString invocation: aNumber returns: aBoolean] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/swapSenderOf.newSender..st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/swapSenderOf.newSender..st new file mode 100644 index 00000000..24fdea2a --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/swapSenderOf.newSender..st @@ -0,0 +1,5 @@ +tracing +swapSenderOf: context newSender: newSender + + + self value ifNotNil: [:t | self value: nil during: [t swapSenderOf: context newSender: newSender]] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/value.during..st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/value.during..st new file mode 100644 index 00000000..abb4a595 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/value.during..st @@ -0,0 +1,4 @@ +process local +value: anObject during: aBlock + + ^ self value: anObject during: aBlock inProcess: Processor activeProcess \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/value.during.inProcess..st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/value.during.inProcess..st new file mode 100644 index 00000000..29a939d1 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/value.during.inProcess..st @@ -0,0 +1,7 @@ +process local +value: anObject during: aBlock inProcess: aProcess + + | old | + old := aProcess tracer. + aProcess tracer: anObject. + ^ aBlock ensure: [aProcess tracer: old] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/value.st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/value.st new file mode 100644 index 00000000..78bfeba6 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/value.st @@ -0,0 +1,4 @@ +process local +value + + ^ Processor activeProcess tracer \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/blockIdxFromContext..st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/blockIdxFromContext..st new file mode 100644 index 00000000..ac35db90 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/blockIdxFromContext..st @@ -0,0 +1,11 @@ +private +blockIdxFromContext: aContext + + | pc state blockPositions blockIdx | + self assert: aContext isClosureContext. + pc := aContext closure blockCreationPC. + state := BPByteCodeMethodState ofMethod: aContext method. + blockPositions := state nopPositions select: [:each | each first == #beforeBlock] thenCollect: [:each | each second stop + 1]. + blockIdx := blockPositions indexOf: pc. + self assert: blockIdx > 0. + ^ blockIdx + 1 \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/customEvent.data..st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/customEvent.data..st new file mode 100644 index 00000000..0b7d7f24 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/customEvent.data..st @@ -0,0 +1,7 @@ +tracing +customEvent: aSymbol data: anObject + + + events nextPut: #custom. + events nextPut: aSymbol. + events nextPut: anObject \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/enter.invocation..st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/enter.invocation..st new file mode 100644 index 00000000..857a0bdb --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/enter.invocation..st @@ -0,0 +1,10 @@ +tracing +enter: aString invocation: aNumber + + | senderContext | + events nextPut: #enter. + events nextPut: aString. + events nextPut: aNumber. + senderContext := thisContext sender sender sender. + events nextPut: senderContext pc. + events nextPut: senderContext method. \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventStream.st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventStream.st new file mode 100644 index 00000000..91f47809 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventStream.st @@ -0,0 +1,4 @@ +accessing +eventStream + + ^ events readStream \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsForTree.st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsForTree.st new file mode 100644 index 00000000..b73498cf --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsForTree.st @@ -0,0 +1,120 @@ +post processing +eventsForTree + + | callgraph depth depthAfterExit depthMap printContinuesHere eventStream treeCache addToTree prevDepth overwriteDepth executionContinuation senderMethod | + + depth := 0. + depthAfterExit := nil. + + depthMap := Dictionary new. + + callgraph := BPCallgraph new. + treeCache := Dictionary new. + prevDepth := -1. + overwriteDepth := -1. + addToTree := [:entry | | theDepth | + theDepth := overwriteDepth >= 0 ifTrue: [overwriteDepth] ifFalse: [depth]. + theDepth > (prevDepth + 1) ifTrue: [ + "context jumped to the right by more than 1 step, therefore we need to add + new tree nodes (->) to correctly mount the following nodes" + self assert: theDepth - executionContinuation second size >= 0. + + executionContinuation second withIndexDo: [:helper :i | + overwriteDepth := theDepth - 1 - (executionContinuation second size - i). + addToTree value: helper]. + "(theDepth - 1 - executionContinuation second size) to: theDepth - 1 do: [:i | + overwriteDepth := i. + addToTree value: BPCallgraphEntryContextJumpHelper new]." + overwriteDepth := -1]. + + theDepth == 0 + ifTrue: [callgraph addRoot: entry] + ifFalse: [(treeCache at: theDepth - 1) addChild: entry]. + treeCache at: theDepth put: entry. + prevDepth := theDepth]. + + printContinuesHere := [| entry | + addToTree value: executionContinuation first. + executionContinuation := nil]. + + eventStream := self eventStream. + [eventStream atEnd] whileFalse: [| entry | eventStream next caseOf: { + [#enter] -> [ | parts class selector blockIdx invocationCount senderPC | + parts := eventStream next splitBy: ' >> '. + class := parts first. + selector := parts second. + blockIdx := parts third asInteger. + "invocation count of the surrounding method. In other words: 'Id' of the context of this block/method, unique per method" + invocationCount := eventStream next. + senderPC := eventStream next. + senderMethod := eventStream next. + + entry := BPCallgraphEntryEnter new. + entry class: class selector: selector blockIdx: blockIdx invocationCount: invocationCount senderPC: senderPC senderMethod: senderMethod. + addToTree value: entry. + + blockIdx == 1 ifTrue: [depthMap at: {class . selector . invocationCount} put: depth]. + depth := depth + 1]. + [#exit] -> [ | parts class selector blockIdx invocationCount blockReturns | + parts := eventStream next splitBy: ' >> '. + class := parts first. + selector := parts second. + blockIdx := parts third asInteger. + "invocation count of the surrounding method. In other words: 'Id' of the context of this block/method, unique per method" + invocationCount := eventStream next. + blockReturns := eventStream next. + + depth := depth - 1. + self assert: depth >= 0. + + entry := BPCallgraphEntryExit new. + entry class: class selector: selector blockIdx: blockIdx invocationCount: invocationCount returns: blockReturns. + addToTree value: entry. + + blockReturns ifTrue: [| oldDepth | + oldDepth := depthMap removeKey: {class . selector . invocationCount}. + blockIdx > 1 ifTrue: [depth := oldDepth]]. + + depthAfterExit ifNotNil: [ + depth := depthAfterExit. + depthAfterExit := nil. + printContinuesHere value]]. + [#contextSenderChanged] -> [ | depthDelta inChainOrNumMoveRight inChain hasActiveTracing executionContinuationEntry | + depthDelta := eventStream next. + inChainOrNumMoveRight := eventStream next. + inChain := inChainOrNumMoveRight == true. + hasActiveTracing := eventStream next. + + "ignore events when depth didn't change and method that causes the change does not have active tracing." + (depthDelta ~= 0 or: hasActiveTracing) ifTrue: [ + hasActiveTracing + ifTrue: [ + depthAfterExit := depth + depthDelta. + "depth := depth + 1"] + ifFalse: [depth := depth + depthDelta]. + self assert: depth >= 0. + + executionContinuationEntry := BPCallgraphEntryContextExecutionContinuation new. + executionContinuation := {executionContinuationEntry . inChainOrNumMoveRight}. + entry := BPCallgraphEntryContextSenderChanged new. + entry + depthDelta: depthDelta + inChain: inChain + hasActiveTracing: hasActiveTracing + executionContinuationEntry: executionContinuationEntry. + addToTree value: entry. + + hasActiveTracing ifFalse: [printContinuesHere value]]]. + [#custom] -> [| type data | + type := eventStream next. + data := eventStream next. + + entry := (type caseOf: { + [#bpProbeHit] -> [BPCallgraphEntryBPProbe]. + [#bpAssertionHit] -> [BPCallgraphEntryBPAssertion]. + [#bpExample] -> [BPCallgraphEntryBPExample]}otherwise: [BPCallgraphEntryCustomEvent]) new. + entry type: type data: data. + addToTree value: entry] + }]. + + ^ callgraph \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsToString.st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsToString.st new file mode 100644 index 00000000..dd6c2b3b --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsToString.st @@ -0,0 +1,128 @@ +post processing +eventsToString + + + ^ String streamContents: [:stringStream | | senderMethod senderPC depth depthAfterExit depthMap printContinuesHere eventStream | + depth := 0. + depthAfterExit := nil. + + depthMap := Dictionary new. + + printContinuesHere := [ + 1 to: depth do: [:i | stringStream tab]. + stringStream nextPutAll: '|> CONTINUING HERE'; cr]. + + eventStream := self eventStream. + + stringStream cr. + + [eventStream atEnd] whileFalse: [eventStream next caseOf: { + [#enter] -> [ | parts class selector blockIdx invocationCount | + 1 to: depth do: [:i | stringStream tab]. + + parts := eventStream next splitBy: ' >> '. + class := parts first. + selector := parts second. + blockIdx := parts third asInteger. + "invocation count of the surrounding method. In other words: 'Id' of the context of this block/method, unique per method" + invocationCount := eventStream next. + senderPC := eventStream next. + senderMethod := eventStream next. + + stringStream + nextPutAll: class; + nextPutAll: ' >> '; + nextPutAll: selector. + + blockIdx == 1 + ifTrue: [ depthMap at: {class . selector . invocationCount} put: depth] + ifFalse: [ + stringStream + nextPutAll: ' ['; + nextPutAll: (blockIdx - 1) asString; + nextPut: $]]. + + stringStream + nextPutAll: ' ctx: '; + nextPutAll: invocationCount asString; + cr. + depth := depth + 1]. + [#exit] -> [ | parts class selector blockIdx invocationCount blockReturns | + parts := eventStream next splitBy: ' >> '. + class := parts first. + selector := parts second. + blockIdx := parts third asInteger. + "invocation count of the surrounding method. In other words: 'Id' of the context of this block/method, unique per method" + invocationCount := eventStream next. + blockReturns := eventStream next. + + depth := depth - 1. + + self assert: depth >= 0. + 1 to: depth do: [:i | stringStream tab]. + + blockReturns + ifTrue: [stringStream nextPutAll: '^ '] + ifFalse: [stringStream nextPutAll: '_ ']. + + stringStream + nextPutAll: class; + nextPutAll: ' >> '; + nextPutAll: selector. + + blockIdx > 1 ifTrue: [ + stringStream + nextPutAll: ' ['; + nextPutAll: (blockIdx - 1) asString; + nextPut: $]]. + + stringStream + nextPutAll: ' ctx: '; + nextPutAll: invocationCount asString; "invocation count of the surrounding method. In other words: 'Id' of the context of this block/method, unique per method" + cr. + + blockReturns ifTrue: [| oldDepth | + oldDepth := depthMap removeKey: {class . selector . invocationCount}. + blockIdx > 1 ifTrue: [depth := oldDepth]]. + + depthAfterExit ifNotNil: [ + depth := depthAfterExit. + depthAfterExit := nil. + printContinuesHere value] + + "1 to: depth do: [:i | aStream space]. + aStream nextPutAll: data; cr"]. + [#contextSenderChanged] -> [ | depthDelta inChain inChainOrNumMoveRight hasActiveTracing | + depthDelta := eventStream next. + inChainOrNumMoveRight := eventStream next. + inChain := inChainOrNumMoveRight == true. + hasActiveTracing := eventStream next. + + "ignore events when depth didn't change and method that causes the change does not have active tracing." + (depthDelta ~= 0 or: hasActiveTracing) ifTrue: [ + 1 to: depth do: [:i | stringStream tab]. + stringStream nextPutAll: '--------- CONTEXT SENDER CHANGED'. + inChain ifFalse: [stringStream nextPutAll: ' (NOT IN CHAIN)']. + stringStream nextPutAll: ' ---------'; cr. + + hasActiveTracing + ifTrue: [ + depthAfterExit := depth + depthDelta. + "depth := depth + 1"] + ifFalse: [depth := depth + depthDelta]. + self assert: depth >= 0. + + + hasActiveTracing ifFalse: [printContinuesHere value]]]. + [#custom] -> [| type data | + type := eventStream next. + data := eventStream next. + stringStream + nextPutAll: '>>> Custom Event: '; + nextPutAll: type; + nextPutAll: ' <<<'; + cr; + nextPutAll: (data printStringLimitedTo: 1000); + cr] + }]. + stringStream flush] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsToStringForTest.st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsToStringForTest.st new file mode 100644 index 00000000..287a98b3 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsToStringForTest.st @@ -0,0 +1,4 @@ +private +eventsToStringForTest + + ^ self eventsToString \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/exit.invocation.returns..st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/exit.invocation.returns..st new file mode 100644 index 00000000..56daa866 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/exit.invocation.returns..st @@ -0,0 +1,8 @@ +tracing +exit: aString invocation: aNumber returns: aBoolean + + events + nextPut: #exit; + nextPut: aString; + nextPut: aNumber; + nextPut: aBoolean. \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/initialize.st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/initialize.st new file mode 100644 index 00000000..9d7c48cc --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/initialize.st @@ -0,0 +1,8 @@ +initialize-release +initialize + + "BPByteCodeCallgraphTracer initialize" + + super initialize. + + self reset \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/instrumentedAncestorAndDepthOf.and..st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/instrumentedAncestorAndDepthOf.and..st new file mode 100644 index 00000000..d4b17090 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/instrumentedAncestorAndDepthOf.and..st @@ -0,0 +1,36 @@ +private +instrumentedAncestorAndDepthOf: aContext and: newSenderContext + + " + I calculate two things: + 1. The difference of the depths of the stacks of aContext and anotherContext, ignoring all non-instrumented stack frames (contexts). + The following code would have the same effect: + depthOld := self instrumentedDepthOf: aContext below: nil. + depthNew := self instrumentedDepthOf: anotherContext below: nil. + depth := depthNew - depthOld. + However, that code needs to traverse the entire stacks of both aContext and anotherContext. + In this method, we traverse both stacks iteratively, so that we can return earlier + and don't necessarily need to traverse both stacks in full. + + 2. + " + + | oldStack newStack numSharedStackFrames diff | + oldStack := self stackWithActiveTracingOf: aContext. + newStack := self stackWithActiveTracingOf: newSenderContext. + + "remove the stack frame that called swapSender:, since our calculation only cares about the stack after it returns" + "(BPByteCodeRewriter hasActiveTracing: aContext method) ifTrue: [oldStack := oldStack allButLast]." + + numSharedStackFrames := self numEqualElementsOf: oldStack and: newStack. + + diff := newStack size - oldStack size. + diff <= 0 + ifTrue: ["jump left" + self halt. + self flag: #todo. "This should probably also return context jump helpers" + ^ {nil "unused" . diff}] + ifFalse: ["jump right" + ^ { + newStack collect: [:each | self jumpHelperFor: each] from: numSharedStackFrames + 1 to: newStack size . + diff}] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/instrumentedDepthOf.below..st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/instrumentedDepthOf.below..st new file mode 100644 index 00000000..29622f11 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/instrumentedDepthOf.below..st @@ -0,0 +1,12 @@ +private +instrumentedDepthOf: aContext below: ancestor + + "Based on Context >> #depthBelow:" + + | child depth | + child := aContext. + depth := 0. + [child == ancestor or: [child == nil]] whileFalse: [ + (BPByteCodeRewriter hasActiveTracing: child method) ifTrue: [depth := depth + 1]. + child := child sender]. + ^depth \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/jumpHelperFor..st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/jumpHelperFor..st new file mode 100644 index 00000000..be78a65a --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/jumpHelperFor..st @@ -0,0 +1,11 @@ +private +jumpHelperFor: aContext + + | helper | + helper := BPCallgraphEntryReenter new. + helper + class: aContext methodClass asString + selector: aContext selector + blockIdx: (aContext isClosureContext ifTrue: [self blockIdxFromContext: aContext] ifFalse: [1]) + invocationCount: aContext invocationCount. + ^ helper \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/numEqualElementsOf.and..st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/numEqualElementsOf.and..st new file mode 100644 index 00000000..9872dea6 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/numEqualElementsOf.and..st @@ -0,0 +1,7 @@ +private +numEqualElementsOf: a and: b + + | size | + size := a size min: b size. + 1 to: size do: [:index | (a at: index) = (b at: index) ifFalse: [^ index - 1]]. + ^ size \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/reset.st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/reset.st new file mode 100644 index 00000000..458316df --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/reset.st @@ -0,0 +1,14 @@ +initialize-release +reset + + depth := 0. + + "Streams are faster than OrderedCollections: + + c := (OrderedCollection new: 400000000). + w := (Array new: 400000000) writeStream. + [c addLast: 42] vs: [w nextPut: 42] ' + 54,700,000 per second. 18.3 nanoseconds per run. 0 % GC time. + vs. 76,200,000 per second. 13.1 nanoseconds per run. 0 % GC time.'" + events := Array new writeStream. + self flag: #todo. "Use Array new: XXX with a sensible default size" \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/stackWithActiveTracingOf..st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/stackWithActiveTracingOf..st new file mode 100644 index 00000000..44c267dc --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/stackWithActiveTracingOf..st @@ -0,0 +1,10 @@ +private +stackWithActiveTracingOf: aContext + + | ctx stack | + ctx := aContext. + stack := OrderedCollection new. + [ctx notNil] whileTrue: [ + (BPByteCodeRewriter hasActiveTracing: ctx method) ifTrue: [stack addFirst: ctx]. + ctx := ctx sender]. + ^ stack \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/swapSenderOf.newSender..st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/swapSenderOf.newSender..st new file mode 100644 index 00000000..2fd7cb00 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/swapSenderOf.newSender..st @@ -0,0 +1,43 @@ +tracing +swapSenderOf: context newSender: newSenderContext + + | upwards downwards hasActiveTracing | + "only care about swapping sender of contexts that are currently in the stack." + ("thisContext hasSender: context"thisContext sender sender sender sender sender sender sender sender sender == context) ifFalse: [^ self]. + + hasActiveTracing := BPByteCodeRewriter hasActiveTracing: context method. + + upwards := context hasSender: newSenderContext. + upwards ifTrue: [| depth | + depth := self instrumentedDepthOf: context below: newSenderContext. + events nextPut: #contextSenderChanged. + events nextPut: -1 * depth. + events nextPut: true. "in-stack" + events nextPut: hasActiveTracing. + ^ self]. + + downwards := newSenderContext hasSender: context. + downwards ifTrue: [| depth | + depth := self instrumentedDepthOf: newSenderContext below: context. + events nextPut: #contextSenderChanged. + events nextPut: depth. + events nextPut: true. "in-stack" + events nextPut: hasActiveTracing. + ^ self]. + + [| depthOld depthNew tmp depth | + "old code - left in here for now to be able to sanity check the calculated depth" + depthOld := self instrumentedDepthOf: context below: nil. + depthNew := self instrumentedDepthOf: newSenderContext below: nil. + depth := depthNew - depthOld. + + "new code" + tmp := self instrumentedAncestorAndDepthOf: context and: newSenderContext. + self assert: depth == tmp second. + self assert: (depth <= 0 or: [tmp first notNil]). + + events nextPut: #contextSenderChanged. + events nextPut: tmp second. "depth" + events nextPut: tmp first. "num of context-moving-right entries to be generated (not in-stack)" + events nextPut: hasActiveTracing. + ^ self] value \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json new file mode 100644 index 00000000..a97624bc --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json @@ -0,0 +1,27 @@ +{ + "class" : { + "customEvent:data:" : "cmfcmf 12/31/2020 19:11", + "deactivateDuring:" : "pre 1/22/2021 11:22", + "enter:invocation:" : "cmfcmf 12/31/2020 19:11", + "exit:invocation:returns:" : "cmfcmf 12/31/2020 19:11", + "swapSenderOf:newSender:" : "cmfcmf 12/31/2020 19:11", + "value" : "cmfcmf 12/7/2020 21:10", + "value:during:" : "cmfcmf 12/7/2020 21:12", + "value:during:inProcess:" : "cmfcmf 12/7/2020 21:07" }, + "instance" : { + "blockIdxFromContext:" : "cmfcmf 1/4/2021 12:37", + "customEvent:data:" : "cmfcmf 10/23/2020 14:56", + "enter:invocation:" : "pre 2/22/2021 18:20", + "eventStream" : "cmfcmf 10/20/2020 13:49", + "eventsForTree" : "pre 1/20/2021 17:46", + "eventsToString" : "pre 1/20/2021 17:47", + "eventsToStringForTest" : "cmfcmf 10/7/2020 14:07", + "exit:invocation:returns:" : "pre 2/22/2021 17:45", + "initialize" : "cmfcmf 12/5/2020 14:15", + "instrumentedAncestorAndDepthOf:and:" : "cmfcmf 1/4/2021 13:11", + "instrumentedDepthOf:below:" : "cmfcmf 10/7/2020 16:19", + "jumpHelperFor:" : "cmfcmf 1/14/2021 21:47", + "numEqualElementsOf:and:" : "cmfcmf 1/4/2021 13:00", + "reset" : "cmfcmf 12/5/2020 14:15", + "stackWithActiveTracingOf:" : "cmfcmf 1/4/2021 12:51", + "swapSenderOf:newSender:" : "cmfcmf 1/4/2021 12:07" } } diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/properties.json b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/properties.json new file mode 100644 index 00000000..cbb3468b --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Babylonian-Core-Callgraph-ByteCode", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "depth", + "events" ], + "name" : "BPByteCodeCallgraphTracer", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPByteCodeMethodState.class/README.md b/packages/Babylonian-Core.package/BPByteCodeMethodState.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPByteCodeMethodState.class/class/ofMethod..st b/packages/Babylonian-Core.package/BPByteCodeMethodState.class/class/ofMethod..st new file mode 100644 index 00000000..ea44ce75 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeMethodState.class/class/ofMethod..st @@ -0,0 +1,4 @@ +as yet unclassified +ofMethod: aCompiledMethod + + ^ aCompiledMethod propertyValueAt: #bpByteCodeMethodState ifAbsent: [nil] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeMethodState.class/instance/initialize.st b/packages/Babylonian-Core.package/BPByteCodeMethodState.class/instance/initialize.st new file mode 100644 index 00000000..2dcd7984 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeMethodState.class/instance/initialize.st @@ -0,0 +1,6 @@ +as yet unclassified +initialize + + super initialize. + state := #inactive. + nopPositions := OrderedCollection new. \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeMethodState.class/instance/isActive.st b/packages/Babylonian-Core.package/BPByteCodeMethodState.class/instance/isActive.st new file mode 100644 index 00000000..6c5f77b0 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeMethodState.class/instance/isActive.st @@ -0,0 +1,4 @@ +as yet unclassified +isActive + + ^ state == #active \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeMethodState.class/instance/isInactive.st b/packages/Babylonian-Core.package/BPByteCodeMethodState.class/instance/isInactive.st new file mode 100644 index 00000000..0ebb1834 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeMethodState.class/instance/isInactive.st @@ -0,0 +1,4 @@ +as yet unclassified +isInactive + + ^ state == #inactive \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeMethodState.class/instance/nopPositions.st b/packages/Babylonian-Core.package/BPByteCodeMethodState.class/instance/nopPositions.st new file mode 100644 index 00000000..afe097f8 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeMethodState.class/instance/nopPositions.st @@ -0,0 +1,4 @@ +as yet unclassified +nopPositions + + ^ nopPositions \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeMethodState.class/instance/setNOPPositions..st b/packages/Babylonian-Core.package/BPByteCodeMethodState.class/instance/setNOPPositions..st new file mode 100644 index 00000000..10781d23 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeMethodState.class/instance/setNOPPositions..st @@ -0,0 +1,4 @@ +as yet unclassified +setNOPPositions: anOrderedCollection + + nopPositions := anOrderedCollection \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeMethodState.class/instance/state..st b/packages/Babylonian-Core.package/BPByteCodeMethodState.class/instance/state..st new file mode 100644 index 00000000..f636301a --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeMethodState.class/instance/state..st @@ -0,0 +1,5 @@ +as yet unclassified +state: aSymbol + + self assert: ({#inactive . #active} includes: aSymbol). + state := aSymbol \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeMethodState.class/methodProperties.json b/packages/Babylonian-Core.package/BPByteCodeMethodState.class/methodProperties.json new file mode 100644 index 00000000..b20bd353 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeMethodState.class/methodProperties.json @@ -0,0 +1,10 @@ +{ + "class" : { + "ofMethod:" : "cmfcmf 10/9/2020 16:07" }, + "instance" : { + "initialize" : "cmfcmf 10/10/2020 13:43", + "isActive" : "cmfcmf 10/9/2020 16:09", + "isInactive" : "cmfcmf 10/9/2020 16:08", + "nopPositions" : "cmfcmf 10/10/2020 13:45", + "setNOPPositions:" : "cmfcmf 10/10/2020 13:43", + "state:" : "cmfcmf 10/9/2020 16:09" } } diff --git a/packages/Babylonian-Core.package/BPByteCodeMethodState.class/properties.json b/packages/Babylonian-Core.package/BPByteCodeMethodState.class/properties.json new file mode 100644 index 00000000..ef733662 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeMethodState.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Babylonian-Core-Callgraph-ByteCode", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "state", + "nopPositions" ], + "name" : "BPByteCodeMethodState", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/README.md b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/README.md new file mode 100644 index 00000000..bd1f6cb2 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/README.md @@ -0,0 +1 @@ +I find the enclosing, non-optimized block of a given ParseNode. \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/check..st b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/check..st new file mode 100644 index 00000000..4f2a0913 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/check..st @@ -0,0 +1,4 @@ +private +check: aParseNode + + aParseNode == targetNode ifTrue: [whenFoundBlock value] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/findNode.in..st b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/findNode.in..st new file mode 100644 index 00000000..b9204a93 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/findNode.in..st @@ -0,0 +1,8 @@ +public +findNode: aParseNode in: aRootParseNode + + lastNonOptimizedBlock := nil. + whenFoundBlock := [^ lastNonOptimizedBlock]. + targetNode := aParseNode. + aRootParseNode accept: self. + self error: 'node not found' \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitAssignmentNode..st b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitAssignmentNode..st new file mode 100644 index 00000000..c011d9a7 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitAssignmentNode..st @@ -0,0 +1,5 @@ +visiting +visitAssignmentNode: anAssignmentNode + + self check: anAssignmentNode. + ^ super visitAssignmentNode: anAssignmentNode \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitBlockNode..st b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitBlockNode..st new file mode 100644 index 00000000..0f2f12a3 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitBlockNode..st @@ -0,0 +1,9 @@ +visiting +visitBlockNode: aBlockNode + | old | + old := lastNonOptimizedBlock. + aBlockNode optimized ifFalse: [lastNonOptimizedBlock := aBlockNode]. + self check: aBlockNode. + + aBlockNode statements do: [:statement | statement accept: self]. + lastNonOptimizedBlock := old \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitBraceNode..st b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitBraceNode..st new file mode 100644 index 00000000..dcbb444f --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitBraceNode..st @@ -0,0 +1,5 @@ +visiting +visitBraceNode: aBraceNode + + self check: aBraceNode. + ^ super visitBraceNode: aBraceNode \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitCascadeNode..st b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitCascadeNode..st new file mode 100644 index 00000000..7137b8ba --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitCascadeNode..st @@ -0,0 +1,5 @@ +visiting +visitCascadeNode: aCascadeNode + + self check: aCascadeNode. + ^ super visitCascadeNode: aCascadeNode \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitCommentNode..st b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitCommentNode..st new file mode 100644 index 00000000..04b3e50c --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitCommentNode..st @@ -0,0 +1,5 @@ +visiting +visitCommentNode: aCommentNode + + self check: aCommentNode. + ^ super visitCommentNode: aCommentNode \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitFieldNode..st b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitFieldNode..st new file mode 100644 index 00000000..b43377aa --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitFieldNode..st @@ -0,0 +1,5 @@ +visiting +visitFieldNode: aFieldNode + + self check: aFieldNode. + ^ super visitFieldNode: aFieldNode \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitFutureNode..st b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitFutureNode..st new file mode 100644 index 00000000..ea9b4b5a --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitFutureNode..st @@ -0,0 +1,5 @@ +visiting +visitFutureNode: aFutureNode + + self check: aFutureNode. + ^ super visitFutureNode: aFutureNode \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitInstanceVariableNode..st b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitInstanceVariableNode..st new file mode 100644 index 00000000..08c2a481 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitInstanceVariableNode..st @@ -0,0 +1,5 @@ +visiting +visitInstanceVariableNode: anInstanceVariableNode + + self check: anInstanceVariableNode. + ^ super visitInstanceVariableNode: anInstanceVariableNode \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitLiteralNode..st b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitLiteralNode..st new file mode 100644 index 00000000..dbed21d1 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitLiteralNode..st @@ -0,0 +1,5 @@ +visiting +visitLiteralNode: aLiteralNode + + self check: aLiteralNode. + ^ super visitLiteralNode: aLiteralNode \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitLiteralVariableNode..st b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitLiteralVariableNode..st new file mode 100644 index 00000000..38bd27ca --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitLiteralVariableNode..st @@ -0,0 +1,5 @@ +visiting +visitLiteralVariableNode: aLiteralVariableNode + + self check: aLiteralVariableNode. + ^ super visitLiteralVariableNode: aLiteralVariableNode \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitMessageNode..st b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitMessageNode..st new file mode 100644 index 00000000..39b120ec --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitMessageNode..st @@ -0,0 +1,5 @@ +visiting +visitMessageNode: aMessageNode + + self check: aMessageNode. + ^ super visitMessageNode: aMessageNode \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitMessageNodeInCascade..st b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitMessageNodeInCascade..st new file mode 100644 index 00000000..01a687b7 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitMessageNodeInCascade..st @@ -0,0 +1,5 @@ +visiting +visitMessageNodeInCascade: aMessageNodeInCascade + + self check: aMessageNodeInCascade. + ^ super visitMessageNodeInCascade: aMessageNodeInCascade \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitMethodNode..st b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitMethodNode..st new file mode 100644 index 00000000..69be1a2b --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitMethodNode..st @@ -0,0 +1,5 @@ +visiting +visitMethodNode: aMethodNode + + self check: aMethodNode. + ^ super visitMethodNode: aMethodNode \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitNewArrayNode..st b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitNewArrayNode..st new file mode 100644 index 00000000..1bedf586 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitNewArrayNode..st @@ -0,0 +1,5 @@ +visiting +visitNewArrayNode: aNewArrayNode + + self check: aNewArrayNode. + ^ super visitNewArrayNode: aNewArrayNode \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitRemoteTempVectorNode..st b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitRemoteTempVectorNode..st new file mode 100644 index 00000000..b71dfada --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitRemoteTempVectorNode..st @@ -0,0 +1,5 @@ +visiting +visitRemoteTempVectorNode: aRemoteTempVectorNode + + self check: aRemoteTempVectorNode. + ^ super visitRemoteTempVectorNode: aRemoteTempVectorNode \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitReturnNode..st b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitReturnNode..st new file mode 100644 index 00000000..2b2ecdb4 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitReturnNode..st @@ -0,0 +1,5 @@ +visiting +visitReturnNode: aReturnNode + + self check: aReturnNode. + ^ super visitReturnNode: aReturnNode \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitSelectorNode..st b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitSelectorNode..st new file mode 100644 index 00000000..93f58727 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitSelectorNode..st @@ -0,0 +1,5 @@ +visiting +visitSelectorNode: aSelectorNode + + self check: aSelectorNode. + ^ super visitSelectorNode: aSelectorNode \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitTempVariableNode..st b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitTempVariableNode..st new file mode 100644 index 00000000..33c6ef1e --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitTempVariableNode..st @@ -0,0 +1,5 @@ +visiting +visitTempVariableNode: aTempVariableNode + + self check: aTempVariableNode. + ^ super visitTempVariableNode: aTempVariableNode \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitVariableNode..st b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitVariableNode..st new file mode 100644 index 00000000..f52b78e2 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitVariableNode..st @@ -0,0 +1,5 @@ +visiting +visitVariableNode: aVariableNode + + self check: aVariableNode. + ^ super visitVariableNode: aVariableNode \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/methodProperties.json b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/methodProperties.json new file mode 100644 index 00000000..813f5d3e --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/methodProperties.json @@ -0,0 +1,25 @@ +{ + "class" : { + }, + "instance" : { + "check:" : "cmfcmf 10/11/2020 14:22", + "findNode:in:" : "cmfcmf 10/11/2020 17:59", + "visitAssignmentNode:" : "cmfcmf 10/11/2020 14:07", + "visitBlockNode:" : "cmfcmf 10/11/2020 15:46", + "visitBraceNode:" : "cmfcmf 10/11/2020 14:10", + "visitCascadeNode:" : "cmfcmf 10/11/2020 14:10", + "visitCommentNode:" : "cmfcmf 10/11/2020 14:10", + "visitFieldNode:" : "cmfcmf 10/11/2020 14:10", + "visitFutureNode:" : "cmfcmf 10/11/2020 14:11", + "visitInstanceVariableNode:" : "cmfcmf 10/11/2020 14:11", + "visitLiteralNode:" : "cmfcmf 10/11/2020 14:11", + "visitLiteralVariableNode:" : "cmfcmf 10/11/2020 14:11", + "visitMessageNode:" : "cmfcmf 10/11/2020 14:11", + "visitMessageNodeInCascade:" : "cmfcmf 10/11/2020 14:11", + "visitMethodNode:" : "cmfcmf 10/11/2020 14:12", + "visitNewArrayNode:" : "cmfcmf 10/11/2020 14:12", + "visitRemoteTempVectorNode:" : "cmfcmf 10/11/2020 14:12", + "visitReturnNode:" : "cmfcmf 10/11/2020 14:12", + "visitSelectorNode:" : "cmfcmf 10/11/2020 14:12", + "visitTempVariableNode:" : "cmfcmf 10/11/2020 14:12", + "visitVariableNode:" : "cmfcmf 10/11/2020 14:12" } } diff --git a/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/properties.json b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/properties.json new file mode 100644 index 00000000..d658df3d --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/properties.json @@ -0,0 +1,16 @@ +{ + "category" : "Babylonian-Core-Callgraph-ByteCode", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "cmfcmf 10/20/2020 12:34", + "instvars" : [ + "lastNonOptimizedBlock", + "targetNode", + "whenFoundBlock" ], + "name" : "BPByteCodeParseNodeVisitor", + "pools" : [ + ], + "super" : "ParseNodeVisitor", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/README.md b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/adjustNumTemps.in..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/adjustNumTemps.in..st new file mode 100644 index 00000000..e9880f35 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/adjustNumTemps.in..st @@ -0,0 +1,8 @@ +private +adjustNumTemps: aNumber in: header + + | h | + self assert: (aNumber >= 0 and: [aNumber <= 63]). + h := header bitClear: (63 bitShift: 18). + h := h bitOr: (aNumber bitShift: 18). + ^ h \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/canEnableTracingFor..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/canEnableTracingFor..st new file mode 100644 index 00000000..99707d8a --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/canEnableTracingFor..st @@ -0,0 +1,22 @@ +private +canEnableTracingFor: aCompiledMethod + + | encoder | + + "aCompiledMethod numTemps + 1 <= 63 ifFalse: [^ false]." + + encoder := aCompiledMethod encoderClass new + streamToMethod: aCompiledMethod; + yourself. + + (self getConfig: aCompiledMethod) nopPositions do: [:data | | type interval | + type := data first. + interval := data second. + + type == #beforeBlock ifTrue: [ | closure | + (encoder instVarNamed: #stream) position: interval start + 1. + closure := self parseClosureCreationByteCodeFor: aCompiledMethod withEncoder: encoder. + ((closure at: #numTemps) + 1) <= 15 ifFalse: [^ false] + ]]. + + ^ true \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/copyCompiledMethod..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/copyCompiledMethod..st new file mode 100644 index 00000000..f7d78a6f --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/copyCompiledMethod..st @@ -0,0 +1,16 @@ +private +copyCompiledMethod: oldMethod + + | newMethod | + self assert: oldMethod isCompiledMethod. + + true + ifTrue: [ + ^ oldMethod copyWithTrailerBytes: oldMethod trailer] + ifFalse: [ + newMethod := CompiledMethod + newMethod: oldMethod size - oldMethod initialPC + 1 + header: "(self adjustNumTemps: oldMethod numTemps + 1 in:" oldMethod header")". + newMethod copyFrom: oldMethod. + ^ newMethod] + \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForClass..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForClass..st new file mode 100644 index 00000000..d68a1dff --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForClass..st @@ -0,0 +1,5 @@ +3 - disable tracing +disableTracingForClass: aClass + + + aClass selectors do: [:selector | self disableTracingForClass: aClass selector: selector] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForClass.selector..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForClass.selector..st new file mode 100644 index 00000000..5e1d93a3 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForClass.selector..st @@ -0,0 +1,5 @@ +3 - disable tracing +disableTracingForClass: aClass selector: aSymbol + + + self disableTracingForCompiledMethod: (aClass compiledMethodAt: aSymbol) \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForClassCategory..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForClassCategory..st new file mode 100644 index 00000000..3e9d9e51 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForClassCategory..st @@ -0,0 +1,7 @@ +3 - disable tracing +disableTracingForClassCategory: aSymbol + + + (SystemOrganization classesIn: aSymbol , '*') do: [:class | + self disableTracingForClass: class theNonMetaClass. + self disableTracingForClass: class theMetaClass] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForCompiledMethod..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForCompiledMethod..st new file mode 100644 index 00000000..0d6cf46f --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForCompiledMethod..st @@ -0,0 +1,4 @@ +3 - disable tracing +disableTracingForCompiledMethod: oldMethod + + ^ self disableTracingForCompiledMethod: oldMethod mode: self instrumentationMode \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForCompiledMethod.mode..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForCompiledMethod.mode..st new file mode 100644 index 00000000..6c667d47 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForCompiledMethod.mode..st @@ -0,0 +1,6 @@ +3 - disable tracing +disableTracingForCompiledMethod: oldMethod mode: aSymbol + + ^ self disableTracingForCompiledMethod: oldMethod mode: aSymbol howToAddToMethodDictWhenSlow: [:newMethod | + newMethod methodClass methodDict at: newMethod selector put: newMethod. + newMethod bpExamples do: [:e | e method: newMethod]] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForCompiledMethod.mode.howToAddToMethodDictWhenSlow..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForCompiledMethod.mode.howToAddToMethodDictWhenSlow..st new file mode 100644 index 00000000..251f2120 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForCompiledMethod.mode.howToAddToMethodDictWhenSlow..st @@ -0,0 +1,22 @@ +3 - disable tracing +disableTracingForCompiledMethod: oldMethod mode: aSymbol howToAddToMethodDictWhenSlow: aBlock + + | newMethod | + oldMethod isCompiledMethod ifFalse: [^ self handleNonCompiledMethod: oldMethod action: #disableTracingForCompiledMethod:mode:howToAddToMethodDictWhenSlow: mode: aSymbol]. + (self hasActiveTracing: oldMethod) ifFalse: [^ self]. + + self assert: ({#slow . #fast} includes: aSymbol). + + aSymbol == #slow ifTrue: [newMethod := self copyCompiledMethod: oldMethod]. + aSymbol == #fast ifTrue: [newMethod := oldMethod. + "newMethod objectAt: 1 put: (self adjustNumTemps: oldMethod numTemps - 1 in: oldMethod header)"]. + + self privDisableTracingFor: newMethod. + + aSymbol == #slow ifTrue: [ + oldMethod isInstalled + ifTrue: [ + aBlock value: newMethod] + ifFalse: [oldMethod becomeForward: newMethod]]. + + oldMethod selector flushCache \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/displayProgress.st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/displayProgress.st new file mode 100644 index 00000000..71cdde7a --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/displayProgress.st @@ -0,0 +1,5 @@ +0 - setup +displayProgress + + + ^ true \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForClass..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForClass..st new file mode 100644 index 00000000..891c3a8e --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForClass..st @@ -0,0 +1,5 @@ +2 - enable tracing +enableTracingForClass: aClass + + + aClass selectors do: [:selector | self enableTracingForClass: aClass selector: selector] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForClass.selector..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForClass.selector..st new file mode 100644 index 00000000..c435020f --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForClass.selector..st @@ -0,0 +1,5 @@ +2 - enable tracing +enableTracingForClass: aClass selector: aSymbol + + + self enableTracingForCompiledMethod: (aClass compiledMethodAt: aSymbol) \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForClassCategory..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForClassCategory..st new file mode 100644 index 00000000..0463b7ec --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForClassCategory..st @@ -0,0 +1,7 @@ +2 - enable tracing +enableTracingForClassCategory: aSymbol + + + (SystemOrganization classesIn: aSymbol , '*') do: [:class | + self enableTracingForClass: class theNonMetaClass. + self enableTracingForClass: class theMetaClass] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForCompiledMethod..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForCompiledMethod..st new file mode 100644 index 00000000..88f679c2 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForCompiledMethod..st @@ -0,0 +1,4 @@ +2 - enable tracing +enableTracingForCompiledMethod: oldMethod + + ^ self enableTracingForCompiledMethod: oldMethod mode: self instrumentationMode \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForCompiledMethod.mode..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForCompiledMethod.mode..st new file mode 100644 index 00000000..b339fbb2 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForCompiledMethod.mode..st @@ -0,0 +1,6 @@ +2 - enable tracing +enableTracingForCompiledMethod: oldMethod mode: aSymbol + + ^ self enableTracingForCompiledMethod: oldMethod mode: aSymbol howToAddToMethodDictWhenSlow: [:newMethod | + newMethod methodClass methodDict at: newMethod selector put: newMethod. + newMethod bpExamples do: [:e | e method: newMethod]] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForCompiledMethod.mode.howToAddToMethodDictWhenSlow..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForCompiledMethod.mode.howToAddToMethodDictWhenSlow..st new file mode 100644 index 00000000..3f92a86d --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForCompiledMethod.mode.howToAddToMethodDictWhenSlow..st @@ -0,0 +1,25 @@ +2 - enable tracing +enableTracingForCompiledMethod: oldMethod mode: aSymbol howToAddToMethodDictWhenSlow: aBlock + + | newMethod | + oldMethod isCompiledMethod ifFalse: [^ self handleNonCompiledMethod: oldMethod action: #enableTracingForCompiledMethod:mode:howToAddToMethodDictWhenSlow: mode: aSymbol]. + (self hasInactiveTracing: oldMethod) ifFalse: [^ self]. + self assert: oldMethod primitive == 0. + + (self canEnableTracingFor: oldMethod) + ifFalse: [^ UIManager default inform: 'Cannot enable tracing for ', oldMethod methodClass, ' >> ', oldMethod selector, '.']. + + self assert: ({#slow . #fast} includes: aSymbol). + self haltOnce. + aSymbol == #slow ifTrue: [newMethod := self copyCompiledMethod: oldMethod]. + aSymbol == #fast ifTrue: [newMethod := oldMethod. + "newMethod objectAt: 1 put: (self adjustNumTemps: oldMethod numTemps + 1 in: oldMethod header)"]. + + self privEnableTracingFor: newMethod. + + aSymbol == #slow ifTrue: [ + oldMethod isInstalled + ifTrue: [ aBlock value: newMethod] + ifFalse: [oldMethod becomeForward: newMethod]]. + + oldMethod selector flushCache \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/for.do.displayingProgress..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/for.do.displayingProgress..st new file mode 100644 index 00000000..a83b4bfa --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/for.do.displayingProgress..st @@ -0,0 +1,6 @@ +private +for: aCollection do: aBlock displayingProgress: progressBlock + + ^ self displayProgress + ifFalse: [aCollection do: aBlock] + ifTrue: [aCollection do: aBlock displayingProgress: progressBlock every: 100] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/getConfig..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/getConfig..st new file mode 100644 index 00000000..a20376a0 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/getConfig..st @@ -0,0 +1,4 @@ +private +getConfig: aCompiledMethod + + ^ BPByteCodeMethodState ofMethod: aCompiledMethod \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/handleNonCompiledMethod.action.mode..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/handleNonCompiledMethod.action.mode..st new file mode 100644 index 00000000..1e6bd1eb --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/handleNonCompiledMethod.action.mode..st @@ -0,0 +1,11 @@ +private +handleNonCompiledMethod: anObject action: action mode: mode + + anObject class caseOf: { + [Smalltalk at: #CSLayeredMethod] -> [ + ">> #allPartialMethods includes the base method" + anObject allPartialMethods do: [:partialMethod | self perform: action + with: partialMethod method + with: mode + with: [:newMethod | partialMethod setMethod: newMethod]]]. + } otherwise: [self error: 'Unsupported type of method.'] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/hasActiveTracing..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/hasActiveTracing..st new file mode 100644 index 00000000..e7fd1a97 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/hasActiveTracing..st @@ -0,0 +1,4 @@ +private +hasActiveTracing: aCompiledMethod + + ^ (self getConfig: aCompiledMethod) ifNil: [false] ifNotNil: [:config | config isActive] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/hasInactiveTracing..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/hasInactiveTracing..st new file mode 100644 index 00000000..586a0ddd --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/hasInactiveTracing..st @@ -0,0 +1,4 @@ +private +hasInactiveTracing: aCompiledMethod + + ^ (self getConfig: aCompiledMethod) ifNil: [false] ifNotNil: [:tracer | tracer isInactive] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/hasTracing..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/hasTracing..st new file mode 100644 index 00000000..01b31e31 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/hasTracing..st @@ -0,0 +1,4 @@ +private +hasTracing: aCompiledMethod + + ^ (self hasActiveTracing: aCompiledMethod) or: [self hasInactiveTracing: aCompiledMethod] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentAll..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentAll..st new file mode 100644 index 00000000..66fb5246 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentAll..st @@ -0,0 +1,11 @@ +1 - instrument +instrumentAll: classes + + CSLayeredMethod pauseFlushingCachesDuring: [ + SystemChangeNotifier uniqueInstance doSilently: [ + self for: classes + do: [:class | | metaClass | + class selectors do: [:selector | self instrumentClass: class selector: selector]. + metaClass := class theMetaClass. + metaClass selectors do: [:selector | self instrumentClass: metaClass selector: selector]] + displayingProgress: [:class | 'Recompiling ', class]]] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentAll.st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentAll.st new file mode 100644 index 00000000..79c12b87 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentAll.st @@ -0,0 +1,8 @@ +1 - instrument +instrumentAll + + | classes | + classes := Smalltalk allClasses. + self assert: (classes includes: Morph). + self assert: (classes includes: Morph class) not. + self instrumentAll: classes \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClass..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClass..st new file mode 100644 index 00000000..89b31aee --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClass..st @@ -0,0 +1,8 @@ +1 - instrument +instrumentClass: aClass + + CSLayeredMethod pauseFlushingCachesDuring: [ + SystemChangeNotifier uniqueInstance doSilently: [ + self for: aClass selectors + do: [:selector | self instrumentClass: aClass selector: selector] + displayingProgress: [:selector | 'Recompiling ', aClass, ' >> #', selector]]] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClass.selector..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClass.selector..st new file mode 100644 index 00000000..91505dd9 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClass.selector..st @@ -0,0 +1,16 @@ +1 - instrument +instrumentClass: aClass selector: aSymbol + + | method | + method := aClass compiledMethodAt: aSymbol. + (method primitive ~= 0 or: [method isQuick]) ifTrue: [^ self]. + + (self shouldNeverInstrument: aClass selector: aSymbol) ifTrue: [ + "UIManager default inform: 'Skipping instrumentation of ', aClass, ' >> #', aSymbol." + ^ self]. + + [#bpCallgraph withLayerDo: [aClass recompile: aSymbol]] on: SyntaxErrorNotification do: [:e | + "this happens when the method already has close to the maximum number of temps or literals and our bytecode rewriting overflowed that maximum." + "UIManager default inform: 'Could not instrument ', aClass, ' >> #', aSymbol, ' because it contains too many temps or literals'." + ^ self]. + self assert: (self hasInactiveTracing: (aClass compiledMethodAt: aSymbol)). \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClassCategory..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClassCategory..st new file mode 100644 index 00000000..22cf2d4f --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClassCategory..st @@ -0,0 +1,10 @@ +1 - instrument +instrumentClassCategory: aSymbol + + CSLayeredMethod pauseFlushingCachesDuring: [ + SystemChangeNotifier uniqueInstance doSilently: [ + self for: (SystemOrganization classesIn: aSymbol , '*') + do: [:class | + self instrumentClass: class theNonMetaClass. + self instrumentClass: class theMetaClass] + displayingProgress: [:selector | 'Recompiling ', aSymbol]]] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentCompiledMethod..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentCompiledMethod..st new file mode 100644 index 00000000..3fcf358e --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentCompiledMethod..st @@ -0,0 +1,13 @@ +1 - instrument +instrumentCompiledMethod: aCompiledMethod + + UIManager default inform: 'This method is not implemented due to its ambiguity. If you want to instrument a CompiledMethod without changing the method that is in use by the system, call + + BPByteCodeRewriter instrumentString: aCompiledMethod getSource + +which returns a new and instrumented compiled method (should only be used for testing, since the method will not have a method trailer). +If you want to instrument the CompiledMethod that is in use by the system, call + + BPByteCodeRewriter instrumentClass: aCompiledMethod methodClass selector: aCompiledMethod selector + +instead. It is impossible to instrument a CompiledMethod object in place, since it cannot be grown in size to accompany the needed space for tracing statements.' \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentContext.st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentContext.st new file mode 100644 index 00000000..709c1b79 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentContext.st @@ -0,0 +1,16 @@ +0 - setup +instrumentContext + + | swapSenderWrapper terminateToWrapper privSenderWrapper | + swapSenderWrapper := MwBlockMethodWrapper on: #swapSender: inClass: Context. + swapSenderWrapper beforeBlock: [:context :arguments | BPByteCodeCallgraphTracer swapSenderOf: context newSender: arguments first]. + swapSenderWrapper install. + + terminateToWrapper := MwBlockMethodWrapper on: #terminateTo: inClass: Context. + terminateToWrapper beforeBlock: [:context :arguments | BPByteCodeCallgraphTracer swapSenderOf: context newSender: arguments first]. + terminateToWrapper install. + + privSenderWrapper := MwBlockMethodWrapper on: #privSender: inClass: Context. + privSenderWrapper beforeBlock: [:context :arguments | BPByteCodeCallgraphTracer swapSenderOf: context newSender: arguments first]. + privSenderWrapper install. + \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentString..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentString..st new file mode 100644 index 00000000..58341df7 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentString..st @@ -0,0 +1,21 @@ +1 - instrument +instrumentString: aString + + | compiler cue methodNode methodAndNode trailer | + compiler := Compiler new. + cue := CompilationCue + source: aString + context: nil + receiver: nil + class: UndefinedObject + environment: UndefinedObject environment + requestor: nil. + trailer := CompiledMethodTrailer empty. + + methodNode := compiler compileCue: cue noPattern: false ifFail: [self error]. + {#bpCallgraph} withLayersDo: [ + methodAndNode := CompiledMethodWithNode + generateMethodFromNode: methodNode + trailer: trailer]. + + ^ methodAndNode method \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentationMode..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentationMode..st new file mode 100644 index 00000000..7be2df2c --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentationMode..st @@ -0,0 +1,5 @@ +0 - setup +instrumentationMode: aSymbol + + self assert: (aSymbol == #fast or: [aSymbol == #slow]). + InstrumentationMode := aSymbol \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentationMode.during..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentationMode.during..st new file mode 100644 index 00000000..a5625618 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentationMode.during..st @@ -0,0 +1,7 @@ +0 - setup +instrumentationMode: aSymbol during: aBlock + + | old | + old := InstrumentationMode. + self instrumentationMode: aSymbol. + ^ aBlock ensure: [InstrumentationMode := old] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentationMode.st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentationMode.st new file mode 100644 index 00000000..65fd9423 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentationMode.st @@ -0,0 +1,4 @@ +0 - setup +instrumentationMode + + ^ InstrumentationMode ifNil: [#slow] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/nuke.st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/nuke.st new file mode 100644 index 00000000..fbad6dec --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/nuke.st @@ -0,0 +1,19 @@ +x - nuking +nuke + + | marker handler methods | + marker := Environment current declarationOf: #BPByteCodeCallgraphTracer. + + methods := Set new. + handler := [:method | (method hasLiteral: marker) ifTrue: [methods add: method]]. + Smalltalk allClassesDo: [:class | + class methodsDo: handler. + class class methodsDo: handler]. + + CSLayeredMethod pauseFlushingCachesDuring: [ + methods + do: [:method | method methodClass recompile: method selector] + displayingProgress: [:method | 'Recompiling ', method methodClass, ' >> #', method selector] + every: 100]. + + self teardown \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/parseClosureCreationByteCodeFor.withEncoder..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/parseClosureCreationByteCodeFor.withEncoder..st new file mode 100644 index 00000000..d6a644b9 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/parseClosureCreationByteCodeFor.withEncoder..st @@ -0,0 +1,17 @@ +private +parseClosureCreationByteCodeFor: aCompiledMethod withEncoder: encoder + | argsAndTemps numArgs numTemps size | + + self assert: (aCompiledMethod at: encoder methodStreamPosition + 1) == 143. + + argsAndTemps := aCompiledMethod at: encoder methodStreamPosition + 1 + 1. + numArgs := argsAndTemps bitAnd: 2r1111. + numTemps := argsAndTemps bitShift: -4. + size := ((aCompiledMethod at: encoder methodStreamPosition + 1 + 2) bitShift: 8) + + (aCompiledMethod at: encoder methodStreamPosition + 1+ 3). + + ^ Dictionary withAll: { + #numArgs -> numArgs. + #numTemps -> numTemps. + #size -> size + } \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/privDisableTracingFor..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/privDisableTracingFor..st new file mode 100644 index 00000000..ded0d416 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/privDisableTracingFor..st @@ -0,0 +1,29 @@ +3 - disable tracing +privDisableTracingFor: method + + | config encoder | + config := self getConfig: method. + encoder := method encoderClass new + streamToMethod: method; + yourself. + + config nopPositions do: [:data | | type interval | + type := data first. + interval := data second. + + "overwrite code with NOPs" + (encoder instVarNamed: #stream) position: interval start - 1. + encoder genNops: interval size. + + "decrease number of temps of blocks by 1" + type == #beforeBlock ifTrue: [ | closure | + closure := self parseClosureCreationByteCodeFor: method withEncoder: encoder. + self rewriteClosureCreationByteCodeFor: method + withEncoder: encoder + numArgs: (closure at: #numArgs) + numTemps: (closure at: #numTemps) - 1]. + + self assert: encoder methodStreamPosition == interval stop]. + + config state: #inactive. + self assert: (self hasInactiveTracing: method) \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/privEnableTracingFor..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/privEnableTracingFor..st new file mode 100644 index 00000000..5884c433 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/privEnableTracingFor..st @@ -0,0 +1,123 @@ +2 - enable tracing +privEnableTracingFor: method + + | config tempIdxMap nextBlockIdx encoder litTracerIdx litInvocationCountIdx litEnterIdx litExitIdx blockIdentifierLiterals parentBlockMap blockExtents nopPositions | + + encoder := method encoderClass new + streamToMethod: method; + yourself. + config := self getConfig: method. + + self assert: (litTracerIdx := method literals findFirst: [:e | e isVariableBinding and: [e key == #BPByteCodeCallgraphTracer]]) > 0. + self assert: (litInvocationCountIdx := method literals findFirst: [:e | e isVariableBinding and: [e key == #bpInvocationCount]]) > 0. + self assert: (litEnterIdx := method indexOfLiteral: #enter:invocation:) > 0. + self assert: (litExitIdx := method indexOfLiteral: #exit:invocation:returns:) > 0. + + blockIdentifierLiterals := method literals + allButLast + allButLast + withIndexCollect: [:literal :i | (literal isVariableBinding and: [literal key beginsWith: 'bpClassNameMethodNameBlockIdx-']) + ifTrue: [i -> (literal key splitBy: '-') allButFirst "blockExtent . blockId . num temps"] + ifFalse: [-1 -> nil]]. + blockIdentifierLiterals := blockIdentifierLiterals select: [:i | i key > -1]. + + blockIdentifierLiterals withIndexDo: [:each :i | + (method literalAt: each key) + value: + method methodClass asString, + ' >> ', method selector, + ' >> ', i "block index within the method. 1 for root block. Could later be used to map back to the actual source code position of a given block"]. + + nextBlockIdx := 1. + tempIdxMap := Dictionary new. + + blockExtents := blockIdentifierLiterals + collect: [:each | | tmp start stop | + tmp := each value first allButFirst allButLast splitBy: ' '. + start := tmp first asInteger. + stop := tmp last asInteger. + each value second asInteger -> (start to: stop)]. + blockExtents sort: [:a :b | a value start < b value start]. + + parentBlockMap := Dictionary new. + blockExtents allButFirst do: [:current | | wrappingBlock | + wrappingBlock := (blockExtents select: [:each | each value start < current value start and: [each value stop > current value start]]) last. + parentBlockMap at: current key put: wrappingBlock key. + ]. + + nopPositions := config nopPositions. + nopPositions withIndexDo: [:data :nopIdx | | type interval blockId | + type := data first. + interval := data second. + blockId := data third. + + (encoder instVarNamed: #stream) position: interval start - 1. + + "interval start >= 538 ifTrue: [self halt]." + + type == #beginRoot ifTrue: [ + self assert: tempIdxMap isEmpty. + tempIdxMap at: blockId put: {method numTemps - 1}. + + "invocation index increment and store into temp" + encoder genPushLiteralVar: litInvocationCountIdx - 1. + encoder genStoreTemp: (tempIdxMap at: blockId) first. + encoder genPushSpecialLiteral: 1. + encoder genSendSpecial: 1 numArgs: 1. + encoder genStorePopLiteralVar: litInvocationCountIdx - 1]. + + type == #begin ifTrue: [ | tempIdxInfo | + tempIdxInfo := tempIdxMap at: blockId. + tempIdxInfo first ~~ tempIdxInfo last ifTrue: [ + "(encoder instVarNamed: #stream) position: interval start - 2. + encoder genPushTemp: tempIdxInfo second. + encoder genPushSpecialLiteral: nil. + encoder genStorePopTemp: tempIdxInfo second" + encoder genPushTemp: tempIdxInfo second. + encoder genStorePopTemp: tempIdxInfo first. + encoder genPushSpecialLiteral: nil. + encoder genStorePopTemp: tempIdxInfo second]]. + + (type == #begin or: [type == #beginRoot]) ifTrue: [ + nextBlockIdx := nextBlockIdx + 1. + + "enter send" + encoder genPushLiteralVar: litTracerIdx - 1. + encoder genPushLiteralVar: (blockIdentifierLiterals detect: [:each | each value second = blockId asString]) key - 1. + encoder genPushTemp: (tempIdxMap at: blockId) first. + encoder genSend: litEnterIdx - 1 numArgs: 2. + encoder genPop]. + + type == #beforeBlock ifTrue: [ | closure numBlockLocalTemps blockInfo | + blockInfo := (blockIdentifierLiterals detect: [:each | each value second = blockId asString]) value. + numBlockLocalTemps := blockInfo last asInteger. + + encoder genPushTempLong: (tempIdxMap at: (parentBlockMap at: blockId)) first. + closure := self parseClosureCreationByteCodeFor: method withEncoder: encoder. + self rewriteClosureCreationByteCodeFor: method withEncoder: encoder numArgs: (closure at: #numArgs) numTemps: (closure at: #numTemps) + 1. + tempIdxMap at: blockId put: "zero-based" + { + (closure at: #numTemps "copied temps") + + (numBlockLocalTemps "block local temps") + + (closure at: #numArgs "block arguments"). + + (closure at: #numTemps "copied temps") + + (closure at: #numArgs "block arguments") + }]. + + (type == #endBlock or: [type == #endMethod]) ifTrue: [ + "exit send" + encoder genPushLiteralVar: litTracerIdx - 1. + encoder genPushLiteralVar: (blockIdentifierLiterals detect: [:each | each value second = blockId asString]) key - 1. + encoder genPushTemp: (tempIdxMap at: blockId) first. + encoder genPushSpecialLiteral: type == #endMethod. "returns?" + encoder genSend: litExitIdx - 1 numArgs: 3. + encoder genPop]. + + self assert: encoder methodStreamPosition == interval stop]. + + "self rewriteHeaderOf: newMethod numTemps: newMethod numTemps + 1" + + + config state: #active. + self assert: (self hasActiveTracing: method). \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/rewriteClosureCreationByteCodeFor.withEncoder.numArgs.numTemps..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/rewriteClosureCreationByteCodeFor.withEncoder.numArgs.numTemps..st new file mode 100644 index 00000000..6b90f40a --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/rewriteClosureCreationByteCodeFor.withEncoder.numArgs.numTemps..st @@ -0,0 +1,11 @@ +private +rewriteClosureCreationByteCodeFor: aCompiledMethod withEncoder: encoder numArgs: numArgs numTemps: numTemps + + + self assert: (aCompiledMethod at: encoder methodStreamPosition + 1) == 143. + self assert: (numArgs <= 15 and: [numArgs >= 0]). + self assert: (numTemps <= 15 and: [numTemps >= 0]). + + aCompiledMethod + at: encoder methodStreamPosition + 1 + 1 + put: numArgs + (numTemps bitShift: 4) \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/rewriteHeaderOf.numTemps..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/rewriteHeaderOf.numTemps..st new file mode 100644 index 00000000..86e00f64 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/rewriteHeaderOf.numTemps..st @@ -0,0 +1,4 @@ +private +rewriteHeaderOf: aCompiledMethod numTemps: aNumber + + aCompiledMethod objectAt: 1 put: (self adjustNumTemps: aNumber in: aCompiledMethod header) \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/setup.st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/setup.st new file mode 100644 index 00000000..674de944 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/setup.st @@ -0,0 +1,5 @@ +0 - setup +setup + + self teardown. + self instrumentContext \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st new file mode 100644 index 00000000..c2d2a745 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st @@ -0,0 +1,33 @@ +1 - instrument +shouldNeverInstrument: aClass selector: aSymbol + + "largely copied from MwMethodWrapper class >> #canWrap:inClass:" + | class method | + (aClass category beginsWith: 'Babylonian-') ifTrue: [ + ({'Babylonian-Tests-Callgraph-ByteCode-Fixtures' . 'Babylonian-Demo-TreeScene' . 'Babylonian-Demo-Morphs' } includes: aClass category) + ifFalse: [^ true]]. + + {{CompiledMethod . {#valueWithReceiver:arguments:}}. + {BlockClosure . {#value . #ensure}}. + {WriteStream . {#nextPut:}}} do: [:tuple | + ((aClass includesBehavior: tuple first) and: [tuple second anySatisfy: [:excludedSelector | + excludedSelector == aSymbol]]) ifTrue: [^ true]]. + + {{Context . {"only check for the class ;)"}}. + {Binding . {#value}}. + {BPByteCodeCallgraphTracer . {"only check for the class ;)"}}. + {DynamicVariable . {"only check for the class ;)"}}. + {BPByteCodeMethodState . {"only check for the class ;)"}}. + {BPByteCodeAssociation . {"only check for the class ;)"}} + } do: [:tuple | + ((aClass theNonMetaClass includesBehavior: tuple first) and: [tuple second isEmpty or: + [tuple second anySatisfy: [:excludedSelector | excludedSelector == aSymbol]]]) + ifTrue: [^ true]]. + + class := aClass whichClassIncludesSelector: aSymbol. + class isNil ifTrue: [^ true]. + method := class compiledMethodAt: aSymbol ifAbsent: [nil]. + method isNil ifTrue: [^ true]. + method primitive ~= 0 ifTrue: [^ true]. + + ^ false \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/teardown.st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/teardown.st new file mode 100644 index 00000000..d6cd69f8 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/teardown.st @@ -0,0 +1,4 @@ +5 - teardown +teardown + + self uninstrumentContext \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstallWrapper..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstallWrapper..st new file mode 100644 index 00000000..5160f1d4 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstallWrapper..st @@ -0,0 +1,8 @@ +5 - teardown +uninstallWrapper: aSymbol + + | method | + method := Context >> aSymbol. + [method isMwMethodWrapper] whileTrue: [ + method uninstall. + method := Context >> aSymbol] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentAll..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentAll..st new file mode 100644 index 00000000..3930b341 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentAll..st @@ -0,0 +1,11 @@ +4 - uninstrument +uninstrumentAll: classes + + CSLayeredMethod pauseFlushingCachesDuring: [ + SystemChangeNotifier uniqueInstance doSilently: [ + self for: classes + do: [:class | | metaClass | + class selectors do: [:selector | self uninstrumentClass: class selector: selector]. + metaClass := class theMetaClass. + metaClass selectors do: [:selector | self uninstrumentClass: metaClass selector: selector]] + displayingProgress: [:class | 'Recompiling ', class]]] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentAll.st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentAll.st new file mode 100644 index 00000000..0bd6f50a --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentAll.st @@ -0,0 +1,8 @@ +4 - uninstrument +uninstrumentAll + + | classes | + classes := Smalltalk allClasses. + self assert: (classes includes: Morph). + self assert: (classes includes: Morph class) not. + self uninstrumentAll: classes \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentClass..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentClass..st new file mode 100644 index 00000000..8d991499 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentClass..st @@ -0,0 +1,8 @@ +4 - uninstrument +uninstrumentClass: aClass + + CSLayeredMethod pauseFlushingCachesDuring: [ + SystemChangeNotifier uniqueInstance doSilently: [ + self for: aClass selectors + do: [:selector | self uninstrumentClass: aClass selector: selector] + displayingProgress: [:selector | 'Recompiling ', aClass, ' >> #', selector]]] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentClass.selector..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentClass.selector..st new file mode 100644 index 00000000..35350cc7 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentClass.selector..st @@ -0,0 +1,7 @@ +4 - uninstrument +uninstrumentClass: aClass selector: aSymbol + + (aClass compiledMethodAt: aSymbol) primitive ~= 0 ifTrue: [^ self]. + + aClass recompile: aSymbol. + self assert: (self hasTracing: (aClass compiledMethodAt: aSymbol)) not \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentClassCategory..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentClassCategory..st new file mode 100644 index 00000000..e0b247ab --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentClassCategory..st @@ -0,0 +1,10 @@ +4 - uninstrument +uninstrumentClassCategory: aSymbol + + CSLayeredMethod pauseFlushingCachesDuring: [ + SystemChangeNotifier uniqueInstance doSilently: [ + self for: (SystemOrganization classesIn: aSymbol , '*') + do: [:class | + self uninstrumentClass: class theNonMetaClass. + self uninstrumentClass: class theMetaClass] + displayingProgress: [:selector | 'Recompiling ', aSymbol]]] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentCompiledMethod..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentCompiledMethod..st new file mode 100644 index 00000000..90b9133d --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentCompiledMethod..st @@ -0,0 +1,6 @@ +4 - uninstrument +uninstrumentCompiledMethod: aCompiledMethod + + UIManager default inform: 'This method is not implemented due to its ambiguity. For more information see + + BPByteCodeRewriter class >> #instrumentCompiledMethod:' \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentContext.st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentContext.st new file mode 100644 index 00000000..c3299424 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentContext.st @@ -0,0 +1,6 @@ +5 - teardown +uninstrumentContext + + self uninstallWrapper: #swapSender:. + self uninstallWrapper: #terminateTo:. + self uninstallWrapper: #privSender: \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json new file mode 100644 index 00000000..fa05c26c --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json @@ -0,0 +1,54 @@ +{ + "class" : { + "adjustNumTemps:in:" : "cmfcmf 10/12/2020 18:30", + "canEnableTracingFor:" : "cmfcmf 10/23/2020 12:31", + "copyCompiledMethod:" : "cmfcmf 10/26/2020 15:55", + "disableTracingForClass:" : "cmfcmf 9/29/2020 17:08", + "disableTracingForClass:selector:" : "cmfcmf 9/29/2020 17:08", + "disableTracingForClassCategory:" : "pre 3/16/2021 09:40", + "disableTracingForCompiledMethod:" : "cmfcmf 10/20/2020 14:22", + "disableTracingForCompiledMethod:mode:" : "pre 1/20/2021 17:15", + "disableTracingForCompiledMethod:mode:howToAddToMethodDictWhenSlow:" : "cmfcmf 12/15/2020 17:22", + "displayProgress" : "cmfcmf 12/1/2020 15:24", + "enableTracingForClass:" : "cmfcmf 10/20/2020 14:32", + "enableTracingForClass:selector:" : "cmfcmf 9/29/2020 16:59", + "enableTracingForClassCategory:" : "pre 3/16/2021 09:40", + "enableTracingForCompiledMethod:" : "cmfcmf 10/20/2020 14:27", + "enableTracingForCompiledMethod:mode:" : "pre 1/20/2021 17:15", + "enableTracingForCompiledMethod:mode:howToAddToMethodDictWhenSlow:" : "pre 1/20/2021 17:06", + "for:do:displayingProgress:" : "cmfcmf 12/1/2020 15:07", + "getConfig:" : "cmfcmf 10/10/2020 15:33", + "handleNonCompiledMethod:action:mode:" : "cmfcmf 10/26/2020 15:38", + "hasActiveTracing:" : "cmfcmf 10/10/2020 15:33", + "hasInactiveTracing:" : "cmfcmf 10/10/2020 15:34", + "hasTracing:" : "cmfcmf 9/30/2020 12:04", + "instrumentAll" : "cmfcmf 12/10/2020 12:42", + "instrumentAll:" : "cmfcmf 12/10/2020 12:39", + "instrumentClass:" : "cmfcmf 12/10/2020 12:02", + "instrumentClass:selector:" : "cmfcmf 1/4/2021 18:51", + "instrumentClassCategory:" : "pre 3/16/2021 09:37", + "instrumentCompiledMethod:" : "cmfcmf 10/20/2020 12:46", + "instrumentContext" : "cmfcmf 10/8/2020 11:41", + "instrumentString:" : "cmfcmf 10/26/2020 16:15", + "instrumentationMode" : "cmfcmf 12/5/2020 15:55", + "instrumentationMode:" : "cmfcmf 12/5/2020 15:57", + "instrumentationMode:during:" : "cmfcmf 12/5/2020 15:57", + "nuke" : "cmfcmf 10/22/2020 13:00", + "parseClosureCreationByteCodeFor:withEncoder:" : "cmfcmf 10/11/2020 11:22", + "privDisableTracingFor:" : "cmfcmf 12/10/2020 12:52", + "privEnableTracingFor:" : "cmfcmf 12/10/2020 12:52", + "rewriteClosureCreationByteCodeFor:withEncoder:numArgs:numTemps:" : "cmfcmf 10/11/2020 11:27", + "rewriteHeaderOf:numTemps:" : "cmfcmf 10/12/2020 18:22", + "setup" : "cmfcmf 10/7/2020 15:34", + "shouldNeverInstrument:selector:" : "pre 3/11/2021 16:36", + "teardown" : "cmfcmf 10/7/2020 15:31", + "uninstallWrapper:" : "cmfcmf 10/29/2020 13:06", + "uninstrumentAll" : "cmfcmf 12/10/2020 12:43", + "uninstrumentAll:" : "cmfcmf 12/10/2020 12:43", + "uninstrumentClass:" : "cmfcmf 12/10/2020 12:02", + "uninstrumentClass:selector:" : "cmfcmf 12/10/2020 12:35", + "uninstrumentClassCategory:" : "pre 3/16/2021 09:40", + "uninstrumentCompiledMethod:" : "cmfcmf 10/20/2020 12:45", + "uninstrumentContext" : "cmfcmf 10/29/2020 13:06" }, + "instance" : { + } } diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/properties.json b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/properties.json new file mode 100644 index 00000000..147358e1 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Core-Callgraph-ByteCode", + "classinstvars" : [ + ], + "classvars" : [ + "InstrumentationMode" ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPByteCodeRewriter", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/README.md b/packages/Babylonian-Core.package/BPCallgraph.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/addRoot..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/addRoot..st new file mode 100644 index 00000000..e5d70878 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/addRoot..st @@ -0,0 +1,5 @@ +private +addRoot: aBPCallgraphEntry + + self assert: aBPCallgraphEntry parent isNil. + roots addLast: aBPCallgraphEntry \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/allInvocationsOf..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/allInvocationsOf..st new file mode 100644 index 00000000..efe687d3 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/allInvocationsOf..st @@ -0,0 +1,4 @@ +finding ancestors +allInvocationsOf: aBPCallgraphEntryEnter + ^ self select: [:each | + each class == BPCallgraphEntryEnter and: [each equalsClassSelectorBlockIdx: aBPCallgraphEntryEnter]]. \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/babylonianEntries.st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/babylonianEntries.st new file mode 100644 index 00000000..50e82ef1 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/babylonianEntries.st @@ -0,0 +1,5 @@ +accessing +babylonianEntries + + babylonianEntries ifNotNil: [^ babylonianEntries]. + ^ babylonianEntries := self select: [:each | each isKindOf: BPCallgraphEntryBabylonian] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st new file mode 100644 index 00000000..1256f73b --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st @@ -0,0 +1,34 @@ +finding ancestors +commonAncestorOf: aCollection ignoringInvocationCounts: aBoolean + + | theAncestor possibleAncestors | + aCollection ifEmpty: [^ nil]. + + possibleAncestors := (aCollection first pathWithResolvedOutOfStackJumps: self) allButLast. + + aCollection allButFirst do: [:each | | found path | + found := false. + path := (each pathWithResolvedOutOfStackJumps: self) allButLast reversed. + path withIndexDo: [:entry :i | | ancestorIdx | + found + ifFalse: [ + ancestorIdx := possibleAncestors findLast: [:ancestor | entry class == BPCallgraphEntryEnter + ifFalse: [false] + ifTrue: [aBoolean + ifFalse: [ancestor equalsClassSelectorBlockIdxInvocation: entry] + ifTrue: [ancestor equalsClassSelectorBlockIdx: entry]]]. + ancestorIdx ~= 0 ifTrue: [ + possibleAncestors := possibleAncestors copyFrom: 1 to: ancestorIdx. + found := true. + aBoolean ifTrue: [| remainingPath | + remainingPath := path allButFirst: i. + possibleAncestors allButLast do: [:possibleAncestor | + (remainingPath findFirst: [:remainingEntry | remainingEntry equalsClassSelectorBlockIdx: possibleAncestor]) == 0 ifTrue: [ + possibleAncestors remove: possibleAncestor]]]]]]. + found ifFalse: [^ nil]]. + + possibleAncestors ifEmpty: [^ nil]. + + self flag: #todo. "What if the ancestor is not an enter event?" + theAncestor := possibleAncestors reversed detect: [:each | each class == BPCallgraphEntryEnter]. + ^ aBoolean ifTrue: ["possibleAncestors explore. "theAncestor asPathPart] ifFalse: [theAncestor] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect..st new file mode 100644 index 00000000..dad461a6 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect..st @@ -0,0 +1,4 @@ +enumerating +detect: aBlock + + ^ self detect: aBlock ifFound: [:entry | ^ entry] ifNone: [self errorNotFound: aBlock] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect.after..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect.after..st new file mode 100644 index 00000000..2a6e5872 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect.after..st @@ -0,0 +1,8 @@ +enumerating +detect: aBlock after: entry + + self + detect: aBlock + after: entry + ifFound: [:each | ^ each] + ifNone: [self errorNotFound: aBlock] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect.after.ifFound.ifNone..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect.after.ifFound.ifNone..st new file mode 100644 index 00000000..5f396892 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect.after.ifFound.ifNone..st @@ -0,0 +1,5 @@ +enumerating +detect: aBlock after: entry ifFound: foundBlock ifNone: exceptionBlock + + self do: [:each | (aBlock value: each) ifTrue: [^ foundBlock value: each]] after: entry. + exceptionBlock value. \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect.before..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect.before..st new file mode 100644 index 00000000..8ebdd173 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect.before..st @@ -0,0 +1,8 @@ +enumerating +detect: aBlock before: entry + + self + detect: aBlock + before: entry + ifFound: [:each | ^ each] + ifNone: [self errorNotFound: aBlock] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect.before.ifFound.ifNone..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect.before.ifFound.ifNone..st new file mode 100644 index 00000000..f7ceb265 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect.before.ifFound.ifNone..st @@ -0,0 +1,5 @@ +enumerating +detect: aBlock before: entry ifFound: foundBlock ifNone: exceptionBlock + + self do: [:each | (aBlock value: each) ifTrue: [^ foundBlock value: each]] before: entry. + exceptionBlock value. \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect.ifFound..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect.ifFound..st new file mode 100644 index 00000000..ced0eed8 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect.ifFound..st @@ -0,0 +1,4 @@ +enumerating +detect: aBlock ifFound: foundBlock + + ^ self detect: aBlock ifFound: foundBlock ifNone: [] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect.ifFound.ifNone..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect.ifFound.ifNone..st new file mode 100644 index 00000000..c16325bb --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect.ifFound.ifNone..st @@ -0,0 +1,5 @@ +enumerating +detect: aBlock ifFound: foundBlock ifNone: exceptionBlock + + self do: [:each | (aBlock value: each) ifTrue: [^ foundBlock value: each]]. + ^ exceptionBlock value \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/do..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/do..st new file mode 100644 index 00000000..2289616b --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/do..st @@ -0,0 +1,4 @@ +enumerating +do: aBlock + + roots do: [:root | self do: aBlock entry: root] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/do.after..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/do.after..st new file mode 100644 index 00000000..c82acf83 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/do.after..st @@ -0,0 +1,21 @@ +enumerating +do: aBlock after: entry + + | last | + "iterate children" + entry children do: [:child | self do: aBlock entry: child]. + + "move up my parents and iterate children along the way" + last := entry. + entry path allButLast reversed do: [:each | + each children + from: (each children indexOf: last) + 1 + to: each children size + do: [:child | self do: aBlock entry: child]. + last := each]. + + "iterate children of next root element" + roots + from: (roots indexOf: entry root) + 1 + to: roots size + do: [:root | self do: aBlock entry: root] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/do.before..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/do.before..st new file mode 100644 index 00000000..a3bcdc6e --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/do.before..st @@ -0,0 +1,10 @@ +enumerating +do: aBlock before: entry + + | elements | + self flag: #todo. "This is slow" + elements := OrderedCollection new. + self do: [:each | each == entry + ifTrue: [^ elements do: [:element | aBlock value: element]] + ifFalse: [elements addFirst: each]]. + \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/do.between.and..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/do.between.and..st new file mode 100644 index 00000000..3e7eaf82 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/do.between.and..st @@ -0,0 +1,4 @@ +enumerating +do: aBlock between: start and: end + + self do: [:each | each == end ifTrue: [^ self] ifFalse: [aBlock value: each]] after: start \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/do.entry..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/do.entry..st new file mode 100644 index 00000000..a3794b5a --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/do.entry..st @@ -0,0 +1,5 @@ +private +do: aBlock entry: aBPCallgraphEntry + + aBlock value: aBPCallgraphEntry. + aBPCallgraphEntry children do: [:child | self do: aBlock entry: child] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/forLatex.st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/forLatex.st new file mode 100644 index 00000000..aa87aaf4 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/forLatex.st @@ -0,0 +1,15 @@ +printing +forLatex + + ^ String streamContents: [:s | + s nextPutAll: ' +\begin{forest} + tracing tree, + [ +'. + + self roots do: [:entry | entry printForLatexOn: s]. + + s nextPutAll: ' + ] +\end{forest}'] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/initialize.st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/initialize.st new file mode 100644 index 00000000..c2e303cc --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/initialize.st @@ -0,0 +1,5 @@ +initialize-release +initialize + + super initialize. + roots := OrderedCollection new \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/interactiveAncestorSearchFor.ignoringInvocationCounts.browseMethodBlock..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/interactiveAncestorSearchFor.ignoringInvocationCounts.browseMethodBlock..st new file mode 100644 index 00000000..afb8a5e6 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/interactiveAncestorSearchFor.ignoringInvocationCounts.browseMethodBlock..st @@ -0,0 +1,20 @@ +finding ancestors +interactiveAncestorSearchFor: aCollection ignoringInvocationCounts: aBoolean browseMethodBlock: aBlock + + | selectedEntries ancestor continue | + selectedEntries := aCollection asOrderedCollection. + + ancestor := self + commonAncestorOf: (selectedEntries collect: #selfOrParentMethodBlockOfBPProbeOrAssertion) + ignoringInvocationCounts: aBoolean. + ancestor ifNil: [^ UIManager default inform: 'No common ancestor found']. + + continue := UIManager default chooseFrom: {'browse' . 'show invocation paths' . 'cancel'} title: ancestor asString, String cr, String cr, 'is the ancestor of all selected entries. Do you also want to calculate all unique invocation paths from that ancestor to selected entries?'. + + continue caseOf: { + [1] -> [aBlock value: ancestor methodReference]. + [2] -> [| paths sortedPathsByChild | + paths := self pathsBetween: ancestor andChildren: selectedEntries. + sortedPathsByChild := Dictionary new. + paths do: [:path | (sortedPathsByChild at: path last ifAbsentPut: [OrderedCollection new]) addLast: path]. + sortedPathsByChild explore]} otherwise: [^ self] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/pathsBetween.andChildren..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/pathsBetween.andChildren..st new file mode 100644 index 00000000..261036e3 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/pathsBetween.andChildren..st @@ -0,0 +1,9 @@ +finding ancestors +pathsBetween: ancestor andChildren: aCollection + + ^ (aCollection collect: [:each | | rootPath path ancestorIndex | + rootPath := each pathWithResolvedOutOfStackJumps: self. + ancestorIndex := rootPath findLast: [:entry | entry class == BPCallgraphEntryEnter and: [ancestor equalsClassSelectorBlockIdx: entry]]. + self assert: ancestorIndex > 0. + path := rootPath copyFrom: ancestorIndex to: rootPath size. + (ancestor isKindOf: BPCallgraphPathPart) ifTrue: [path collect: #asPathPart] ifFalse: [path]]) withoutDuplicates \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/roots.st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/roots.st new file mode 100644 index 00000000..87400b7f --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/roots.st @@ -0,0 +1,4 @@ +accessing +roots + + ^ roots \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/select..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/select..st new file mode 100644 index 00000000..e4e233e8 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/select..st @@ -0,0 +1,7 @@ +enumerating +select: aBlock + + | result | + result := OrderedCollection new. + self do: [:each | (aBlock value: each) ifTrue: [result addLast: each]]. + ^ result \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json new file mode 100644 index 00000000..1535f620 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json @@ -0,0 +1,26 @@ +{ + "class" : { + }, + "instance" : { + "addRoot:" : "cmfcmf 10/27/2020 14:10", + "allInvocationsOf:" : "cmfcmf 11/3/2020 13:57", + "babylonianEntries" : "cmfcmf 10/28/2020 11:01", + "commonAncestorOf:ignoringInvocationCounts:" : "cmfcmf 1/4/2021 13:26", + "detect:" : "cmfcmf 11/2/2020 14:20", + "detect:after:" : "cmfcmf 10/27/2020 16:26", + "detect:after:ifFound:ifNone:" : "cmfcmf 10/27/2020 16:25", + "detect:before:" : "cmfcmf 1/4/2021 19:22", + "detect:before:ifFound:ifNone:" : "cmfcmf 10/27/2020 16:37", + "detect:ifFound:" : "cmfcmf 11/2/2020 14:20", + "detect:ifFound:ifNone:" : "cmfcmf 11/2/2020 14:19", + "do:" : "cmfcmf 10/27/2020 14:48", + "do:after:" : "cmfcmf 10/27/2020 17:07", + "do:before:" : "cmfcmf 10/27/2020 16:42", + "do:between:and:" : "cmfcmf 11/2/2020 20:20", + "do:entry:" : "cmfcmf 10/27/2020 14:48", + "forLatex" : "cmfcmf 1/2/2021 16:10", + "initialize" : "cmfcmf 10/27/2020 14:14", + "interactiveAncestorSearchFor:ignoringInvocationCounts:browseMethodBlock:" : "cmfcmf 11/10/2020 13:40", + "pathsBetween:andChildren:" : "cmfcmf 1/4/2021 13:27", + "roots" : "cmfcmf 10/27/2020 14:11", + "select:" : "cmfcmf 10/28/2020 10:47" } } diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/properties.json b/packages/Babylonian-Core.package/BPCallgraph.class/properties.json new file mode 100644 index 00000000..e87f3ccf --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraph.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Babylonian-Core-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "roots", + "babylonianEntries" ], + "name" : "BPCallgraph", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntry.class/README.md b/packages/Babylonian-Core.package/BPCallgraphEntry.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/addChild..st b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/addChild..st new file mode 100644 index 00000000..048685a6 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/addChild..st @@ -0,0 +1,5 @@ +as yet unclassified +addChild: aBPCallgraphEntry + + children addLast: aBPCallgraphEntry. + aBPCallgraphEntry parent: self \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/asPathPart.st b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/asPathPart.st new file mode 100644 index 00000000..e7582519 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/asPathPart.st @@ -0,0 +1,4 @@ +as yet unclassified +asPathPart + + self subclassResponsibility \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/children.st b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/children.st new file mode 100644 index 00000000..b5500d66 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/children.st @@ -0,0 +1,4 @@ +as yet unclassified +children + + ^ children \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/doBrowse.st b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/doBrowse.st new file mode 100644 index 00000000..1f418834 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/doBrowse.st @@ -0,0 +1,4 @@ +as yet unclassified +doBrowse + + self subclassResponsibility \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/hasChildren.st b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/hasChildren.st new file mode 100644 index 00000000..ba6aef51 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/hasChildren.st @@ -0,0 +1,4 @@ +as yet unclassified +hasChildren + + ^ children notEmpty \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/icon.st b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/icon.st new file mode 100644 index 00000000..020a45b2 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/icon.st @@ -0,0 +1,4 @@ +as yet unclassified +icon + + ^ ToolIcons blank \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/initialize.st b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/initialize.st new file mode 100644 index 00000000..adc1886b --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/initialize.st @@ -0,0 +1,6 @@ +as yet unclassified +initialize + + super initialize. + + children := OrderedCollection new \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/keyPressed..st b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/keyPressed..st new file mode 100644 index 00000000..bf6c8342 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/keyPressed..st @@ -0,0 +1,4 @@ +as yet unclassified +keyPressed: aChar + + aChar == $b ifTrue: [self doBrowse] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/label.st b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/label.st new file mode 100644 index 00000000..0ce23a1d --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/label.st @@ -0,0 +1,4 @@ +as yet unclassified +label + + self subclassResponsibility \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/latexAttributes.st b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/latexAttributes.st new file mode 100644 index 00000000..e934d19f --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/latexAttributes.st @@ -0,0 +1,4 @@ +as yet unclassified +latexAttributes + + ^ '' \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/latexLabel.st b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/latexLabel.st new file mode 100644 index 00000000..e0cfb456 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/latexLabel.st @@ -0,0 +1,4 @@ +as yet unclassified +latexLabel + + ^ '\lstinline{', (self label splitBy: String tab) first, '}' \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/menu..st b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/menu..st new file mode 100644 index 00000000..6db6d0c6 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/menu..st @@ -0,0 +1,4 @@ +as yet unclassified +menu: aMenuMorph + + \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/parent..st b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/parent..st new file mode 100644 index 00000000..4cebe15b --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/parent..st @@ -0,0 +1,4 @@ +as yet unclassified +parent: aBPCallgraphEntry + + parent := aBPCallgraphEntry \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/parent.st b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/parent.st new file mode 100644 index 00000000..7435ad18 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/parent.st @@ -0,0 +1,4 @@ +as yet unclassified +parent + + ^ parent \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/path.st b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/path.st new file mode 100644 index 00000000..9b48e66b --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/path.st @@ -0,0 +1,10 @@ +as yet unclassified +path + + | path entry | + path := OrderedCollection new. + entry := self. + [entry notNil] whileTrue: [ + path addFirst: entry. + entry := entry parent]. + ^ path \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/pathWithResolvedOutOfStackJumps..st b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/pathWithResolvedOutOfStackJumps..st new file mode 100644 index 00000000..78ddd3cb --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/pathWithResolvedOutOfStackJumps..st @@ -0,0 +1,14 @@ +as yet unclassified +pathWithResolvedOutOfStackJumps: aBPCallgraph + + | path entry | + path := OrderedCollection new. + entry := self. + [entry notNil] whileTrue: [ + entry class == BPCallgraphEntryReenter ifTrue: [ + "path addFirst: #contextJump." + entry := aBPCallgraph detect: [:each | + each class == BPCallgraphEntryEnter and: [each equalsClassSelectorBlockIdxInvocation: entry]]]. + path addFirst: entry. + entry := entry parent]. + ^ path \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/pathWithoutContextMovingRight.st b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/pathWithoutContextMovingRight.st new file mode 100644 index 00000000..b1781707 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/pathWithoutContextMovingRight.st @@ -0,0 +1,14 @@ +as yet unclassified +pathWithoutContextMovingRight + + | path entry | + path := OrderedCollection new. + entry := self. + [entry notNil] whileTrue: [ + entry class == BPCallgraphEntryReenter ifTrue: [| target | + target := entry executionContinuationEntry. + path addFirst: target. + entry := target contextSenderChangedEntry]. + path addFirst: entry. + entry := entry parent]. + ^ path \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/printForLatexOn..st b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/printForLatexOn..st new file mode 100644 index 00000000..fb792d5a --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/printForLatexOn..st @@ -0,0 +1,17 @@ +as yet unclassified +printForLatexOn: aStream + + aStream + nextPutAll: (String new: self path size withAll: Character tab); + nextPutAll: '['; + nextPutAll: self latexLabel; + nextPutAll: ','; + nextPutAll: self latexAttributes; + cr. + + self children do: [:child | child printForLatexOn: aStream]. + + aStream + nextPutAll: (String new: self path size withAll: Character tab); + nextPutAll: ']'; + cr \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/printOn..st b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/printOn..st new file mode 100644 index 00000000..58c9319b --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/printOn..st @@ -0,0 +1,4 @@ +as yet unclassified +printOn: aStream + + aStream nextPutAll: self identityHash asString, ': ', self label \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/root.st b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/root.st new file mode 100644 index 00000000..16f0e87b --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/root.st @@ -0,0 +1,7 @@ +as yet unclassified +root + + | root | + root := self. + [root parent notNil] whileTrue: [root := root parent]. + ^ root \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/selfOrParentMethodBlockOfBPProbeOrAssertion.st b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/selfOrParentMethodBlockOfBPProbeOrAssertion.st new file mode 100644 index 00000000..3a09ba8c --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/selfOrParentMethodBlockOfBPProbeOrAssertion.st @@ -0,0 +1,4 @@ +as yet unclassified +selfOrParentMethodBlockOfBPProbeOrAssertion + + ^ self \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/textColor.st b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/textColor.st new file mode 100644 index 00000000..a7f36ae3 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/textColor.st @@ -0,0 +1,4 @@ +as yet unclassified +textColor + + ^ nil \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/visualizationLabel.st b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/visualizationLabel.st new file mode 100644 index 00000000..f62d1b65 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/visualizationLabel.st @@ -0,0 +1,4 @@ +as yet unclassified +visualizationLabel + + ^ self label \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntry.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntry.class/methodProperties.json new file mode 100644 index 00000000..94cf5c25 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/methodProperties.json @@ -0,0 +1,27 @@ +{ + "class" : { + }, + "instance" : { + "addChild:" : "cmfcmf 10/27/2020 14:01", + "asPathPart" : "cmfcmf 1/4/2021 14:38", + "children" : "cmfcmf 11/10/2020 12:16", + "doBrowse" : "cmfcmf 10/23/2020 15:42", + "hasChildren" : "cmfcmf 10/22/2020 14:15", + "icon" : "cmfcmf 10/23/2020 17:05", + "initialize" : "cmfcmf 10/22/2020 14:10", + "keyPressed:" : "cmfcmf 10/23/2020 15:51", + "label" : "cmfcmf 10/22/2020 13:43", + "latexAttributes" : "cmfcmf 1/2/2021 15:46", + "latexLabel" : "cmfcmf 1/2/2021 15:51", + "menu:" : "cmfcmf 11/9/2020 16:44", + "parent" : "cmfcmf 10/27/2020 14:10", + "parent:" : "cmfcmf 10/27/2020 14:01", + "path" : "cmfcmf 10/27/2020 16:31", + "pathWithResolvedOutOfStackJumps:" : "cmfcmf 1/8/2021 16:30", + "pathWithoutContextMovingRight" : "cmfcmf 1/8/2021 16:30", + "printForLatexOn:" : "cmfcmf 1/4/2021 14:01", + "printOn:" : "cmfcmf 11/2/2020 17:33", + "root" : "cmfcmf 10/27/2020 16:20", + "selfOrParentMethodBlockOfBPProbeOrAssertion" : "cmfcmf 11/10/2020 12:17", + "textColor" : "cmfcmf 10/23/2020 16:14", + "visualizationLabel" : "cmfcmf 11/5/2020 13:17" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntry.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphEntry.class/properties.json new file mode 100644 index 00000000..23c67e00 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Babylonian-Core-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "children", + "parent" ], + "name" : "BPCallgraphEntry", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPAssertion.class/README.md b/packages/Babylonian-Core.package/BPCallgraphEntryBPAssertion.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPAssertion.class/instance/asPathPart.st b/packages/Babylonian-Core.package/BPCallgraphEntryBPAssertion.class/instance/asPathPart.st new file mode 100644 index 00000000..fa70db45 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPAssertion.class/instance/asPathPart.st @@ -0,0 +1,7 @@ +as yet unclassified +asPathPart + + ^ BPCallgraphPathBabylonianAssertion new + id: self id; + methodReference: self methodReference; + yourself \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPAssertion.class/instance/icon.st b/packages/Babylonian-Core.package/BPCallgraphEntryBPAssertion.class/instance/icon.st new file mode 100644 index 00000000..6b406edb --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPAssertion.class/instance/icon.st @@ -0,0 +1,4 @@ +as yet unclassified +icon + + ^ self traceValue tracedValue ifTrue: [ToolIcons testGreen] ifFalse: [ToolIcons testOrange] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPAssertion.class/instance/label.st b/packages/Babylonian-Core.package/BPCallgraphEntryBPAssertion.class/instance/label.st new file mode 100644 index 00000000..776296ca --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPAssertion.class/instance/label.st @@ -0,0 +1,10 @@ +as yet unclassified +label + + ^ String streamContents: [:s | s + nextPutAll: 'Assertion hit'; + tab; + nextPutAll: (self traceValue tracedValue ifTrue: ['passed'] ifFalse: ['failed']); + tab; + nextPutAll: 'id: '; + nextPutAll: self id asString "assertion id"] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPAssertion.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryBPAssertion.class/methodProperties.json new file mode 100644 index 00000000..37624598 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPAssertion.class/methodProperties.json @@ -0,0 +1,7 @@ +{ + "class" : { + }, + "instance" : { + "asPathPart" : "cmfcmf 11/4/2020 14:28", + "icon" : "cmfcmf 10/28/2020 11:04", + "label" : "cmfcmf 10/28/2020 12:10" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPAssertion.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphEntryBPAssertion.class/properties.json new file mode 100644 index 00000000..cce9ef39 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPAssertion.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Core-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPCallgraphEntryBPAssertion", + "pools" : [ + ], + "super" : "BPCallgraphEntryBPProbeOrAssertion", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/README.md b/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/instance/alternateLabel.st b/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/instance/alternateLabel.st new file mode 100644 index 00000000..ce5470c5 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/instance/alternateLabel.st @@ -0,0 +1,6 @@ +as yet unclassified +alternateLabel + + + + ^ self label \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/instance/asPathPart.st b/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/instance/asPathPart.st new file mode 100644 index 00000000..f4d4bbde --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/instance/asPathPart.st @@ -0,0 +1,6 @@ +as yet unclassified +asPathPart + + ^ BPCallgraphPathBabylonianExample new + example: self example; + yourself \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/instance/doBrowse.st b/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/instance/doBrowse.st new file mode 100644 index 00000000..b4d36d88 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/instance/doBrowse.st @@ -0,0 +1,12 @@ +as yet unclassified +doBrowse + + | browser | + "indirect through methodReference to call browse on the CSLayeredMethod instead of the CompiledMethod (otherwise the browser will not be able to open correctly)" + browser := self example method methodReference browse. + (browser isKindOf: BPBrowser) ifTrue: [ + browser allAnnotationsMorphs + detect: [:each | each isKindOf: BPExamplesMorph] + ifFound: [:examplesMorph | examplesMorph submorphs + detect: [:each | each example == self example] + ifFound: [:morph | morph highlightForDrop]]] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/instance/example.st b/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/instance/example.st new file mode 100644 index 00000000..34e494f4 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/instance/example.st @@ -0,0 +1,4 @@ +as yet unclassified +example + + ^ data \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/instance/iconForId.st b/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/instance/iconForId.st new file mode 100644 index 00000000..ae120c36 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/instance/iconForId.st @@ -0,0 +1,6 @@ +as yet unclassified +iconForId + + + + ^ ToolIcons blank \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/instance/label.st b/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/instance/label.st new file mode 100644 index 00000000..816a8f0d --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/instance/label.st @@ -0,0 +1,6 @@ +as yet unclassified +label + + + + ^ self example asString, String tab, String tab \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/instance/methodReference.st b/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/instance/methodReference.st new file mode 100644 index 00000000..edc4bcb8 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/instance/methodReference.st @@ -0,0 +1,4 @@ +as yet unclassified +methodReference + + ^ self example method asCodeReference \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/methodProperties.json new file mode 100644 index 00000000..85da0815 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/methodProperties.json @@ -0,0 +1,11 @@ +{ + "class" : { + }, + "instance" : { + "alternateLabel" : "cmfcmf 10/28/2020 12:42", + "asPathPart" : "cmfcmf 11/4/2020 14:22", + "doBrowse" : "cmfcmf 10/28/2020 13:16", + "example" : "cmfcmf 10/28/2020 12:34", + "iconForId" : "cmfcmf 10/28/2020 12:38", + "label" : "cmfcmf 10/28/2020 12:38", + "methodReference" : "cmfcmf 10/30/2020 14:48" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/properties.json new file mode 100644 index 00000000..feb63638 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Core-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPCallgraphEntryBPExample", + "pools" : [ + ], + "super" : "BPCallgraphEntryBabylonian", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/README.md b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/instance/asPathPart.st b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/instance/asPathPart.st new file mode 100644 index 00000000..db6711c6 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/instance/asPathPart.st @@ -0,0 +1,7 @@ +as yet unclassified +asPathPart + + ^ BPCallgraphPathBabylonianProbe new + id: self id; + methodReference: self methodReference; + yourself \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/instance/icon.st b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/instance/icon.st new file mode 100644 index 00000000..1990af0d --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/instance/icon.st @@ -0,0 +1,4 @@ +as yet unclassified +icon + + ^ (BPEmojis emojiFor: self traceValue tracedValue) scaledToSize: 12 \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/instance/label.st b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/instance/label.st new file mode 100644 index 00000000..53fc12b6 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/instance/label.st @@ -0,0 +1,11 @@ +as yet unclassified +label + + ^ String streamContents: [:s | s + nextPutAll: 'Probe hit'; + tab; + nextPutAll: ''; + nextPutAll: (self traceValue tracedValue printStringLimitedTo: 300); + tab; + nextPutAll: '<- '; + nextPutAll: self enclosedSourceCode] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/methodProperties.json new file mode 100644 index 00000000..03f4bc05 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/methodProperties.json @@ -0,0 +1,7 @@ +{ + "class" : { + }, + "instance" : { + "asPathPart" : "cmfcmf 11/4/2020 14:28", + "icon" : "cmfcmf 10/28/2020 11:04", + "label" : "pre 3/2/2021 18:18" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/properties.json new file mode 100644 index 00000000..ab237153 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Core-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPCallgraphEntryBPProbe", + "pools" : [ + ], + "super" : "BPCallgraphEntryBPProbeOrAssertion", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/README.md b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/alternateLabel.st b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/alternateLabel.st new file mode 100644 index 00000000..049791bc --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/alternateLabel.st @@ -0,0 +1,13 @@ +as yet unclassified +alternateLabel + + | parts method | + + parts := self label splitBy: String tab. + method := self traceValue methodReference classSymbol, + ' >> #', + self traceValue methodReference methodSymbol. + + ^ ('' asText), parts first, ' (', parts third, ') at ', (method asText + addAttribute: TextEmphasis italic; + yourself), ' | ', parts second \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/doBrowse.st b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/doBrowse.st new file mode 100644 index 00000000..b381b341 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/doBrowse.st @@ -0,0 +1,7 @@ +as yet unclassified +doBrowse + + | browser | + browser := self traceValue methodReference browse. + (browser isKindOf: BPBrowser) ifTrue: [ + browser allAnnotationsMorphs detect: [:each | each id == self id] ifFound: [:morph | morph blinkFor: 2 seconds]] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/enclosedSourceCode.st b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/enclosedSourceCode.st new file mode 100644 index 00000000..aa994053 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/enclosedSourceCode.st @@ -0,0 +1,13 @@ +as yet unclassified +enclosedSourceCode + + "Copied from BPCallGraphPathPart" + + | action source annotation annotations | + enclosedSourceCode ifNotNil: [^ enclosedSourceCode]. + + action := BPSmalltalkGrammar semanticAction: BPExtractAnnotations new. + source := self methodReference compiledMethod getSource asString. + annotations := action value: (BPCompiler new parse: source). + annotation := annotations detect: [:each | each id == self id] ifNone: [^ '???']. + ^ enclosedSourceCode := annotation enclosedExpressionSource \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/iconForId.st b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/iconForId.st new file mode 100644 index 00000000..0eb3fd95 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/iconForId.st @@ -0,0 +1,4 @@ +as yet unclassified +iconForId + + ^ (BPEmojis emojiFor: self id) scaledToSize: 12 \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/id.st b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/id.st new file mode 100644 index 00000000..fdb2e04b --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/id.st @@ -0,0 +1,4 @@ +as yet unclassified +id + + ^ data key \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/keyPressed..st b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/keyPressed..st new file mode 100644 index 00000000..25eec1b5 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/keyPressed..st @@ -0,0 +1,6 @@ +as yet unclassified +keyPressed: aChar + + aChar == $b ifTrue: [self doBrowse]. + aChar == $i ifTrue: [self traceValue tracedValue inspect]. + aChar == $I ifTrue: [self traceValue tracedValue explore]. \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/methodReference.st b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/methodReference.st new file mode 100644 index 00000000..e00d77d6 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/methodReference.st @@ -0,0 +1,4 @@ +as yet unclassified +methodReference + + ^ self traceValue methodReference \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/selfOrParentMethodBlockOfBPProbeOrAssertion.st b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/selfOrParentMethodBlockOfBPProbeOrAssertion.st new file mode 100644 index 00000000..9de2dea3 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/selfOrParentMethodBlockOfBPProbeOrAssertion.st @@ -0,0 +1,4 @@ +as yet unclassified +selfOrParentMethodBlockOfBPProbeOrAssertion + + ^ (parent notNil and: [parent methodReference = self methodReference]) ifTrue: [parent] ifFalse: [self] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/traceValue.st b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/traceValue.st new file mode 100644 index 00000000..177b8a42 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/traceValue.st @@ -0,0 +1,4 @@ +as yet unclassified +traceValue + + ^ data value \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/methodProperties.json new file mode 100644 index 00000000..85045d3f --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/methodProperties.json @@ -0,0 +1,13 @@ +{ + "class" : { + }, + "instance" : { + "alternateLabel" : "cmfcmf 11/4/2020 14:39", + "doBrowse" : "cmfcmf 10/28/2020 13:05", + "enclosedSourceCode" : "pre 3/2/2021 18:17", + "iconForId" : "cmfcmf 10/28/2020 12:33", + "id" : "cmfcmf 10/28/2020 12:33", + "keyPressed:" : "cmfcmf 10/28/2020 13:07", + "methodReference" : "cmfcmf 10/30/2020 14:48", + "selfOrParentMethodBlockOfBPProbeOrAssertion" : "cmfcmf 11/10/2020 12:17", + "traceValue" : "cmfcmf 10/28/2020 12:33" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/properties.json new file mode 100644 index 00000000..b1720a6f --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Core-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "enclosedSourceCode" ], + "name" : "BPCallgraphEntryBPProbeOrAssertion", + "pools" : [ + ], + "super" : "BPCallgraphEntryBabylonian", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/README.md b/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/instance/alternateLabel.st b/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/instance/alternateLabel.st new file mode 100644 index 00000000..400b86ac --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/instance/alternateLabel.st @@ -0,0 +1,4 @@ +as yet unclassified +alternateLabel + + self subclassResponsibility \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/instance/doBrowse.st b/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/instance/doBrowse.st new file mode 100644 index 00000000..74064d44 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/instance/doBrowse.st @@ -0,0 +1,6 @@ +as yet unclassified +doBrowse + + + + self subclassResponsibility \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/instance/iconForId.st b/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/instance/iconForId.st new file mode 100644 index 00000000..d2408fec --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/instance/iconForId.st @@ -0,0 +1,4 @@ +as yet unclassified +iconForId + + self subclassResponsibility \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/instance/methodReference.st b/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/instance/methodReference.st new file mode 100644 index 00000000..dba2bbc0 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/instance/methodReference.st @@ -0,0 +1,4 @@ +as yet unclassified +methodReference + + self subclassResponsibility \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/methodProperties.json new file mode 100644 index 00000000..0afaea00 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/methodProperties.json @@ -0,0 +1,8 @@ +{ + "class" : { + }, + "instance" : { + "alternateLabel" : "cmfcmf 10/28/2020 12:36", + "doBrowse" : "cmfcmf 10/28/2020 12:36", + "iconForId" : "cmfcmf 10/28/2020 12:37", + "methodReference" : "cmfcmf 10/30/2020 14:48" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/properties.json new file mode 100644 index 00000000..ec7b1c28 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Core-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPCallgraphEntryBabylonian", + "pools" : [ + ], + "super" : "BPCallgraphEntryCustomEvent", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/README.md b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/class/textColor.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/class/textColor.st new file mode 100644 index 00000000..c035be89 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/class/textColor.st @@ -0,0 +1,4 @@ +as yet unclassified +textColor + + ^ Color orchid \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/asPathPart.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/asPathPart.st new file mode 100644 index 00000000..10dcea0a --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/asPathPart.st @@ -0,0 +1,5 @@ +as yet unclassified +asPathPart + + + ^ BPCallgraphPathContextExecutionContinuation new \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/contextSenderChangedEntry..st b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/contextSenderChangedEntry..st new file mode 100644 index 00000000..57062f41 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/contextSenderChangedEntry..st @@ -0,0 +1,4 @@ +as yet unclassified +contextSenderChangedEntry: aBPCallgraphEntryContextSenderChanged + + contextSenderChangedEntry := aBPCallgraphEntryContextSenderChanged \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/contextSenderChangedEntry.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/contextSenderChangedEntry.st new file mode 100644 index 00000000..95042799 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/contextSenderChangedEntry.st @@ -0,0 +1,4 @@ +as yet unclassified +contextSenderChangedEntry + + ^ contextSenderChangedEntry \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/doBrowse.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/doBrowse.st new file mode 100644 index 00000000..34d7ada0 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/doBrowse.st @@ -0,0 +1,5 @@ +as yet unclassified +doBrowse + + "cannot be browsed" + self shouldNotImplement \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/label.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/label.st new file mode 100644 index 00000000..cc877632 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/label.st @@ -0,0 +1,4 @@ +as yet unclassified +label + + ^ 'Execution continues here', String tab \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/latexAttributes.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/latexAttributes.st new file mode 100644 index 00000000..3df702bb --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/latexAttributes.st @@ -0,0 +1,4 @@ +as yet unclassified +latexAttributes + + ^ 'ctx' \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/menu..st b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/menu..st new file mode 100644 index 00000000..9d6afd52 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/menu..st @@ -0,0 +1,5 @@ +as yet unclassified +menu: aMenuMorph + + aMenuMorph add: 'go to context sender change' action: #selectContextSenderChange. + super menu: aMenuMorph. \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/textColor.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/textColor.st new file mode 100644 index 00000000..febcf13e --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/textColor.st @@ -0,0 +1,5 @@ +as yet unclassified +textColor + + + ^ self class textColor \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/methodProperties.json new file mode 100644 index 00000000..cc114bcd --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/methodProperties.json @@ -0,0 +1,12 @@ +{ + "class" : { + "textColor" : "cmfcmf 11/3/2020 12:51" }, + "instance" : { + "asPathPart" : "cmfcmf 11/3/2020 13:44", + "contextSenderChangedEntry" : "cmfcmf 11/2/2020 17:15", + "contextSenderChangedEntry:" : "cmfcmf 11/2/2020 17:15", + "doBrowse" : "cmfcmf 10/23/2020 15:42", + "label" : "cmfcmf 10/26/2020 12:09", + "latexAttributes" : "cmfcmf 1/2/2021 15:47", + "menu:" : "cmfcmf 11/9/2020 16:43", + "textColor" : "cmfcmf 11/3/2020 12:52" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/properties.json new file mode 100644 index 00000000..4b2f684c --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Core-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "contextSenderChangedEntry" ], + "name" : "BPCallgraphEntryContextExecutionContinuation", + "pools" : [ + ], + "super" : "BPCallgraphEntry", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/README.md b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/class/textColor.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/class/textColor.st new file mode 100644 index 00000000..741fdcd4 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/class/textColor.st @@ -0,0 +1,4 @@ +as yet unclassified +textColor + + ^ BPCallgraphEntryContextExecutionContinuation textColor \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/asPathPart.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/asPathPart.st new file mode 100644 index 00000000..dc1bf187 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/asPathPart.st @@ -0,0 +1,5 @@ +as yet unclassified +asPathPart + + + ^ BPCallgraphPathContextSenderChanged new \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/depthDelta.inChain.hasActiveTracing.executionContinuationEntry..st b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/depthDelta.inChain.hasActiveTracing.executionContinuationEntry..st new file mode 100644 index 00000000..eff2ae98 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/depthDelta.inChain.hasActiveTracing.executionContinuationEntry..st @@ -0,0 +1,8 @@ +as yet unclassified +depthDelta: theDepthDelta inChain: isInChain hasActiveTracing: tracing executionContinuationEntry: entry + + depthDelta := theDepthDelta. + inChain := isInChain. + hasActiveTracing := tracing. + executionContinuationEntry := entry. + entry contextSenderChangedEntry: self \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/doBrowse.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/doBrowse.st new file mode 100644 index 00000000..34d7ada0 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/doBrowse.st @@ -0,0 +1,5 @@ +as yet unclassified +doBrowse + + "cannot be browsed" + self shouldNotImplement \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/executionContinuationEntry.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/executionContinuationEntry.st new file mode 100644 index 00000000..46291813 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/executionContinuationEntry.st @@ -0,0 +1,4 @@ +as yet unclassified +executionContinuationEntry + + ^ executionContinuationEntry \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/label.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/label.st new file mode 100644 index 00000000..767deb0e --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/label.st @@ -0,0 +1,4 @@ +as yet unclassified +label + + ^ 'Context sender changed', String tab, inChain asString \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/latexAttributes.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/latexAttributes.st new file mode 100644 index 00000000..68d5eb29 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/latexAttributes.st @@ -0,0 +1,4 @@ +as yet unclassified +latexAttributes + + ^ 'ctx' \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/menu..st b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/menu..st new file mode 100644 index 00000000..e21f53d2 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/menu..st @@ -0,0 +1,5 @@ +as yet unclassified +menu: aMenuMorph + + aMenuMorph add: 'go to execution continuation' action: #selectExecutionContinuation. + super menu: aMenuMorph. \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/textColor.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/textColor.st new file mode 100644 index 00000000..85d661bd --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/textColor.st @@ -0,0 +1,4 @@ +as yet unclassified +textColor + + ^ self class textColor \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/methodProperties.json new file mode 100644 index 00000000..f9dc4e1d --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/methodProperties.json @@ -0,0 +1,12 @@ +{ + "class" : { + "textColor" : "cmfcmf 11/4/2020 13:17" }, + "instance" : { + "asPathPart" : "cmfcmf 11/3/2020 13:44", + "depthDelta:inChain:hasActiveTracing:executionContinuationEntry:" : "cmfcmf 1/2/2021 14:31", + "doBrowse" : "cmfcmf 10/23/2020 15:42", + "executionContinuationEntry" : "cmfcmf 11/2/2020 17:13", + "label" : "cmfcmf 1/3/2021 23:26", + "latexAttributes" : "cmfcmf 1/2/2021 15:47", + "menu:" : "cmfcmf 11/9/2020 16:43", + "textColor" : "cmfcmf 11/4/2020 13:18" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/properties.json new file mode 100644 index 00000000..c9ff2f43 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/properties.json @@ -0,0 +1,17 @@ +{ + "category" : "Babylonian-Core-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "depthDelta", + "inChain", + "hasActiveTracing", + "executionContinuationEntry" ], + "name" : "BPCallgraphEntryContextSenderChanged", + "pools" : [ + ], + "super" : "BPCallgraphEntry", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/README.md b/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/class/textColor.st b/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/class/textColor.st new file mode 100644 index 00000000..486d018c --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/class/textColor.st @@ -0,0 +1,4 @@ +as yet unclassified +textColor + + ^ Color tangerine \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/asPathPart.st b/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/asPathPart.st new file mode 100644 index 00000000..6bbfb67c --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/asPathPart.st @@ -0,0 +1,5 @@ +as yet unclassified +asPathPart + + self flag: #todo. + ^ BPCallgraphPathCustomEvent new \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/data.st b/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/data.st new file mode 100644 index 00000000..f00b12c4 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/data.st @@ -0,0 +1,4 @@ +as yet unclassified +data + + ^ data \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/doBrowse.st b/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/doBrowse.st new file mode 100644 index 00000000..10686c4f --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/doBrowse.st @@ -0,0 +1,4 @@ +as yet unclassified +doBrowse + + self subclassResponsibility \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/label.st b/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/label.st new file mode 100644 index 00000000..9c637608 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/label.st @@ -0,0 +1,9 @@ +as yet unclassified +label + + ^ String streamContents: [:s | s + nextPutAll: 'Custom Event'; + tab; + nextPutAll: type; + tab; + nextPutAll: (data printStringLimitedTo: 300)] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/menu..st b/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/menu..st new file mode 100644 index 00000000..2b2ccf11 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/menu..st @@ -0,0 +1,6 @@ +as yet unclassified +menu: aMenuMorph + + aMenuMorph add: 'next custom event' action: #selectNextCustomEvent. + aMenuMorph add: 'prev custom event' action: #selectPrevCustomEvent. + ^ aMenuMorph \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/textColor.st b/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/textColor.st new file mode 100644 index 00000000..febcf13e --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/textColor.st @@ -0,0 +1,5 @@ +as yet unclassified +textColor + + + ^ self class textColor \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/type.data..st b/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/type.data..st new file mode 100644 index 00000000..f7262d6f --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/type.data..st @@ -0,0 +1,5 @@ +as yet unclassified +type: aSymbol data: anObject + + type := aSymbol. + data := anObject \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/type.st b/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/type.st new file mode 100644 index 00000000..034a408c --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/type.st @@ -0,0 +1,4 @@ +as yet unclassified +type + + ^ type \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/methodProperties.json new file mode 100644 index 00000000..b251e65f --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/methodProperties.json @@ -0,0 +1,12 @@ +{ + "class" : { + "textColor" : "cmfcmf 11/4/2020 14:25" }, + "instance" : { + "asPathPart" : "cmfcmf 11/3/2020 14:45", + "data" : "cmfcmf 10/28/2020 10:56", + "doBrowse" : "cmfcmf 10/28/2020 11:45", + "label" : "cmfcmf 10/28/2020 10:56", + "menu:" : "cmfcmf 10/27/2020 16:16", + "textColor" : "cmfcmf 11/4/2020 14:25", + "type" : "cmfcmf 10/27/2020 14:50", + "type:data:" : "cmfcmf 10/23/2020 15:00" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/properties.json new file mode 100644 index 00000000..9f37606a --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Babylonian-Core-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "type", + "data" ], + "name" : "BPCallgraphEntryCustomEvent", + "pools" : [ + ], + "super" : "BPCallgraphEntry", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/README.md b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/class/textColor.st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/class/textColor.st new file mode 100644 index 00000000..b5cdbd42 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/class/textColor.st @@ -0,0 +1,4 @@ +as yet unclassified +textColor + + ^ nil \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/asPathPart.st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/asPathPart.st new file mode 100644 index 00000000..9ebe8831 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/asPathPart.st @@ -0,0 +1,5 @@ +as yet unclassified +asPathPart + + + ^ BPCallgraphPathMethodExecution class: class selector: selector blockIdx: blockIndex \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/class.selector.blockIdx.invocationCount..st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/class.selector.blockIdx.invocationCount..st new file mode 100644 index 00000000..769781a3 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/class.selector.blockIdx.invocationCount..st @@ -0,0 +1,9 @@ +as yet unclassified +class: theClass selector: theSelector blockIdx: theBlockIdx invocationCount: theInvocationCount + + class := (theClass endsWith: ' class') + ifTrue: [(Smalltalk at: (theClass splitBy: ' ') first asSymbol) class] + ifFalse: [Smalltalk at: theClass asSymbol]. + selector := theSelector asSymbol. + blockIndex := theBlockIdx. + invocationCount := theInvocationCount \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/class.selector.blockIdx.invocationCount.senderPC.senderMethod..st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/class.selector.blockIdx.invocationCount.senderPC.senderMethod..st new file mode 100644 index 00000000..1edbd1a2 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/class.selector.blockIdx.invocationCount.senderPC.senderMethod..st @@ -0,0 +1,11 @@ +as yet unclassified +class: theClass selector: theSelector blockIdx: theBlockIdx invocationCount: theInvocationCount senderPC: pc senderMethod: aMethod + + class := (theClass endsWith: ' class') + ifTrue: [(Smalltalk at: (theClass splitBy: ' ') first asSymbol) class] + ifFalse: [Smalltalk at: theClass asSymbol]. + selector := theSelector asSymbol. + blockIndex := theBlockIdx. + invocationCount := theInvocationCount. + senderPC := pc. + senderMethod := aMethod. \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/doBrowse.st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/doBrowse.st new file mode 100644 index 00000000..6e602630 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/doBrowse.st @@ -0,0 +1,4 @@ +as yet unclassified +doBrowse + + self methodReference browse \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/equalsClassSelector..st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/equalsClassSelector..st new file mode 100644 index 00000000..a8cc73b6 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/equalsClassSelector..st @@ -0,0 +1,4 @@ +comparing +equalsClassSelector: aBPCallgraphEntryEnter + + ^ (class == aBPCallgraphEntryEnter getClass) and: [selector == aBPCallgraphEntryEnter getSelector] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/equalsClassSelectorBlockIdx..st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/equalsClassSelectorBlockIdx..st new file mode 100644 index 00000000..d9609abf --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/equalsClassSelectorBlockIdx..st @@ -0,0 +1,4 @@ +comparing +equalsClassSelectorBlockIdx: aBPCallgraphEntryEnter + + ^ (self equalsClassSelector: aBPCallgraphEntryEnter) and: [blockIndex == aBPCallgraphEntryEnter getBlockIdx] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/equalsClassSelectorBlockIdxInvocation..st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/equalsClassSelectorBlockIdxInvocation..st new file mode 100644 index 00000000..da5258dd --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/equalsClassSelectorBlockIdxInvocation..st @@ -0,0 +1,4 @@ +comparing +equalsClassSelectorBlockIdxInvocation: aBPCallgraphEntryEnter + + ^ (self equalsClassSelectorBlockIdx: aBPCallgraphEntryEnter) and: [invocationCount == aBPCallgraphEntryEnter getInvocationCount] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/getBlockIdx.st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/getBlockIdx.st new file mode 100644 index 00000000..ca47be5a --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/getBlockIdx.st @@ -0,0 +1,4 @@ +accessing +getBlockIdx + + ^ blockIndex \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/getClass.st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/getClass.st new file mode 100644 index 00000000..b78e9722 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/getClass.st @@ -0,0 +1,4 @@ +accessing +getClass + + ^ class \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/getInvocationCount.st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/getInvocationCount.st new file mode 100644 index 00000000..4e7607d8 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/getInvocationCount.st @@ -0,0 +1,4 @@ +accessing +getInvocationCount + + ^ invocationCount \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/getSelector.st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/getSelector.st new file mode 100644 index 00000000..37fcf6e8 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/getSelector.st @@ -0,0 +1,4 @@ +accessing +getSelector + + ^ selector \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/icon.st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/icon.st new file mode 100644 index 00000000..e674d622 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/icon.st @@ -0,0 +1,4 @@ +as yet unclassified +icon + + ^ nil \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/label.st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/label.st new file mode 100644 index 00000000..6a6378c7 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/label.st @@ -0,0 +1,17 @@ +as yet unclassified +label + + ^ String streamContents: [:s | + s + nextPutAll: class asString; + nextPutAll: ' #'; + nextPutAll: selector. + blockIndex > 1 ifTrue: [ + s + nextPutAll: ' ['; + nextPutAll: (blockIndex - 1) asString; + nextPut: $]]. + s + tab; + nextPutAll: 'ctx: '; + nextPutAll: invocationCount asString] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/latexLabel.st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/latexLabel.st new file mode 100644 index 00000000..75b37f1b --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/latexLabel.st @@ -0,0 +1,15 @@ +as yet unclassified +latexLabel + + ^ String streamContents: [:s | + s + nextPutAll: '\lstinline{'; + nextPutAll: class asString; + nextPutAll: '} \\ \lstinline{'; + nextPutAll: selector. + blockIndex > 1 ifTrue: [ + s + nextPutAll: ' ['; + nextPutAll: (blockIndex - 1) asString; + nextPut: $]]. + s nextPutAll: '}'] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/menu..st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/menu..st new file mode 100644 index 00000000..aaf8abf1 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/menu..st @@ -0,0 +1,24 @@ +as yet unclassified +menu: aMenuMorph + + aMenuMorph add: 'find next call to this method' action: #selectNextMethodCall. + aMenuMorph add: 'find prev call to this method' action: #selectPrevMethodCall. + + blockIndex > 1 ifTrue: [ + aMenuMorph addLine. + aMenuMorph add: 'find next call to this block' action: #selectNextBlockCall. + aMenuMorph add: 'find prev call to this block' action: #selectPrevBlockCall. + aMenuMorph addLine. + aMenuMorph add: 'find next call to this block in same context' action: #selectNextBlockCallInSameContext. + aMenuMorph add: 'find prev call to this block in same context' action: #selectPrevBlockCallInSameContext]. + + aMenuMorph addLine. + + blockIndex > 1 ifTrue: [aMenuMorph add: 'find block exit' action: #selectCorrespondingBlockExit]. + aMenuMorph add: 'find method exit' action: #selectCorrespondingMethodExit. + + aMenuMorph addLine. + aMenuMorph add: 'find common ancestor of all invocations' action: #findCommonAncestorOfAllInvocations. + aMenuMorph add: 'find all procedures called by this invocation (recursively)' action: #selectChildMethodCalls. + + super menu: aMenuMorph \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/methodReference.st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/methodReference.st new file mode 100644 index 00000000..40710310 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/methodReference.st @@ -0,0 +1,4 @@ +accessing +methodReference + + ^ MethodReference class: class selector: selector \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/senderMethod.st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/senderMethod.st new file mode 100644 index 00000000..ca439c7f --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/senderMethod.st @@ -0,0 +1,4 @@ +accessing +senderMethod + + ^ senderMethod \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/senderMethodReference.st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/senderMethodReference.st new file mode 100644 index 00000000..8f2733b4 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/senderMethodReference.st @@ -0,0 +1,4 @@ +accessing +senderMethodReference + + ^ senderMethod methodReference \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/senderPC.st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/senderPC.st new file mode 100644 index 00000000..f1540eff --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/senderPC.st @@ -0,0 +1,4 @@ +accessing +senderPC + + ^ senderPC \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/textColor.st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/textColor.st new file mode 100644 index 00000000..2c9aa79c --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/textColor.st @@ -0,0 +1,4 @@ +as yet unclassified +textColor + + ^ self class textColor \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/methodProperties.json new file mode 100644 index 00000000..d3eb47a7 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/methodProperties.json @@ -0,0 +1,24 @@ +{ + "class" : { + "textColor" : "cmfcmf 11/3/2020 12:53" }, + "instance" : { + "asPathPart" : "cmfcmf 11/3/2020 13:44", + "class:selector:blockIdx:invocationCount:" : "cmfcmf 10/28/2020 13:45", + "class:selector:blockIdx:invocationCount:senderPC:senderMethod:" : "pre 1/20/2021 17:46", + "doBrowse" : "cmfcmf 10/30/2020 14:53", + "equalsClassSelector:" : "cmfcmf 1/4/2021 13:31", + "equalsClassSelectorBlockIdx:" : "cmfcmf 1/4/2021 13:31", + "equalsClassSelectorBlockIdxInvocation:" : "cmfcmf 1/4/2021 13:31", + "getBlockIdx" : "cmfcmf 10/27/2020 16:48", + "getClass" : "cmfcmf 10/27/2020 16:48", + "getInvocationCount" : "cmfcmf 10/27/2020 16:48", + "getSelector" : "cmfcmf 10/27/2020 16:48", + "icon" : "pre 3/11/2021 15:19", + "label" : "cmfcmf 10/26/2020 12:00", + "latexLabel" : "cmfcmf 1/4/2021 13:56", + "menu:" : "cmfcmf 1/4/2021 20:50", + "methodReference" : "cmfcmf 10/30/2020 14:53", + "senderMethod" : "pre 2/22/2021 17:56", + "senderMethodReference" : "pre 2/22/2021 18:20", + "senderPC" : "pre 2/22/2021 17:56", + "textColor" : "cmfcmf 11/3/2020 12:53" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/properties.json new file mode 100644 index 00000000..faa93a26 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/properties.json @@ -0,0 +1,19 @@ +{ + "category" : "Babylonian-Core-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "class", + "selector", + "blockIndex", + "invocationCount", + "senderPC", + "senderMethod" ], + "name" : "BPCallgraphEntryEnter", + "pools" : [ + ], + "super" : "BPCallgraphEntry", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/README.md b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/asPathPart.st b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/asPathPart.st new file mode 100644 index 00000000..71f6000c --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/asPathPart.st @@ -0,0 +1,5 @@ +as yet unclassified +asPathPart + + + self shouldNotImplement \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/class.selector.blockIdx.invocationCount.returns..st b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/class.selector.blockIdx.invocationCount.returns..st new file mode 100644 index 00000000..3f231b50 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/class.selector.blockIdx.invocationCount.returns..st @@ -0,0 +1,5 @@ +as yet unclassified +class: theClass selector: theSelector blockIdx: theBlockIdx invocationCount: theInvocationCount returns: returns + + super class: theClass selector: theSelector blockIdx: theBlockIdx invocationCount: theInvocationCount. + isExplicitReturn := returns \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/label.st b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/label.st new file mode 100644 index 00000000..b13482e8 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/label.st @@ -0,0 +1,4 @@ +as yet unclassified +label + + ^ (isExplicitReturn ifTrue: ['^ '] ifFalse: ['_ ']), super label \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/latexAttributes.st b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/latexAttributes.st new file mode 100644 index 00000000..c702fa7c --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/latexAttributes.st @@ -0,0 +1,6 @@ +as yet unclassified +latexAttributes + + + + ^ 'return_local' \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/latexLabel.st b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/latexLabel.st new file mode 100644 index 00000000..7056e0f8 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/latexLabel.st @@ -0,0 +1,16 @@ +as yet unclassified +latexLabel + + ^ String streamContents: [:s | + s + nextPutAll: '\lstinline{'; + nextPutAll: (isExplicitReturn ifTrue: ['^ '] ifFalse: ['_ ']); + nextPutAll: class asString; + nextPutAll: '} \\ \lstinline{'; + nextPutAll: selector. + blockIndex > 1 ifTrue: [ + s + nextPutAll: ' ['; + nextPutAll: (blockIndex - 1) asString; + nextPut: $]]. + s nextPutAll: '}'] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/menu..st b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/menu..st new file mode 100644 index 00000000..8951e56e --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/menu..st @@ -0,0 +1,6 @@ +as yet unclassified +menu: aMenuMorph + + blockIndex > 1 ifTrue: [aMenuMorph add: 'find block enter' action: #selectCorrespondingBlockEnter]. + aMenuMorph add: 'find method enter' action: #selectCorrespondingMethodEnter. + self perform: #menu: withArguments: {aMenuMorph} inSuperclass: self class superclass superclass \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/textColor.st b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/textColor.st new file mode 100644 index 00000000..870083c9 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/textColor.st @@ -0,0 +1,4 @@ +as yet unclassified +textColor + + ^ Color nickel \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/methodProperties.json new file mode 100644 index 00000000..edb6bb8b --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/methodProperties.json @@ -0,0 +1,11 @@ +{ + "class" : { + }, + "instance" : { + "asPathPart" : "cmfcmf 11/3/2020 13:44", + "class:selector:blockIdx:invocationCount:returns:" : "cmfcmf 10/22/2020 13:42", + "label" : "cmfcmf 1/2/2021 14:48", + "latexAttributes" : "cmfcmf 1/2/2021 16:18", + "latexLabel" : "cmfcmf 1/4/2021 13:56", + "menu:" : "cmfcmf 1/4/2021 20:41", + "textColor" : "cmfcmf 10/23/2020 16:15" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/properties.json new file mode 100644 index 00000000..c0dc0425 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Core-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "isExplicitReturn" ], + "name" : "BPCallgraphEntryExit", + "pools" : [ + ], + "super" : "BPCallgraphEntryEnter", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/README.md b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/class/textColor.st b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/class/textColor.st new file mode 100644 index 00000000..f6ca9c6b --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/class/textColor.st @@ -0,0 +1,4 @@ +as yet unclassified +textColor + + ^ Color nickel muchLighter \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/doBrowse.st b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/doBrowse.st new file mode 100644 index 00000000..34d7ada0 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/doBrowse.st @@ -0,0 +1,5 @@ +as yet unclassified +doBrowse + + "cannot be browsed" + self shouldNotImplement \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/executionContinuationEntry.st b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/executionContinuationEntry.st new file mode 100644 index 00000000..7bb587d4 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/executionContinuationEntry.st @@ -0,0 +1,8 @@ +as yet unclassified +executionContinuationEntry + + | target | + target := self. + [target class == self class] whileTrue: [target := target children first]. + self assert: target class = BPCallgraphEntryContextExecutionContinuation. + ^ target \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/label.st b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/label.st new file mode 100644 index 00000000..c1ab231c --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/label.st @@ -0,0 +1,4 @@ +as yet unclassified +label + + ^ '-> ', super label \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/latexAttributes.st b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/latexAttributes.st new file mode 100644 index 00000000..3df702bb --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/latexAttributes.st @@ -0,0 +1,4 @@ +as yet unclassified +latexAttributes + + ^ 'ctx' \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/latexLabel.st b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/latexLabel.st new file mode 100644 index 00000000..bdf90d3a --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/latexLabel.st @@ -0,0 +1,5 @@ +as yet unclassified +latexLabel + + + ^ '$\rightarrow$ \\ ', super latexLabel \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/menu..st b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/menu..st new file mode 100644 index 00000000..e14155be --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/menu..st @@ -0,0 +1,7 @@ +as yet unclassified +menu: aMenuMorph + + aMenuMorph add: 'go to original call' action: #selectOriginalCall. + aMenuMorph add: 'go to execution continuation' action: #selectExecutionContinuation. + aMenuMorph add: 'go to context sender change' action: #selectContextSenderChange. + super menu: aMenuMorph. \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/textColor.st b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/textColor.st new file mode 100644 index 00000000..85d661bd --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/textColor.st @@ -0,0 +1,4 @@ +as yet unclassified +textColor + + ^ self class textColor \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/methodProperties.json new file mode 100644 index 00000000..3cf90577 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/methodProperties.json @@ -0,0 +1,11 @@ +{ + "class" : { + "textColor" : "cmfcmf 11/3/2020 12:52" }, + "instance" : { + "doBrowse" : "cmfcmf 11/2/2020 17:31", + "executionContinuationEntry" : "cmfcmf 11/2/2020 17:17", + "label" : "cmfcmf 1/4/2021 15:26", + "latexAttributes" : "cmfcmf 1/2/2021 15:47", + "latexLabel" : "cmfcmf 1/4/2021 15:27", + "menu:" : "cmfcmf 1/4/2021 15:28", + "textColor" : "cmfcmf 11/3/2020 12:52" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/properties.json new file mode 100644 index 00000000..b699e961 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Core-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPCallgraphEntryReenter", + "pools" : [ + ], + "super" : "BPCallgraphEntryEnter", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/README.md b/packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/class/forEvents.andResult..st b/packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/class/forEvents.andResult..st new file mode 100644 index 00000000..07f22045 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/class/forEvents.andResult..st @@ -0,0 +1,7 @@ +as yet unclassified +forEvents: aCollection andResult: anObject + + ^ self new + events: aCollection; + result: anObject; + yourself \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/instance/events..st b/packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/instance/events..st new file mode 100644 index 00000000..353967a3 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/instance/events..st @@ -0,0 +1,4 @@ +as yet unclassified +events: aCollection + + events := aCollection \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/instance/eventsToString.st b/packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/instance/eventsToString.st new file mode 100644 index 00000000..c699bef5 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/instance/eventsToString.st @@ -0,0 +1,44 @@ +as yet unclassified +eventsToString + + ^ String streamContents: [:aStream | + events pairsDo: [:event :data | event caseOf: { + [#step] -> [ | current depth methodClass receiverClass | + current := data first. + depth := data second. + + 1 to: depth do: [:i | aStream space]. + "Context carefullyPrint: current receiver on: aStream." + methodClass := current method methodClass. + receiverClass := current receiver class. + + current isClosureContext ifTrue: [aStream nextPutAll: '[] ']. + + aStream nextPutAll: receiverClass name. + receiverClass == methodClass ifFalse: [ + aStream + nextPut: $(; + nextPutAll: methodClass name; + nextPut: $)]. + + aStream + space; + nextPutAll: current selector; + space. + + aStream + nextPutAll: '. + + aStream cr]. + [#probeHit] -> [aStream nextPutAll: 'PROBE HIT: '; nextPutAll: data first asString; cr]. + [#assertionHit] -> [aStream nextPutAll: 'ASSERTION HIT'; nextPutAll: data first asString; cr] + }]. + aStream flush] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/instance/result..st b/packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/instance/result..st new file mode 100644 index 00000000..94de7c81 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/instance/result..st @@ -0,0 +1,4 @@ +as yet unclassified +result: anObject + + result := anObject \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/instance/result.st b/packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/instance/result.st new file mode 100644 index 00000000..20b35927 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/instance/result.st @@ -0,0 +1,4 @@ +as yet unclassified +result + + ^ result \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/instance/trace..st b/packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/instance/trace..st new file mode 100644 index 00000000..89abc902 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/instance/trace..st @@ -0,0 +1,4 @@ +as yet unclassified +trace: aBPTrace + + trace := aBPTrace \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/instance/trace.st b/packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/instance/trace.st new file mode 100644 index 00000000..a01499b7 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/instance/trace.st @@ -0,0 +1,4 @@ +as yet unclassified +trace + + ^ trace \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/methodProperties.json new file mode 100644 index 00000000..271ea4f3 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/methodProperties.json @@ -0,0 +1,10 @@ +{ + "class" : { + "forEvents:andResult:" : "cmfcmf 9/23/2020 13:14" }, + "instance" : { + "events:" : "cmfcmf 9/23/2020 13:00", + "eventsToString" : "cmfcmf 10/6/2020 14:27", + "result" : "cmfcmf 9/23/2020 13:16", + "result:" : "cmfcmf 9/23/2020 13:14", + "trace" : "cmfcmf 9/23/2020 13:24", + "trace:" : "cmfcmf 9/23/2020 13:24" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/properties.json new file mode 100644 index 00000000..c3826181 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/properties.json @@ -0,0 +1,16 @@ +{ + "category" : "Babylonian-Core-Callgraph-Simulator", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "events", + "result", + "trace" ], + "name" : "BPCallgraphFromSimulator", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonian.class/README.md b/packages/Babylonian-Core.package/BPCallgraphPathBabylonian.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonian.class/instance/doBrowse.st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonian.class/instance/doBrowse.st new file mode 100644 index 00000000..6e602630 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonian.class/instance/doBrowse.st @@ -0,0 +1,4 @@ +as yet unclassified +doBrowse + + self methodReference browse \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonian.class/instance/methodReference.st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonian.class/instance/methodReference.st new file mode 100644 index 00000000..ffdfed94 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonian.class/instance/methodReference.st @@ -0,0 +1,4 @@ +as yet unclassified +methodReference + + self subclassResponsibility \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonian.class/instance/textColor.st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonian.class/instance/textColor.st new file mode 100644 index 00000000..db743b27 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonian.class/instance/textColor.st @@ -0,0 +1,4 @@ +as yet unclassified +textColor + + ^ BPCallgraphEntryBabylonian textColor \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonian.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphPathBabylonian.class/methodProperties.json new file mode 100644 index 00000000..2dcd93d6 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonian.class/methodProperties.json @@ -0,0 +1,7 @@ +{ + "class" : { + }, + "instance" : { + "doBrowse" : "cmfcmf 11/4/2020 14:34", + "methodReference" : "cmfcmf 11/4/2020 14:34", + "textColor" : "cmfcmf 11/4/2020 14:25" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonian.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphPathBabylonian.class/properties.json new file mode 100644 index 00000000..9698ad38 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonian.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Core-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPCallgraphPathBabylonian", + "pools" : [ + ], + "super" : "BPCallgraphPathCustomEvent", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianAssertion.class/README.md b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianAssertion.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianAssertion.class/instance/equalsCallgraphEntry..st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianAssertion.class/instance/equalsCallgraphEntry..st new file mode 100644 index 00000000..12c30a82 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianAssertion.class/instance/equalsCallgraphEntry..st @@ -0,0 +1,4 @@ +as yet unclassified +equalsCallgraphEntry: entry + + ^ entry class == BPCallgraphEntryBPAssertion and: [entry id = self id] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianAssertion.class/instance/printOn..st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianAssertion.class/instance/printOn..st new file mode 100644 index 00000000..d4905bf8 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianAssertion.class/instance/printOn..st @@ -0,0 +1,4 @@ +as yet unclassified +printOn: aStream + + self printOn: aStream type: 'A' \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianAssertion.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianAssertion.class/methodProperties.json new file mode 100644 index 00000000..aa507c65 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianAssertion.class/methodProperties.json @@ -0,0 +1,6 @@ +{ + "class" : { + }, + "instance" : { + "equalsCallgraphEntry:" : "cmfcmf 11/10/2020 10:17", + "printOn:" : "cmfcmf 11/4/2020 14:30" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianAssertion.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianAssertion.class/properties.json new file mode 100644 index 00000000..b434fe54 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianAssertion.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Core-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPCallgraphPathBabylonianAssertion", + "pools" : [ + ], + "super" : "BPCallgraphPathBabylonianTraceBased", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/README.md b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/^equals.st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/^equals.st new file mode 100644 index 00000000..9cd9be45 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/^equals.st @@ -0,0 +1,4 @@ +comparing += other + + ^ other class == self class and: [example = other example] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/equalsCallgraphEntry..st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/equalsCallgraphEntry..st new file mode 100644 index 00000000..be881bdf --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/equalsCallgraphEntry..st @@ -0,0 +1,4 @@ +comparing +equalsCallgraphEntry: entry + + ^ entry class == BPCallgraphPathBabylonianExample and: [entry example = self example] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/example..st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/example..st new file mode 100644 index 00000000..18392495 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/example..st @@ -0,0 +1,4 @@ +accessing +example: aBPExample + + example := aBPExample \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/example.st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/example.st new file mode 100644 index 00000000..5da5af96 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/example.st @@ -0,0 +1,4 @@ +accessing +example + + ^ example \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/hash.st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/hash.st new file mode 100644 index 00000000..1ead3527 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/hash.st @@ -0,0 +1,4 @@ +comparing +hash + + ^ example hash \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/icon.st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/icon.st new file mode 100644 index 00000000..06385969 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/icon.st @@ -0,0 +1,4 @@ +accessing +icon + + ^ BPEmojis emojiFor: example \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/methodReference.st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/methodReference.st new file mode 100644 index 00000000..82dcb929 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/methodReference.st @@ -0,0 +1,4 @@ +accessing +methodReference + + ^ self example method asCodeReference \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/printOn..st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/printOn..st new file mode 100644 index 00000000..8a138f3c --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/printOn..st @@ -0,0 +1,4 @@ +printing +printOn: aStream + + example printOn: aStream \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/methodProperties.json new file mode 100644 index 00000000..f56b1eeb --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/methodProperties.json @@ -0,0 +1,12 @@ +{ + "class" : { + }, + "instance" : { + "=" : "cmfcmf 11/4/2020 14:08", + "equalsCallgraphEntry:" : "cmfcmf 11/10/2020 10:11", + "example" : "cmfcmf 11/4/2020 14:08", + "example:" : "cmfcmf 11/4/2020 14:07", + "hash" : "cmfcmf 11/4/2020 14:08", + "icon" : "cmfcmf 11/4/2020 14:32", + "methodReference" : "cmfcmf 11/4/2020 14:33", + "printOn:" : "cmfcmf 11/4/2020 14:26" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/properties.json new file mode 100644 index 00000000..16eb4065 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Core-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "example" ], + "name" : "BPCallgraphPathBabylonianExample", + "pools" : [ + ], + "super" : "BPCallgraphPathBabylonian", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianProbe.class/README.md b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianProbe.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianProbe.class/instance/equalsCallgraphEntry..st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianProbe.class/instance/equalsCallgraphEntry..st new file mode 100644 index 00000000..6e008190 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianProbe.class/instance/equalsCallgraphEntry..st @@ -0,0 +1,4 @@ +as yet unclassified +equalsCallgraphEntry: entry + + ^ entry class == BPCallgraphEntryBPProbe and: [entry id = self id] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianProbe.class/instance/printOn..st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianProbe.class/instance/printOn..st new file mode 100644 index 00000000..d56fc98b --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianProbe.class/instance/printOn..st @@ -0,0 +1,4 @@ +as yet unclassified +printOn: aStream + + self printOn: aStream type: 'P' \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianProbe.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianProbe.class/methodProperties.json new file mode 100644 index 00000000..b8c4a529 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianProbe.class/methodProperties.json @@ -0,0 +1,6 @@ +{ + "class" : { + }, + "instance" : { + "equalsCallgraphEntry:" : "cmfcmf 11/10/2020 10:18", + "printOn:" : "cmfcmf 11/4/2020 14:30" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianProbe.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianProbe.class/properties.json new file mode 100644 index 00000000..4ecdb5cf --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianProbe.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Core-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPCallgraphPathBabylonianProbe", + "pools" : [ + ], + "super" : "BPCallgraphPathBabylonianTraceBased", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/README.md b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/^equals.st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/^equals.st new file mode 100644 index 00000000..8593a540 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/^equals.st @@ -0,0 +1,4 @@ +comparing += other + + ^ (other isKindOf: self class) and: [other id == id] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/enclosedSourceCode.st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/enclosedSourceCode.st new file mode 100644 index 00000000..4ece19a9 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/enclosedSourceCode.st @@ -0,0 +1,16 @@ +accessing +enclosedSourceCode + + "(self compiledMethod partialMethodFor: #bpInstrumented) decompileWithTemps nodesDo: [:node | + (node isMessageNode and: [ + (node selector key == #bpTrace:through:forProbe:inContext: and: [node arguments third key == 2193787]) + or: [node selector key == #bpTrace:forProbe:inContext: and: [node arguments second key == 2193787]]]) ifTrue: [node explore]]." + + | action source annotation annotations | + enclosedSourceCode ifNotNil: [^ enclosedSourceCode]. + + action := BPSmalltalkGrammar semanticAction: BPExtractAnnotations new. + source := self methodReference compiledMethod getSource asString. + annotations := action value: (BPCompiler new parse: source). + annotation := annotations detect: [:each | each id == id] ifNone: [^ '???']. + ^ enclosedSourceCode := annotation enclosedExpressionSource \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/hash.st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/hash.st new file mode 100644 index 00000000..a6b9bf5e --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/hash.st @@ -0,0 +1,4 @@ +comparing +hash + + ^ id hash \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/icon.st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/icon.st new file mode 100644 index 00000000..e41c56d4 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/icon.st @@ -0,0 +1,4 @@ +accessing +icon + + ^ BPEmojis emojiForHash: id \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/id..st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/id..st new file mode 100644 index 00000000..3f4f338b --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/id..st @@ -0,0 +1,4 @@ +accessing +id: aNumber + + id := aNumber \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/id.st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/id.st new file mode 100644 index 00000000..44798f6f --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/id.st @@ -0,0 +1,4 @@ +accessing +id + + ^ id \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/methodReference..st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/methodReference..st new file mode 100644 index 00000000..3c15a5e5 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/methodReference..st @@ -0,0 +1,4 @@ +accessing +methodReference: aMethodReference + + methodReference := aMethodReference \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/methodReference.st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/methodReference.st new file mode 100644 index 00000000..bf32ce67 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/methodReference.st @@ -0,0 +1,4 @@ +accessing +methodReference + + ^ methodReference \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/printOn.type..st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/printOn.type..st new file mode 100644 index 00000000..ff345712 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/printOn.type..st @@ -0,0 +1,12 @@ +printing +printOn: aStream type: aString + + aStream + nextPutAll: aString; + nextPutAll: ' in '; + nextPutAll: methodReference classSymbol; + nextPutAll: ' #'; + nextPutAll: methodReference selector; + nextPutAll: ' '; + "nextPutAll: id asString;" + nextPutAll: ((self removeLineBreaksFromSourceCode: self enclosedSourceCode) contractTo: 24) \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/removeLineBreaksFromSourceCode..st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/removeLineBreaksFromSourceCode..st new file mode 100644 index 00000000..f5a2d12d --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/removeLineBreaksFromSourceCode..st @@ -0,0 +1,4 @@ +printing +removeLineBreaksFromSourceCode: aString + + ^ ((aString splitBy: String cr) collect: #withBlanksTrimmed) joinSeparatedBy: ' ' \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/methodProperties.json new file mode 100644 index 00000000..833b715e --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/methodProperties.json @@ -0,0 +1,14 @@ +{ + "class" : { + }, + "instance" : { + "=" : "cmfcmf 11/4/2020 14:21", + "enclosedSourceCode" : "cmfcmf 11/10/2020 10:57", + "hash" : "cmfcmf 11/4/2020 14:21", + "icon" : "cmfcmf 11/4/2020 14:31", + "id" : "cmfcmf 11/4/2020 14:20", + "id:" : "cmfcmf 11/4/2020 14:20", + "methodReference" : "cmfcmf 11/4/2020 14:28", + "methodReference:" : "cmfcmf 11/4/2020 14:28", + "printOn:type:" : "cmfcmf 12/31/2020 21:24", + "removeLineBreaksFromSourceCode:" : "cmfcmf 12/31/2020 21:23" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/properties.json new file mode 100644 index 00000000..ce7aaba2 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/properties.json @@ -0,0 +1,16 @@ +{ + "category" : "Babylonian-Core-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "id", + "methodReference", + "enclosedSourceCode" ], + "name" : "BPCallgraphPathBabylonianTraceBased", + "pools" : [ + ], + "super" : "BPCallgraphPathBabylonian", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/README.md b/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/instance/^equals.st b/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/instance/^equals.st new file mode 100644 index 00000000..0a3a254b --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/instance/^equals.st @@ -0,0 +1,4 @@ +comparing += other + + ^ other class == self class \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/instance/doBrowse.st b/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/instance/doBrowse.st new file mode 100644 index 00000000..cf6e8ec0 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/instance/doBrowse.st @@ -0,0 +1,4 @@ +accessing +doBrowse + + \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/instance/equalsCallgraphEntry..st b/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/instance/equalsCallgraphEntry..st new file mode 100644 index 00000000..707ba56b --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/instance/equalsCallgraphEntry..st @@ -0,0 +1,5 @@ +comparing +equalsCallgraphEntry: entry + + self flag: #todo. + ^ false \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/instance/hash.st b/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/instance/hash.st new file mode 100644 index 00000000..fc0dbf18 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/instance/hash.st @@ -0,0 +1,4 @@ +comparing +hash + + ^ 0 \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/instance/printOn..st b/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/instance/printOn..st new file mode 100644 index 00000000..cc64c20d --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/instance/printOn..st @@ -0,0 +1,4 @@ +printing +printOn: aStream + + aStream nextPutAll: 'Execution continues here' \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/instance/textColor.st b/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/instance/textColor.st new file mode 100644 index 00000000..21d194b8 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/instance/textColor.st @@ -0,0 +1,5 @@ +accessing +textColor + + + ^ BPCallgraphEntryContextExecutionContinuation textColor \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/methodProperties.json new file mode 100644 index 00000000..fb59b1a0 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/methodProperties.json @@ -0,0 +1,10 @@ +{ + "class" : { + }, + "instance" : { + "=" : "cmfcmf 11/3/2020 12:41", + "doBrowse" : "cmfcmf 11/3/2020 12:54", + "equalsCallgraphEntry:" : "cmfcmf 11/10/2020 10:14", + "hash" : "cmfcmf 11/3/2020 12:41", + "printOn:" : "cmfcmf 11/3/2020 12:57", + "textColor" : "cmfcmf 11/5/2020 11:49" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/properties.json new file mode 100644 index 00000000..1d9515e7 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Core-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPCallgraphPathContextExecutionContinuation", + "pools" : [ + ], + "super" : "BPCallgraphPathPart", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/README.md b/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/instance/^equals.st b/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/instance/^equals.st new file mode 100644 index 00000000..0a3a254b --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/instance/^equals.st @@ -0,0 +1,4 @@ +comparing += other + + ^ other class == self class \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/instance/doBrowse.st b/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/instance/doBrowse.st new file mode 100644 index 00000000..61bf9976 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/instance/doBrowse.st @@ -0,0 +1,2 @@ +accessing +doBrowse \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/instance/equalsCallgraphEntry..st b/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/instance/equalsCallgraphEntry..st new file mode 100644 index 00000000..707ba56b --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/instance/equalsCallgraphEntry..st @@ -0,0 +1,5 @@ +comparing +equalsCallgraphEntry: entry + + self flag: #todo. + ^ false \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/instance/hash.st b/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/instance/hash.st new file mode 100644 index 00000000..fc0dbf18 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/instance/hash.st @@ -0,0 +1,4 @@ +comparing +hash + + ^ 0 \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/instance/printOn..st b/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/instance/printOn..st new file mode 100644 index 00000000..ca2cf9c8 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/instance/printOn..st @@ -0,0 +1,4 @@ +printing +printOn: aStream + + aStream nextPutAll: 'Context sender changed' \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/instance/textColor.st b/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/instance/textColor.st new file mode 100644 index 00000000..a104e7f8 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/instance/textColor.st @@ -0,0 +1,5 @@ +accessing +textColor + + + ^ BPCallgraphEntryContextSenderChanged textColor \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/methodProperties.json new file mode 100644 index 00000000..8463684c --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/methodProperties.json @@ -0,0 +1,10 @@ +{ + "class" : { + }, + "instance" : { + "=" : "cmfcmf 11/3/2020 12:41", + "doBrowse" : "cmfcmf 11/3/2020 12:55", + "equalsCallgraphEntry:" : "cmfcmf 11/10/2020 10:14", + "hash" : "cmfcmf 11/3/2020 12:41", + "printOn:" : "cmfcmf 11/3/2020 12:56", + "textColor" : "cmfcmf 11/5/2020 11:49" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/properties.json new file mode 100644 index 00000000..629aed4e --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Core-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPCallgraphPathContextSenderChanged", + "pools" : [ + ], + "super" : "BPCallgraphPathPart", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPCallgraphPathCustomEvent.class/README.md b/packages/Babylonian-Core.package/BPCallgraphPathCustomEvent.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPCallgraphPathCustomEvent.class/instance/^equals.st b/packages/Babylonian-Core.package/BPCallgraphPathCustomEvent.class/instance/^equals.st new file mode 100644 index 00000000..ef50dadc --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathCustomEvent.class/instance/^equals.st @@ -0,0 +1,4 @@ +as yet unclassified += other + + ^ other class == self class \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathCustomEvent.class/instance/hash.st b/packages/Babylonian-Core.package/BPCallgraphPathCustomEvent.class/instance/hash.st new file mode 100644 index 00000000..74df8550 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathCustomEvent.class/instance/hash.st @@ -0,0 +1,4 @@ +as yet unclassified +hash + + ^ 0 \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathCustomEvent.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphPathCustomEvent.class/methodProperties.json new file mode 100644 index 00000000..f6b9cfe4 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathCustomEvent.class/methodProperties.json @@ -0,0 +1,6 @@ +{ + "class" : { + }, + "instance" : { + "=" : "cmfcmf 11/3/2020 14:45", + "hash" : "cmfcmf 11/3/2020 14:45" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphPathCustomEvent.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphPathCustomEvent.class/properties.json new file mode 100644 index 00000000..391efb0e --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathCustomEvent.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Core-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPCallgraphPathCustomEvent", + "pools" : [ + ], + "super" : "BPCallgraphPathPart", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/README.md b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/class/class.selector.blockIdx..st b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/class/class.selector.blockIdx..st new file mode 100644 index 00000000..1bc44287 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/class/class.selector.blockIdx..st @@ -0,0 +1,6 @@ +as yet unclassified +class: theClass selector: theSelector blockIdx: theBlockIdx + + ^ self new + class: theClass selector: theSelector blockIdx: theBlockIdx; + yourself \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/^equals.st b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/^equals.st new file mode 100644 index 00000000..dc801ad9 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/^equals.st @@ -0,0 +1,4 @@ +comparing += other + + ^ other class == self class and: [other getClass == class] and: [other getSelector == selector] and: [other getBlockIdx == blockIndex] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/class.selector.blockIdx..st b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/class.selector.blockIdx..st new file mode 100644 index 00000000..d47a0bbe --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/class.selector.blockIdx..st @@ -0,0 +1,6 @@ +as yet unclassified +class: theClass selector: theSelector blockIdx: theBlockIdx + + class := theClass. + selector := theSelector. + blockIndex := theBlockIdx \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/doBrowse.st b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/doBrowse.st new file mode 100644 index 00000000..95f4a5c1 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/doBrowse.st @@ -0,0 +1,4 @@ +accessing +doBrowse + + self methodReference browse \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/equalsCallgraphEntry..st b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/equalsCallgraphEntry..st new file mode 100644 index 00000000..58ddac5f --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/equalsCallgraphEntry..st @@ -0,0 +1,4 @@ +comparing +equalsCallgraphEntry: entry + + ^ entry class == BPCallgraphEntryEnter and: [self equalsClassSelectorBlockIdx: entry] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/equalsClassSelectorBlockIdx..st b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/equalsClassSelectorBlockIdx..st new file mode 100644 index 00000000..18a222cf --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/equalsClassSelectorBlockIdx..st @@ -0,0 +1,6 @@ +as yet unclassified +equalsClassSelectorBlockIdx: anObject + + self assert: (anObject class == self class or: [anObject class == BPCallgraphEntryEnter]). + + ^ anObject getClass == class and: [anObject getSelector == selector] and: [anObject getBlockIdx == blockIndex] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/getBlockIdx.st b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/getBlockIdx.st new file mode 100644 index 00000000..ca47be5a --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/getBlockIdx.st @@ -0,0 +1,4 @@ +accessing +getBlockIdx + + ^ blockIndex \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/getClass.st b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/getClass.st new file mode 100644 index 00000000..59183779 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/getClass.st @@ -0,0 +1,4 @@ +accessing +getClass + + ^ class \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/getSelector.st b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/getSelector.st new file mode 100644 index 00000000..b77570f6 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/getSelector.st @@ -0,0 +1,5 @@ +accessing +getSelector + + + ^ selector \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/hash.st b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/hash.st new file mode 100644 index 00000000..3b195292 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/hash.st @@ -0,0 +1,4 @@ +comparing +hash + + ^ class hash + selector hash + blockIndex hash \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/methodReference.st b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/methodReference.st new file mode 100644 index 00000000..f89eb18b --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/methodReference.st @@ -0,0 +1,4 @@ +accessing +methodReference + + ^ MethodReference class: class selector: selector \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/printOn..st b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/printOn..st new file mode 100644 index 00000000..4a0fdf17 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/printOn..st @@ -0,0 +1,13 @@ +printing +printOn: aStream + + aStream + nextPutAll: class asString; + nextPutAll: ' #'; + nextPutAll: selector. + + blockIndex > 1 ifTrue: [ + aStream + nextPutAll: ' ['; + nextPutAll: (blockIndex - 1) asString; + nextPutAll: ']'] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/textColor.st b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/textColor.st new file mode 100644 index 00000000..4a96cfbd --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/textColor.st @@ -0,0 +1,4 @@ +accessing +textColor + + ^ BPCallgraphEntryEnter textColor \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/methodProperties.json new file mode 100644 index 00000000..587fd9fd --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/methodProperties.json @@ -0,0 +1,16 @@ +{ + "class" : { + "class:selector:blockIdx:" : "cmfcmf 11/3/2020 12:44" }, + "instance" : { + "=" : "cmfcmf 11/3/2020 12:42", + "class:selector:blockIdx:" : "cmfcmf 11/3/2020 12:36", + "doBrowse" : "cmfcmf 11/3/2020 12:55", + "equalsCallgraphEntry:" : "cmfcmf 11/10/2020 10:13", + "equalsClassSelectorBlockIdx:" : "cmfcmf 11/3/2020 12:46", + "getBlockIdx" : "cmfcmf 11/3/2020 12:36", + "getClass" : "cmfcmf 11/3/2020 12:36", + "getSelector" : "cmfcmf 11/3/2020 12:43", + "hash" : "cmfcmf 11/3/2020 12:42", + "methodReference" : "cmfcmf 11/3/2020 12:55", + "printOn:" : "cmfcmf 11/3/2020 12:48", + "textColor" : "cmfcmf 11/3/2020 12:53" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/properties.json new file mode 100644 index 00000000..d2150143 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/properties.json @@ -0,0 +1,16 @@ +{ + "category" : "Babylonian-Core-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "class", + "selector", + "blockIndex" ], + "name" : "BPCallgraphPathMethodExecution", + "pools" : [ + ], + "super" : "BPCallgraphPathPart", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPCallgraphPathPart.class/README.md b/packages/Babylonian-Core.package/BPCallgraphPathPart.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/^equals.st b/packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/^equals.st new file mode 100644 index 00000000..81f7c2e4 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/^equals.st @@ -0,0 +1,4 @@ +comparing += other + + self subclassResponsibility \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/doBrowse.st b/packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/doBrowse.st new file mode 100644 index 00000000..be51cf15 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/doBrowse.st @@ -0,0 +1,4 @@ +accessing +doBrowse + + self subclassResponsibility \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/equalsCallgraphEntry..st b/packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/equalsCallgraphEntry..st new file mode 100644 index 00000000..6e603083 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/equalsCallgraphEntry..st @@ -0,0 +1,4 @@ +comparing +equalsCallgraphEntry: aBPCallgraphEntry + + self subclassResponsibility \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/hash.st b/packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/hash.st new file mode 100644 index 00000000..de3a1ecc --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/hash.st @@ -0,0 +1,4 @@ +comparing +hash + + self subclassResponsibility \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/icon.st b/packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/icon.st new file mode 100644 index 00000000..bec86b0c --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/icon.st @@ -0,0 +1,4 @@ +accessing +icon + + ^ ToolIcons blank \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/textColor.st b/packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/textColor.st new file mode 100644 index 00000000..a2e1e87f --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/textColor.st @@ -0,0 +1,4 @@ +accessing +textColor + + self subclassResponsibility \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/visualizationBackgroundColor.st b/packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/visualizationBackgroundColor.st new file mode 100644 index 00000000..0c303f39 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/visualizationBackgroundColor.st @@ -0,0 +1,5 @@ +as yet unclassified +visualizationBackgroundColor + + + ^ nil \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/visualizationLabel.st b/packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/visualizationLabel.st new file mode 100644 index 00000000..fbeeb211 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/visualizationLabel.st @@ -0,0 +1,4 @@ +as yet unclassified +visualizationLabel + + ^ self asString \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphPathPart.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphPathPart.class/methodProperties.json new file mode 100644 index 00000000..fbdc2159 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathPart.class/methodProperties.json @@ -0,0 +1,12 @@ +{ + "class" : { + }, + "instance" : { + "=" : "cmfcmf 11/3/2020 12:50", + "doBrowse" : "cmfcmf 11/3/2020 12:53", + "equalsCallgraphEntry:" : "cmfcmf 11/10/2020 10:11", + "hash" : "cmfcmf 11/3/2020 12:50", + "icon" : "cmfcmf 11/3/2020 12:56", + "textColor" : "cmfcmf 11/3/2020 12:53", + "visualizationBackgroundColor" : "cmfcmf 11/6/2020 15:57", + "visualizationLabel" : "cmfcmf 11/5/2020 13:17" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphPathPart.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphPathPart.class/properties.json new file mode 100644 index 00000000..bbcf7ff8 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathPart.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Core-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPCallgraphPathPart", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPCallgrapher.class/README.md b/packages/Babylonian-Core.package/BPCallgrapher.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPCallgrapher.class/instance/executeSimulated..st b/packages/Babylonian-Core.package/BPCallgrapher.class/instance/executeSimulated..st new file mode 100644 index 00000000..b17990c0 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgrapher.class/instance/executeSimulated..st @@ -0,0 +1,33 @@ +public +executeSimulated: aBlock + + "based on Context >> #trace:on" + | prev result events simulator config | + + events := OrderedCollection new: 100000. + + prev := aBlock. + + config := (Smalltalk at: #RSSimulatorConfiguration) "empty" default. + config quickSelectors addAll: ((Object methodsInCategory: #'*Babylonian-Core') collect: [:symbol | symbol -> #yesNotWrapped]). + config quickClasses addAll: { + BPByteCodeCallgraphTracer -> #yesNotWrapped. + BPByteCodeCallgraphTracer class -> #yesNotWrapped}. + + simulator := (Smalltalk at: #RSSimulator) new. + simulator config: config. + result := simulator simulate: aBlock withRecorder: [:event :data | + event caseOf: { + [#step] -> [ | current depth | + current := data first. + depth := data second. + current ~= prev ifTrue: [ + prev sender ifNil: ["the previous context no longer has a sender -> it has just returned. The return value is now on top of the stack (current top)"]. + events addLast: event; addLast: data. + prev := current]]. + "Babylonian Programming Support" + [#probeHit] -> [events addLast: event; addLast: data]. + [#assertionHit] -> [events addLast: event; addLast: data] + }]. + + ^ BPCallgraphFromSimulator forEvents: events andResult: result \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgrapher.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgrapher.class/methodProperties.json new file mode 100644 index 00000000..42545bf7 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgrapher.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "executeSimulated:" : "cmfcmf 1/14/2021 10:28" } } diff --git a/packages/Babylonian-Core.package/BPCallgrapher.class/properties.json b/packages/Babylonian-Core.package/BPCallgrapher.class/properties.json new file mode 100644 index 00000000..727725ba --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgrapher.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Core-Callgraph-Simulator", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPCallgrapher", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPExample.class/README.md b/packages/Babylonian-Core.package/BPExample.class/README.md index e69de29b..582c4b7e 100644 --- a/packages/Babylonian-Core.package/BPExample.class/README.md +++ b/packages/Babylonian-Core.package/BPExample.class/README.md @@ -0,0 +1 @@ +A BPExample is a standard example which lives as a pragma in a CompiledMethod. Thus, its lifetime is very much bound to the lifetime of the compiled method. \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExample.class/class/alwaysGenerateCallgraph..st b/packages/Babylonian-Core.package/BPExample.class/class/alwaysGenerateCallgraph..st new file mode 100644 index 00000000..87ecc364 --- /dev/null +++ b/packages/Babylonian-Core.package/BPExample.class/class/alwaysGenerateCallgraph..st @@ -0,0 +1,4 @@ +as yet unclassified +alwaysGenerateCallgraph: aBoolean + + AlwaysGenerateCallgraph := aBoolean \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExample.class/class/alwaysGenerateCallgraph.st b/packages/Babylonian-Core.package/BPExample.class/class/alwaysGenerateCallgraph.st new file mode 100644 index 00000000..88cceb31 --- /dev/null +++ b/packages/Babylonian-Core.package/BPExample.class/class/alwaysGenerateCallgraph.st @@ -0,0 +1,9 @@ +as yet unclassified +alwaysGenerateCallgraph + + + + ^ AlwaysGenerateCallgraph ifNil: [false] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExample.class/instance/^equals.st b/packages/Babylonian-Core.package/BPExample.class/instance/^equals.st new file mode 100644 index 00000000..86ee6a0b --- /dev/null +++ b/packages/Babylonian-Core.package/BPExample.class/instance/^equals.st @@ -0,0 +1,11 @@ +printing += anotherExample + + ^ (anotherExample class = self class + and: [self method == anotherExample method] + and: [self exampleName = anotherExample exampleName] + and: [self argumentScripts = anotherExample argumentScripts]) + or: [(anotherExample class = BPExampleReference) + and: [anotherExample = self exampleReference]] + + \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExample.class/instance/argumentNames.st b/packages/Babylonian-Core.package/BPExample.class/instance/argumentNames.st new file mode 100644 index 00000000..08cbc701 --- /dev/null +++ b/packages/Babylonian-Core.package/BPExample.class/instance/argumentNames.st @@ -0,0 +1,7 @@ +accessing +argumentNames + + | parts | + parts := self method methodClass formalHeaderPartsFor: self method selector. + ^ (1 to: self method selector numArgs) collect: [:anIndex | + parts at: (4 * anIndex)] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExample.class/instance/argumentScriptStringAt..st b/packages/Babylonian-Core.package/BPExample.class/instance/argumentScriptStringAt..st new file mode 100644 index 00000000..32574b28 --- /dev/null +++ b/packages/Babylonian-Core.package/BPExample.class/instance/argumentScriptStringAt..st @@ -0,0 +1,8 @@ +accessing +argumentScriptStringAt: index + + | value | + value := self argumentScripts at: index. + ^ (self isLiveSpecimenReference: value) + ifTrue: [(self resolveLiveSpecimen: value) printString] + ifFalse: [value] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExample.class/instance/argumentScripts..st b/packages/Babylonian-Core.package/BPExample.class/instance/argumentScripts..st new file mode 100644 index 00000000..23fbdab8 --- /dev/null +++ b/packages/Babylonian-Core.package/BPExample.class/instance/argumentScripts..st @@ -0,0 +1,4 @@ +accessing +argumentScripts: anObject + + argumentScripts := anObject. \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExample.class/instance/argumentScripts.st b/packages/Babylonian-Core.package/BPExample.class/instance/argumentScripts.st new file mode 100644 index 00000000..6cbb596e --- /dev/null +++ b/packages/Babylonian-Core.package/BPExample.class/instance/argumentScripts.st @@ -0,0 +1,4 @@ +accessing +argumentScripts + + ^ argumentScripts \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExample.class/instance/currentCallgraph.st b/packages/Babylonian-Core.package/BPExample.class/instance/currentCallgraph.st new file mode 100644 index 00000000..c2c1a8b4 --- /dev/null +++ b/packages/Babylonian-Core.package/BPExample.class/instance/currentCallgraph.st @@ -0,0 +1,5 @@ +tracing +currentCallgraph + + self flag: #todo. "Generate callgraph on demand if it has not yet been generated" + ^ traceInformation callgraph \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExample.class/instance/deprecatedExecuteWithCallgraphUsingSimulator.st b/packages/Babylonian-Core.package/BPExample.class/instance/deprecatedExecuteWithCallgraphUsingSimulator.st new file mode 100644 index 00000000..7659636e --- /dev/null +++ b/packages/Babylonian-Core.package/BPExample.class/instance/deprecatedExecuteWithCallgraphUsingSimulator.st @@ -0,0 +1,13 @@ +tracing +deprecatedExecuteWithCallgraphUsingSimulator + + | receiver arguments selector block graph trace | + + receiver := self newReceiver. + selector := self method selector. + arguments := self newArguments. + block := [receiver perform: selector withArguments: arguments]. + + trace := [graph := BPCallgrapher new executeSimulated: block. graph result] bpTraceForExample: self. + graph trace: trace. + ^ graph \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExample.class/instance/deprecatedTraceWithCallgraphUsingSimulator.st b/packages/Babylonian-Core.package/BPExample.class/instance/deprecatedTraceWithCallgraphUsingSimulator.st new file mode 100644 index 00000000..cf5516a5 --- /dev/null +++ b/packages/Babylonian-Core.package/BPExample.class/instance/deprecatedTraceWithCallgraphUsingSimulator.st @@ -0,0 +1,7 @@ +tracing +deprecatedTraceWithCallgraphUsingSimulator + + | graph | + graph := self deprecatedExecuteWithCallgraphUsingSimulator. + traceInformation trace: graph trace. + ^ graph \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExample.class/instance/isLiveSpecimenReference..st b/packages/Babylonian-Core.package/BPExample.class/instance/isLiveSpecimenReference..st new file mode 100644 index 00000000..480a99a5 --- /dev/null +++ b/packages/Babylonian-Core.package/BPExample.class/instance/isLiveSpecimenReference..st @@ -0,0 +1,4 @@ +private +isLiveSpecimenReference: anObject + + ^ anObject isArray and: [anObject first = #object and: [anObject size = 2]] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExample.class/instance/newArguments.st b/packages/Babylonian-Core.package/BPExample.class/instance/newArguments.st new file mode 100644 index 00000000..0900032a --- /dev/null +++ b/packages/Babylonian-Core.package/BPExample.class/instance/newArguments.st @@ -0,0 +1,6 @@ +accessing +newArguments + + ^ (argumentScripts + collect: [:script | Compiler evaluate: script]) + collect: [:argumentObject | self resolveLiveSpecimen: argumentObject] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExample.class/instance/newReceiver.st b/packages/Babylonian-Core.package/BPExample.class/instance/newReceiver.st new file mode 100644 index 00000000..81f622ec --- /dev/null +++ b/packages/Babylonian-Core.package/BPExample.class/instance/newReceiver.st @@ -0,0 +1,9 @@ +accessing +newReceiver + + ^ self receiverConstructor isEmptyOrNil + ifFalse: [ + self receiverConstructor isSymbol + ifTrue: [self method methodClass perform: self receiverConstructor] + ifFalse: [Compiler evaluate: self receiverConstructor]] + ifTrue: [self method methodClass new]. \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExample.class/instance/receiverConstructor..st b/packages/Babylonian-Core.package/BPExample.class/instance/receiverConstructor..st new file mode 100644 index 00000000..83dc9d2c --- /dev/null +++ b/packages/Babylonian-Core.package/BPExample.class/instance/receiverConstructor..st @@ -0,0 +1,4 @@ +accessing +receiverConstructor: anObject + + receiverConstructor := anObject. \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExample.class/instance/receiverConstructor.st b/packages/Babylonian-Core.package/BPExample.class/instance/receiverConstructor.st new file mode 100644 index 00000000..5515c05f --- /dev/null +++ b/packages/Babylonian-Core.package/BPExample.class/instance/receiverConstructor.st @@ -0,0 +1,4 @@ +accessing +receiverConstructor + + ^ receiverConstructor \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExample.class/instance/resolveLiveSpecimen..st b/packages/Babylonian-Core.package/BPExample.class/instance/resolveLiveSpecimen..st new file mode 100644 index 00000000..54ddcd04 --- /dev/null +++ b/packages/Babylonian-Core.package/BPExample.class/instance/resolveLiveSpecimen..st @@ -0,0 +1,7 @@ +private +resolveLiveSpecimen: anObject + + ^ (self isLiveSpecimenReference: anObject) + ifTrue: [BPActiveSpecimenRegistry value at: anObject second] + ifFalse: [anObject] + \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExample.class/instance/trace..st b/packages/Babylonian-Core.package/BPExample.class/instance/trace..st new file mode 100644 index 00000000..d706f9de --- /dev/null +++ b/packages/Babylonian-Core.package/BPExample.class/instance/trace..st @@ -0,0 +1,11 @@ +tracing +trace: aSymbol + + aSymbol caseOf: { + [#none] -> [^ traceInformation trace: ([self execute] bpTraceForExample: self)]. + [#byteCode] -> [ | tracer | + tracer := BPByteCodeCallgraphTracer new. + tracer customEvent: #bpExample data: self. + traceInformation trace: (BPByteCodeCallgraphTracer value: tracer during: [[self execute] bpTraceForExample: self]). + traceInformation callgraphTracer: tracer. + ^ traceInformation]} \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExample.class/instance/trace.st b/packages/Babylonian-Core.package/BPExample.class/instance/trace.st index 86d5ea26..e39b9276 100644 --- a/packages/Babylonian-Core.package/BPExample.class/instance/trace.st +++ b/packages/Babylonian-Core.package/BPExample.class/instance/trace.st @@ -1,4 +1,4 @@ tracing trace - - ^ traceInformation trace: ([self execute] bpTraceForExample: self) \ No newline at end of file + + ^ self trace: #none \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExample.class/instance/traceAsyncNotifying..st b/packages/Babylonian-Core.package/BPExample.class/instance/traceAsyncNotifying..st deleted file mode 100644 index ee8d88c9..00000000 --- a/packages/Babylonian-Core.package/BPExample.class/instance/traceAsyncNotifying..st +++ /dev/null @@ -1,7 +0,0 @@ -tracing -traceAsyncNotifying: requestorBlock - "This will start tracing and immediately return. As soon as it is available, the - tracer will report the trace information. This trace information is likely still - incomplete, but will be completed during the tracing." - - ^ [self execute] bpTraceAsyncForExample: self notifying: requestorBlock \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExample.class/instance/traceAsyncNotifying.withCallgraph..st b/packages/Babylonian-Core.package/BPExample.class/instance/traceAsyncNotifying.withCallgraph..st new file mode 100644 index 00000000..212c1262 --- /dev/null +++ b/packages/Babylonian-Core.package/BPExample.class/instance/traceAsyncNotifying.withCallgraph..st @@ -0,0 +1,14 @@ +tracing +traceAsyncNotifying: requestorBlock withCallgraph: aSymbol + + "This will start tracing and immediately return. As soon as it is available, the + tracer will report the trace information. This trace information is likely still + incomplete, but will be completed during the tracing." + aSymbol caseOf: { + [#none] -> [^ [self execute] bpTraceAsyncForExample: self notifying: requestorBlock]. + [#byteCode] -> [ | callgraphTracer result | + callgraphTracer := BPByteCodeCallgraphTracer new. + callgraphTracer customEvent: #bpExample data: self. + BPByteCodeCallgraphTracer value: callgraphTracer during: [ + [self execute] bpTraceAsyncForExample: self notifying: [:tuple | result := tuple]]. + requestorBlock value: {result first . callgraphTracer}]} \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExample.class/instance/traceInBackground.st b/packages/Babylonian-Core.package/BPExample.class/instance/traceInBackground.st index 33ded443..dcd9f05c 100644 --- a/packages/Babylonian-Core.package/BPExample.class/instance/traceInBackground.st +++ b/packages/Babylonian-Core.package/BPExample.class/instance/traceInBackground.st @@ -1,21 +1,6 @@ tracing traceInBackground - | exampleExecution promise | - traceInformation terminateTracingProcess. - promise := Promise new. - promise whenResolved: [:trace | - Project current addDeferredUIMessage: [traceInformation trace: trace]]. - exampleExecution := [[ - self traceAsyncNotifying: [:intermediateTrace | - promise resolveWith: intermediateTrace]] - on: BPExampleExecutionInterrupted - do: [:e | - "We need to remember this in order to terminate example processes - whenever a trace leaves the registry." - e trace exampleExecutionProcess: Processor activeProcess. - promise resolveWith: e trace. - Processor activeProcess suspend]]. - traceInformation tracingProcess: (exampleExecution - forkAt: Processor userSchedulingPriority - named: 'Execution of example ' , self exampleName) \ No newline at end of file + ^ self traceInBackgroundWithCallgraph: (self class alwaysGenerateCallgraph + ifTrue: [#byteCode] + ifFalse: [#none]) \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExample.class/instance/traceInBackgroundWithCallgraph..st b/packages/Babylonian-Core.package/BPExample.class/instance/traceInBackgroundWithCallgraph..st new file mode 100644 index 00000000..2cfa0696 --- /dev/null +++ b/packages/Babylonian-Core.package/BPExample.class/instance/traceInBackgroundWithCallgraph..st @@ -0,0 +1,21 @@ +tracing +traceInBackgroundWithCallgraph: aSymbol + + | exampleExecution promise | + traceInformation terminateTracingProcess. + promise := Promise new. + promise whenResolved: [:traceAndCallgraphTracer | + Project current addDeferredUIMessage: [traceInformation + trace: traceAndCallgraphTracer first; + callgraphTracer: traceAndCallgraphTracer second]]. + exampleExecution := [[self traceAsyncNotifying: [:intermediateTraceAndCallgraphTracer | promise resolveWith: intermediateTraceAndCallgraphTracer] withCallgraph: aSymbol] + on: BPExampleExecutionInterrupted + do: [:e | + "We need to remember this in order to terminate example processes + whenever a trace leaves the registry." + e trace exampleExecutionProcess: Processor activeProcess. + promise resolveWith: {e trace . nil}. + Processor activeProcess suspend.]]. + traceInformation tracingProcess: (exampleExecution + forkAt: Processor userSchedulingPriority + named: 'Execution of example ' , self exampleName) \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExample.class/methodProperties.json b/packages/Babylonian-Core.package/BPExample.class/methodProperties.json index bb626e37..416566b1 100644 --- a/packages/Babylonian-Core.package/BPExample.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPExample.class/methodProperties.json @@ -1,16 +1,26 @@ { "class" : { - "bpExamplePragmaPrefix" : "pre 1/21/2021 15:46", - "bpExamplePragmaPrefixes" : "pre 1/21/2021 15:54", + "alwaysGenerateCallgraph" : "cmfcmf 11/9/2020 14:53", + "alwaysGenerateCallgraph:" : "cmfcmf 11/9/2020 14:51", + "bpExamplePragmaPrefix" : "1/22/2021 11:04:38", + "bpExamplePragmaPrefixes" : "1/22/2021 11:04:38", "exampleColors" : "pre 3/2/2021 17:58", - "fromPragma:" : "pre 1/21/2021 15:45", + "fromPragma:" : "pre 9/30/2020 10:20", "newFor:" : "pre 9/30/2020 11:08" }, "instance" : { - "asPragma" : "pre 1/21/2021 16:14", + "=" : "pre 8/20/2020 11:56", + "argumentNames" : "pre 8/25/2020 09:41", + "argumentScriptStringAt:" : "pre 7/10/2020 18:23", + "argumentScripts" : "pre 7/23/2019 12:20", + "argumentScripts:" : "pre 7/23/2019 09:23", + "asPragma" : "pre 9/30/2020 10:48", "canBeUsedForDoIts" : "pre 10/6/2020 09:17", "color" : "pre 3/2/2021 17:32", - "currentTrace" : "jb 12/3/2020 22:33", - "ensureTerminatedProcess" : "jb 12/7/2020 18:10", + "currentCallgraph" : "cmfcmf 11/10/2020 12:23", + "currentTrace" : "pre 9/30/2020 09:53", + "deprecatedExecuteWithCallgraphUsingSimulator" : "cmfcmf 11/9/2020 15:22", + "deprecatedTraceWithCallgraphUsingSimulator" : "cmfcmf 11/9/2020 15:22", + "ensureTerminatedProcess" : "pre 9/30/2020 09:53", "exampleName" : "pre 9/30/2020 09:50", "exampleName:" : "jb 12/7/2020 18:10", "execute" : "pre 1/21/2021 17:19", @@ -20,11 +30,17 @@ "initializeFromPragma:" : "pre 1/21/2021 16:49", "isActive" : "pre 9/30/2020 09:49", "isActive:" : "pre 10/23/2020 10:16", + "isLiveSpecimenReference:" : "pre 7/10/2020 18:22", "liveSpecimen" : "pre 9/30/2020 10:20", "method" : "pre 9/30/2020 09:54", "method:" : "pre 9/30/2020 09:54", "morphClass" : "pre 9/30/2020 10:40", + "newArguments" : "1/22/2021 11:04:38", + "newReceiver" : "1/22/2021 11:04:38", "printOn:" : "jb 12/7/2020 18:10", + "receiverConstructor" : "1/22/2021 11:04:38", + "receiverConstructor:" : "1/22/2021 11:04:38", + "resolveLiveSpecimen:" : "1/22/2021 11:04:38", "run" : "pre 1/21/2021 17:18", "runSetUp" : "pre 1/21/2021 17:20", "runTearDown" : "pre 1/21/2021 17:20", @@ -34,8 +50,10 @@ "tearDownScript:" : "pre 1/21/2021 15:36", "toggleIsActive" : "pre 10/23/2020 10:16", "trace" : "pre 9/30/2020 09:55", - "traceAsyncNotifying:" : "pre 1/15/2021 13:07", + "trace:" : "1/22/2021 11:04:38", + "traceAsyncNotifying:withCallgraph:" : "pre 1/22/2021 11:05", "traceInBackground" : "pre 12/16/2020 18:52", + "traceInBackgroundWithCallgraph:" : "1/22/2021 11:04:38", "traceToHaltAt:" : "jb 12/7/2020 18:10", "tracingIsStillRunning" : "pre 1/7/2021 09:30", "uniqueIdentifier" : "pre 1/21/2021 19:55" } } diff --git a/packages/Babylonian-Core.package/BPExample.class/properties.json b/packages/Babylonian-Core.package/BPExample.class/properties.json index dd56409c..fb14b3b8 100644 --- a/packages/Babylonian-Core.package/BPExample.class/properties.json +++ b/packages/Babylonian-Core.package/BPExample.class/properties.json @@ -3,8 +3,8 @@ "classinstvars" : [ ], "classvars" : [ - ], - "commentStamp" : "", + "AlwaysGenerateCallgraph" ], + "commentStamp" : "pre 8/20/2020 10:29", "instvars" : [ "isActive", "exampleName", diff --git a/packages/Babylonian-Core.package/BPExampleAnnotation.class/instance/createExampleMorph.st b/packages/Babylonian-Core.package/BPExampleAnnotation.class/instance/createExampleMorph.st new file mode 100644 index 00000000..b09f4b38 --- /dev/null +++ b/packages/Babylonian-Core.package/BPExampleAnnotation.class/instance/createExampleMorph.st @@ -0,0 +1,7 @@ +ui +createExampleMorph + + ^ BPExampleMorph new + annotation: self; + example: self actualExample; + yourself \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExampleAnnotation.class/methodProperties.json b/packages/Babylonian-Core.package/BPExampleAnnotation.class/methodProperties.json index a8028904..e7ea98d5 100644 --- a/packages/Babylonian-Core.package/BPExampleAnnotation.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPExampleAnnotation.class/methodProperties.json @@ -5,7 +5,8 @@ "instance" : { "actualExample" : "jb 12/7/2020 18:12", "asMorph" : "pre 9/30/2020 10:41", - "canBeAnnotatedTo" : "jb 12/3/2020 22:37", + "canBeAnnotatedTo" : "pre 9/22/2020 18:19", + "createExampleMorph" : "pre 8/24/2020 16:13", "enclosedExpressionSource" : "pre 7/23/2019 12:18", "exampleName" : "pre 7/23/2019 11:56", "exampleName:" : "jb 12/7/2020 18:08", diff --git a/packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/callgraph.st b/packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/callgraph.st new file mode 100644 index 00000000..31857fd2 --- /dev/null +++ b/packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/callgraph.st @@ -0,0 +1,7 @@ +accessing +callgraph + + callgraph ifNotNil: [^ callgraph]. + ^ callgraphTracer ifNotNil: [ + callgraph := callgraphTracer eventsForTree. + callgraphTracer := nil] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/callgraphTracer..st b/packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/callgraphTracer..st new file mode 100644 index 00000000..b149ddb9 --- /dev/null +++ b/packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/callgraphTracer..st @@ -0,0 +1,5 @@ +accessing +callgraphTracer: tracer + + callgraph := nil. + callgraphTracer := tracer \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/callgraphTracer.st b/packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/callgraphTracer.st new file mode 100644 index 00000000..3eaba2fd --- /dev/null +++ b/packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/callgraphTracer.st @@ -0,0 +1,4 @@ +accessing +callgraphTracer + + ^ callgraphTracer \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/terminateTracingProcess.st b/packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/terminateTracingProcess.st index 06a481d0..4816e142 100644 --- a/packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/terminateTracingProcess.st +++ b/packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/terminateTracingProcess.st @@ -1,4 +1,5 @@ process control terminateTracingProcess - - self tracingProcess ifNotNil: [:aTracingProcess | aTracingProcess terminate]. \ No newline at end of file + + self flag: #fixme. "We need to disable the bytecode tracer for the process before terminating it, otherwise termination is unsuccessful and results in image hangup. However, a better solution would be to investigate why processes with active tracing cannot be terminated normally." + self tracingProcess ifNotNil: [:p | BPByteCodeCallgraphTracer value: nil during: [p terminate] inProcess: p] diff --git a/packages/Babylonian-Core.package/BPExampleTraceInformation.class/methodProperties.json b/packages/Babylonian-Core.package/BPExampleTraceInformation.class/methodProperties.json index d07ee677..a7987997 100644 --- a/packages/Babylonian-Core.package/BPExampleTraceInformation.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPExampleTraceInformation.class/methodProperties.json @@ -2,7 +2,10 @@ "class" : { }, "instance" : { - "terminateTracingProcess" : "jb 12/7/2020 18:12", + "callgraph" : "pre 2/15/2021 10:04", + "callgraphTracer" : "cmfcmf 11/9/2020 15:09", + "callgraphTracer:" : "cmfcmf 11/9/2020 15:32", + "terminateTracingProcess" : "cmfcmf 11/9/2020 17:00", "trace" : "pre 8/18/2020 08:45", "trace:" : "pre 8/20/2020 10:32", "tracingProcess" : "pre 8/18/2020 08:45", diff --git a/packages/Babylonian-Core.package/BPExampleTraceInformation.class/properties.json b/packages/Babylonian-Core.package/BPExampleTraceInformation.class/properties.json index eaaa8c43..36843adb 100644 --- a/packages/Babylonian-Core.package/BPExampleTraceInformation.class/properties.json +++ b/packages/Babylonian-Core.package/BPExampleTraceInformation.class/properties.json @@ -7,7 +7,9 @@ "commentStamp" : "", "instvars" : [ "trace", - "tracingProcess" ], + "tracingProcess", + "callgraphTracer", + "callgraph" ], "name" : "BPExampleTraceInformation", "pools" : [ ], diff --git a/packages/Babylonian-Core.package/BPMethodExample.class/instance/run.st b/packages/Babylonian-Core.package/BPMethodExample.class/instance/run.st index 0d427e80..5ac5b0de 100644 --- a/packages/Babylonian-Core.package/BPMethodExample.class/instance/run.st +++ b/packages/Babylonian-Core.package/BPMethodExample.class/instance/run.st @@ -2,9 +2,9 @@ tracing run | receiver arguments | - #bpInstrumented withoutLayerDo: [ + BPByteCodeCallgraphTracer deactivateDuring: [#bpInstrumented withoutLayerDo: [ receiver := self newReceiver. - arguments := self newArguments]. + arguments := self newArguments]]. ^ receiver perform: self method selector diff --git a/packages/Babylonian-Core.package/BPMethodExample.class/methodProperties.json b/packages/Babylonian-Core.package/BPMethodExample.class/methodProperties.json index 29346eb7..59ad7ff2 100644 --- a/packages/Babylonian-Core.package/BPMethodExample.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPMethodExample.class/methodProperties.json @@ -22,4 +22,4 @@ "receiverConstructor:" : "pre 5/17/2019 14:06", "receiverConstructorString" : "pre 3/2/2021 18:01", "resolveLiveSpecimen:" : "jb 12/1/2020 14:22", - "run" : "pre 2/15/2021 10:33" } } + "run" : "pre 2/15/2021 11:13" } } diff --git a/packages/Babylonian-Core.package/BPScriptExample.class/methodProperties.json b/packages/Babylonian-Core.package/BPScriptExample.class/methodProperties.json index 0e956604..5177a812 100644 --- a/packages/Babylonian-Core.package/BPScriptExample.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPScriptExample.class/methodProperties.json @@ -3,8 +3,8 @@ "bpExamplePragmaPrefix" : "pre 1/21/2021 15:45", "pragmaSelectors" : "pre 2/1/2021 10:48" }, "instance" : { - "asPragma" : "pre 1/21/2021 16:19", - "initializeFromPragma:" : "pre 1/21/2021 16:06", + "asPragma" : "pre 9/30/2020 10:57", + "initializeFromPragma:" : "pre 9/30/2020 10:59", "morphClass" : "pre 9/30/2020 10:41", "run" : "pre 1/21/2021 17:18", "script" : "pre 9/30/2020 11:00", diff --git a/packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/README.md b/packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/class/clear.st b/packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/class/clear.st new file mode 100644 index 00000000..3b393ca7 --- /dev/null +++ b/packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/class/clear.st @@ -0,0 +1,4 @@ +as yet unclassified +clear + + SelectedEntries := nil \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/class/forExample..st b/packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/class/forExample..st new file mode 100644 index 00000000..8661d03e --- /dev/null +++ b/packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/class/forExample..st @@ -0,0 +1,4 @@ +as yet unclassified +forExample: aBPExample + + ^ self forExample: aBPExample andCallgraph: aBPExample currentCallgraph \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/class/forExample.andCallgraph..st b/packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/class/forExample.andCallgraph..st new file mode 100644 index 00000000..9e3afa3d --- /dev/null +++ b/packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/class/forExample.andCallgraph..st @@ -0,0 +1,7 @@ +as yet unclassified +forExample: aBPExample andCallgraph: aBPCallgraph + + | entriesByCallgraph | + entriesByCallgraph := self selectedEntries at: aBPExample ifAbsent: [^ Set new]. + entriesByCallgraph at: aBPCallgraph ifPresent: [:entries | ^ entries]. + ^ Set new \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/class/select.fromCallgraph.forExample..st b/packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/class/select.fromCallgraph.forExample..st new file mode 100644 index 00000000..3e0a8ffa --- /dev/null +++ b/packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/class/select.fromCallgraph.forExample..st @@ -0,0 +1,9 @@ +as yet unclassified +select: aBPCallgraphEntry fromCallgraph: aBPCallgraph forExample: aBPExample + + | entries entriesByCallgraph | + self assert: (aBPCallgraphEntry isKindOf: BPCallgraphEntry). + entriesByCallgraph := self selectedEntries at: aBPExample ifAbsentPut: [Dictionary new]. + entries := entriesByCallgraph at: aBPCallgraph ifAbsentPut: [Set new]. + entries add: aBPCallgraphEntry. + self triggerEvent: #entrySelected \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/class/selectedEntries.st b/packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/class/selectedEntries.st new file mode 100644 index 00000000..2a8e94bb --- /dev/null +++ b/packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/class/selectedEntries.st @@ -0,0 +1,4 @@ +as yet unclassified +selectedEntries + + ^ SelectedEntries ifNil: [SelectedEntries := Dictionary new] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/methodProperties.json b/packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/methodProperties.json new file mode 100644 index 00000000..b59b52ce --- /dev/null +++ b/packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/methodProperties.json @@ -0,0 +1,9 @@ +{ + "class" : { + "clear" : "cmfcmf 12/5/2020 13:46", + "forExample:" : "cmfcmf 11/9/2020 16:27", + "forExample:andCallgraph:" : "cmfcmf 11/9/2020 16:27", + "select:fromCallgraph:forExample:" : "cmfcmf 11/9/2020 16:40", + "selectedEntries" : "cmfcmf 11/9/2020 16:27" }, + "instance" : { + } } diff --git a/packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/properties.json b/packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/properties.json new file mode 100644 index 00000000..ca450e0f --- /dev/null +++ b/packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Core-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + "SelectedEntries" ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPSelectedCallgraphEntries", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPTrace.class/instance/addTracedValue.forAssertion..st b/packages/Babylonian-Core.package/BPTrace.class/instance/addTracedValue.forAssertion..st index 1298b4a4..665704d6 100644 --- a/packages/Babylonian-Core.package/BPTrace.class/instance/addTracedValue.forAssertion..st +++ b/packages/Babylonian-Core.package/BPTrace.class/instance/addTracedValue.forAssertion..st @@ -1,4 +1,5 @@ private addTracedValue: aTraceValue forAssertion: anAssertionid - - (self assertions at: anAssertionid ifAbsentPut: [OrderedCollection new]) add: aTraceValue. \ No newline at end of file + + (self assertions at: anAssertionid ifAbsentPut: [OrderedCollection new]) add: aTraceValue. + BPByteCodeCallgraphTracer customEvent: #bpAssertionHit data: anAssertionid -> aTraceValue diff --git a/packages/Babylonian-Core.package/BPTrace.class/instance/addTracedValue.forProbe..st b/packages/Babylonian-Core.package/BPTrace.class/instance/addTracedValue.forProbe..st index 380206ee..b32ee55a 100644 --- a/packages/Babylonian-Core.package/BPTrace.class/instance/addTracedValue.forProbe..st +++ b/packages/Babylonian-Core.package/BPTrace.class/instance/addTracedValue.forProbe..st @@ -1,4 +1,5 @@ private addTracedValue: aTraceValue forProbe: aProbeId - - (self probes at: aProbeId ifAbsentPut: [OrderedCollection new]) add: aTraceValue. \ No newline at end of file + + (self probes at: aProbeId ifAbsentPut: [OrderedCollection new]) add: aTraceValue. + BPByteCodeCallgraphTracer customEvent: #bpProbeHit data: aProbeId -> aTraceValue diff --git a/packages/Babylonian-Core.package/BPTrace.class/instance/callgraph..st b/packages/Babylonian-Core.package/BPTrace.class/instance/callgraph..st new file mode 100644 index 00000000..2e903202 --- /dev/null +++ b/packages/Babylonian-Core.package/BPTrace.class/instance/callgraph..st @@ -0,0 +1,4 @@ +accessing +callgraph: aBPCallgraph + + callgraph := aBPCallgraph \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPTrace.class/instance/callgraph.st b/packages/Babylonian-Core.package/BPTrace.class/instance/callgraph.st new file mode 100644 index 00000000..c27ecf67 --- /dev/null +++ b/packages/Babylonian-Core.package/BPTrace.class/instance/callgraph.st @@ -0,0 +1,4 @@ +accessing +callgraph + + ^ callgraph \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPTrace.class/instance/duration..st b/packages/Babylonian-Core.package/BPTrace.class/instance/duration..st new file mode 100644 index 00000000..21a2b869 --- /dev/null +++ b/packages/Babylonian-Core.package/BPTrace.class/instance/duration..st @@ -0,0 +1,4 @@ +accessing +duration: aDuration + + duration := aDuration \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPTrace.class/instance/duration.st b/packages/Babylonian-Core.package/BPTrace.class/instance/duration.st new file mode 100644 index 00000000..3a4b0471 --- /dev/null +++ b/packages/Babylonian-Core.package/BPTrace.class/instance/duration.st @@ -0,0 +1,4 @@ +accessing +duration + + ^ duration \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPTrace.class/instance/newTracedAssignmentValue.previousValues.expression.stackFrom..st b/packages/Babylonian-Core.package/BPTrace.class/instance/newTracedAssignmentValue.previousValues.expression.stackFrom..st index cbb8203d..c331eb68 100644 --- a/packages/Babylonian-Core.package/BPTrace.class/instance/newTracedAssignmentValue.previousValues.expression.stackFrom..st +++ b/packages/Babylonian-Core.package/BPTrace.class/instance/newTracedAssignmentValue.previousValues.expression.stackFrom..st @@ -5,4 +5,5 @@ newTracedAssignmentValue: aValue previousValues: variableAndValuesTuples express value: aValue bpSnapshot identityHash: aValue identityHash previousValues: variableAndValuesTuples - stack: (self stackFrom: aContext) \ No newline at end of file + stack: (self stackFrom: aContext) + methodReference: aContext method asCodeReference \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPTrace.class/instance/newTracedValue.expression.stackFrom..st b/packages/Babylonian-Core.package/BPTrace.class/instance/newTracedValue.expression.stackFrom..st index fc4b923e..9b09b1b6 100644 --- a/packages/Babylonian-Core.package/BPTrace.class/instance/newTracedValue.expression.stackFrom..st +++ b/packages/Babylonian-Core.package/BPTrace.class/instance/newTracedValue.expression.stackFrom..st @@ -4,4 +4,5 @@ newTracedValue: aValue expression: expressionSource stackFrom: aContext ^ BPTraceValue value: aValue bpSnapshot identityHash: aValue identityHash - stack: (self stackFrom: aContext) \ No newline at end of file + stack: (self stackFrom: aContext) + methodReference: aContext method asCodeReference \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPTrace.class/instance/timing.st b/packages/Babylonian-Core.package/BPTrace.class/instance/timing.st new file mode 100644 index 00000000..6e544282 --- /dev/null +++ b/packages/Babylonian-Core.package/BPTrace.class/instance/timing.st @@ -0,0 +1,9 @@ +as yet unclassified +timing + + | list | + list := OrderedCollection new. + self probes keysAndValuesDo: [:probeId :values | + values do: [:value | list addLast: {probeId. value}]]. + list sort: [:a :b | a second time <= b second time]. + ^ list \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPTrace.class/methodProperties.json b/packages/Babylonian-Core.package/BPTrace.class/methodProperties.json index e6e98eb6..d8088781 100644 --- a/packages/Babylonian-Core.package/BPTrace.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPTrace.class/methodProperties.json @@ -2,9 +2,13 @@ "class" : { }, "instance" : { - "addTracedValue:forAssertion:" : "jb 12/7/2020 18:53", - "addTracedValue:forProbe:" : "jb 12/7/2020 18:53", + "addTracedValue:forAssertion:" : "cmfcmf 10/23/2020 15:03", + "addTracedValue:forProbe:" : "cmfcmf 10/23/2020 15:03", "assertions" : "pre 5/10/2019 10:09", + "callgraph" : "cmfcmf 11/9/2020 14:50", + "callgraph:" : "cmfcmf 11/9/2020 14:50", + "duration" : "cmfcmf 9/17/2020 13:40", + "duration:" : "cmfcmf 9/17/2020 13:40", "example" : "pre 5/8/2019 16:26", "example:" : "jb 12/7/2020 18:54", "exampleErrored" : "pre 7/25/2019 12:19", @@ -15,18 +19,19 @@ "includesValuesForProbeId:" : "pre 7/24/2019 11:30", "initialize" : "jb 12/7/2020 18:54", "mementoFor:" : "pre 9/28/2020 10:29", - "newTracedAssignmentValue:previousValues:expression:stackFrom:" : "pre 10/12/2020 17:58", - "newTracedValue:expression:stackFrom:" : "pre 10/12/2020 17:57", + "newTracedAssignmentValue:previousValues:expression:stackFrom:" : "cmfcmf 10/30/2020 12:30", + "newTracedValue:expression:stackFrom:" : "cmfcmf 10/30/2020 12:30", "probes" : "pre 5/8/2019 16:44", "recordedException" : "pre 7/25/2019 12:28", "recordedException:" : "jb 12/7/2020 18:54", "resultsForAssertionId:" : "pre 11/18/2019 12:55", "runsForBlockId:" : "pre 9/25/2020 17:08", "stackFrom:" : "pre 9/28/2020 10:33", - "trace:forAssertion:inContext:" : "jb 12/7/2020 18:54", - "trace:forId:inContext:" : "jb 12/7/2020 18:54", - "traceAssignment:previousValues:forId:inContext:" : "jb 12/7/2020 18:54", - "traceBlock:enteredInContext:" : "jb 12/7/2020 18:54", - "traceException:" : "jb 12/7/2020 18:54", - "traceException:forId:" : "jb 12/7/2020 18:55", + "timing" : "cmfcmf 11/9/2020 14:50", + "trace:forAssertion:inContext:" : "pre 9/25/2020 17:04", + "trace:forId:inContext:" : "pre 5/14/2019 17:00", + "traceAssignment:previousValues:forId:inContext:" : "pre 7/6/2020 18:21", + "traceBlock:enteredInContext:" : "pre 9/28/2020 10:52", + "traceException:" : "pre 7/25/2019 12:29", + "traceException:forId:" : "pre 7/25/2019 12:29", "valuesForProbeId:" : "pre 8/17/2020 09:30" } } diff --git a/packages/Babylonian-Core.package/BPTrace.class/properties.json b/packages/Babylonian-Core.package/BPTrace.class/properties.json index 1a799e8f..b688e740 100644 --- a/packages/Babylonian-Core.package/BPTrace.class/properties.json +++ b/packages/Babylonian-Core.package/BPTrace.class/properties.json @@ -13,7 +13,9 @@ "recordedException", "exampleExecutionProcess", "hasTraceCompleted", - "blockRecord" ], + "blockRecord", + "duration", + "callgraph" ], "name" : "BPTrace", "pools" : [ ], diff --git a/packages/Babylonian-Core.package/BPTraceAssignmentValue.class/class/value.identityHash.previousValues.stack..st b/packages/Babylonian-Core.package/BPTraceAssignmentValue.class/class/value.identityHash.previousValues.stack.methodReference..st similarity index 62% rename from packages/Babylonian-Core.package/BPTraceAssignmentValue.class/class/value.identityHash.previousValues.stack..st rename to packages/Babylonian-Core.package/BPTraceAssignmentValue.class/class/value.identityHash.previousValues.stack.methodReference..st index 211cdb0f..a151fbe8 100644 --- a/packages/Babylonian-Core.package/BPTraceAssignmentValue.class/class/value.identityHash.previousValues.stack..st +++ b/packages/Babylonian-Core.package/BPTraceAssignmentValue.class/class/value.identityHash.previousValues.stack.methodReference..st @@ -1,6 +1,6 @@ instance creation -value: anObject identityHash: identityHash previousValues: variableAndValuesTuples stack: arrayOfContexts +value: anObject identityHash: identityHash previousValues: variableAndValuesTuples stack: arrayOfContexts methodReference: aMethodReference - ^ (self value: anObject identityHash: identityHash stack: arrayOfContexts) + ^ (self value: anObject identityHash: identityHash stack: arrayOfContexts methodReference: aMethodReference) previousValues: variableAndValuesTuples; yourself \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPTraceAssignmentValue.class/methodProperties.json b/packages/Babylonian-Core.package/BPTraceAssignmentValue.class/methodProperties.json index 025d6cef..cea07f35 100644 --- a/packages/Babylonian-Core.package/BPTraceAssignmentValue.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPTraceAssignmentValue.class/methodProperties.json @@ -1,6 +1,6 @@ { "class" : { - "value:identityHash:previousValues:stack:" : "pre 10/12/2020 17:58" }, + "value:identityHash:previousValues:stack:methodReference:" : "cmfcmf 10/30/2020 12:30" }, "instance" : { "assignedVariableNames" : "pre 7/6/2020 18:41", "initialize" : "jb 12/7/2020 18:55", diff --git a/packages/Babylonian-Core.package/BPTraceValue.class/class/value.identityHash.stack..st b/packages/Babylonian-Core.package/BPTraceValue.class/class/value.identityHash.stack.methodReference..st similarity index 72% rename from packages/Babylonian-Core.package/BPTraceValue.class/class/value.identityHash.stack..st rename to packages/Babylonian-Core.package/BPTraceValue.class/class/value.identityHash.stack.methodReference..st index 9531d87e..bee68edb 100644 --- a/packages/Babylonian-Core.package/BPTraceValue.class/class/value.identityHash.stack..st +++ b/packages/Babylonian-Core.package/BPTraceValue.class/class/value.identityHash.stack.methodReference..st @@ -1,8 +1,9 @@ instance creation -value: aValue identityHash: tracedValueIdentityHash stack: aCollection +value: aValue identityHash: tracedValueIdentityHash stack: aCollection methodReference: aMethodReference ^ self new tracedValue: aValue; tracedValueIdentityHash: tracedValueIdentityHash; stack: aCollection; + methodReference: aMethodReference; yourself \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPTraceValue.class/instance/initialize.st b/packages/Babylonian-Core.package/BPTraceValue.class/instance/initialize.st new file mode 100644 index 00000000..49bb8737 --- /dev/null +++ b/packages/Babylonian-Core.package/BPTraceValue.class/instance/initialize.st @@ -0,0 +1,5 @@ +initialize-release +initialize + + super initialize. + self time: DateAndTime now. \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPTraceValue.class/instance/methodReference..st b/packages/Babylonian-Core.package/BPTraceValue.class/instance/methodReference..st new file mode 100644 index 00000000..3c15a5e5 --- /dev/null +++ b/packages/Babylonian-Core.package/BPTraceValue.class/instance/methodReference..st @@ -0,0 +1,4 @@ +accessing +methodReference: aMethodReference + + methodReference := aMethodReference \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPTraceValue.class/instance/methodReference.st b/packages/Babylonian-Core.package/BPTraceValue.class/instance/methodReference.st new file mode 100644 index 00000000..bf32ce67 --- /dev/null +++ b/packages/Babylonian-Core.package/BPTraceValue.class/instance/methodReference.st @@ -0,0 +1,4 @@ +accessing +methodReference + + ^ methodReference \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPTraceValue.class/instance/printOn..st b/packages/Babylonian-Core.package/BPTraceValue.class/instance/printOn..st index 84d1b59e..8ad857c2 100644 --- a/packages/Babylonian-Core.package/BPTraceValue.class/instance/printOn..st +++ b/packages/Babylonian-Core.package/BPTraceValue.class/instance/printOn..st @@ -1,6 +1,8 @@ printing printOn: aSteam - + super printOn: aSteam. aSteam space. - self tracedValue printOn: aSteam. \ No newline at end of file + self tracedValue printOn: aSteam. + aSteam space. + self time printOn: aSteam diff --git a/packages/Babylonian-Core.package/BPTraceValue.class/instance/time..st b/packages/Babylonian-Core.package/BPTraceValue.class/instance/time..st new file mode 100644 index 00000000..74e1efb9 --- /dev/null +++ b/packages/Babylonian-Core.package/BPTraceValue.class/instance/time..st @@ -0,0 +1,4 @@ +accessing +time: aNumber + + time := aNumber \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPTraceValue.class/instance/time.st b/packages/Babylonian-Core.package/BPTraceValue.class/instance/time.st new file mode 100644 index 00000000..091ee70d --- /dev/null +++ b/packages/Babylonian-Core.package/BPTraceValue.class/instance/time.st @@ -0,0 +1,4 @@ +accessing +time + + ^ time \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPTraceValue.class/methodProperties.json b/packages/Babylonian-Core.package/BPTraceValue.class/methodProperties.json index 48bfd372..989cc8eb 100644 --- a/packages/Babylonian-Core.package/BPTraceValue.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPTraceValue.class/methodProperties.json @@ -1,10 +1,15 @@ { "class" : { - "value:identityHash:stack:" : "pre 10/12/2020 17:57" }, + "value:identityHash:stack:methodReference:" : "cmfcmf 10/30/2020 12:30" }, "instance" : { - "printOn:" : "jb 12/7/2020 18:55", + "initialize" : "cmfcmf 9/17/2020 14:45", + "methodReference" : "cmfcmf 10/28/2020 12:05", + "methodReference:" : "cmfcmf 10/28/2020 12:04", + "printOn:" : "cmfcmf 9/17/2020 13:24", "stack" : "pre 5/8/2019 18:36", - "stack:" : "jb 12/7/2020 18:55", + "stack:" : "pre 5/8/2019 18:36", + "time" : "cmfcmf 9/17/2020 13:09", + "time:" : "cmfcmf 9/17/2020 13:08", "traceHasFailedBefore" : "pre 7/10/2020 15:52", "tracedValue" : "pre 5/8/2019 16:42", "tracedValue:" : "jb 12/7/2020 18:55", diff --git a/packages/Babylonian-Core.package/BPTraceValue.class/properties.json b/packages/Babylonian-Core.package/BPTraceValue.class/properties.json index b10616e7..d80b63a5 100644 --- a/packages/Babylonian-Core.package/BPTraceValue.class/properties.json +++ b/packages/Babylonian-Core.package/BPTraceValue.class/properties.json @@ -8,7 +8,9 @@ "instvars" : [ "tracedValue", "tracedValueIdentityHash", - "stack" ], + "stack", + "time", + "methodReference" ], "name" : "BPTraceValue", "pools" : [ ], diff --git a/packages/Babylonian-Core.package/BPTracer.class/instance/check.after.forAssertion.given.inContext..st b/packages/Babylonian-Core.package/BPTracer.class/instance/check.after.forAssertion.given.inContext..st index d62e8b67..c6208d25 100644 --- a/packages/Babylonian-Core.package/BPTracer.class/instance/check.after.forAssertion.given.inContext..st +++ b/packages/Babylonian-Core.package/BPTracer.class/instance/check.after.forAssertion.given.inContext..st @@ -4,7 +4,7 @@ check: assertionBlock after: codeBlock forAssertion: anAssertionId given: anExam | result | self checkForHaltAt: anAssertionId. - result := #bpInstrumented withLayerDo: [codeBlock value]. + result := #bpInstrumented withLayerDo: [(self wrapUserCode: codeBlock) value]. (self exampleNameMatches: anExampleName) ifTrue: [ trace trace: ((assertionBlock cull: result) = true) diff --git a/packages/Babylonian-Core.package/BPTracer.class/instance/execute..st b/packages/Babylonian-Core.package/BPTracer.class/instance/execute..st new file mode 100644 index 00000000..7a631a10 --- /dev/null +++ b/packages/Babylonian-Core.package/BPTracer.class/instance/execute..st @@ -0,0 +1,16 @@ +as yet unclassified +execute: aBlock + + | s | + s := Stopwatch new. + s activate. + + aBlock + on: Error", Halt" + do: [:e | + self halt. + BPActiveTracer value traceException: e. + BPExampleExecutionInterrupted signal: self completeTrace]. + + s suspend. + trace duration: s end duration \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPTracer.class/instance/replace.with.for..st b/packages/Babylonian-Core.package/BPTracer.class/instance/replace.with.for..st index 1cd27233..9fab2eec 100644 --- a/packages/Babylonian-Core.package/BPTracer.class/instance/replace.with.for..st +++ b/packages/Babylonian-Core.package/BPTracer.class/instance/replace.with.for..st @@ -1,6 +1,8 @@ replacing -replace: originalCode with: replacementCode for: exampleName +replace: originalCode with: replacementCode for: exampleName + + ^ ((self exampleNameMatches: exampleName) or: [exampleName = BPReplacement allExamplesName]) ifTrue: replacementCode - ifFalse: originalCode \ No newline at end of file + ifFalse: (self wrapUserCode: originalCode) \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPTracer.class/instance/traceBlock.forProbe..st b/packages/Babylonian-Core.package/BPTracer.class/instance/traceBlock.forProbe..st index 72fdb162..b0bf4a95 100644 --- a/packages/Babylonian-Core.package/BPTracer.class/instance/traceBlock.forProbe..st +++ b/packages/Babylonian-Core.package/BPTracer.class/instance/traceBlock.forProbe..st @@ -1,7 +1,7 @@ private traceBlock: aBlock forProbe: aProbeId - ^ [#bpInstrumented withLayerDo: aBlock] + ^ [#bpInstrumented withLayerDo: (self wrapUserCode: aBlock)] on: Error do: [:anError | trace traceException: anError forId: aProbeId. diff --git a/packages/Babylonian-Core.package/BPTracer.class/instance/traceException..st b/packages/Babylonian-Core.package/BPTracer.class/instance/traceException..st new file mode 100644 index 00000000..9d1082bb --- /dev/null +++ b/packages/Babylonian-Core.package/BPTracer.class/instance/traceException..st @@ -0,0 +1,4 @@ +private +traceException: anException + + trace traceException: anException \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPTracer.class/instance/wrapUserCode..st b/packages/Babylonian-Core.package/BPTracer.class/instance/wrapUserCode..st new file mode 100644 index 00000000..d18c5e63 --- /dev/null +++ b/packages/Babylonian-Core.package/BPTracer.class/instance/wrapUserCode..st @@ -0,0 +1,6 @@ +callgraph +wrapUserCode: aBlock + + ^ Smalltalk at: #RSSimulator + ifPresent: [:simulator | [simulator simulateIfNeeded: aBlock additionalDepth: 0]] + ifAbsent: [aBlock] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPTracer.class/methodProperties.json b/packages/Babylonian-Core.package/BPTracer.class/methodProperties.json index 5375b839..b81935dd 100644 --- a/packages/Babylonian-Core.package/BPTracer.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPTracer.class/methodProperties.json @@ -2,19 +2,22 @@ "class" : { "forExample:" : "jb 12/3/2020 23:06" }, "instance" : { - "check:after:forAssertion:given:inContext:" : "pre 9/29/2020 16:15", - "checkForHaltAt:" : "jb 12/7/2020 18:55", + "check:after:forAssertion:given:inContext:" : "cmfcmf 10/30/2020 12:32", + "checkForHaltAt:" : "pre 9/29/2020 16:38", "completeTrace" : "pre 9/25/2020 17:07", "example" : "pre 8/17/2020 10:15", "exampleNameMatches:" : "pre 11/18/2019 13:03", - "haltAt:" : "jb 12/7/2020 18:55", - "initialize" : "jb 12/7/2020 18:55", - "intermediateTrace" : "jb 12/3/2020 22:45", - "recordBlock:enteredFrom:" : "jb 12/7/2020 18:55", + "execute:" : "cmfcmf 9/25/2020 11:56", + "haltAt:" : "pre 9/29/2020 16:14", + "initialize" : "pre 9/28/2020 12:08", + "intermediateTrace" : "pre 8/17/2020 10:18", + "recordBlock:enteredFrom:" : "pre 9/25/2020 17:04", "replace:with:" : "pre 5/17/2019 16:43", - "replace:with:for:" : "pre 11/18/2019 12:12", - "setExample:" : "jb 12/7/2020 18:56", + "replace:with:for:" : "cmfcmf 9/22/2020 18:05", + "setExample:" : "pre 5/8/2019 16:29", "trace:through:forProbe:inContext:" : "pre 9/29/2020 16:15", "traceAssignment:previousValues:forProbe:inContext:" : "pre 9/29/2020 16:13", - "traceBlock:forProbe:" : "jb 12/3/2020 23:22", - "traceError:" : "jb 12/7/2020 18:56" } } + "traceBlock:forProbe:" : "cmfcmf 9/22/2020 18:04", + "traceError:" : "pre 10/12/2020 11:16", + "traceException:" : "pre 8/17/2020 10:15", + "wrapUserCode:" : "cmfcmf 1/13/2021 11:43" } } diff --git a/packages/Babylonian-Core.package/BlockClosure.extension/instance/bpTraceAsyncForExample.notifying..st b/packages/Babylonian-Core.package/BlockClosure.extension/instance/bpTraceAsyncForExample.notifying..st index 6d3924b4..160f561c 100644 --- a/packages/Babylonian-Core.package/BlockClosure.extension/instance/bpTraceAsyncForExample.notifying..st +++ b/packages/Babylonian-Core.package/BlockClosure.extension/instance/bpTraceAsyncForExample.notifying..st @@ -3,5 +3,5 @@ bpTraceAsyncForExample: anExample notifying: requestorBlock | tracer | tracer := BPTracer forExample: anExample. - requestorBlock value: tracer intermediateTrace. + requestorBlock value: {tracer intermediateTrace . nil}. ^ self bpTraceWith: tracer \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BlockClosure.extension/methodProperties.json b/packages/Babylonian-Core.package/BlockClosure.extension/methodProperties.json index c07ee574..2fea361a 100644 --- a/packages/Babylonian-Core.package/BlockClosure.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BlockClosure.extension/methodProperties.json @@ -2,7 +2,7 @@ "class" : { }, "instance" : { - "bpTraceAsyncForExample:notifying:" : "pre 8/17/2020 10:21", + "bpTraceAsyncForExample:notifying:" : "cmfcmf 11/9/2020 15:16", "bpTraceForExample:" : "pre 9/29/2020 16:44", "bpTraceForExample:andHaltAt:" : "pre 9/29/2020 16:32", "bpTraceWith:" : "jb 12/13/2020 20:39" } } diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize..st new file mode 100644 index 00000000..04a1e7dd --- /dev/null +++ b/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize..st @@ -0,0 +1,53 @@ +*Babylonian-Core-Callgraph-ByteCode +additionalSize: encoder + + + | size tracerClassLitIndex blockIdentifierLitIndex invocationTempIndex enterInvocationLitIndex | + self optimized ifTrue: [ + self assert: (self isRootBlock: encoder) not. "the root block (= method body) should never be optimized" + ^ 0]. + "self isQuick ifTrue: [^ 0]." + size := 0. + invocationTempIndex := self invocationTempIndex: encoder. + + (self isRootBlock: encoder) + ifTrue: [ | invocationCountLitIndex | + invocationCountLitIndex := self litIndexInvocationCount: encoder. + size := size + (encoder copy sizePushLiteralVar: invocationCountLitIndex). + size := size + (encoder copy sizeStoreTemp: invocationTempIndex). + size := size + (encoder copy sizePushSpecialLiteral: 1). "push constant 1" + size := size + (encoder copy sizeSendSpecial: 1 numArgs: 1). "1 is the index of #+ in the 24th element of Smalltalk's special object array." + size := size + (encoder copy sizeStorePopLiteralVar: invocationCountLitIndex)] + ifFalse: [ + temporaries ifNotEmpty: [ + " + Special handling is needed when the block defines inner temporary variables. Block temporaries are indexed in the following order: + 1. args (numArgs, arguments size) + 2. temps from outer scope (numCopied, copiedValues size) [both readonly and r/w temps] + 3. temps from inner scope (pushConstant: nil, temporaries size) + + Since our newly introduced temporary that holds the invocation counter is conditionally added to the block and falls into the second + category, we need to add extra code to move the copied temporary into the last temp from the inner scope. + " + "size := size + (encoder copy sizePushTemp: arguments size + copiedValues size). + size := size + (encoder copy sizeStorePopTemp: arguments size + copiedValues size)" + size := size + (encoder copy sizePushTemp: arguments size + copiedValues size). + size := size + (encoder copy sizeStorePopTemp: invocationTempIndex). + size := size + (encoder copy sizePushSpecialLiteral: nil). + size := size + (encoder copy sizeStorePopTemp: arguments size + copiedValues size)]]. + + tracerClassLitIndex := self litIndexTracerClass: encoder. + blockIdentifierLitIndex := self litIndexBlockIdentifier: encoder. + enterInvocationLitIndex := self litIndexEnterInvocation: encoder. + + size := size + (encoder copy sizePushLiteralVar: tracerClassLitIndex). + size := size + (encoder copy sizePushLiteralVar: blockIdentifierLitIndex). + size := size + (encoder copy sizePushTemp: invocationTempIndex). + size := size + (encoder copy sizeSend: enterInvocationLitIndex numArgs: 2). + size := size + (encoder copy sizePop). + + "self returns ifFalse: [" + "if the block does not return (i.e., no methodReturn, but a blockReturn), then generate the exit code within the BlockNode. Otherwise, we need to generate the exit code within the Return- and VariableNodes" + "size := size + (self additionalReturnSize: encoder)]." + + ^ size \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock..st new file mode 100644 index 00000000..fbb543a5 --- /dev/null +++ b/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock..st @@ -0,0 +1,6 @@ +*Babylonian-Core-Callgraph-ByteCode +additionalSizeBeforeBlock: encoder + + + + ^ encoder copy sizePushTempLong: 0 \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder..st new file mode 100644 index 00000000..ac8e9ae3 --- /dev/null +++ b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder..st @@ -0,0 +1,16 @@ +*Babylonian-Core-Callgraph-ByteCode +emitCodeForEvaluatedClosureValue: stack encoder: encoder + + + | position | + position := stack position. + stack position: arguments size + "inner temporaries" temporaries size + "copied temporaries" copiedValues size. + encoder genPushNClosureTemps: temporaries size. + self + reindexingLocalsDo: [self emitCodeForEvaluatedValue: stack encoder: encoder] + encoder: encoder. + self returns ifFalse: + [""self emitNOPs: encoder stack: stack n: (self additionalReturnSize: encoder returns: false) type: #endBlock."" + encoder genReturnTopToCaller. "blockReturn" + pc := encoder pc]. + stack position: position \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder..st new file mode 100644 index 00000000..8c6d48b1 --- /dev/null +++ b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder..st @@ -0,0 +1,4 @@ +*Babylonian-Core-Callgraph-ByteCode +emitCodeForEvaluatedFullClosureValue: stack encoder: encoder + + self error: 'Full closures not supported' \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder..st new file mode 100644 index 00000000..fcc18a78 --- /dev/null +++ b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder..st @@ -0,0 +1,19 @@ +*Babylonian-Core-Callgraph-ByteCode +emitCodeForEvaluatedValue: stack encoder: encoder + + + | position | + position := stack position. + + "" + self optimized ifFalse: [ + self + emitNOPs: encoder + stack: stack + n: (self additionalSize: encoder) + type: ((self isRootBlock: encoder) ifTrue: [#beginRoot] ifFalse: [#begin])]. + "" + + self emitCodeExceptLast: stack encoder: encoder. + statements last emitCodeForBlockValue: stack encoder: encoder. + self assert: stack position - 1 = position \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder..st new file mode 100644 index 00000000..91865fc6 --- /dev/null +++ b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder..st @@ -0,0 +1,23 @@ +*Babylonian-Core-Callgraph-ByteCode +emitCodeForValue: stack encoder: encoder + + encoder supportsFullBlocks ifTrue: [^self error: 'full blocks not supported']. + + + copiedValues do: + [:copiedValue| copiedValue emitCodeForValue: stack encoder: encoder]. + + "" + (self isRootBlock: encoder) ifFalse: [self emitNOPs: encoder stack: stack n: (self additionalSizeBeforeBlock: encoder) type: #beforeBlock]. + "" + + closureCreationNode pc: encoder nextPC. + encoder + genPushClosureCopyNumCopiedValues: copiedValues size + numArgs: arguments size + jumpSize: size. + stack + pop: copiedValues size; + push: 1. + "Emit the body of the block" + self emitCodeForEvaluatedClosureValue: stack encoder: encoder \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock..st new file mode 100644 index 00000000..ed50bea6 --- /dev/null +++ b/packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock..st @@ -0,0 +1,5 @@ +*Babylonian-Core-Callgraph-ByteCode +isRootBlock: encoder + + + ^ self == encoder rootNode block \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier..st new file mode 100644 index 00000000..5cf5860a --- /dev/null +++ b/packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier..st @@ -0,0 +1,14 @@ +*Babylonian-Core-Callgraph-ByteCode +litIndexBlockIdentifier: encoder + + + + self assert: self optimized not. + ^ encoder sharableLitIndex: (BPByteCodeAssociation + key: ( + 'bpClassNameMethodNameBlockIdx-', + (self blockExtent), '-', + (self findEnclosingNonOptimizedBlockId: encoder), '-', + (temporaries size) "number of block local, non-copied, temporaries" + ) asSymbol + value: nil) \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue..st new file mode 100644 index 00000000..333ddea6 --- /dev/null +++ b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue..st @@ -0,0 +1,12 @@ +*Babylonian-Core-Callgraph-ByteCode +sizeCodeForEvaluatedClosureValue: encoder + + "The closure value primitives push the arguments and the copied values. + The compiler guarantees that any copied values come before all local temps. + So on closure activation we only need to push nils for the remaining temporaries." + ^(encoder sizePushNClosureTemps: temporaries size) + + (self + reindexingLocalsDo: [self sizeCodeForEvaluatedValue: encoder] + encoder: nil "don't store temps yet") + + (self returns ifTrue: [0] ifFalse: [""(self additionalReturnSize: encoder returns: false)"" + encoder sizeReturnTopToCaller]) + """+ ((self isRootBlock: encoder) ifFalse: [self additionalSize: encoder] ifTrue: [0])""" \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue..st new file mode 100644 index 00000000..a9b234a8 --- /dev/null +++ b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue..st @@ -0,0 +1,7 @@ +*Babylonian-Core-Callgraph-ByteCode +sizeCodeForEvaluatedFullClosureValue: encoder + + "The closure value primitives push the arguments and the copied values. + The compiler guarantees that any copied values come before all local temps. + So on full closure activation we need do nothing." + self error: 'full closures not supported' \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue..st new file mode 100644 index 00000000..05b1b474 --- /dev/null +++ b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue..st @@ -0,0 +1,8 @@ +*Babylonian-Core-Callgraph-ByteCode +sizeCodeForEvaluatedValue: encoder + + + + ^ ("(self isRootBlock: encoder) ifTrue: ["self additionalSize: encoder"] ifFalse: [0]") + + (self sizeCodeExceptLast: encoder) + + (statements last sizeCodeForBlockValue: encoder) \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue..st new file mode 100644 index 00000000..2162a098 --- /dev/null +++ b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue..st @@ -0,0 +1,21 @@ +*Babylonian-Core-Callgraph-ByteCode +sizeCodeForValue: encoder + + "Compute the size for the creation of the block and its code." + copiedValues := self computeCopiedValues: encoder rootNode. + self ensureClosureCreationNode: encoder. + encoder supportsFullBlocks ifTrue: + [^(copiedValues inject: 0 into: [:sum :node| sum + (node sizeCodeForValue: encoder)]) + + (encoder + sizePushFullClosure: + (closureCreationNode + key: (self createBlockLiteral: encoder); + reserve: encoder; + index) + numCopied: copiedValues size)]. + "Remember size of body for emit time so we know the size of the jump around it." + size := self sizeCodeForEvaluatedClosureValue: encoder. + ^(copiedValues inject: 0 into: [:sum :node| sum + (node sizeCodeForValue: encoder)]) + + (encoder sizePushClosureCopyNumCopiedValues: copiedValues size numArgs: arguments size jumpSize: size) + + size + ""+ (self additionalSizeBeforeBlock: encoder)"" \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json new file mode 100644 index 00000000..af40ac6f --- /dev/null +++ b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json @@ -0,0 +1,16 @@ +{ + "class" : { + }, + "instance" : { + "additionalSize:" : "3/11/2021 15:28:41", + "additionalSizeBeforeBlock:" : "3/11/2021 15:28:41", + "emitCodeForEvaluatedClosureValue:encoder:" : "3/11/2021 15:28:41", + "emitCodeForEvaluatedFullClosureValue:encoder:" : "3/11/2021 15:28:41", + "emitCodeForEvaluatedValue:encoder:" : "3/11/2021 15:28:41", + "emitCodeForValue:encoder:" : "3/11/2021 15:28:41", + "isRootBlock:" : "3/11/2021 15:28:41", + "litIndexBlockIdentifier:" : "3/11/2021 15:28:41", + "sizeCodeForEvaluatedClosureValue:" : "3/11/2021 15:28:41", + "sizeCodeForEvaluatedFullClosureValue:" : "3/11/2021 15:28:41", + "sizeCodeForEvaluatedValue:" : "3/11/2021 15:28:41", + "sizeCodeForValue:" : "3/11/2021 15:28:41" } } diff --git a/packages/Babylonian-Core.package/BlockNode.extension/properties.json b/packages/Babylonian-Core.package/BlockNode.extension/properties.json new file mode 100644 index 00000000..304e2737 --- /dev/null +++ b/packages/Babylonian-Core.package/BlockNode.extension/properties.json @@ -0,0 +1,2 @@ +{ + "name" : "BlockNode" } diff --git a/packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/genNops..st b/packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/genNops..st new file mode 100644 index 00000000..0981f08b --- /dev/null +++ b/packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/genNops..st @@ -0,0 +1,12 @@ +*Babylonian-Core-Callgraph-ByteCode +genNops: aNumber + + | size | + + size := self copy sizeJump: aNumber - 1. + size == 1 + ifTrue: [self genJump: aNumber - 1] + ifFalse: [self genJumpLong: aNumber - size]. + + self assert: self copy sizeDup == 1. + 1 to: aNumber - size do: [:i | self genDup] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from..st b/packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from..st new file mode 100644 index 00000000..0731df54 --- /dev/null +++ b/packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from..st @@ -0,0 +1,55 @@ +*Babylonian-Core-Callgraph-ByteCode +generateMethodOfClass: aCompiledMethodClass trailer: trailer from: methodNode + "The receiver is the root of a parse tree. Answer an instance of aCompiledMethodClass. + The argument, trailer, is arbitrary but is typically either the reference to the source code + that is stored with every CompiledMethod, or an encoding of the method's temporary names." + + + | primErrNode blkSize nLits locals literals header method stack | + primErrNode := methodNode primitiveErrorVariableName ifNotNil: + [self fixTemp: methodNode primitiveErrorVariableName]. + methodNode ensureClosureAnalysisDone. + self rootNode: methodNode. "this is for BlockNode>>sizeCodeForClosureValue:" + blkSize := (methodNode block sizeCodeForEvaluatedValue: self) + + (methodNode primitive > 0 + ifTrue: [self sizeCallPrimitive: methodNode primitive] + ifFalse: [0]) + + (primErrNode + ifNil: [0] + ifNotNil: + [primErrNode + index: methodNode arguments size + methodNode temporaries size; + sizeCodeForStore: self "The VM relies on storeIntoTemp: (129)"]). + locals := methodNode arguments, methodNode temporaries, (primErrNode ifNil: [#()] ifNotNil: [{primErrNode}]). + self noteBlockExtent: methodNode block blockExtent hasLocals: locals. + header := self computeMethodHeaderForNumArgs: methodNode arguments size + numTemps: locals size "" + 1 "" + numLits: (nLits := (literals := self allLiterals) size) + primitive: methodNode primitive. + method := trailer + createMethod: blkSize + class: aCompiledMethodClass + header: header. + 1 to: nLits do: + [:lit | + (method literalAt: lit put: (literals at: lit)) isCompiledCode ifTrue: + [(literals at: lit) outerCode: method]]. + self streamToMethod: method. + stack := ParseStack new init. + methodNode primitive > 0 ifTrue: + [self genCallPrimitive: methodNode primitive]. + primErrNode ifNotNil: + [primErrNode emitCodeForStore: stack encoder: self]. + stack position: method numTemps. + [methodNode block emitCodeForEvaluatedValue: stack encoder: self] + on: Error "If an attempt is made to write too much code the method will be asked" + do: [:ex| "to grow, and the grow attempt will fail in CompiledCode class>>#newMethodViaNewError" + ex signalerContext sender method = (CompiledCode class>>#newMethodViaNewError) + ifTrue: [^self error: 'Compiler code size discrepancy'] + ifFalse: [ex pass]]. + stack position ~= (method numTemps + 1) ifTrue: + [^self error: 'Compiler stack discrepancy']. + stream position ~= (method size - trailer size) ifTrue: + [^self error: 'Compiler code size discrepancy']. + method needsFrameSize: stack size - method numTemps. + ^method \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json new file mode 100644 index 00000000..c35e4b13 --- /dev/null +++ b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json @@ -0,0 +1,6 @@ +{ + "class" : { + }, + "instance" : { + "genNops:" : "cmfcmf 11/27/2020 13:40", + "generateMethodOfClass:trailer:from:" : "3/11/2021 15:28:41" } } diff --git a/packages/Babylonian-Core.package/BytecodeEncoder.extension/properties.json b/packages/Babylonian-Core.package/BytecodeEncoder.extension/properties.json new file mode 100644 index 00000000..3f4a250a --- /dev/null +++ b/packages/Babylonian-Core.package/BytecodeEncoder.extension/properties.json @@ -0,0 +1,2 @@ +{ + "name" : "BytecodeEncoder" } diff --git a/packages/Babylonian-Core.package/CSLayeredMethod.extension/class/flushAllCaches.st b/packages/Babylonian-Core.package/CSLayeredMethod.extension/class/flushAllCaches.st new file mode 100644 index 00000000..b0bd0490 --- /dev/null +++ b/packages/Babylonian-Core.package/CSLayeredMethod.extension/class/flushAllCaches.st @@ -0,0 +1,5 @@ +*Babylonian-Core-Callgraph-ByteCode +flushAllCaches + + (FlushingPaused ifNil: [false]) ifTrue: [ + self allInstances do: [:method | method flushCache]] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/CSLayeredMethod.extension/class/pauseFlushingCachesDuring..st b/packages/Babylonian-Core.package/CSLayeredMethod.extension/class/pauseFlushingCachesDuring..st new file mode 100644 index 00000000..6717928a --- /dev/null +++ b/packages/Babylonian-Core.package/CSLayeredMethod.extension/class/pauseFlushingCachesDuring..st @@ -0,0 +1,8 @@ +*Babylonian-Core-Callgraph-ByteCode +pauseFlushingCachesDuring: aBlock + "pause self >> #flushAllCaches during execution of aBlock, and call it once after aBlock completes. + This is useful, for instance, when recompiling a large number of methods." + (FlushingPaused ifNil: [false]) ifTrue: [^ aBlock value "support nested pausing"]. + FlushingPaused := true. + ^ aBlock ensure: [FlushingPaused := false. + self flushAllCaches] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/CSLayeredMethod.extension/methodProperties.json b/packages/Babylonian-Core.package/CSLayeredMethod.extension/methodProperties.json new file mode 100644 index 00000000..d2ea7183 --- /dev/null +++ b/packages/Babylonian-Core.package/CSLayeredMethod.extension/methodProperties.json @@ -0,0 +1,6 @@ +{ + "class" : { + "flushAllCaches" : "smalltalkCI 1/14/2021 14:09", + "pauseFlushingCachesDuring:" : "smalltalkCI 1/14/2021 14:08" }, + "instance" : { + } } diff --git a/packages/Babylonian-Core.package/CSLayeredMethod.extension/properties.json b/packages/Babylonian-Core.package/CSLayeredMethod.extension/properties.json new file mode 100644 index 00000000..cddc64ff --- /dev/null +++ b/packages/Babylonian-Core.package/CSLayeredMethod.extension/properties.json @@ -0,0 +1,2 @@ +{ + "name" : "CSLayeredMethod" } diff --git a/packages/Babylonian-Core.package/CompiledMethod.extension/methodProperties.json b/packages/Babylonian-Core.package/CompiledMethod.extension/methodProperties.json index bee7c7d2..2e8c0d4e 100644 --- a/packages/Babylonian-Core.package/CompiledMethod.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/CompiledMethod.extension/methodProperties.json @@ -7,5 +7,5 @@ "bpNewExampleFrom:" : "pre 1/6/2021 19:04", "bpRemoveExample:" : "pre 1/6/2021 18:58", "compiledMethod" : "pre 7/7/2020 15:39", - "isBPInstalled" : "pre 1/11/2021 12:00", + "isBPInstalled" : "pre 1/20/2021 16:45", "runExamples" : "pre 8/20/2020 12:30" } } diff --git a/packages/Babylonian-Core.package/Context.extension/instance/invocationCount.st b/packages/Babylonian-Core.package/Context.extension/instance/invocationCount.st new file mode 100644 index 00000000..19481651 --- /dev/null +++ b/packages/Babylonian-Core.package/Context.extension/instance/invocationCount.st @@ -0,0 +1,7 @@ +*Babylonian-Core-Callgraph-ByteCode +invocationCount + + "return the invocation count of the method that corresponds to this context. If this is a closure context, return the invocation count of the method this closure was created in (self home)." + | home | + home := self home. + ^ home tempAt: home numTemps \ No newline at end of file diff --git a/packages/Babylonian-Core.package/Context.extension/methodProperties.json b/packages/Babylonian-Core.package/Context.extension/methodProperties.json new file mode 100644 index 00000000..d03e43d3 --- /dev/null +++ b/packages/Babylonian-Core.package/Context.extension/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "invocationCount" : "cmfcmf 1/4/2021 12:21" } } diff --git a/packages/Babylonian-Core.package/Context.extension/properties.json b/packages/Babylonian-Core.package/Context.extension/properties.json new file mode 100644 index 00000000..c6678adb --- /dev/null +++ b/packages/Babylonian-Core.package/Context.extension/properties.json @@ -0,0 +1,2 @@ +{ + "name" : "Context" } diff --git a/packages/Babylonian-Core.package/DynamicVariable.extension/class/value.during.inProcess..st b/packages/Babylonian-Core.package/DynamicVariable.extension/class/value.during.inProcess..st new file mode 100644 index 00000000..b35aa3f2 --- /dev/null +++ b/packages/Babylonian-Core.package/DynamicVariable.extension/class/value.during.inProcess..st @@ -0,0 +1,15 @@ +*Babylonian-Core-Callgraph-ByteCode +value: anObject during: aBlock inProcess: aProcess + + | p oldValue outerScopeWasDynamic | + p := aProcess. + outerScopeWasDynamic := true. + oldValue := p + environmentAt: self + ifAbsent: [outerScopeWasDynamic := false. nil]. + ^[ + p environmentAt: self put: anObject. + aBlock value ] + ensure: [ outerScopeWasDynamic + ifTrue: [p environmentAt: self put: oldValue] + ifFalse: [p environmentRemoveKey: self ifAbsent: []] ]. \ No newline at end of file diff --git a/packages/Babylonian-Core.package/DynamicVariable.extension/methodProperties.json b/packages/Babylonian-Core.package/DynamicVariable.extension/methodProperties.json new file mode 100644 index 00000000..2dd52a2d --- /dev/null +++ b/packages/Babylonian-Core.package/DynamicVariable.extension/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + "value:during:inProcess:" : "cmfcmf 11/9/2020 16:59" }, + "instance" : { + } } diff --git a/packages/Babylonian-Core.package/DynamicVariable.extension/properties.json b/packages/Babylonian-Core.package/DynamicVariable.extension/properties.json new file mode 100644 index 00000000..d1c83ddd --- /dev/null +++ b/packages/Babylonian-Core.package/DynamicVariable.extension/properties.json @@ -0,0 +1,2 @@ +{ + "name" : "DynamicVariable" } diff --git a/packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using..st b/packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using..st new file mode 100644 index 00000000..daf2bc47 --- /dev/null +++ b/packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using..st @@ -0,0 +1,32 @@ +*Babylonian-Core-Callgraph-ByteCode +generate: trailer using: aCompiledMethodClass + "The receiver is the root of a parse tree. Answer an instance of aCompiledMethodClass. + The argument, trailer, is arbitrary but is typically either the reference to the source code + that is stored with every CompiledMethod, or an encoding of the method's temporary names." + + | method doInstrument | + + "" + doInstrument := ("block isQuick not and: ["primitive == 0"]"). + "doInstrument ifTrue: [temporaries asOrderedCollection add: TempVariableNode new]." + "" + + self generate: trailer + using: aCompiledMethodClass + ifQuick: + [:m | + m literalAt: 2 put: encoder associationForClass; + properties: properties. + ^m]. + + method := encoder generateMethodOfClass: aCompiledMethodClass trailer: trailer from: self. + + "" + "initialize our custom method state object" + doInstrument ifTrue: [ | state | + state := BPByteCodeMethodState new. + state setNOPPositions: bpCallgraphNOPs. + properties := properties copyWith: #bpByteCodeMethodState -> state]. + "" + method properties: properties. + ^method \ No newline at end of file diff --git a/packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId..st b/packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId..st new file mode 100644 index 00000000..04671c64 --- /dev/null +++ b/packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId..st @@ -0,0 +1,9 @@ +*Babylonian-Core-Callgraph-ByteCode +rememberNOPs: aSymbol range: anInterval blockId: aNumber + + + bpCallgraphNOPs ifNil: [bpCallgraphNOPs := OrderedCollection new]. + + self assert: ({#endBlock . #endMethod . #begin . #beginRoot . #beforeBlock} includes: aSymbol). + + bpCallgraphNOPs add: {aSymbol . anInterval . aNumber} \ No newline at end of file diff --git a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json new file mode 100644 index 00000000..ad0d35a8 --- /dev/null +++ b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json @@ -0,0 +1,6 @@ +{ + "class" : { + }, + "instance" : { + "generate:using:" : "3/11/2021 15:28:41", + "rememberNOPs:range:blockId:" : "3/11/2021 15:28:41" } } diff --git a/packages/Babylonian-Core.package/MethodNode.extension/properties.json b/packages/Babylonian-Core.package/MethodNode.extension/properties.json new file mode 100644 index 00000000..db8d1cf3 --- /dev/null +++ b/packages/Babylonian-Core.package/MethodNode.extension/properties.json @@ -0,0 +1,2 @@ +{ + "name" : "MethodNode" } diff --git a/packages/Babylonian-Core.package/Object.extension/instance/bpSnapshot.st b/packages/Babylonian-Core.package/Object.extension/instance/bpSnapshot.st index b30935d1..a5a8a098 100644 --- a/packages/Babylonian-Core.package/Object.extension/instance/bpSnapshot.st +++ b/packages/Babylonian-Core.package/Object.extension/instance/bpSnapshot.st @@ -1,12 +1,14 @@ *Babylonian-Core bpSnapshot + "This is a copy of veryDeepCopy which skips fixDependents as it is currently of minor importance and takes a lot of time." | copier new | - copier := DeepCopier new: self initialDeepCopierSize. - new := self veryDeepCopyWith: copier. - copier mapUniClasses. - copier references associationsDo: [:assoc | - assoc value veryDeepFixupWith: copier]. - ^ new \ No newline at end of file + BPByteCodeCallgraphTracer deactivateDuring: [ + copier := DeepCopier new: self initialDeepCopierSize. + new := self veryDeepCopyWith: copier. + copier mapUniClasses. + copier references associationsDo: [:assoc | + assoc value veryDeepFixupWith: copier]. + ^ new] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/Object.extension/methodProperties.json b/packages/Babylonian-Core.package/Object.extension/methodProperties.json index bc785b53..f684be28 100644 --- a/packages/Babylonian-Core.package/Object.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/Object.extension/methodProperties.json @@ -6,7 +6,7 @@ "bpBlock:enteredAt:" : "pre 9/25/2020 17:04", "bpBlock:leftWith:at:" : "pre 9/25/2020 17:03", "bpReplace:with:for:" : "pre 5/17/2019 17:09", - "bpSnapshot" : "pre 3/19/2020 13:47", + "bpSnapshot" : "pre 1/22/2021 11:23", "bpTrace:forProbe:inContext:" : "jb 11/29/2020 22:13", "bpTrace:through:forProbe:inContext:" : "jb 11/29/2020 22:12", "bpTraceAssignmentOf:before:forProbe:inContext:" : "pre 7/6/2020 18:34" } } diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns..st new file mode 100644 index 00000000..94f60496 --- /dev/null +++ b/packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns..st @@ -0,0 +1,18 @@ +*Babylonian-Core-Callgraph-ByteCode +additionalReturnSize: encoder returns: aBoolean + + + | size tracerClassLitIndex blockIdentifierLitIndex exitInvocationLitIndex invocationTempIndex | + tracerClassLitIndex := self litIndexTracerClass: encoder. + blockIdentifierLitIndex := self litIndexBlockIdentifier: encoder. + exitInvocationLitIndex := self litIndexExitInvocation: encoder. + invocationTempIndex := self invocationTempIndex: encoder. + + size := 0. + size := size + (encoder copy sizePushLiteralVar: tracerClassLitIndex). + size := size + (encoder copy sizePushLiteralVar: blockIdentifierLitIndex). + size := size + (encoder copy sizePushSpecialLiteral: aBoolean). + size := size + (encoder copy sizePushTemp: invocationTempIndex). + size := size + (encoder copy sizeSend: exitInvocationLitIndex numArgs: 3). + size := size + (encoder copy sizePop). + ^ size \ No newline at end of file diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder..st new file mode 100644 index 00000000..25dc80b9 --- /dev/null +++ b/packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder..st @@ -0,0 +1,11 @@ +*Babylonian-Core-Callgraph-ByteCode +emitCodeForReturn: stack encoder: encoder + + + self emitCodeForValue: stack encoder: encoder. + + "" + self emitNOPs: encoder stack: stack n: (self additionalReturnSize: encoder returns: true) type: #endMethod. + "" + + encoder genReturnTop \ No newline at end of file diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type..st new file mode 100644 index 00000000..2b59b34b --- /dev/null +++ b/packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type..st @@ -0,0 +1,16 @@ +*Babylonian-Core-Callgraph-ByteCode +emitNOPs: encoder stack: stack n: aNumber type: aSymbol + + + | start | + true caseOf: { + [aSymbol == #begin] -> [stack push: 3. stack pop: 3]. + [aSymbol == #beginRoot] -> [stack push: 2. stack pop: 2]. + [aSymbol == #beforeBlock] -> [stack push: 1. stack pop: 1]. + [aSymbol == #endMethod or: [aSymbol == #endBlock]] -> [stack push: 3. stack pop: 3]}. + start := encoder pc + 1. + encoder genNops: aNumber. + encoder rootNode + rememberNOPs: aSymbol + range: (start to: encoder pc) + blockId: (self findEnclosingNonOptimizedBlockId: encoder) \ No newline at end of file diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock..st new file mode 100644 index 00000000..eee5d0d0 --- /dev/null +++ b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock..st @@ -0,0 +1,22 @@ +*Babylonian-Core-Callgraph-ByteCode +findEnclosingNonOptimizedBlock: encoder + + | node | + (self class == VariableNode or: [self class == TempVariableNode] or: [self class == InstanceVariableNode]) + ifTrue: [| ctx | + "ugly hack for VariableNodes and TempVariableNode. + VariableNodes like self, super, ..., all use the same instance! See VariableNode class >> #initialize (NodeNil, NodeTrue, ...). + TempVariableNodes are re-used as well :( + We need to manually find its parent node by traversing the context. Watchout: Encoders also inherit from ParseNode!" + self flag: #todo. + ctx := thisContext. + [node isNil] whileTrue: [ + ctx := ctx sender. + ((ctx receiver isKindOf: ParseNode) + and: [(ctx receiver isKindOf: VariableNode) not] + and: [(ctx receiver isKindOf: TempVariableNode) not] + and: [(ctx receiver isKindOf: InstanceVariableNode) not] + and: [(ctx receiver isKindOf: Encoder) not]) ifTrue: [ + node := ctx receiver]]] + ifFalse: [node := self]. + ^ BPByteCodeParseNodeVisitor new findNode: node in: encoder rootNode \ No newline at end of file diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId..st new file mode 100644 index 00000000..aa9adfa6 --- /dev/null +++ b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId..st @@ -0,0 +1,4 @@ +*Babylonian-Core-Callgraph-ByteCode +findEnclosingNonOptimizedBlockId: encoder + + ^ (self findEnclosingNonOptimizedBlock: encoder) hash \ No newline at end of file diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex..st new file mode 100644 index 00000000..de31d886 --- /dev/null +++ b/packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex..st @@ -0,0 +1,9 @@ +*Babylonian-Core-Callgraph-ByteCode +invocationTempIndex: encoder + + + | block | + block := (self findEnclosingNonOptimizedBlock: encoder). + ^ (block isRootBlock: encoder) + ifFalse: [block localsNodes size] "includes arguments, copied variables, and local temporaries" + ifTrue: [block temporaries size + block arguments size] "cannot use localsNodes, since copiedValues is nil which makes the method fail" \ No newline at end of file diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier..st new file mode 100644 index 00000000..b33ce023 --- /dev/null +++ b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier..st @@ -0,0 +1,7 @@ +*Babylonian-Core-Callgraph-ByteCode +litIndexBlockIdentifier: encoder + + + | lastBlock | + lastBlock := self findEnclosingNonOptimizedBlock: encoder. + ^ lastBlock litIndexBlockIdentifier: encoder \ No newline at end of file diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation..st new file mode 100644 index 00000000..d295cef5 --- /dev/null +++ b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation..st @@ -0,0 +1,6 @@ +*Babylonian-Core-Callgraph-ByteCode +litIndexEnterInvocation: encoder + + + + ^ encoder sharableLitIndex: #enter:invocation: \ No newline at end of file diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation..st new file mode 100644 index 00000000..fd18318c --- /dev/null +++ b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation..st @@ -0,0 +1,6 @@ +*Babylonian-Core-Callgraph-ByteCode +litIndexExitInvocation: encoder + + + + ^ encoder sharableLitIndex: #exit:invocation:returns: \ No newline at end of file diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount..st new file mode 100644 index 00000000..0f3c4918 --- /dev/null +++ b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount..st @@ -0,0 +1,6 @@ +*Babylonian-Core-Callgraph-ByteCode +litIndexInvocationCount: encoder + + + + ^ encoder sharableLitIndex: (BPByteCodeAssociation key: #bpInvocationCount value: 1) \ No newline at end of file diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass..st new file mode 100644 index 00000000..7b3e6076 --- /dev/null +++ b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass..st @@ -0,0 +1,6 @@ +*Babylonian-Core-Callgraph-ByteCode +litIndexTracerClass: encoder + + + + ^ encoder sharableLitIndex: (Environment current declarationOf: #BPByteCodeCallgraphTracer) \ No newline at end of file diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn..st new file mode 100644 index 00000000..d972f51f --- /dev/null +++ b/packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn..st @@ -0,0 +1,7 @@ +*Babylonian-Core-Callgraph-ByteCode +sizeCodeForReturn: encoder + + + + ^(self sizeCodeForValue: encoder) + encoder sizeReturnTop + "" + (self additionalReturnSize: encoder returns: true) "" \ No newline at end of file diff --git a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json new file mode 100644 index 00000000..93563e09 --- /dev/null +++ b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json @@ -0,0 +1,16 @@ +{ + "class" : { + }, + "instance" : { + "additionalReturnSize:returns:" : "3/11/2021 15:28:41", + "emitCodeForReturn:encoder:" : "3/11/2021 15:28:41", + "emitNOPs:stack:n:type:" : "3/11/2021 15:28:41", + "findEnclosingNonOptimizedBlock:" : "3/11/2021 15:28:41", + "findEnclosingNonOptimizedBlockId:" : "3/11/2021 15:28:41", + "invocationTempIndex:" : "3/11/2021 15:28:41", + "litIndexBlockIdentifier:" : "3/11/2021 15:28:41", + "litIndexEnterInvocation:" : "3/11/2021 15:28:41", + "litIndexExitInvocation:" : "3/11/2021 15:28:41", + "litIndexInvocationCount:" : "3/11/2021 15:28:41", + "litIndexTracerClass:" : "3/11/2021 15:28:41", + "sizeCodeForReturn:" : "3/11/2021 15:28:41" } } diff --git a/packages/Babylonian-Core.package/ParseNode.extension/properties.json b/packages/Babylonian-Core.package/ParseNode.extension/properties.json new file mode 100644 index 00000000..b165f1af --- /dev/null +++ b/packages/Babylonian-Core.package/ParseNode.extension/properties.json @@ -0,0 +1,2 @@ +{ + "name" : "ParseNode" } diff --git a/packages/Babylonian-Core.package/Process.extension/instance/tracer..st b/packages/Babylonian-Core.package/Process.extension/instance/tracer..st new file mode 100644 index 00000000..e0afa8de --- /dev/null +++ b/packages/Babylonian-Core.package/Process.extension/instance/tracer..st @@ -0,0 +1,4 @@ +*Babylonian-Core-Callgraph-ByteCode +tracer: aBPBytecodeTracer + + tracer := aBPBytecodeTracer \ No newline at end of file diff --git a/packages/Babylonian-Core.package/Process.extension/instance/tracer.st b/packages/Babylonian-Core.package/Process.extension/instance/tracer.st new file mode 100644 index 00000000..84f7d5dc --- /dev/null +++ b/packages/Babylonian-Core.package/Process.extension/instance/tracer.st @@ -0,0 +1,4 @@ +*Babylonian-Core-Callgraph-ByteCode +tracer + + ^ tracer \ No newline at end of file diff --git a/packages/Babylonian-Core.package/Process.extension/methodProperties.json b/packages/Babylonian-Core.package/Process.extension/methodProperties.json new file mode 100644 index 00000000..416e746a --- /dev/null +++ b/packages/Babylonian-Core.package/Process.extension/methodProperties.json @@ -0,0 +1,6 @@ +{ + "class" : { + }, + "instance" : { + "tracer" : "smalltalkCI 1/14/2021 14:01", + "tracer:" : "smalltalkCI 1/14/2021 14:08" } } diff --git a/packages/Babylonian-Core.package/Process.extension/properties.json b/packages/Babylonian-Core.package/Process.extension/properties.json new file mode 100644 index 00000000..8d6ba898 --- /dev/null +++ b/packages/Babylonian-Core.package/Process.extension/properties.json @@ -0,0 +1,2 @@ +{ + "name" : "Process" } diff --git a/packages/Babylonian-Core.package/RelativeInstructionPrinter.extension/instance/pushClosureCopyNumCopiedValues.numArgs.blockSize..st b/packages/Babylonian-Core.package/RelativeInstructionPrinter.extension/instance/pushClosureCopyNumCopiedValues.numArgs.blockSize..st new file mode 100644 index 00000000..d2447b11 --- /dev/null +++ b/packages/Babylonian-Core.package/RelativeInstructionPrinter.extension/instance/pushClosureCopyNumCopiedValues.numArgs.blockSize..st @@ -0,0 +1,10 @@ +*Babylonian-Core-Callgraph-ByteCode +pushClosureCopyNumCopiedValues: numCopied numArgs: numArgs blockSize: blockSize + + self print: 'closureNumCopied: ', numCopied printString + , ' numArgs: ', numArgs printString + , ' size: ', (blockSize). + + innerIndents + atAll: (scanner pc to: scanner pc + blockSize - 1) + put: (innerIndents at: scanner pc - 1) + 1 \ No newline at end of file diff --git a/packages/Babylonian-Core.package/RelativeInstructionPrinter.extension/methodProperties.json b/packages/Babylonian-Core.package/RelativeInstructionPrinter.extension/methodProperties.json new file mode 100644 index 00000000..fdc07d12 --- /dev/null +++ b/packages/Babylonian-Core.package/RelativeInstructionPrinter.extension/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "pushClosureCopyNumCopiedValues:numArgs:blockSize:" : "cmfcmf 10/15/2020 11:47" } } diff --git a/packages/Babylonian-Core.package/RelativeInstructionPrinter.extension/properties.json b/packages/Babylonian-Core.package/RelativeInstructionPrinter.extension/properties.json new file mode 100644 index 00000000..03be60ac --- /dev/null +++ b/packages/Babylonian-Core.package/RelativeInstructionPrinter.extension/properties.json @@ -0,0 +1,2 @@ +{ + "name" : "RelativeInstructionPrinter" } diff --git a/packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder..st b/packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder..st new file mode 100644 index 00000000..cf47e394 --- /dev/null +++ b/packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder..st @@ -0,0 +1,22 @@ +*Babylonian-Core-Callgraph-ByteCode +emitCodeForReturn: stack encoder: encoder + + | nops | + nops := [self emitNOPs: encoder stack: stack n: (self additionalReturnSize: encoder returns: true) type: #endMethod]. + + encoder + if: code + isSpecialLiteralForReturn: + [:specialLiteral| + "short returns" + nops value. + encoder genReturnSpecialLiteral: specialLiteral. + stack push: 1 "doesnt seem right". + ^self]. + (self code = LdSelf or: [self code = LdSuper]) ifTrue: + ["short returns" + nops value. + encoder genReturnReceiver. + stack push: 1 "doesnt seem right". + ^self]. + super emitCodeForReturn: stack encoder: encoder \ No newline at end of file diff --git a/packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn..st b/packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn..st new file mode 100644 index 00000000..3a375bb0 --- /dev/null +++ b/packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn..st @@ -0,0 +1,15 @@ +*Babylonian-Core-Callgraph-ByteCode +sizeCodeForReturn: encoder + + + | additionalSize | + additionalSize := self additionalReturnSize: encoder returns: true. + + encoder + if: code + isSpecialLiteralForReturn: + [:specialLiteral| + ^ (encoder sizeReturnSpecialLiteral: specialLiteral) + additionalSize]. + (self code = LdSelf or: [self code = LdSuper]) ifTrue: + [^ encoder sizeReturnReceiver + additionalSize]. + ^super sizeCodeForReturn: encoder \ No newline at end of file diff --git a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json new file mode 100644 index 00000000..d4c2fbe4 --- /dev/null +++ b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json @@ -0,0 +1,6 @@ +{ + "class" : { + }, + "instance" : { + "emitCodeForReturn:encoder:" : "3/11/2021 15:28:41", + "sizeCodeForReturn:" : "3/11/2021 15:28:41" } } diff --git a/packages/Babylonian-Core.package/VariableNode.extension/properties.json b/packages/Babylonian-Core.package/VariableNode.extension/properties.json new file mode 100644 index 00000000..6a9133ed --- /dev/null +++ b/packages/Babylonian-Core.package/VariableNode.extension/properties.json @@ -0,0 +1,2 @@ +{ + "name" : "VariableNode" } diff --git a/packages/Babylonian-Core.package/monticello.meta/categories.st b/packages/Babylonian-Core.package/monticello.meta/categories.st index 0191cead..c5492539 100644 --- a/packages/Babylonian-Core.package/monticello.meta/categories.st +++ b/packages/Babylonian-Core.package/monticello.meta/categories.st @@ -1,3 +1,6 @@ SystemOrganization addCategory: #'Babylonian-Core'! SystemOrganization addCategory: #'Babylonian-Core-Annotations'! +SystemOrganization addCategory: #'Babylonian-Core-Callgraph'! +SystemOrganization addCategory: #'Babylonian-Core-Callgraph-ByteCode'! +SystemOrganization addCategory: #'Babylonian-Core-Callgraph-Simulator'! SystemOrganization addCategory: #'Babylonian-Core-Tracing'! diff --git a/packages/Babylonian-Core.package/monticello.meta/postscriptOfRemoval.st b/packages/Babylonian-Core.package/monticello.meta/postscriptOfRemoval.st new file mode 100644 index 00000000..bc06ee05 --- /dev/null +++ b/packages/Babylonian-Core.package/monticello.meta/postscriptOfRemoval.st @@ -0,0 +1,11 @@ +(PackageInfo named: 'Babylonian-Core') postscriptOfRemoval: '"below, add code to clean up after the unloading of this package" +(Process instVarNames includes: ''tracer'') ifTrue: [ + [(Process respondsTo: #removeInstVarName:) + ifTrue: [Process removeInstVarName: ''tracer''] + ifFalse: [Process removeInstVarNamed: ''tracer'']] on: Warning do: [:e | e resume]]. +(MethodNode instVarNames includes: ''bpCallgraphNOPs'') ifTrue: [ + + [(MethodNode respondsTo: #removeInstVarName:) + ifTrue: [MethodNode removeInstVarName: ''bpCallgraphNOPs''] + ifFalse: [MethodNode removeInstVarNamed: ''bpCallgraphNOPs'']] on: Warning do: [:e | e resume]]. +'! diff --git a/packages/Babylonian-Core.package/monticello.meta/preamble.st b/packages/Babylonian-Core.package/monticello.meta/preamble.st new file mode 100644 index 00000000..c7a7d585 --- /dev/null +++ b/packages/Babylonian-Core.package/monticello.meta/preamble.st @@ -0,0 +1,12 @@ +(PackageInfo named: 'Babylonian-Core') preamble: '"below, add code to be run before the loading of this package" +(Process instVarNames includes: ''tracer'') ifFalse: [ + [(Process respondsTo: #addInstVarName:) + ifTrue: [Process addInstVarName: ''tracer''] + ifFalse: [Process addInstVarNamed: ''tracer'']] + on: Warning do: [:e | e resume]]. +(MethodNode instVarNames includes: ''bpCallgraphNOPs'') ifFalse: [ + [(MethodNode respondsTo: #addInstVarName:) + ifTrue: [MethodNode addInstVarName: ''bpCallgraphNOPs''] + ifFalse: [MethodNode addInstVarNamed: ''bpCallgraphNOPs'']] + on: Warning do: [:e | e resume]]. +'! diff --git a/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/README.md b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/assertBlock.generatesTrace..st b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/assertBlock.generatesTrace..st new file mode 100644 index 00000000..5dc77742 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/assertBlock.generatesTrace..st @@ -0,0 +1,7 @@ +as yet unclassified +assertBlock: aBlock generatesTrace: aString + + | t | + t := BPByteCodeCallgraphTracer new. + BPByteCodeCallgraphTracer value: t during: aBlock. + self assert: aString withBlanksTrimmed equals: t eventsToStringForTest withBlanksTrimmed \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testBlockReturn.st b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testBlockReturn.st new file mode 100644 index 00000000..2e201827 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testBlockReturn.st @@ -0,0 +1,12 @@ +as yet unclassified +testBlockReturn + + self withFixtureInstrumentedAssertBlock: [:b | b blockReturnTest] generatesTrace: ' +BPCallGraphByteCodeFixture >> blockReturnTest ctx: 1 + BPCallGraphByteCodeFixture >> br_a ctx: 1 + BPCallGraphByteCodeFixture >> br_b: ctx: 1 + BPCallGraphByteCodeFixture >> br_a [1] ctx: 1 + ^ BPCallGraphByteCodeFixture >> br_a [1] ctx: 1 + BPCallGraphByteCodeFixture >> br_d ctx: 1 + ^ BPCallGraphByteCodeFixture >> br_d ctx: 1 +^ BPCallGraphByteCodeFixture >> blockReturnTest ctx: 1' \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testBlockTemporaries.st b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testBlockTemporaries.st new file mode 100644 index 00000000..244d832f --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testBlockTemporaries.st @@ -0,0 +1,8 @@ +as yet unclassified +testBlockTemporaries + + self withFixtureInstrumentedAssertBlock: [:b | b blockTemporariesTest] generatesTrace: ' +BPCallGraphByteCodeFixture >> blockTemporariesTest ctx: 1 + BPCallGraphByteCodeFixture >> blockTemporariesTest [1] ctx: 1 + _ BPCallGraphByteCodeFixture >> blockTemporariesTest [1] ctx: 1 +^ BPCallGraphByteCodeFixture >> blockTemporariesTest ctx: 1' \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testBlockTemporariesAgain.st b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testBlockTemporariesAgain.st new file mode 100644 index 00000000..f41a1391 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testBlockTemporariesAgain.st @@ -0,0 +1,10 @@ +as yet unclassified +testBlockTemporariesAgain + + self withFixtureInstrumentedAssertBlock: [:b | b blockTemporariesAgainTest: 2] generatesTrace: ' +BPCallGraphByteCodeFixture >> blockTemporariesAgainTest: ctx: 1 + BPCallGraphByteCodeFixture >> blockTemporariesAgainTest: [1] ctx: 1 + _ BPCallGraphByteCodeFixture >> blockTemporariesAgainTest: [1] ctx: 1 + BPCallGraphByteCodeFixture >> blockTemporariesAgainTest: [1] ctx: 1 + _ BPCallGraphByteCodeFixture >> blockTemporariesAgainTest: [1] ctx: 1 +^ BPCallGraphByteCodeFixture >> blockTemporariesAgainTest: ctx: 1' \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testBlockTemporariesAgainAgain.st b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testBlockTemporariesAgainAgain.st new file mode 100644 index 00000000..15452cc7 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testBlockTemporariesAgainAgain.st @@ -0,0 +1,8 @@ +as yet unclassified +testBlockTemporariesAgainAgain + + self withFixtureInstrumentedAssertBlock: [:b | b blockTemporariesAgainAgainTest] generatesTrace: ' +BPCallGraphByteCodeFixture >> blockTemporariesAgainAgainTest ctx: 1 + BPCallGraphByteCodeFixture >> blockTemporariesAgainAgainTest [1] ctx: 1 + _ BPCallGraphByteCodeFixture >> blockTemporariesAgainAgainTest [1] ctx: 1 +^ BPCallGraphByteCodeFixture >> blockTemporariesAgainAgainTest ctx: 1' \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testCascade.st b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testCascade.st new file mode 100644 index 00000000..992a2426 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testCascade.st @@ -0,0 +1,10 @@ +as yet unclassified +testCascade + + self withFixtureInstrumentedAssertBlock: [:b | b cascadeTest] generatesTrace: ' +BPCallGraphByteCodeFixture >> cascadeTest ctx: 1 + BPCallGraphByteCodeFixture >> c_1 ctx: 1 + ^ BPCallGraphByteCodeFixture >> c_1 ctx: 1 + BPCallGraphByteCodeFixture >> c_2 ctx: 1 + ^ BPCallGraphByteCodeFixture >> c_2 ctx: 1 +^ BPCallGraphByteCodeFixture >> cascadeTest ctx: 1' \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testException.st b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testException.st new file mode 100644 index 00000000..1cd1a00a --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testException.st @@ -0,0 +1,17 @@ +as yet unclassified +testException + + self withFixtureInstrumentedAssertBlock: [:b | b exceptionTest] generatesTrace: ' +BPCallGraphByteCodeFixture >> exceptionTest ctx: 1 + BPCallGraphByteCodeFixture >> exceptionTest [1] ctx: 1 + BPCallGraphByteCodeFixture >> a ctx: 1 + BPCallGraphByteCodeFixture >> b ctx: 1 + BPCallGraphByteCodeFixture >> exceptionTest [2] ctx: 1 + BPCallGraphByteCodeFixture >> c ctx: 1 + ^ BPCallGraphByteCodeFixture >> c ctx: 1 + _ BPCallGraphByteCodeFixture >> exceptionTest [2] ctx: 1 + --------- CONTEXT SENDER CHANGED --------- + |> CONTINUING HERE + BPCallGraphByteCodeFixture >> d ctx: 1 + ^ BPCallGraphByteCodeFixture >> d ctx: 1 +^ BPCallGraphByteCodeFixture >> exceptionTest ctx: 1' \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testGenerator.st b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testGenerator.st new file mode 100644 index 00000000..7b17e774 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testGenerator.st @@ -0,0 +1,58 @@ +as yet unclassified +testGenerator + + [ + BPByteCodeRewriter + setup; + instrumentClass: Generator; + instrumentClass: Generator class; + enableTracingForClass: Generator; + enableTracingForClass: Generator class. + + self assertBlock: [| generator | + generator := Generator on: [:g | {2 . 3} do: [:n | g yield: n]]. + [generator atEnd] whileFalse: [generator next]] generatesTrace: ' +Generator class >> on: ctx: 1 + Generator >> initializeOn: ctx: 1 + Generator >> reset ctx: 1 + Generator >> reset [1] ctx: 1 + Generator >> fork ctx: 1 + Generator >> yield: ctx: 1 + Generator >> nextPut: ctx: 1 + --------- CONTEXT SENDER CHANGED --------- + ^ Generator >> nextPut: ctx: 1 + |> CONTINUING HERE + ^ Generator >> reset ctx: 1 + ^ Generator >> initializeOn: ctx: 1 +^ Generator class >> on: ctx: 1 +Generator >> atEnd ctx: 1 +^ Generator >> atEnd ctx: 1 +Generator >> next ctx: 1 + Generator >> atEnd ctx: 2 + ^ Generator >> atEnd ctx: 2 + --------- CONTEXT SENDER CHANGED (NOT IN CHAIN) --------- +^ Generator >> next ctx: 1 + |> CONTINUING HERE + ^ Generator >> yield: ctx: 1 + Generator >> yield: ctx: 2 + Generator >> nextPut: ctx: 2 + --------- CONTEXT SENDER CHANGED --------- + ^ Generator >> nextPut: ctx: 2 +|> CONTINUING HERE +Generator >> atEnd ctx: 3 +^ Generator >> atEnd ctx: 3 +Generator >> next ctx: 2 + Generator >> atEnd ctx: 4 + ^ Generator >> atEnd ctx: 4 + --------- CONTEXT SENDER CHANGED (NOT IN CHAIN) --------- +^ Generator >> next ctx: 2 + |> CONTINUING HERE + ^ Generator >> yield: ctx: 2 + --------- CONTEXT SENDER CHANGED --------- +^ Generator >> fork ctx: 1 +|> CONTINUING HERE +Generator >> atEnd ctx: 5 +^ Generator >> atEnd ctx: 5' + ] ensure: [ + BPByteCodeRewriter uninstrumentClass: Generator. + BPByteCodeRewriter uninstrumentClass: Generator class] \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testMixedBlockReturn.st b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testMixedBlockReturn.st new file mode 100644 index 00000000..fc3aac3a --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testMixedBlockReturn.st @@ -0,0 +1,14 @@ +as yet unclassified +testMixedBlockReturn + + "test behavior when a block both blockReturns as well as methodReturns. This can happen when an ifTrue:ifFalse: block is inlined." + self withFixtureInstrumentedAssertBlock: [:b | b mixedBlockReturnTest: true] generatesTrace: ' +BPCallGraphByteCodeFixture >> mixedBlockReturnTest: ctx: 1 + BPCallGraphByteCodeFixture >> mixedBlockReturnTest: [1] ctx: 1 + ^ BPCallGraphByteCodeFixture >> mixedBlockReturnTest: [1] ctx: 1'. + + self withFixtureInstrumentedAssertBlock: [:b | b mixedBlockReturnTest: false] generatesTrace: ' +BPCallGraphByteCodeFixture >> mixedBlockReturnTest: ctx: 1 + BPCallGraphByteCodeFixture >> mixedBlockReturnTest: [1] ctx: 1 + _ BPCallGraphByteCodeFixture >> mixedBlockReturnTest: [1] ctx: 1 +^ BPCallGraphByteCodeFixture >> mixedBlockReturnTest: ctx: 1' \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testRecursion.st b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testRecursion.st new file mode 100644 index 00000000..73ae595e --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testRecursion.st @@ -0,0 +1,16 @@ +as yet unclassified +testRecursion + + [ + BPByteCodeRewriter setup; instrumentClass: Integer selector: #factorial; enableTracingForClass: Integer selector: #factorial. + + self assertBlock: [3 factorial] generatesTrace: ' +Integer >> factorial ctx: 1 + Integer >> factorial ctx: 2 + Integer >> factorial ctx: 3 + Integer >> factorial ctx: 4 + ^ Integer >> factorial ctx: 4 + ^ Integer >> factorial ctx: 3 + ^ Integer >> factorial ctx: 2 +^ Integer >> factorial ctx: 1' + ] ensure: [BPByteCodeRewriter uninstrumentClass: Integer selector: #factorial] \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testSimple.st b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testSimple.st new file mode 100644 index 00000000..f3abff91 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testSimple.st @@ -0,0 +1,4 @@ +as yet unclassified +testSimple + + self assertBlock: [1+1] generatesTrace: '' \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testWorksWithBPCompiler.st b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testWorksWithBPCompiler.st new file mode 100644 index 00000000..2f764d0e --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testWorksWithBPCompiler.st @@ -0,0 +1,6 @@ +as yet unclassified +testWorksWithBPCompiler + + self withFixtureInstrumentedAssertBlock: [:b :bb | bb foo] generatesTrace: ' +BPCallGraphByteCodeFixtureWithBPCompiler >> foo ctx: 1 +^ BPCallGraphByteCodeFixtureWithBPCompiler >> foo ctx: 1' \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/withFixtureInstrumentedAssertBlock.generatesTrace..st b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/withFixtureInstrumentedAssertBlock.generatesTrace..st new file mode 100644 index 00000000..1e087dcc --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/withFixtureInstrumentedAssertBlock.generatesTrace..st @@ -0,0 +1,22 @@ +as yet unclassified +withFixtureInstrumentedAssertBlock: aBlock generatesTrace: aString + + BPByteCodeRewriter + setup; + instrumentClass: BPCallGraphByteCodeFixture; + instrumentClass: BPCallGraphByteCodeFixtureWithBPCompiler; + enableTracingForClass: BPCallGraphByteCodeFixture; + enableTracingForClass: BPCallGraphByteCodeFixtureWithBPCompiler. + [ | t b bb | + b := BPCallGraphByteCodeFixture new. + bb := BPCallGraphByteCodeFixtureWithBPCompiler new. + + t := BPByteCodeCallgraphTracer new. + BPByteCodeCallgraphTracer value: t during: [aBlock cull: b cull: bb]. + + self assert: aString withBlanksTrimmed + equals: t eventsToStringForTest withBlanksTrimmed + ] ensure: [ + BPByteCodeRewriter + uninstrumentClass: BPCallGraphByteCodeFixture; + uninstrumentClass: BPCallGraphByteCodeFixtureWithBPCompiler] \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/methodProperties.json b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/methodProperties.json new file mode 100644 index 00000000..02381503 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/methodProperties.json @@ -0,0 +1,17 @@ +{ + "class" : { + }, + "instance" : { + "assertBlock:generatesTrace:" : "cmfcmf 10/8/2020 11:22", + "testBlockReturn" : "cmfcmf 10/11/2020 12:16", + "testBlockTemporaries" : "cmfcmf 10/26/2020 10:56", + "testBlockTemporariesAgain" : "cmfcmf 10/26/2020 12:25", + "testBlockTemporariesAgainAgain" : "cmfcmf 12/5/2020 19:47", + "testCascade" : "cmfcmf 10/12/2020 14:03", + "testException" : "cmfcmf 10/26/2020 10:53", + "testGenerator" : "cmfcmf 1/2/2021 13:39", + "testMixedBlockReturn" : "cmfcmf 10/20/2020 12:02", + "testRecursion" : "cmfcmf 10/11/2020 12:17", + "testSimple" : "cmfcmf 10/7/2020 14:06", + "testWorksWithBPCompiler" : "cmfcmf 10/27/2020 12:39", + "withFixtureInstrumentedAssertBlock:generatesTrace:" : "cmfcmf 10/27/2020 12:32" } } diff --git a/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/properties.json b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/properties.json new file mode 100644 index 00000000..7369d842 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Tests-Callgraph-ByteCode", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPByteCodeCallgraphTracerTest", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/README.md b/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/assertLiterals..st b/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/assertLiterals..st new file mode 100644 index 00000000..b8c70361 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/assertLiterals..st @@ -0,0 +1,27 @@ +nop-tests +assertLiterals: aCompiledMethod + + | blockIntervals | + self assert: (aCompiledMethod hasLiteral: (Environment current declarationOf: #BPByteCodeCallgraphTracer)). + + blockIntervals := aCompiledMethod embeddedBlockClosures collect: [:block | block blockCreationPC to: block endPC]. + blockIntervals add: (aCompiledMethod initialPC to: aCompiledMethod endPC). + "blockIntervals := blockIntervals collect: [:interval | interval - aCompiledMethod initialPC]. + blockIntervals sort: [:a :b | a start < b start]. + + blockIntervals := blockIntervals withIndexCollect: [:currentInterval :i | + blockIntervals + collect: [:interval | interval start - 4 to: interval stop - 4] + from: i + 1 + to: blockIntervals size. + currentInterval start to: currentInterval stop - 8]." + + "self + assert: blockIntervals size + equals: (aCompiledMethod literals select: [:literal | + literal isVariableBinding + and: [literal key beginsWith: 'bpClassNameMethodNameBlockIdx-'] + and: [literal value == 0]]) size." + + self assert: (aCompiledMethod hasLiteral: #enter:invocation:). + self assert: (aCompiledMethod hasLiteral: #enter:invocation:). \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testBlockTemporaries.st b/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testBlockTemporaries.st new file mode 100644 index 00000000..00b108f9 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testBlockTemporaries.st @@ -0,0 +1,58 @@ +enabled-tests +testBlockTemporaries + + | method expected byteCode | + method := BPByteCodeRewriter instrumentString: 'simple + | t1 t2 t3 t4 | + [ + t3. t4. + []. + ]. + [ + t1 + ]'. + self assertLiterals: method. + BPByteCodeRewriter enableTracingForCompiledMethod: method. + + byteCode := method abstractSymbolic withBlanksTrimmed. + expected := ' + ... + storeIntoTemp: 4 + ... + pushTemp: 4 + ... + pushTemp: 4 + closureNumCopied: 3 numArgs: 0 size: ... + ... + pushTemp: 2 + ... + pushTemp: 2 + closureNumCopied: 1 numArgs: 0 size: ... + ... + pushTemp: 0 + ... + pushTemp: 0 + ... + pushTemp: 2 + ... + pop + ... + pop + ... + pushTemp: 4 + closureNumCopied: 2 numArgs: 0 size: ... + ... + pushTemp: 1 + ... + pushTemp: 1 + ... + pop + ... + pushTemp: 4 + ...' withBlanksTrimmed. + + expected := (expected + copyReplaceAll: ':' with: '\:') + copyReplaceAll: '...' with: '.*'. + + self assert: (byteCode matchesRegex: expected) \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testBlockTemporaries2.st b/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testBlockTemporaries2.st new file mode 100644 index 00000000..8dda4405 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testBlockTemporaries2.st @@ -0,0 +1,58 @@ +enabled-tests +testBlockTemporaries2 + + | method expected byteCode | + method := BPByteCodeRewriter instrumentString: 'simple + | t1 t2 | + [ + | i3 i4 | + i3 := i4 := $a. + []. + ]. + [ | i1 | + i1 + ]'. + self assertLiterals: method. + BPByteCodeRewriter enableTracingForCompiledMethod: method. + + byteCode := method abstractSymbolic withBlanksTrimmed. + expected := ' + ... + storeIntoTemp: 2 + ... + pushTemp: 2 + ... + pushTemp: 2 + closureNumCopied: 1 numArgs: 0 size: ... + ... + pushTemp: 2 + ... + pushTemp: 2 + closureNumCopied: 1 numArgs: 0 size: ... + ... + pushTemp: 0 + ... + pushTemp: 0 + ... + pushTemp: 2 + ... + pop + ... + pop + pushTemp: 2 + closureNumCopied: 1 numArgs: 0 size: ... + ... + pushTemp: 1 + ... + pushTemp: 1 + ... + pop + ... + pushTemp: 2 + ...' withBlanksTrimmed. + + expected := (expected + copyReplaceAll: ':' with: '\:') + copyReplaceAll: '...' with: '.*'. + + self assert: (byteCode matchesRegex: expected) \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testBlockTemporaries3.st b/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testBlockTemporaries3.st new file mode 100644 index 00000000..b66f14d8 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testBlockTemporaries3.st @@ -0,0 +1,38 @@ +enabled-tests +testBlockTemporaries3 + + | method expected byteCode | + method := BPByteCodeRewriter instrumentString: 'simple + true ifTrue: [^ self] ifFalse: [ + [ | i1 | + i1 + ] + ]. + '. + self assertLiterals: method. + BPByteCodeRewriter enableTracingForCompiledMethod: method. + + byteCode := method abstractSymbolic withBlanksTrimmed. + expected := ' + ... + storeIntoTemp: 0 + ... + pushTemp: 0 + ... + pushTemp: 0 + closureNumCopied: 1 numArgs: 0 size: ... + ... + pushTemp: 1 + ... + pushTemp: 1 + ... + pop + ... + pushTemp: 0 + ...' withBlanksTrimmed. + + expected := (expected + copyReplaceAll: ':' with: '\:') + copyReplaceAll: '...' with: '.*'. + + self assert: (byteCode matchesRegex: expected) \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testBlockTemporaries4.st b/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testBlockTemporaries4.st new file mode 100644 index 00000000..6b12ddf0 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testBlockTemporaries4.st @@ -0,0 +1,36 @@ +enabled-tests +testBlockTemporaries4 + + | method expected byteCode | + method := BPByteCodeRewriter instrumentString: 'simple + [ :a1 :a2 | | i1 | + i1 := a1 := a2. + ] + '. + self assertLiterals: method. + BPByteCodeRewriter enableTracingForCompiledMethod: method. + + byteCode := method abstractSymbolic withBlanksTrimmed. + expected := ' + ... + storeIntoTemp: 0 + ... + pushTemp: 0 + ... + pushTemp: 0 + closureNumCopied: 1 numArgs: 2 size: ... + ... + pushTemp: 3 + ... + pushTemp: 3 + ... + pop + ... + pushTemp: 0 + ...' withBlanksTrimmed. + + expected := (expected + copyReplaceAll: ':' with: '\:') + copyReplaceAll: '...' with: '.*'. + + self assert: (byteCode matchesRegex: expected) \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testBlockWithExplicitReturn.st b/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testBlockWithExplicitReturn.st new file mode 100644 index 00000000..92c35e48 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testBlockWithExplicitReturn.st @@ -0,0 +1,48 @@ +nop-tests +testBlockWithExplicitReturn + + | method | + method := BPByteCodeRewriter instrumentString: 'simple \ ^ [^ #block]' withCRs. + self assertLiterals: method. + self assert: ' + jumpTo: L1 + dup + dup + dup + dup + dup + dup + dup + dup + dup + dup +L1: + jumpTo: L2 + dup +L2: + closureNumCopied: 0 numArgs: 0 size: 14 + jumpTo: L3 + dup + dup + dup + dup +L3: + pushConstant: #block + jumpTo: L4 + dup + dup + dup + dup + dup + dup +L4: + returnTop + jumpTo: L5 + dup + dup + dup + dup + dup + dup +L5: + returnTop' withBlanksTrimmed equals: method abstractSymbolic withBlanksTrimmed \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testBlockWithImplicitReturn.st b/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testBlockWithImplicitReturn.st new file mode 100644 index 00000000..0dee3818 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testBlockWithImplicitReturn.st @@ -0,0 +1,48 @@ +nop-tests +testBlockWithImplicitReturn + + | method | + method := BPByteCodeRewriter instrumentString: 'simple \ ^ [#block]' withCRs. + self assertLiterals: method. + self assert: ' + jumpTo: L1 + dup + dup + dup + dup + dup + dup + dup + dup + dup + dup +L1: + jumpTo: L2 + dup +L2: + closureNumCopied: 0 numArgs: 0 size: 14 + jumpTo: L3 + dup + dup + dup + dup +L3: + pushConstant: #block + jumpTo: L4 + dup + dup + dup + dup + dup + dup +L4: + blockReturn + jumpTo: L5 + dup + dup + dup + dup + dup + dup +L5: + returnTop' withBlanksTrimmed equals: method abstractSymbolic withBlanksTrimmed \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testBlocks.st b/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testBlocks.st new file mode 100644 index 00000000..eb0a0a05 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testBlocks.st @@ -0,0 +1,50 @@ +enabled-tests +testBlocks + + | method byteCode expected | + + method := BPByteCodeRewriter instrumentString: 'simple \ [10. [20]. 30]. [40]' withCRs. + self assertLiterals: method. + BPByteCodeRewriter enableTracingForCompiledMethod: method. + + byteCode := method abstractSymbolic withBlanksTrimmed. + expected := ' + ... + storeIntoTemp: 0 + ... + pushTemp: 0 + ... + pushTemp: 0 + closureNumCopied: 1 numArgs: 0 size: ... + pushTemp: 0 + ... + pushTemp: 0 + closureNumCopied: 1 numArgs: 0 size: ... + pushTemp: 0 + ... + pushTemp: 0 + ... + blockReturn + ... + pushTemp: 0 + ... + blockReturn + ... + pushTemp: 0 + closureNumCopied: 1 numArgs: 0 size: ... + ... + pushTemp: 0 + ... + pushTemp: 0 + ... + blockReturn + ... + pushTemp: 0 + ... + returnSelf' withBlanksTrimmed. + + expected := (expected + copyReplaceAll: ':' with: '\:') + copyReplaceAll: '...' with: '.*'. + + self assert: (byteCode matchesRegex: expected) \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testIfTrueIfFalse.st b/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testIfTrueIfFalse.st new file mode 100644 index 00000000..b9110b67 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testIfTrueIfFalse.st @@ -0,0 +1,34 @@ +nop-tests +testIfTrueIfFalse + + | method | + method := BPByteCodeRewriter instrumentString: 'simple \ ^ true ifTrue: [1] ifFalse: [2]' withCRs. + self assertLiterals: method. + self assert: 'jumpTo: L1 + dup + dup + dup + dup + dup + dup + dup + dup + dup + dup +L1: + pushConstant: true + jumpFalseTo: L2 + pushConstant: 1 + jumpTo: L3 +L2: + pushConstant: 2 +L3: + jumpTo: L4 + dup + dup + dup + dup + dup + dup +L4: + returnTop' withBlanksTrimmed equals: method abstractSymbolic withBlanksTrimmed \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testIfTrueIfFalseWithInnerReturns.st b/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testIfTrueIfFalseWithInnerReturns.st new file mode 100644 index 00000000..a6611c69 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testIfTrueIfFalseWithInnerReturns.st @@ -0,0 +1,41 @@ +nop-tests +testIfTrueIfFalseWithInnerReturns + + | method | + method := BPByteCodeRewriter instrumentString: 'simple \ true ifTrue: [^ 1] ifFalse: [^ 2]' withCRs. + self assertLiterals: method. + self assert: 'jumpTo: L1 + dup + dup + dup + dup + dup + dup + dup + dup + dup + dup +L1: + pushConstant: true + jumpFalseTo: L3 + pushConstant: 1 + jumpTo: L2 + dup + dup + dup + dup + dup + dup +L2: + returnTop +L3: + pushConstant: 2 + jumpTo: L4 + dup + dup + dup + dup + dup + dup +L4: + returnTop' withBlanksTrimmed equals: method abstractSymbolic withBlanksTrimmed \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testQuickReturnMethods.st b/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testQuickReturnMethods.st new file mode 100644 index 00000000..68187dd9 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testQuickReturnMethods.st @@ -0,0 +1,9 @@ +nop-tests +testQuickReturnMethods + + | method | + method := BPByteCodeRewriter instrumentString: 'empty' withCRs. + self assert: 'Quick return self' equals: method symbolic. + + method := BPByteCodeRewriter instrumentString: 'empty \ ^ 1' withCRs . + self assert: 'Quick return 1' equals: method symbolic \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testSimpleExplicitlyReturningMethod.st b/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testSimpleExplicitlyReturningMethod.st new file mode 100644 index 00000000..722517d0 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testSimpleExplicitlyReturningMethod.st @@ -0,0 +1,33 @@ +nop-tests +testSimpleExplicitlyReturningMethod + + | method | + method := BPByteCodeRewriter instrumentString: 'simple \ ^ 1+2' withCRs. + self assertLiterals: method. + self assert: (' + jumpTo: L1 + dup + dup + dup + dup + dup + dup + dup + dup + dup + dup +L1: + pushConstant: 1 + pushConstant: 2 + send: +', + "no pop here"' + jumpTo: L2 + dup + dup + dup + dup + dup + dup +L2: + returnTop +') withBlanksTrimmed equals: method abstractSymbolic withBlanksTrimmed \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testSimpleImplicitlyReturningMethod.st b/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testSimpleImplicitlyReturningMethod.st new file mode 100644 index 00000000..7b344f90 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testSimpleImplicitlyReturningMethod.st @@ -0,0 +1,33 @@ +nop-tests +testSimpleImplicitlyReturningMethod + + | method | + method := BPByteCodeRewriter instrumentString: 'simple \ 1+2' withCRs. + self assertLiterals: method. + self assert: ' + jumpTo: L1 + dup + dup + dup + dup + dup + dup + dup + dup + dup + dup +L1: + pushConstant: 1 + pushConstant: 2 + send: + + pop + jumpTo: L2 + dup + dup + dup + dup + dup + dup +L2: + returnSelf +' withBlanksTrimmed equals: method abstractSymbolic withBlanksTrimmed \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/methodProperties.json b/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/methodProperties.json new file mode 100644 index 00000000..530a0e3f --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/methodProperties.json @@ -0,0 +1,17 @@ +{ + "class" : { + }, + "instance" : { + "assertLiterals:" : "cmfcmf 10/10/2020 16:08", + "testBlockTemporaries" : "cmfcmf 10/15/2020 21:12", + "testBlockTemporaries2" : "cmfcmf 10/15/2020 21:45", + "testBlockTemporaries3" : "cmfcmf 10/15/2020 21:56", + "testBlockTemporaries4" : "cmfcmf 10/15/2020 22:03", + "testBlockWithExplicitReturn" : "cmfcmf 10/19/2020 13:15", + "testBlockWithImplicitReturn" : "cmfcmf 10/19/2020 13:15", + "testBlocks" : "cmfcmf 10/20/2020 12:05", + "testIfTrueIfFalse" : "cmfcmf 10/19/2020 13:14", + "testIfTrueIfFalseWithInnerReturns" : "cmfcmf 10/19/2020 13:15", + "testQuickReturnMethods" : "cmfcmf 10/9/2020 16:04", + "testSimpleExplicitlyReturningMethod" : "cmfcmf 10/19/2020 13:14", + "testSimpleImplicitlyReturningMethod" : "cmfcmf 10/19/2020 13:14" } } diff --git a/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/properties.json b/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/properties.json new file mode 100644 index 00000000..942cf3f9 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Tests-Callgraph-ByteCode", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPByteCodeNOPCompilerTest", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/README.md b/packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/instance/testEdgeCases.st b/packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/instance/testEdgeCases.st new file mode 100644 index 00000000..776db860 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/instance/testEdgeCases.st @@ -0,0 +1,16 @@ +2 - test edge cases +testEdgeCases + + { + "number of temporaries + arguments just shy of 16." + BouncingAtomsMorph >> #collisionPairs . KedamaMorph >> #acceptForm: . KedamaMorph >> #acceptForm: . + "block that both blockReturns and returnsMethod" + WebClient >> #serverPort . StringMorph >> #balloonTextForLexiconString. + "another edge case" + LedCharacterMorph >> #drawOn: + } do: [:originalMethod | | method | + "don't directly instrument the methods present in the system." + method := BPByteCodeRewriter instrumentString: originalMethod getSource. + BPByteCodeRewriter enableTracingForCompiledMethod: method. + BPByteCodeRewriter disableTracingForCompiledMethod: method]. + \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/instance/testPragmas.st b/packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/instance/testPragmas.st new file mode 100644 index 00000000..735b1cbc --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/instance/testPragmas.st @@ -0,0 +1,12 @@ +1 - enable tracing +testPragmas + + | method | + method := BPByteCodeRewriter instrumentString: 'simple \ \ ^ 1+1' withCRs. + self deny: method isQuick. "make sure we don't accidentally create a quick (and therefore not instrumented) method" + + self assert: (method hasPragma: #foo). + BPByteCodeRewriter enableTracingForCompiledMethod: method mode: #fast. + self assert: (method hasPragma: #foo). + BPByteCodeRewriter disableTracingForCompiledMethod: method mode: #fast. + self assert: (method hasPragma: #foo) \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/instance/testSimple.st b/packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/instance/testSimple.st new file mode 100644 index 00000000..d6c59719 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/instance/testSimple.st @@ -0,0 +1,13 @@ +1 - enable tracing +testSimple + + | method tracer | + method := BPByteCodeRewriter instrumentString: 'simple \ ^ 1+1' withCRs. + BPByteCodeRewriter enableTracingForCompiledMethod: method. + + tracer := BPByteCodeCallgraphTracer new. + BPByteCodeCallgraphTracer value: tracer during: [ + self assert: 2 equals: (method valueWithReceiver: nil arguments: {})]. + self assert: ' +UndefinedObject >> simple ctx: 1 +^ UndefinedObject >> simple ctx: 1' withBlanksTrimmed equals: tracer eventsToStringForTest withBlanksTrimmed \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/instance/testWithBlock.st b/packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/instance/testWithBlock.st new file mode 100644 index 00000000..880fd95a --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/instance/testWithBlock.st @@ -0,0 +1,15 @@ +1 - enable tracing +testWithBlock + + | method tracer | + method := BPByteCodeRewriter instrumentString: 'simple \ | b | \ b := [1+1]. \ ^ b value' withCRs. + BPByteCodeRewriter enableTracingForCompiledMethod: method. + + tracer := BPByteCodeCallgraphTracer new. + BPByteCodeCallgraphTracer value: tracer during: [ + self assert: 2 equals: (method valueWithReceiver: nil arguments: {})]. + self assert: ' +UndefinedObject >> simple ctx: 1 + UndefinedObject >> simple [1] ctx: 1 + _ UndefinedObject >> simple [1] ctx: 1 +^ UndefinedObject >> simple ctx: 1' withBlanksTrimmed equals: tracer eventsToStringForTest withBlanksTrimmed \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/methodProperties.json b/packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/methodProperties.json new file mode 100644 index 00000000..3745e0f6 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/methodProperties.json @@ -0,0 +1,8 @@ +{ + "class" : { + }, + "instance" : { + "testEdgeCases" : "cmfcmf 12/5/2020 20:36", + "testPragmas" : "cmfcmf 10/27/2020 12:39", + "testSimple" : "cmfcmf 10/27/2020 13:00", + "testWithBlock" : "cmfcmf 10/27/2020 13:01" } } diff --git a/packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/properties.json b/packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/properties.json new file mode 100644 index 00000000..3b71de02 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Tests-Callgraph-ByteCode", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPByteCodeRewriterTest", + "pools" : [ + ], + "super" : "TestCase", + "type" : "normal" } diff --git a/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/README.md b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/a.st b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/a.st new file mode 100644 index 00000000..5ee63fd8 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/a.st @@ -0,0 +1,5 @@ +1 - exception test +a + + self b. + ^ $a \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/b.st b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/b.st new file mode 100644 index 00000000..8d1acc08 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/b.st @@ -0,0 +1,4 @@ +1 - exception test +b + + self error: 'b' \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/blockReturnTest.st b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/blockReturnTest.st new file mode 100644 index 00000000..17b836e5 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/blockReturnTest.st @@ -0,0 +1,7 @@ +2 - block return test +blockReturnTest + + | block result | + result := self br_a. + self br_d. + ^ result \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/blockTemporariesAgainAgainTest.st b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/blockTemporariesAgainAgainTest.st new file mode 100644 index 00000000..7291351b --- /dev/null +++ b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/blockTemporariesAgainAgainTest.st @@ -0,0 +1,19 @@ +8 - block temporaries again +blockTemporariesAgainAgainTest + + | g1 | + g1 := 1. + + [:a1 :a2 | | l1 l2 l3 l4 l5 | + self assert: a1 == #a1. + self assert: a2 == #a2. + self assert: l1 == nil. + self assert: l2 == nil. + self assert: l3 == nil. + self assert: l4 == nil. + self assert: l5 == nil. + + self assert: g1 == 1. + g1 := g1 * 2. + + l1 := l2 := l3 := l4 := l5 := $l] value: #a1 value: #a2 \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/blockTemporariesAgainTest..st b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/blockTemporariesAgainTest..st new file mode 100644 index 00000000..717ae0bb --- /dev/null +++ b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/blockTemporariesAgainTest..st @@ -0,0 +1,8 @@ +7 - block temporaries again +blockTemporariesAgainTest: n + + n timesRepeat: [ + | a | + self assert: a isNil. + a := 42. + self assert: a = 42] \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/blockTemporariesTest.st b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/blockTemporariesTest.st new file mode 100644 index 00000000..e768e027 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/blockTemporariesTest.st @@ -0,0 +1,22 @@ +6 - block temporaries +blockTemporariesTest + | outerR outerRW | + outerR := 'outerR'. + outerRW := 'outerRW'. + + [:arg1 :arg2 | | t1 t2 t3 | + self assert: arg1 = 'arg1'. + self assert: arg2 = 'arg2'. + self assert: t1 isNil. + self assert: t2 isNil. + self assert: t3 isNil. + t1 := 't1'. + t2 := 't2'. + t3 := 't3'. + self assert: t1 = 't1'. + self assert: t2 = 't2'. + self assert: t3 = 't3'. + self assert: outerR = 'outerR'. + self assert: outerRW = 'outerRW'. + outerRW := 'outerRW*'. + self assert: outerRW = 'outerRW*'] value: 'arg1' value: 'arg2'. \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/br_a.st b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/br_a.st new file mode 100644 index 00000000..2e9086e2 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/br_a.st @@ -0,0 +1,5 @@ +2 - block return test +br_a + + self br_b: [^ 42]. + self br_c \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/br_b..st b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/br_b..st new file mode 100644 index 00000000..4f5f3b3d --- /dev/null +++ b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/br_b..st @@ -0,0 +1,4 @@ +2 - block return test +br_b: block + + ^ block value factorial \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/br_c.st b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/br_c.st new file mode 100644 index 00000000..a42e69c7 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/br_c.st @@ -0,0 +1,4 @@ +2 - block return test +br_c + + ^ $c \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/br_d.st b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/br_d.st new file mode 100644 index 00000000..321c4426 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/br_d.st @@ -0,0 +1,4 @@ +2 - block return test +br_d + + ^ $c \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/c.st b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/c.st new file mode 100644 index 00000000..4b5f3693 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/c.st @@ -0,0 +1,4 @@ +1 - exception test +c + + ^ $c \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/c_1.st b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/c_1.st new file mode 100644 index 00000000..5f98ab84 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/c_1.st @@ -0,0 +1,4 @@ +4 - cascade test +c_1 + + ^ 'c_1' \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/c_2.st b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/c_2.st new file mode 100644 index 00000000..2c6c943b --- /dev/null +++ b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/c_2.st @@ -0,0 +1,4 @@ +4 - cascade test +c_2 + + ^ 'c_2' \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/cascadeTest.st b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/cascadeTest.st new file mode 100644 index 00000000..e06ee991 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/cascadeTest.st @@ -0,0 +1,4 @@ +4 - cascade test +cascadeTest + + self c_1; c_2 \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/d.st b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/d.st new file mode 100644 index 00000000..80df4155 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/d.st @@ -0,0 +1,4 @@ +1 - exception test +d + + ^ $d \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/exceptionTest.st b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/exceptionTest.st new file mode 100644 index 00000000..539e05ca --- /dev/null +++ b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/exceptionTest.st @@ -0,0 +1,7 @@ +1 - exception test +exceptionTest + + [ + self a. + ] on: Error do: [self c]. + self d. \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/instrumentationTest.st b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/instrumentationTest.st new file mode 100644 index 00000000..59fc5fcf --- /dev/null +++ b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/instrumentationTest.st @@ -0,0 +1,4 @@ +3 - instrumentation test +instrumentationTest + + ^ 10 + 10 \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/mixedBlockReturnTest..st b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/mixedBlockReturnTest..st new file mode 100644 index 00000000..cfbcc344 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/mixedBlockReturnTest..st @@ -0,0 +1,7 @@ +5 - mixed block return test +mixedBlockReturnTest: hardReturn + + [ + hardReturn ifTrue: [^ #hardReturn] + ] value. + ^ #softReturn \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/methodProperties.json b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/methodProperties.json new file mode 100644 index 00000000..169ef8ac --- /dev/null +++ b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/methodProperties.json @@ -0,0 +1,22 @@ +{ + "class" : { + }, + "instance" : { + "a" : "cmfcmf 10/8/2020 11:32", + "b" : "cmfcmf 10/8/2020 11:32", + "blockReturnTest" : "cmfcmf 10/8/2020 12:31", + "blockTemporariesAgainAgainTest" : "cmfcmf 12/5/2020 19:54", + "blockTemporariesAgainTest:" : "cmfcmf 10/26/2020 12:37", + "blockTemporariesTest" : "cmfcmf 10/26/2020 11:16", + "br_a" : "cmfcmf 10/8/2020 12:56", + "br_b:" : "cmfcmf 10/8/2020 12:29", + "br_c" : "cmfcmf 10/8/2020 12:30", + "br_d" : "cmfcmf 10/8/2020 12:31", + "c" : "cmfcmf 10/8/2020 11:32", + "c_1" : "cmfcmf 10/12/2020 14:01", + "c_2" : "cmfcmf 10/12/2020 14:02", + "cascadeTest" : "cmfcmf 10/12/2020 14:02", + "d" : "cmfcmf 10/8/2020 11:36", + "exceptionTest" : "cmfcmf 10/8/2020 11:36", + "instrumentationTest" : "cmfcmf 10/9/2020 12:29", + "mixedBlockReturnTest:" : "cmfcmf 10/20/2020 12:00" } } diff --git a/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/properties.json b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/properties.json new file mode 100644 index 00000000..d5b54342 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Tests-Callgraph-ByteCode-Fixtures", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPCallGraphByteCodeFixture", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixtureWithBPCompiler.class/README.md b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixtureWithBPCompiler.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixtureWithBPCompiler.class/class/compilerClass.st b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixtureWithBPCompiler.class/class/compilerClass.st new file mode 100644 index 00000000..c11c9abb --- /dev/null +++ b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixtureWithBPCompiler.class/class/compilerClass.st @@ -0,0 +1,4 @@ +as yet unclassified +compilerClass + + ^ BPCompiler \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixtureWithBPCompiler.class/instance/foo.st b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixtureWithBPCompiler.class/instance/foo.st new file mode 100644 index 00000000..743cefb2 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixtureWithBPCompiler.class/instance/foo.st @@ -0,0 +1,4 @@ +as yet unclassified +foo + + ^ 42 \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixtureWithBPCompiler.class/methodProperties.json b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixtureWithBPCompiler.class/methodProperties.json new file mode 100644 index 00000000..04418ccf --- /dev/null +++ b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixtureWithBPCompiler.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + "compilerClass" : "cmfcmf 10/27/2020 12:31" }, + "instance" : { + "foo" : "cmfcmf 10/27/2020 12:31" } } diff --git a/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixtureWithBPCompiler.class/properties.json b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixtureWithBPCompiler.class/properties.json new file mode 100644 index 00000000..bf64566b --- /dev/null +++ b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixtureWithBPCompiler.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Tests-Callgraph-ByteCode-Fixtures", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPCallGraphByteCodeFixtureWithBPCompiler", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/packages/Babylonian-Tests.package/BPFancyMorph.class/README.md b/packages/Babylonian-Tests.package/BPFancyMorph.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Tests.package/BPFancyMorph.class/class/compilerClass.st b/packages/Babylonian-Tests.package/BPFancyMorph.class/class/compilerClass.st new file mode 100644 index 00000000..4be04a6b --- /dev/null +++ b/packages/Babylonian-Tests.package/BPFancyMorph.class/class/compilerClass.st @@ -0,0 +1,4 @@ +as yet unclassified +compilerClass + + ^ BPCompiler \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPFancyMorph.class/instance/initialize.st b/packages/Babylonian-Tests.package/BPFancyMorph.class/instance/initialize.st new file mode 100644 index 00000000..85e13694 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPFancyMorph.class/instance/initialize.st @@ -0,0 +1,17 @@ +initialization +initialize + + super initialize. + + ""self color: Color blue darker"". + + ""self width: 200"". + + ""self height: 200"". + + + 1 to: 50 do: [:i | + ">#initialize>>#''fancy morph basic example''' that: [:result | result < 50]>"10 + i"". + ""self addMorph: (BPFancyStar new extent: 100@100; topLeft: (i sin * 10)@(10 + (50*i sin)))""]. + + \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPFancyMorph.class/methodProperties.json b/packages/Babylonian-Tests.package/BPFancyMorph.class/methodProperties.json new file mode 100644 index 00000000..006af5a7 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPFancyMorph.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + "compilerClass" : "pre 11/9/2019 15:08" }, + "instance" : { + "initialize" : "cmfcmf 9/22/2020 15:04" } } diff --git a/packages/Babylonian-Tests.package/BPFancyMorph.class/properties.json b/packages/Babylonian-Tests.package/BPFancyMorph.class/properties.json new file mode 100644 index 00000000..fb2e03d3 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPFancyMorph.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Tests-Fixtures", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPFancyMorph", + "pools" : [ + ], + "super" : "Morph", + "type" : "normal" } diff --git a/packages/Babylonian-Tests.package/BPFancyStar.class/README.md b/packages/Babylonian-Tests.package/BPFancyStar.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Tests.package/BPFancyStar.class/class/compilerClass.st b/packages/Babylonian-Tests.package/BPFancyStar.class/class/compilerClass.st new file mode 100644 index 00000000..4be04a6b --- /dev/null +++ b/packages/Babylonian-Tests.package/BPFancyStar.class/class/compilerClass.st @@ -0,0 +1,4 @@ +as yet unclassified +compilerClass + + ^ BPCompiler \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPFancyStar.class/instance/initialize.st b/packages/Babylonian-Tests.package/BPFancyStar.class/instance/initialize.st new file mode 100644 index 00000000..f6852917 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPFancyStar.class/instance/initialize.st @@ -0,0 +1,9 @@ +initialization +initialize + + super initialize. + + ""self color: Color green"". + + + ""self moreVertices; moreVertices"". \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPFancyStar.class/methodProperties.json b/packages/Babylonian-Tests.package/BPFancyStar.class/methodProperties.json new file mode 100644 index 00000000..dbdeba1d --- /dev/null +++ b/packages/Babylonian-Tests.package/BPFancyStar.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + "compilerClass" : "pre 11/9/2019 15:28" }, + "instance" : { + "initialize" : "pre 11/19/2019 17:09" } } diff --git a/packages/Babylonian-Tests.package/BPFancyStar.class/properties.json b/packages/Babylonian-Tests.package/BPFancyStar.class/properties.json new file mode 100644 index 00000000..32585d39 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPFancyStar.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Tests-Fixtures", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPFancyStar", + "pools" : [ + ], + "super" : "StarMorph", + "type" : "normal" } diff --git a/packages/Babylonian-Tests.package/BPSearchCollection.class/methodProperties.json b/packages/Babylonian-Tests.package/BPSearchCollection.class/methodProperties.json index 5011ee40..75274abb 100644 --- a/packages/Babylonian-Tests.package/BPSearchCollection.class/methodProperties.json +++ b/packages/Babylonian-Tests.package/BPSearchCollection.class/methodProperties.json @@ -4,4 +4,4 @@ "numbersUpTo10" : "pre 11/9/2019 15:06", "numbersUpTo10000" : "pre 10/22/2020 13:54" }, "instance" : { - "binarySearch:" : "pre 10/23/2020 11:58" } } + "binarySearch:" : "cmfcmf 11/10/2020 11:03" } } diff --git a/packages/Babylonian-Tests.package/BPTracingTest.class/instance/testAsyncTracingReturnsIntermediateTrace.st b/packages/Babylonian-Tests.package/BPTracingTest.class/instance/testAsyncTracingReturnsIntermediateTrace.st index 1007eaf9..4666c3e5 100644 --- a/packages/Babylonian-Tests.package/BPTracingTest.class/instance/testAsyncTracingReturnsIntermediateTrace.st +++ b/packages/Babylonian-Tests.package/BPTracingTest.class/instance/testAsyncTracingReturnsIntermediateTrace.st @@ -3,5 +3,5 @@ testAsyncTracingReturnsIntermediateTrace [BPTestManuallyInstrumentedClass new methodA] bpTraceAsyncForExample: nil - notifying: [:t | self assert: t hasTraceCompleted not]. + notifying: [:tuple | self assert: tuple first hasTraceCompleted not]. \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPTracingTest.class/instance/testAsyncTracingReturnsSameTrace.st b/packages/Babylonian-Tests.package/BPTracingTest.class/instance/testAsyncTracingReturnsSameTrace.st index 808bb7bd..1df8a427 100644 --- a/packages/Babylonian-Tests.package/BPTracingTest.class/instance/testAsyncTracingReturnsSameTrace.st +++ b/packages/Babylonian-Tests.package/BPTracingTest.class/instance/testAsyncTracingReturnsSameTrace.st @@ -1,8 +1,8 @@ tests - asynchronous tracing testAsyncTracingReturnsSameTrace - + | trace resultTrace | resultTrace := [BPTestManuallyInstrumentedClass new methodA] bpTraceAsyncForExample: nil - notifying: [:t | trace := t]. + notifying: [:tuple | trace := tuple first]. self assert: trace == resultTrace. \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPTracingTest.class/methodProperties.json b/packages/Babylonian-Tests.package/BPTracingTest.class/methodProperties.json index c059eec2..21483e50 100644 --- a/packages/Babylonian-Tests.package/BPTracingTest.class/methodProperties.json +++ b/packages/Babylonian-Tests.package/BPTracingTest.class/methodProperties.json @@ -7,8 +7,8 @@ "testActivateBPTracingOnBlock" : "pre 8/17/2020 10:31", "testActivateTracingGivenAnExample" : "pre 9/30/2020 09:47", "testActivateTracingGivenAnExampleAndMethods" : "pre 9/30/2020 09:47", - "testAsyncTracingReturnsIntermediateTrace" : "jb 12/7/2020 19:10", - "testAsyncTracingReturnsSameTrace" : "jb 12/7/2020 19:10", + "testAsyncTracingReturnsIntermediateTrace" : "pre 1/15/2021 10:44", + "testAsyncTracingReturnsSameTrace" : "pre 1/15/2021 10:45", "testFinishedTracesAreComplete" : "jb 12/7/2020 19:10", "testTheTracingReturnsTheExpressionValueAnyways" : "jb 12/7/2020 19:10", "testTracingAnErrorRecordsTheStack" : "jb 12/7/2020 19:10", diff --git a/packages/Babylonian-Tests.package/monticello.meta/categories.st b/packages/Babylonian-Tests.package/monticello.meta/categories.st index 8a0a9569..1b252f5f 100644 --- a/packages/Babylonian-Tests.package/monticello.meta/categories.st +++ b/packages/Babylonian-Tests.package/monticello.meta/categories.st @@ -1,2 +1,4 @@ SystemOrganization addCategory: #'Babylonian-Tests'! +SystemOrganization addCategory: #'Babylonian-Tests-Callgraph-ByteCode'! +SystemOrganization addCategory: #'Babylonian-Tests-Callgraph-ByteCode-Fixtures'! SystemOrganization addCategory: #'Babylonian-Tests-Fixtures'! diff --git a/packages/Babylonian-UI.package/BPAnnotationMorph.class/instance/newExampleLabelMorphFor..st b/packages/Babylonian-UI.package/BPAnnotationMorph.class/instance/newExampleLabelMorphFor..st index 9d03d131..5dc659d3 100644 --- a/packages/Babylonian-UI.package/BPAnnotationMorph.class/instance/newExampleLabelMorphFor..st +++ b/packages/Babylonian-UI.package/BPAnnotationMorph.class/instance/newExampleLabelMorphFor..st @@ -1,14 +1,21 @@ private - ui newExampleLabelMorphFor: anExample - + | exampleLabel | exampleLabel := ((String streamContents: [:str | str nextPutAll: (anExample exampleName padded: #right to: 6 with: Character space)] limitedTo: 6), '...') asText. exampleLabel addAttribute: (BPPluggableTextAttribute new evalBlock: [ - ToolSet - browse: anExample method methodClass - selector: anExample method selector asSymbol]). + MenuMorph new + addTitle: 'example'; + add: 'browse example' action: [self containingBrowser browseReference: anExample method methodReference]; + add: 'browse example in new window' action: ["indirect through methodReference to call browse on the CSLayeredMethod instead of the CompiledMethod (otherwise the browser will not be able to open correctly)" + anExample method methodReference browse]; + add: 'disable example' action: [anExample isActive: false]; + addLine; + add: 'view example in sidebar' action: [self containingBrowser sidebarShowExample: anExample id: self id traceValue: nil]; + add: 'open callgraph in new window' action: [BPCallgraphExplorer open loadFromCallgraph: anExample currentCallgraph]; + popUpInWorld]). ^ (TextMorph string: exampleLabel size: BPAnnotationMorph smallFontHeight) color: anExample color; hResizing: #rigid; diff --git a/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/instance/valueMorphFor..st b/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/instance/valueMorphFor.trace..st similarity index 73% rename from packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/instance/valueMorphFor..st rename to packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/instance/valueMorphFor.trace..st index c6c5aaf8..0f816e94 100644 --- a/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/instance/valueMorphFor..st +++ b/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/instance/valueMorphFor.trace..st @@ -1,8 +1,8 @@ private -valueMorphFor: traceValue +valueMorphFor: traceValue trace: aTrace | initialValueMorph previousValueMorph | - initialValueMorph := super valueMorphFor: traceValue. + initialValueMorph := super valueMorphFor: traceValue trace: aTrace. initialValueMorph addMorphFront: '|' asText asMorph. previousValueMorph := (traceValue previousValueOf: traceValue assignedVariableNames first) printString asText asMorph. diff --git a/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/methodProperties.json index d6999e10..093127ca 100644 --- a/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/methodProperties.json @@ -2,4 +2,4 @@ "class" : { }, "instance" : { - "valueMorphFor:" : "pre 10/12/2020 17:27" } } + "valueMorphFor:trace:" : "pre 1/15/2021 13:59" } } diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/defaultBrowserTitle.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/defaultBrowserTitle.st index 976e1657..96e4ac8d 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/defaultBrowserTitle.st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/defaultBrowserTitle.st @@ -1,4 +1,4 @@ initialize-release defaultBrowserTitle - - ^ 'Babylonian Browser' \ No newline at end of file + + ^ 'Basic Babylonian Browser' \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/README.md b/packages/Babylonian-UI.package/BPBrowserSidebar.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/class/showFancyAnalysisInCallgraph..st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/class/showFancyAnalysisInCallgraph..st new file mode 100644 index 00000000..20ad79fa --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/class/showFancyAnalysisInCallgraph..st @@ -0,0 +1,4 @@ +preferences +showFancyAnalysisInCallgraph: aBoolean + + ^ ShowFancyAnalysisForCallgraph := aBoolean \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/class/showFancyAnalysisInCallgraph.st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/class/showFancyAnalysisInCallgraph.st new file mode 100644 index 00000000..6d3f518a --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/class/showFancyAnalysisInCallgraph.st @@ -0,0 +1,8 @@ +preferences +showFancyAnalysisInCallgraph + + + ^ ShowFancyAnalysisForCallgraph ifNil: [true] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/bottomBarText.st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/bottomBarText.st new file mode 100644 index 00000000..3ace549a --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/bottomBarText.st @@ -0,0 +1,8 @@ +bottom bar +bottomBarText + + ^ self selectedExample + ifNil: [''] + ifNotNil: [:example | | size | + size := (BPSelectedCallgraphEntries forExample: example) size. + size asString, ' selected entries'] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildButtonBarWith..st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildButtonBarWith..st new file mode 100644 index 00000000..0c118eb6 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildButtonBarWith..st @@ -0,0 +1,24 @@ +bottom bar +buildButtonBarWith: aBuilder + + ^ aBuilder pluggablePanelSpec new + model: self; + children: { + aBuilder pluggableButtonSpec new + frame: (0@0 extent: 0.25@1); + label: 'popout'; + action: [self popout]; + yourself. + aBuilder pluggableButtonSpec new + frame: (0.25@0 extent: 0.25@1); + label: 'explore callgraph'; + action: [visualization callgraph explore]; + yourself. + aBuilder pluggableButtonSpec new + frame: (0.5@0 corner: 1@1); + model: self; + label: #bottomBarText; + action: [self openSelectionMenu]; + yourself. + } + yourself \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildExampleListWith..st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildExampleListWith..st new file mode 100644 index 00000000..8f69ab82 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildExampleListWith..st @@ -0,0 +1,15 @@ +example selection +buildExampleListWith: aBuilder + + ^ aBuilder pluggableListSpec new + autoDeselect: true; + clearFilterAutomatically: false; + filterableList: true; + + model: self; + list: #getExampleListLabels; + getIndex: #getExampleListIndex; + setIndex: #setExampleListIndex:; + + doubleClick: #exampleListDoubleClick; + yourself \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildVisualizationTypeWith..st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildVisualizationTypeWith..st new file mode 100644 index 00000000..896c8b67 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildVisualizationTypeWith..st @@ -0,0 +1,13 @@ +visualization type +buildVisualizationTypeWith: aBuilder + + ^ aBuilder pluggableListSpec new + autoDeselect: true; + clearFilterAutomatically: false; + filterableList: true; + + model: self; + list: #getVisualizationTypeLabels; + getIndex: #getVisualizationTypeIndex; + setIndex: #setVisualizationTypeIndex:; + yourself \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildVisualizationWith..st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildVisualizationWith..st new file mode 100644 index 00000000..ff88175b --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildVisualizationWith..st @@ -0,0 +1,7 @@ +visualization +buildVisualizationWith: aBuilder + + ^ aBuilder pluggablePanelSpec new + model: self; + children: #visualizationMorphs; + yourself \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildWith..st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildWith..st new file mode 100644 index 00000000..7cb4f2c9 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildWith..st @@ -0,0 +1,29 @@ +toolbuilder +buildWith: aBuilder + + | visualizationTypeHeight buttonBarHeight | + visualizationTypeHeight := self getVisualizationTypes size * 15 + 3. + buttonBarHeight := 23. + + ^ aBuilder pluggablePanelSpec new + wantsResizeHandles: true; + children: { + (self buildExampleListWith: aBuilder) + frame: (0@0 corner: 1@0.1); + yourself. + (self buildVisualizationTypeWith: aBuilder) + frame: (LayoutFrame + fractions: (0@0.1 corner: 1@0.1) + offsets: (0@0 corner: 0@visualizationTypeHeight)); + yourself. + (self buildVisualizationWith: aBuilder) + frame: (LayoutFrame + fractions: (0@0.1 corner: 1@1) + offsets: (0@visualizationTypeHeight corner: 0@(buttonBarHeight * -1))); + yourself. + (self buildButtonBarWith: aBuilder) + frame: (LayoutFrame + fractions: (0@1 corner: 1@1) + offsets: (0@(buttonBarHeight * -1) corner: 0@0)); + yourself}; + yourself \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/exampleListDoubleClick.st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/exampleListDoubleClick.st new file mode 100644 index 00000000..2d216c33 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/exampleListDoubleClick.st @@ -0,0 +1,5 @@ +example selection +exampleListDoubleClick + + exampleListIndex > 0 ifTrue: [ + self triggerEvent: #browseMethod with: (self getExampleList at: exampleListIndex) method asCodeReference] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getExampleList.st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getExampleList.st new file mode 100644 index 00000000..d198f82f --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getExampleList.st @@ -0,0 +1,4 @@ +example selection +getExampleList + + ^ "BPExample allSubInstances"BPActiveExamples value examples sorted: #uniqueIdentifier ascending \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getExampleListIndex.st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getExampleListIndex.st new file mode 100644 index 00000000..f96016c3 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getExampleListIndex.st @@ -0,0 +1,5 @@ +example selection +getExampleListIndex + + + ^ exampleListIndex \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getExampleListLabels.st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getExampleListLabels.st new file mode 100644 index 00000000..ee45c009 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getExampleListLabels.st @@ -0,0 +1,5 @@ +example selection +getExampleListLabels + + ^ self getExampleList collect: [:each | each method methodClass asString, '>>#', each method selector, + ' ', each exampleName] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getVisualizationTypeIndex.st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getVisualizationTypeIndex.st new file mode 100644 index 00000000..41d8bfe3 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getVisualizationTypeIndex.st @@ -0,0 +1,4 @@ +visualization type +getVisualizationTypeIndex + + ^ visualizationTypeIndex \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getVisualizationTypeLabels.st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getVisualizationTypeLabels.st new file mode 100644 index 00000000..67d7700a --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getVisualizationTypeLabels.st @@ -0,0 +1,4 @@ +visualization type +getVisualizationTypeLabels + + ^ self getVisualizationTypes collect: #key \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getVisualizationTypes.st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getVisualizationTypes.st new file mode 100644 index 00000000..17e3a533 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getVisualizationTypes.st @@ -0,0 +1,8 @@ +visualization type +getVisualizationTypes + + ^ { + 'callgraph' -> #callgraph. + 'probes'-> #annotations. + 'methods' -> #methodSet. + } \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/initialize.st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/initialize.st new file mode 100644 index 00000000..dac685a9 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/initialize.st @@ -0,0 +1,10 @@ +initialize-release +initialize + + + super initialize. + + exampleListIndex := 0. + visualizationTypeIndex := 1. + + BPSelectedCallgraphEntries when: #entrySelected send: #changed: to: self with: #bottomBarText \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/openSelectionMenu.st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/openSelectionMenu.st new file mode 100644 index 00000000..44674c09 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/openSelectionMenu.st @@ -0,0 +1,21 @@ +bottom bar +openSelectionMenu + + | selection selectedEntries callgraph | + selection := MenuMorph + chooseFrom: {'find common ancestor (ignoring context)' . 'find common ancestor (with context)' . 'explore' . 'clear'} + lines: {2} + title: 'select action'. + selection == 0 ifTrue: [^ self]. + + callgraph := self selectedExample currentCallgraph. + + selectedEntries := BPSelectedCallgraphEntries forExample: self selectedExample andCallgraph: callgraph. + + selection == 3 ifTrue: [^ selectedEntries explore]. + selection == 4 ifTrue: [selectedEntries removeAll. ^ self changed: #bottomBarText]. + + callgraph + interactiveAncestorSearchFor: selectedEntries asOrderedCollection + ignoringInvocationCounts: selection == 1 + browseMethodBlock: [:methodReference | self triggerEvent: #browseMethod with: methodReference] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/popout.st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/popout.st new file mode 100644 index 00000000..e73dcd0c --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/popout.st @@ -0,0 +1,16 @@ +as yet unclassified +popout + + | builder instance spec windowSpec | + builder := ToolBuilder default. + instance := self copy. + instance when: #browseMethod evaluate: [:methodReference | methodReference browse]. + + instance breakDependents. + self flag: #todo. "breakDependents is no longer needed in Squeak 6.0" + + spec := instance buildWith: builder. + windowSpec := instance buildWindowWith: builder. + windowSpec label: 'Babylonian Callgraph'. + windowSpec children addAll: spec children. + (builder build: windowSpec) openAsTool \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/postCopy.st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/postCopy.st new file mode 100644 index 00000000..669567d2 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/postCopy.st @@ -0,0 +1,6 @@ +copying +postCopy + + visualization := visualization copy. + visualization breakDependents. + self flag: #todo. "breakDependents is no longer needed in Squeak 6.0" \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/selectedExample.st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/selectedExample.st new file mode 100644 index 00000000..c24797fb --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/selectedExample.st @@ -0,0 +1,4 @@ +example selection +selectedExample + + ^ self getExampleList at: exampleListIndex ifAbsent: [nil] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/selectedVisualizationType.st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/selectedVisualizationType.st new file mode 100644 index 00000000..438c1243 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/selectedVisualizationType.st @@ -0,0 +1,4 @@ +visualization type +selectedVisualizationType + + ^ (self getVisualizationTypes at: visualizationTypeIndex ifAbsent: [#none]) value \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/selectedVisualizationTypeClass.st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/selectedVisualizationTypeClass.st new file mode 100644 index 00000000..9ef9659f --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/selectedVisualizationTypeClass.st @@ -0,0 +1,8 @@ +private +selectedVisualizationTypeClass + + ^ self selectedVisualizationType caseOf: { + [#callgraph] -> [BPBrowserSidebarVisualizationCallgraph]. + [#annotations] -> [BPBrowserSidebarVisualizationAnnotations]. + [#methodSet] -> [BPBrowserSidebarVisualizationExecutedMethods]. + }. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/setExampleListIndex..st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/setExampleListIndex..st new file mode 100644 index 00000000..c34891dc --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/setExampleListIndex..st @@ -0,0 +1,12 @@ +example selection +setExampleListIndex: aNumber + + aNumber == exampleListIndex ifTrue: [^ self]. + exampleListIndex := aNumber. + self changed: #getExampleListIndex. + self changed: #visualizationMorphs. + self changed: #bottomBarText. + + self getVisualizationTypeIndex > 0 + ifTrue: [self setVisualizationTypeIndex: self getVisualizationTypeIndex] + ifFalse: [self setVisualizationTypeIndex: 1]. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/setVisualizationTypeIndex..st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/setVisualizationTypeIndex..st new file mode 100644 index 00000000..525ed69e --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/setVisualizationTypeIndex..st @@ -0,0 +1,7 @@ +visualization type +setVisualizationTypeIndex: aNumber + + visualizationTypeIndex := aNumber. + self + changed: #getVisualizationTypeIndex; + changed: #visualizationMorphs. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/showExample.id.traceValue..st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/showExample.id.traceValue..st new file mode 100644 index 00000000..336808df --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/showExample.id.traceValue..st @@ -0,0 +1,7 @@ +as yet unclassified +showExample: aBPExample id: aNumber traceValue: aBPTraceValue + + self setExampleListIndex: (self getExampleList indexOf: aBPExample). + self selectedVisualizationType == #none ifTrue: [ + self setVisualizationTypeIndex: 1]. + visualization ifNotNil: [visualization highlightTraceValue: aBPTraceValue id: aNumber] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/showMethod..st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/showMethod..st new file mode 100644 index 00000000..809cadcd --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/showMethod..st @@ -0,0 +1,15 @@ +as yet unclassified +showMethod: aMethodReference + + visualization + ifNotNil: [visualization highlightMethod: aMethodReference] + ifNil: [ + exampleListIndex == 0 ifTrue: [| example | + example := UIManager default chooseFrom: self getExampleListLabels values: self getExampleList title: 'Select example'. + example ifNil: [^ self]. + self setExampleListIndex: (self getExampleList indexOf: example)]. + visualizationTypeIndex == 0 ifTrue: [| visualizationType | + visualizationType := UIManager default chooseFrom: self getVisualizationTypeLabels values: self getVisualizationTypes title: 'Select visualization'. + visualizationType ifNil: [^ self]. + self setVisualizationTypeIndex: (self getVisualizationTypes indexOf: visualizationType)]. + self showMethod: aMethodReference] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/updateVisualizationMorphsIfNecessary.st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/updateVisualizationMorphsIfNecessary.st new file mode 100644 index 00000000..c90a536f --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/updateVisualizationMorphsIfNecessary.st @@ -0,0 +1,8 @@ +private +updateVisualizationMorphsIfNecessary + + "The following is a hack to prevent the complete rebuild of the call tree" + | class | + visualization class = self selectedVisualizationTypeClass + ifTrue: [visualization example: self selectedExample] + ifFalse: [self changed: #visualizationMorphs] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/visualizationMorphs.st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/visualizationMorphs.st new file mode 100644 index 00000000..1eae3f1f --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/visualizationMorphs.st @@ -0,0 +1,23 @@ +visualization +visualizationMorphs + + | content | + + content := true caseOf: { + [self selectedExample isNil] -> [ visualization := nil. 'No example selected']. + [self selectedVisualizationType == #none] -> [visualization := nil. 'No visualization selected']. + [true] -> [ + (visualization := self selectedVisualizationTypeClass new) + example: self selectedExample; + when: #browseMethod evaluate: [:ref | self triggerEvent: #browseMethod with: ref]; + when: #highlightSend evaluate: [:method :pc | + self triggerEvent: #highlightSend withArguments: {method . pc}]; + buildWith: ToolBuilder default]}. + + ^ {content isString + ifTrue: [ + TextMorph new + contents: content; + layoutFrame: (LayoutFrame fractions: (0@0 corner: 1@1)); + yourself] + ifFalse: [content]} \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json new file mode 100644 index 00000000..603cd1cc --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json @@ -0,0 +1,31 @@ +{ + "class" : { + "showFancyAnalysisInCallgraph" : "pre 2/22/2021 19:15", + "showFancyAnalysisInCallgraph:" : "pre 2/22/2021 19:16" }, + "instance" : { + "bottomBarText" : "cmfcmf 11/9/2020 16:29", + "buildButtonBarWith:" : "cmfcmf 11/10/2020 10:21", + "buildExampleListWith:" : "cmfcmf 10/30/2020 15:37", + "buildVisualizationTypeWith:" : "cmfcmf 10/30/2020 14:09", + "buildVisualizationWith:" : "cmfcmf 10/30/2020 14:08", + "buildWith:" : "pre 2/15/2021 12:03", + "exampleListDoubleClick" : "cmfcmf 10/30/2020 14:26", + "getExampleList" : "cmfcmf 11/10/2020 14:03", + "getExampleListIndex" : "cmfcmf 10/30/2020 13:38", + "getExampleListLabels" : "cmfcmf 10/30/2020 15:39", + "getVisualizationTypeIndex" : "cmfcmf 10/30/2020 14:02", + "getVisualizationTypeLabels" : "cmfcmf 10/30/2020 14:09", + "getVisualizationTypes" : "pre 3/10/2021 11:58", + "initialize" : "pre 2/15/2021 12:03", + "openSelectionMenu" : "cmfcmf 11/10/2020 12:37", + "popout" : "cmfcmf 11/4/2020 15:45", + "postCopy" : "cmfcmf 11/4/2020 15:44", + "selectedExample" : "cmfcmf 10/30/2020 14:20", + "selectedVisualizationType" : "cmfcmf 10/30/2020 14:14", + "selectedVisualizationTypeClass" : "pre 3/11/2021 17:43", + "setExampleListIndex:" : "pre 2/22/2021 11:36", + "setVisualizationTypeIndex:" : "pre 2/22/2021 11:35", + "showExample:id:traceValue:" : "cmfcmf 11/5/2020 13:01", + "showMethod:" : "cmfcmf 11/2/2020 14:34", + "updateVisualizationMorphsIfNecessary" : "pre 3/11/2021 17:44", + "visualizationMorphs" : "pre 3/11/2021 17:43" } } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/properties.json b/packages/Babylonian-UI.package/BPBrowserSidebar.class/properties.json new file mode 100644 index 00000000..d47d46ee --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/properties.json @@ -0,0 +1,16 @@ +{ + "category" : "Babylonian-UI-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + "ShowFancyAnalysisForCallgraph" ], + "commentStamp" : "", + "instvars" : [ + "exampleListIndex", + "visualizationTypeIndex", + "visualization" ], + "name" : "BPBrowserSidebar", + "pools" : [ + ], + "super" : "Model", + "type" : "normal" } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/README.md b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/addEntryToGlobalSelection..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/addEntryToGlobalSelection..st new file mode 100644 index 00000000..2dbaf0c8 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/addEntryToGlobalSelection..st @@ -0,0 +1,8 @@ +as yet unclassified +addEntryToGlobalSelection: entry + + (entry isKindOf: BPCallgraphEntry) ifTrue: [ + BPSelectedCallgraphEntries select: entry fromCallgraph: self callgraph forExample: self example] + ifFalse: [| entries | + entries := self callgraph select: [:each | entry equalsCallgraphEntry: each]. + entries do: [:each | self addEntryToGlobalSelection: each]] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/browseMethod..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/browseMethod..st new file mode 100644 index 00000000..fd9a4d23 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/browseMethod..st @@ -0,0 +1,4 @@ +as yet unclassified +browseMethod: aMethodReference + + self triggerEvent: #browseMethod with: aMethodReference \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/buildWith..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/buildWith..st new file mode 100644 index 00000000..6732e445 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/buildWith..st @@ -0,0 +1,4 @@ +toolbuilder +buildWith: aBuilder + + self subclassResponsibility \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/callgraph.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/callgraph.st new file mode 100644 index 00000000..11ddd007 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/callgraph.st @@ -0,0 +1,4 @@ +accessing +callgraph + + ^ self example currentCallgraph \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/example..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/example..st new file mode 100644 index 00000000..18392495 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/example..st @@ -0,0 +1,4 @@ +accessing +example: aBPExample + + example := aBPExample \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/example.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/example.st new file mode 100644 index 00000000..5da5af96 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/example.st @@ -0,0 +1,4 @@ +accessing +example + + ^ example \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/highlightMethod..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/highlightMethod..st new file mode 100644 index 00000000..8d89d998 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/highlightMethod..st @@ -0,0 +1,4 @@ +as yet unclassified +highlightMethod: aMethodReference + + self subclassResponsibility \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/highlightTraceValue.id..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/highlightTraceValue.id..st new file mode 100644 index 00000000..76cec14a --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/highlightTraceValue.id..st @@ -0,0 +1,4 @@ +as yet unclassified +highlightTraceValue: aBPTraceValue id: aNumber + + self subclassResponsibility \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/methodProperties.json new file mode 100644 index 00000000..050ac6aa --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/methodProperties.json @@ -0,0 +1,12 @@ +{ + "class" : { + }, + "instance" : { + "addEntryToGlobalSelection:" : "cmfcmf 11/10/2020 10:18", + "browseMethod:" : "cmfcmf 11/4/2020 12:45", + "buildWith:" : "cmfcmf 10/30/2020 14:30", + "callgraph" : "cmfcmf 11/9/2020 15:28", + "example" : "cmfcmf 10/30/2020 14:29", + "example:" : "cmfcmf 10/30/2020 14:28", + "highlightMethod:" : "cmfcmf 11/2/2020 14:09", + "highlightTraceValue:id:" : "cmfcmf 11/5/2020 13:01" } } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/properties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/properties.json new file mode 100644 index 00000000..55dd2faa --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-UI-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "example" ], + "name" : "BPBrowserSidebarVisualization", + "pools" : [ + ], + "super" : "Model", + "type" : "normal" } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/README.md b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/bottomEntries.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/bottomEntries.st new file mode 100644 index 00000000..4994a12e --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/bottomEntries.st @@ -0,0 +1,8 @@ +list bottom +bottomEntries + + ^ self selectedTopEntry ifNil: [{}] ifNotNil: [:topEntry | + (cache at: topEntry ifAbsentPut: [ + (topEntry isKindOf: BPCallgraphPathBabylonianTraceBased) + ifFalse: [{{} . 0}] + ifTrue: [self calculateBottomContent]]) first] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/highlightMethod..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/highlightMethod..st new file mode 100644 index 00000000..eb5cb50b --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/highlightMethod..st @@ -0,0 +1,7 @@ +actions +highlightMethod: aMethodReference + + self bottomEntries + withIndexDo: [:each :i | (each class == BPCallgraphEntryEnter + and: [each getClass == aMethodReference actualClass] + and: [each getSelector == aMethodReference selector]) ifTrue: [^ self bottomIndex: i]] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/highlightTraceValue.id..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/highlightTraceValue.id..st new file mode 100644 index 00000000..64481d91 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/highlightTraceValue.id..st @@ -0,0 +1,10 @@ +actions +highlightTraceValue: aBPTraceValue id: aNumber + + | idx | + idx := self topEntries findFirst: [:each | (each isKindOf: BPCallgraphPathBabylonianTraceBased) and: [each id == aNumber]]. + idx == 0 ifTrue: [^ self]. + self topIndex: idx. + self bottomEntries withIndexDo: [:each :i | + ((each respondsTo: #traceValue) and: [each traceValue == aBPTraceValue]) ifTrue: [^ self bottomIndex: i]]. + self bottomIndex: 0 \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/preprocessBottomEntriesForAncestorSearch..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/preprocessBottomEntriesForAncestorSearch..st new file mode 100644 index 00000000..c21f5258 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/preprocessBottomEntriesForAncestorSearch..st @@ -0,0 +1,5 @@ +bottom content +preprocessBottomEntriesForAncestorSearch: entries + + self flag: #todo. "replace super method with this method?" + ^ entries collect: #selfOrParentMethodBlockOfBPProbeOrAssertion \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/selectMatchingEntriesFromCallgraph..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/selectMatchingEntriesFromCallgraph..st new file mode 100644 index 00000000..890d2ddd --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/selectMatchingEntriesFromCallgraph..st @@ -0,0 +1,4 @@ +bottom content +selectMatchingEntriesFromCallgraph: topEntry + + ^ self callgraph select: [:each | (each isKindOf: BPCallgraphEntryBPProbeOrAssertion) and: [each id == topEntry id]]. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/topEntries.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/topEntries.st new file mode 100644 index 00000000..76b31283 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/topEntries.st @@ -0,0 +1,4 @@ +list top +topEntries + + ^ cache at: #topEntries ifAbsentPut: [(self callgraph babylonianEntries collect: #asPathPart) withoutDuplicates] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/topMenu.for..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/topMenu.for..st new file mode 100644 index 00000000..7b073417 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/topMenu.for..st @@ -0,0 +1,19 @@ +list top +topMenu: menu for: entry + + menu + add: 'browse' action: [self browseMethod: entry methodReference]. + + ((entry isKindOf: BPCallgraphEntry) or: [entry isKindOf: BPCallgraphPathPart]) ifTrue: [ + menu + add: 'select' + action: [self addEntryToGlobalSelection: entry]]. + + menu + addLine; + add: 'sort by type, id, class and selector' + action: [self sortTopEntries: [:each | each class asString] ascending, + [:each | each methodReference classSymbol] ascending, [:each | each methodReference selector] ascending]; + add: 'sort by class and selector' + action: [self sortTopEntries: + [:each | each methodReference classSymbol] ascending, [:each | each methodReference selector] ascending] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/methodProperties.json new file mode 100644 index 00000000..8821bf35 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/methodProperties.json @@ -0,0 +1,11 @@ +{ + "class" : { + }, + "instance" : { + "bottomEntries" : "cmfcmf 11/6/2020 15:54", + "highlightMethod:" : "cmfcmf 11/4/2020 15:46", + "highlightTraceValue:id:" : "cmfcmf 11/5/2020 13:05", + "preprocessBottomEntriesForAncestorSearch:" : "cmfcmf 11/10/2020 12:24", + "selectMatchingEntriesFromCallgraph:" : "cmfcmf 11/5/2020 12:39", + "topEntries" : "cmfcmf 11/4/2020 16:11", + "topMenu:for:" : "cmfcmf 11/10/2020 10:16" } } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/properties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/properties.json new file mode 100644 index 00000000..c044106a --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-UI-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPBrowserSidebarVisualizationAnnotations", + "pools" : [ + ], + "super" : "BPBrowserSidebarVisualizationExecutedMethods", + "type" : "normal" } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/README.md b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/buildWith..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/buildWith..st new file mode 100644 index 00000000..4a3d0916 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/buildWith..st @@ -0,0 +1,16 @@ +toolbuilder +buildWith: aBuilder + + + model callgraph: self callgraph. + model + when: #doubleClicked + evaluate: [:entry | (entry respondsTo: #methodReference) ifTrue: [ + self triggerEvent: #browseMethod with: entry methodReference]]. + model + when: #entryClicked + evaluate: [:entry | (entry respondsTo: #senderMethodReference) ifTrue: [ + self triggerEvent: #highlightSend withArguments: {entry senderMethodReference . entry senderPC}]]. + ^ aBuilder build: (model getSpec + frame: (0@0 corner: 1@1); + yourself) \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/example..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/example..st new file mode 100644 index 00000000..280381a4 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/example..st @@ -0,0 +1,8 @@ +toolbuilder +example: anExample + + super example: anExample. + anExample currentCallgraph + ifNil: ["try again" (self future: 500 "ms") example: anExample] + ifNotNil: ["done with temporal recursion" model callgraph: anExample currentCallgraph] + \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/highlightMethod..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/highlightMethod..st new file mode 100644 index 00000000..248afd23 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/highlightMethod..st @@ -0,0 +1,7 @@ +toolbuilder +highlightMethod: aMethodReference + + self callgraph + detect: [:each | each class == BPCallgraphEntryEnter and: [each getClass == aMethodReference actualClass] and: [each getSelector == aMethodReference selector]] + ifFound: [:entry | model selectEntry: entry] + ifNone: [UIManager default inform: 'Method not found'] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/highlightTraceValue.id..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/highlightTraceValue.id..st new file mode 100644 index 00000000..f68c2b38 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/highlightTraceValue.id..st @@ -0,0 +1,7 @@ +toolbuilder +highlightTraceValue: aBPTraceValue id: aNumber + + self callgraph babylonianEntries detect: [:each | + ((each respondsTo: #traceValue) and: [each traceValue == aBPTraceValue])] + ifFound: [:entry | model selectEntry: entry]. + \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/initialize.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/initialize.st new file mode 100644 index 00000000..dbbbbaa9 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/initialize.st @@ -0,0 +1,5 @@ +as yet unclassified +initialize + + super initialize. + model := BPCallgraphModel new. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/methodProperties.json new file mode 100644 index 00000000..d2e62736 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/methodProperties.json @@ -0,0 +1,9 @@ +{ + "class" : { + }, + "instance" : { + "buildWith:" : "pre 3/11/2021 17:35", + "example:" : "pre 3/11/2021 17:50", + "highlightMethod:" : "cmfcmf 11/2/2020 14:27", + "highlightTraceValue:id:" : "cmfcmf 11/9/2020 15:33", + "initialize" : "pre 3/11/2021 17:35" } } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/properties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/properties.json new file mode 100644 index 00000000..9bd1eda5 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-UI-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "model" ], + "name" : "BPBrowserSidebarVisualizationCallgraph", + "pools" : [ + ], + "super" : "BPBrowserSidebarVisualization", + "type" : "normal" } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/README.md b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomBackgroundColor..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomBackgroundColor..st new file mode 100644 index 00000000..b7eb289c --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomBackgroundColor..st @@ -0,0 +1,4 @@ +priv toolbuilder (do not overwrite) +bottomBackgroundColor: aNumber + + ^ self bottomBackgroundColorFor: (self bottomEntries at: aNumber) \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomBackgroundColorFor..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomBackgroundColorFor..st new file mode 100644 index 00000000..3659e22f --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomBackgroundColorFor..st @@ -0,0 +1,4 @@ +list bottom +bottomBackgroundColorFor: entry + + ^ nil \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomCanSelect..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomCanSelect..st new file mode 100644 index 00000000..9f76d4d6 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomCanSelect..st @@ -0,0 +1,4 @@ +list bottom +bottomCanSelect: entry + + ^ true \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomDoubleClick.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomDoubleClick.st new file mode 100644 index 00000000..f5c21324 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomDoubleClick.st @@ -0,0 +1,4 @@ +priv toolbuilder (do not overwrite) +bottomDoubleClick + + self bottomDoubleClickFor: self selectedBottomEntry \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomDoubleClickFor..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomDoubleClickFor..st new file mode 100644 index 00000000..51e2ecb6 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomDoubleClickFor..st @@ -0,0 +1,2 @@ +list bottom +bottomDoubleClickFor: entry \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomEntries.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomEntries.st new file mode 100644 index 00000000..24669db7 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomEntries.st @@ -0,0 +1,5 @@ +list bottom +bottomEntries + + + self subclassResponsibility \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomEntryByIndex..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomEntryByIndex..st new file mode 100644 index 00000000..609fec60 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomEntryByIndex..st @@ -0,0 +1,4 @@ +list bottom +bottomEntryByIndex: aNumber + + ^ self bottomEntries at: aNumber ifAbsent: [nil] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomIcon..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomIcon..st new file mode 100644 index 00000000..2f5c77b0 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomIcon..st @@ -0,0 +1,4 @@ +priv toolbuilder (do not overwrite) +bottomIcon: aNumber + + ^ (self bottomIconFor: (self bottomEntries at: aNumber)) ifNil: [ToolIcons blank] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomIconColumnFor..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomIconColumnFor..st new file mode 100644 index 00000000..7215c7c2 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomIconColumnFor..st @@ -0,0 +1,4 @@ +list bottom +bottomIconColumnFor: entry + + ^ 1 \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomIconFor..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomIconFor..st new file mode 100644 index 00000000..b220b88f --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomIconFor..st @@ -0,0 +1,4 @@ +list bottom +bottomIconFor: entry + + ^ nil \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomIconRow.column..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomIconRow.column..st new file mode 100644 index 00000000..65d4fc16 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomIconRow.column..st @@ -0,0 +1,9 @@ +priv toolbuilder (do not overwrite) +bottomIconRow: row column: column + + | entry | + entry := self bottomEntries at: row. + + ^ column == (self bottomIconColumnFor: entry) + ifTrue: [(self bottomIconFor: entry) ifNil: [ToolIcons blank]] + ifFalse: [ToolIcons blank] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomIndex..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomIndex..st new file mode 100644 index 00000000..a12165bb --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomIndex..st @@ -0,0 +1,6 @@ +priv toolbuilder (do not overwrite) +bottomIndex: aNumber + + (aNumber == 0 or: [self bottomCanSelect: (self bottomEntries at: aNumber)]) ifTrue: [ + bottomIndex := aNumber. + self changed: #bottomIndex] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomIndex.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomIndex.st new file mode 100644 index 00000000..2ea20e18 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomIndex.st @@ -0,0 +1,4 @@ +priv toolbuilder (do not overwrite) +bottomIndex + + ^ bottomIndex \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomKey.pressedFor..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomKey.pressedFor..st new file mode 100644 index 00000000..bde99429 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomKey.pressedFor..st @@ -0,0 +1,2 @@ +list bottom +bottomKey: aChar pressedFor: entry \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomKeyPress..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomKeyPress..st new file mode 100644 index 00000000..03ee66ef --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomKeyPress..st @@ -0,0 +1,4 @@ +priv toolbuilder (do not overwrite) +bottomKeyPress: aChar + + self bottomKey: aChar pressedFor: self selectedBottomEntry \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomLabelFor..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomLabelFor..st new file mode 100644 index 00000000..0a44e1b1 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomLabelFor..st @@ -0,0 +1,4 @@ +list bottom +bottomLabelFor: entry + + ^ entry \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomLabels.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomLabels.st new file mode 100644 index 00000000..ef7a55a4 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomLabels.st @@ -0,0 +1,21 @@ +priv toolbuilder (do not overwrite) +bottomLabels + + | columns | + columns := OrderedCollection new. + + self bottomEntries withIndexDo: [:each :rowIdx | + | label attributes | + (each isText not and: [each isString not]) + ifTrue: [ + label := (self bottomLabelFor: each) asStringOrText asText. + attributes := self bottomTextAttributesFor: each row: rowIdx. + attributes ifNotEmpty: [label addAllAttributes: attributes]] + ifFalse: [label := each]. + + columns do: [:column | column addLast: '']. + (label splitBy: String tab) withIndexDo: [:part :columnIdx | | column | + column := columns at: columnIdx ifAbsentPut: [OrderedCollection new: rowIdx withAll: '']. + column at: rowIdx put: part]]. + + ^ columns \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomMenu..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomMenu..st new file mode 100644 index 00000000..7fe0ebab --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomMenu..st @@ -0,0 +1,8 @@ +list bottom +bottomMenu: shiftKeyState + + | entry menu | + entry := self bottomEntryByIndex: self bottomIndex. + menu := MenuMorph new. + self bottomMenu: menu for: entry. + ^ menu hasItems ifTrue: [menu] ifFalse: [nil] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomMenu.for..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomMenu.for..st new file mode 100644 index 00000000..c09902dc --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomMenu.for..st @@ -0,0 +1,2 @@ +list bottom +bottomMenu: aMenuMorph for: entry \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomTextAttributesFor..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomTextAttributesFor..st new file mode 100644 index 00000000..2442bae1 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomTextAttributesFor..st @@ -0,0 +1,4 @@ +list bottom +bottomTextAttributesFor: entry + + ^ {} \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomTextAttributesFor.row..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomTextAttributesFor.row..st new file mode 100644 index 00000000..8fea3ba0 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomTextAttributesFor.row..st @@ -0,0 +1,4 @@ +list bottom +bottomTextAttributesFor: entry row: aNumber + + ^ self bottomTextAttributesFor: entry \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/buildWith..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/buildWith..st new file mode 100644 index 00000000..da64cb1c --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/buildWith..st @@ -0,0 +1,41 @@ +toolbuilder +buildWith: aBuilder + + ^ aBuilder build: (aBuilder pluggablePanelSpec new + frame: (0@0 corner: 1@1); + wantsResizeHandles: true; + children: { + (aBuilder pluggableListSpec new + frame: (0@0 corner: 1@0.3); + autoDeselect: false; + clearFilterAutomatically: false; + filterableList: true; + model: self; + list: #topLabels; + icon: #topIcon:; + doubleClick: #topDoubleClick; + getIndex: #topIndex; + setIndex: #topIndex:; + keyPress: #topKeyPress:; + menu: #topMenu:; + yourself). + (aBuilder bpPluggableMultiColumnListSpec new + frame: (0@0.3 corner: 1@1); + autoDeselect: false; + clearFilterAutomatically: false; + filterableList: true; + model: self; + "multi column list options" + itemPaddings: {0@0 corner: 5@0}; + columnResizings: #(shrinkWrap); + + list: #bottomLabels; + icon: #bottomIconRow:column:; + doubleClick: #bottomDoubleClick; + getIndex: #bottomIndex; + setIndex: #bottomIndex:; + keyPress: #bottomKeyPress:; + menu: #bottomMenu:; + backgroundColor: #bottomBackgroundColor:; + yourself)}; + yourself) \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/example..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/example..st new file mode 100644 index 00000000..55a57522 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/example..st @@ -0,0 +1,12 @@ +accessing +example: anExample + + anExample currentCallgraph + ifNil: [(self future: 100 "ms") example: anExample] + ifNotNil: ["done with temporal recursion" + super example: anExample. + self + resetCache; + changed: #topLabels; + changed: #bottomLabels.] + \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/highlightMethod..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/highlightMethod..st new file mode 100644 index 00000000..044437b4 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/highlightMethod..st @@ -0,0 +1,4 @@ +actions +highlightMethod: aMethodReference + + \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/highlightTraceValue.id..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/highlightTraceValue.id..st new file mode 100644 index 00000000..248a5b54 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/highlightTraceValue.id..st @@ -0,0 +1,4 @@ +actions +highlightTraceValue: aBPTraceValue id: aNumber + + \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/initialize.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/initialize.st new file mode 100644 index 00000000..e9abcde8 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/initialize.st @@ -0,0 +1,9 @@ +initialize-release +initialize + + + + super initialize. + + topIndex := bottomIndex := 0. + cache := Dictionary new \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/resetCache.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/resetCache.st new file mode 100644 index 00000000..6e8d4af6 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/resetCache.st @@ -0,0 +1,4 @@ +as yet unclassified +resetCache + + cache := Dictionary new. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/selectedBottomEntry.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/selectedBottomEntry.st new file mode 100644 index 00000000..a01cdd2d --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/selectedBottomEntry.st @@ -0,0 +1,4 @@ +list bottom +selectedBottomEntry + + ^ self bottomEntries at: self bottomIndex ifAbsent: [nil] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/selectedTopEntry.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/selectedTopEntry.st new file mode 100644 index 00000000..6c745f7e --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/selectedTopEntry.st @@ -0,0 +1,4 @@ +list top +selectedTopEntry + + ^ self topEntries at: self topIndex ifAbsent: [nil] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/sortBottomEntries..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/sortBottomEntries..st new file mode 100644 index 00000000..6c28230e --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/sortBottomEntries..st @@ -0,0 +1,5 @@ +actions +sortBottomEntries: aBlock + + self bottomEntries sort: aBlock. + self changed: #bottomLabels \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/sortTopEntries..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/sortTopEntries..st new file mode 100644 index 00000000..94e7bde0 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/sortTopEntries..st @@ -0,0 +1,5 @@ +actions +sortTopEntries: aBlock + + self topEntries sort: aBlock. + self changed: #topLabels \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topBackgroundColor..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topBackgroundColor..st new file mode 100644 index 00000000..d92cd835 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topBackgroundColor..st @@ -0,0 +1,4 @@ +priv toolbuilder (do not overwrite) +topBackgroundColor: aNumber + + ^ self topBackgroundColorFor: (self topEntries at: aNumber) \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topBackgroundColorFor..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topBackgroundColorFor..st new file mode 100644 index 00000000..85739f01 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topBackgroundColorFor..st @@ -0,0 +1,4 @@ +list top +topBackgroundColorFor: entry + + ^ nil \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topCanSelect..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topCanSelect..st new file mode 100644 index 00000000..ecdf3df2 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topCanSelect..st @@ -0,0 +1,4 @@ +list top +topCanSelect: entry + + ^ true \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topDoubleClick.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topDoubleClick.st new file mode 100644 index 00000000..6c85719e --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topDoubleClick.st @@ -0,0 +1,4 @@ +priv toolbuilder (do not overwrite) +topDoubleClick + + self topDoubleClickFor: self selectedTopEntry \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topDoubleClickFor..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topDoubleClickFor..st new file mode 100644 index 00000000..f81369e1 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topDoubleClickFor..st @@ -0,0 +1,2 @@ +list top +topDoubleClickFor: entry \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topEntries.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topEntries.st new file mode 100644 index 00000000..0fe81674 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topEntries.st @@ -0,0 +1,4 @@ +list top +topEntries + + self subclassResponsibility \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topEntryByIndex..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topEntryByIndex..st new file mode 100644 index 00000000..edf7404e --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topEntryByIndex..st @@ -0,0 +1,4 @@ +list top +topEntryByIndex: aNumber + + ^ self topEntries at: aNumber ifAbsent: [nil] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topIcon..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topIcon..st new file mode 100644 index 00000000..f3e4a2cd --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topIcon..st @@ -0,0 +1,4 @@ +priv toolbuilder (do not overwrite) +topIcon: aNumber + + ^ (self topIconFor: (self topEntries at: aNumber)) ifNil: [ToolIcons blank] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topIconFor..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topIconFor..st new file mode 100644 index 00000000..43bc01ef --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topIconFor..st @@ -0,0 +1,4 @@ +list top +topIconFor: entry + + ^ nil \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topIndex..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topIndex..st new file mode 100644 index 00000000..70fdfe3b --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topIndex..st @@ -0,0 +1,8 @@ +priv toolbuilder (do not overwrite) +topIndex: aNumber + + (aNumber == 0 or: [self topCanSelect: (self topEntries at: aNumber)]) ifTrue: [ + topIndex := aNumber. + self changed: #topIndex. + self changed: #bottomLabels. + self changed: #bottomBackgroundColor:] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topIndex.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topIndex.st new file mode 100644 index 00000000..89113b30 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topIndex.st @@ -0,0 +1,4 @@ +priv toolbuilder (do not overwrite) +topIndex + + ^ topIndex \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topKey.pressedFor..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topKey.pressedFor..st new file mode 100644 index 00000000..f25fb556 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topKey.pressedFor..st @@ -0,0 +1,2 @@ +list top +topKey: aChar pressedFor: entry \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topKeyPress..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topKeyPress..st new file mode 100644 index 00000000..2d078845 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topKeyPress..st @@ -0,0 +1,4 @@ +priv toolbuilder (do not overwrite) +topKeyPress: aChar + + self topKey: aChar pressedFor: self selectedTopEntry \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topLabelFor..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topLabelFor..st new file mode 100644 index 00000000..49024152 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topLabelFor..st @@ -0,0 +1,4 @@ +list top +topLabelFor: entry + + ^ entry \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topLabels.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topLabels.st new file mode 100644 index 00000000..f03b0365 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topLabels.st @@ -0,0 +1,10 @@ +priv toolbuilder (do not overwrite) +topLabels + + ^ self topEntries withIndexCollect: [:each :rowIdx | + | label attributes | + label := (self topLabelFor: each) asStringOrText. + label isString ifTrue: [ + attributes := self topTextAttributesFor: each row: rowIdx. + attributes ifNotEmpty: [label := Text string: label attributes: attributes]]. + label] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topMenu..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topMenu..st new file mode 100644 index 00000000..cf33a784 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topMenu..st @@ -0,0 +1,8 @@ +list top +topMenu: shiftKeyState + + | entry menu | + entry := self topEntryByIndex: self topIndex. + menu := MenuMorph new. + self topMenu: menu for: entry. + ^ menu hasItems ifTrue: [menu] ifFalse: [nil] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topMenu.for..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topMenu.for..st new file mode 100644 index 00000000..6d3fc752 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topMenu.for..st @@ -0,0 +1,2 @@ +list top +topMenu: aMenuMorph for: entry \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topTextAttributesFor..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topTextAttributesFor..st new file mode 100644 index 00000000..1cdccf4b --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topTextAttributesFor..st @@ -0,0 +1,4 @@ +list top +topTextAttributesFor: entry + + ^ {} \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topTextAttributesFor.row..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topTextAttributesFor.row..st new file mode 100644 index 00000000..8dbeb7cf --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topTextAttributesFor.row..st @@ -0,0 +1,4 @@ +list top +topTextAttributesFor: entry row: aNumber + + ^ self topTextAttributesFor: entry \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/methodProperties.json new file mode 100644 index 00000000..3e8ccade --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/methodProperties.json @@ -0,0 +1,54 @@ +{ + "class" : { + }, + "instance" : { + "bottomBackgroundColor:" : "cmfcmf 11/6/2020 15:48", + "bottomBackgroundColorFor:" : "cmfcmf 11/6/2020 15:48", + "bottomCanSelect:" : "cmfcmf 11/4/2020 14:59", + "bottomDoubleClick" : "cmfcmf 11/4/2020 13:08", + "bottomDoubleClickFor:" : "cmfcmf 11/4/2020 12:50", + "bottomEntries" : "cmfcmf 11/4/2020 12:27", + "bottomEntryByIndex:" : "cmfcmf 11/4/2020 12:30", + "bottomIcon:" : "cmfcmf 11/5/2020 14:02", + "bottomIconColumnFor:" : "cmfcmf 11/4/2020 16:21", + "bottomIconFor:" : "cmfcmf 11/4/2020 12:38", + "bottomIconRow:column:" : "cmfcmf 11/4/2020 16:21", + "bottomIndex" : "cmfcmf 11/4/2020 12:24", + "bottomIndex:" : "cmfcmf 11/4/2020 15:01", + "bottomKey:pressedFor:" : "cmfcmf 11/4/2020 13:58", + "bottomKeyPress:" : "cmfcmf 11/4/2020 13:58", + "bottomLabelFor:" : "cmfcmf 11/4/2020 12:39", + "bottomLabels" : "cmfcmf 11/5/2020 13:33", + "bottomMenu:" : "cmfcmf 11/4/2020 12:43", + "bottomMenu:for:" : "cmfcmf 11/4/2020 12:42", + "bottomTextAttributesFor:" : "cmfcmf 11/4/2020 12:38", + "bottomTextAttributesFor:row:" : "cmfcmf 11/5/2020 13:18", + "buildWith:" : "cmfcmf 11/6/2020 15:47", + "example:" : "pre 3/11/2021 17:56", + "highlightMethod:" : "cmfcmf 11/4/2020 12:49", + "highlightTraceValue:id:" : "cmfcmf 11/5/2020 13:01", + "initialize" : "cmfcmf 11/4/2020 12:48", + "resetCache" : "pre 3/11/2021 17:54", + "selectedBottomEntry" : "cmfcmf 11/4/2020 13:08", + "selectedTopEntry" : "cmfcmf 11/4/2020 13:08", + "sortBottomEntries:" : "cmfcmf 11/4/2020 12:59", + "sortTopEntries:" : "cmfcmf 11/4/2020 12:59", + "topBackgroundColor:" : "cmfcmf 11/6/2020 15:48", + "topBackgroundColorFor:" : "cmfcmf 11/6/2020 15:48", + "topCanSelect:" : "cmfcmf 11/4/2020 14:59", + "topDoubleClick" : "cmfcmf 11/4/2020 13:09", + "topDoubleClickFor:" : "cmfcmf 11/4/2020 12:50", + "topEntries" : "cmfcmf 11/4/2020 12:27", + "topEntryByIndex:" : "cmfcmf 11/4/2020 12:30", + "topIcon:" : "cmfcmf 11/4/2020 14:05", + "topIconFor:" : "cmfcmf 11/4/2020 12:38", + "topIndex" : "cmfcmf 11/4/2020 12:24", + "topIndex:" : "cmfcmf 1/4/2021 15:03", + "topKey:pressedFor:" : "cmfcmf 11/4/2020 13:58", + "topKeyPress:" : "cmfcmf 11/4/2020 13:58", + "topLabelFor:" : "cmfcmf 11/4/2020 12:40", + "topLabels" : "cmfcmf 11/5/2020 13:19", + "topMenu:" : "cmfcmf 11/4/2020 12:43", + "topMenu:for:" : "cmfcmf 11/4/2020 12:42", + "topTextAttributesFor:" : "cmfcmf 11/4/2020 12:38", + "topTextAttributesFor:row:" : "cmfcmf 11/5/2020 13:18" } } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/properties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/properties.json new file mode 100644 index 00000000..b1c29440 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/properties.json @@ -0,0 +1,16 @@ +{ + "category" : "Babylonian-UI-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "topIndex", + "bottomIndex", + "cache" ], + "name" : "BPBrowserSidebarVisualizationEntriesWithDetails", + "pools" : [ + ], + "super" : "BPBrowserSidebarVisualization", + "type" : "normal" } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/README.md b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomBackgroundColor..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomBackgroundColor..st new file mode 100644 index 00000000..099c4765 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomBackgroundColor..st @@ -0,0 +1,7 @@ +list bottom +bottomBackgroundColor: aNumber + + "(super bottomBackgroundColor: aNumber) ifNotNil: [:color | ^ color]." + + ^ self selectedTopEntry ifNil: [nil] ifNotNil: [:topEntry | + aNumber <= (cache at: topEntry) second ifTrue: [Color veryVeryLightGray lighter] ifFalse: [nil]] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomBackgroundColorFor..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomBackgroundColorFor..st new file mode 100644 index 00000000..b976172d --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomBackgroundColorFor..st @@ -0,0 +1,5 @@ +list bottom +bottomBackgroundColorFor: entry + + + ^ (entry respondsTo: #visualizationBackgroundColor) ifTrue: [entry visualizationBackgroundColor] ifFalse: [nil] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomDoubleClickFor..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomDoubleClickFor..st new file mode 100644 index 00000000..0ec26490 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomDoubleClickFor..st @@ -0,0 +1,4 @@ +list bottom +bottomDoubleClickFor: entry + + (entry respondsTo: #methodReference) ifTrue: [self browseMethod: entry methodReference] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomEntries.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomEntries.st new file mode 100644 index 00000000..bf452055 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomEntries.st @@ -0,0 +1,5 @@ +list bottom +bottomEntries + + ^ self selectedTopEntry ifNil: [{}] ifNotNil: [:topEntry | + (cache at: topEntry ifAbsentPut: [self calculateBottomContent]) first] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomIconColumnFor..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomIconColumnFor..st new file mode 100644 index 00000000..159db2a4 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomIconColumnFor..st @@ -0,0 +1,4 @@ +list bottom +bottomIconColumnFor: entry + + ^ (entry isKindOf: BPCallgraphEntry) ifTrue: [2] ifFalse: [1] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomIconFor..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomIconFor..st new file mode 100644 index 00000000..fb5f02d4 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomIconFor..st @@ -0,0 +1,4 @@ +list bottom +bottomIconFor: entry + + ^ (entry respondsTo: #icon) ifTrue: [entry icon] ifFalse: [nil] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomKey.pressedFor..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomKey.pressedFor..st new file mode 100644 index 00000000..228f8e20 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomKey.pressedFor..st @@ -0,0 +1,5 @@ +list bottom +bottomKey: aChar pressedFor: entry + + (aChar == $b and: [entry respondsTo: #methodReference]) ifTrue: [self browseMethod: entry methodReference]. + (aChar == $B and: [entry respondsTo: #doBrowse]) ifTrue: [entry doBrowse] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomLabelFor..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomLabelFor..st new file mode 100644 index 00000000..0608a9b5 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomLabelFor..st @@ -0,0 +1,4 @@ +list bottom +bottomLabelFor: entry + + ^ entry visualizationLabel \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomMenu.for..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomMenu.for..st new file mode 100644 index 00000000..57c627a4 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomMenu.for..st @@ -0,0 +1,21 @@ +list bottom +bottomMenu: aMenuMorph for: entry + + entry class == BPCallgraphEntryEnter ifTrue: [ + aMenuMorph + add: 'find common ancestor of all invocations of this method' + action: [| allInvocations ancestor paths | + allInvocations := self callgraph allInvocationsOf: entry. + ancestor := self callgraph commonAncestorOf: allInvocations ignoringInvocationCounts: true. + ancestor ifNil: [^ UIManager default inform: 'No common ancestor found']. + paths := self callgraph pathsBetween: ancestor andChildren: allInvocations. + paths explore]]. + + (entry respondsTo: #methodReference) ifTrue: [ + aMenuMorph + add: 'browse' + action: [self browseMethod: entry methodReference]]. + ((entry isKindOf: BPCallgraphEntry) or: [entry isKindOf: BPCallgraphPathPart]) ifTrue: [ + aMenuMorph + add: 'select' + action: [self addEntryToGlobalSelection: entry]] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomTextAttributesFor..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomTextAttributesFor..st new file mode 100644 index 00000000..ee9fa16c --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomTextAttributesFor..st @@ -0,0 +1,4 @@ +list bottom +bottomTextAttributesFor: entry + + ^ entry textColor ifNotNil: [:color | {TextColor color: color}] ifNil: [{}] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomTextAttributesFor.row..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomTextAttributesFor.row..st new file mode 100644 index 00000000..b1047332 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomTextAttributesFor.row..st @@ -0,0 +1,4 @@ +list bottom +bottomTextAttributesFor: entry row: aNumber + + ^ (self bottomTextAttributesFor: entry), (additionalBottomTextAttributes at: aNumber ifAbsent: [{}]) \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/calculateBottomContent.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/calculateBottomContent.st new file mode 100644 index 00000000..c6c8a905 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/calculateBottomContent.st @@ -0,0 +1,52 @@ +bottom content +calculateBottomContent + + | entries entriesForAncestorSearch paths list ancestor ancestorHighlightAttributes bottomFirstPartLength | + additionalBottomTextAttributes := Dictionary new. + + ancestorHighlightAttributes := {TextColor color: (Color fromString: '#7FB40C') . "TextEmphasis bold"}. + list := OrderedCollection new. + entries := self selectMatchingEntriesFromCallgraph: self selectedTopEntry. + entriesForAncestorSearch := self preprocessBottomEntriesForAncestorSearch: entries. + + "common ancestor that ignores invocation counts" + ancestor := self callgraph commonAncestorOf: entriesForAncestorSearch ignoringInvocationCounts: true. + list add: (Text string: 'Common ancestor (context-insensitive)' attributes: {TextEmphasis bold}). + ancestor + ifNotNil: [ + list add: ancestor. + additionalBottomTextAttributes at: list size put: ancestorHighlightAttributes] + ifNil: [list add: '--- not found ---']. + + "unique invocation paths that ignore invocation counts" + paths := (entries collect: [:each | (each pathWithResolvedOutOfStackJumps: self callgraph) collect: #asPathPart]) withoutDuplicates. + paths withIndexDo: [:path :i | + list addLast: ''. + list addLast: (Text string: 'Unique Invocation Path ', i, ' (context-insensitive)' attributes: {TextEmphasis bold}). + path do: [:each | + list add: each. + each = ancestor ifTrue: [additionalBottomTextAttributes at: list size put: ancestorHighlightAttributes]]]. + + bottomFirstPartLength := list size. + + 2 timesRepeat: [list add: '']. + + "common ancestor with invocation counts" + ancestor := self callgraph commonAncestorOf: entriesForAncestorSearch ignoringInvocationCounts: false. + list add: (Text string: 'Common ancestor (context-sensitive)' attributes: {TextEmphasis bold}). + ancestor + ifNotNil: [ + list add: ancestor. + additionalBottomTextAttributes at: list size put: ancestorHighlightAttributes] + ifNil: [list add: '--- not found ---']. + + "all invocations with invocation counts" + entries withIndexDo: [:entry :i | + list addLast: ''. + list addLast: (Text string: 'Invocation ', i, ' (context-sensitive)' attribute: TextEmphasis bold). + (entry pathWithResolvedOutOfStackJumps: self callgraph) do: [:each | + list add: each. + self flag: #todo. "What if the ancestor is not a BPCallgraphEntryEnter?" + (ancestor notNil and: [each class == BPCallgraphEntryEnter] and: [each equalsClassSelectorBlockIdxInvocation: ancestor]) + ifTrue: [additionalBottomTextAttributes at: list size put: ancestorHighlightAttributes]]]. + ^ {list . bottomFirstPartLength} \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/highlightMethod..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/highlightMethod..st new file mode 100644 index 00000000..93d21773 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/highlightMethod..st @@ -0,0 +1,6 @@ +actions +highlightMethod: aMethodReference + + self topEntries + withIndexDo: [:each :i | (each getClass == aMethodReference actualClass + and: [each getSelector == aMethodReference selector]) ifTrue: [^ self topIndex: i]] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/preprocessBottomEntriesForAncestorSearch..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/preprocessBottomEntriesForAncestorSearch..st new file mode 100644 index 00000000..101e2c4e --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/preprocessBottomEntriesForAncestorSearch..st @@ -0,0 +1,4 @@ +bottom content +preprocessBottomEntriesForAncestorSearch: entries + + ^ entries \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/selectMatchingEntriesFromCallgraph..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/selectMatchingEntriesFromCallgraph..st new file mode 100644 index 00000000..dbc277d7 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/selectMatchingEntriesFromCallgraph..st @@ -0,0 +1,5 @@ +bottom content +selectMatchingEntriesFromCallgraph: topEntry + + + ^ self callgraph select: [:each | each class == BPCallgraphEntryEnter and: [topEntry equalsClassSelectorBlockIdx: each]] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/topDoubleClickFor..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/topDoubleClickFor..st new file mode 100644 index 00000000..5b57cc68 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/topDoubleClickFor..st @@ -0,0 +1,5 @@ +list top +topDoubleClickFor: entry + + + self browseMethod: entry methodReference \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/topEntries.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/topEntries.st new file mode 100644 index 00000000..69055494 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/topEntries.st @@ -0,0 +1,5 @@ +list top +topEntries + + + ^ cache at: #topEntries ifAbsentPut: [((self callgraph select: [:each | each class == BPCallgraphEntryEnter]) collect: #asPathPart) withoutDuplicates] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/topKey.pressedFor..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/topKey.pressedFor..st new file mode 100644 index 00000000..e569d40f --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/topKey.pressedFor..st @@ -0,0 +1,5 @@ +list top +topKey: aChar pressedFor: entry + + aChar == $b ifTrue: [self browseMethod: entry methodReference]. + aChar == $B ifTrue: [entry doBrowse] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/topLabelFor..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/topLabelFor..st new file mode 100644 index 00000000..49024152 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/topLabelFor..st @@ -0,0 +1,4 @@ +list top +topLabelFor: entry + + ^ entry \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/topMenu.for..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/topMenu.for..st new file mode 100644 index 00000000..6536f0fe --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/topMenu.for..st @@ -0,0 +1,19 @@ +list top +topMenu: menu for: entry + + menu + add: 'browse' action: [self browseMethod: entry methodReference]. + + ((entry isKindOf: BPCallgraphEntry) or: [entry isKindOf: BPCallgraphPathPart]) ifTrue: [ + menu + add: 'select' + action: [self addEntryToGlobalSelection: entry]]. + + menu + addLine; + add: 'sort by class, selector and block' + action: [self sortTopEntries: [:each | each getClass asString] ascending, #getSelector ascending, #getBlockIdx ascending]; + add: 'sort by selector and block' + action: [self sortTopEntries: #getSelector ascending, #getBlockIdx ascending]; + add: 'sort by block' + action: [self sortTopEntries: #getBlockIdx ascending]. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/topTextAttributesFor..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/topTextAttributesFor..st new file mode 100644 index 00000000..0605ec26 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/topTextAttributesFor..st @@ -0,0 +1,4 @@ +list top +topTextAttributesFor: entry + + ^ entry textColor ifNil: [{}] ifNotNil: [:color | {TextColor color: color}] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/methodProperties.json new file mode 100644 index 00000000..32058cd4 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/methodProperties.json @@ -0,0 +1,25 @@ +{ + "class" : { + }, + "instance" : { + "bottomBackgroundColor:" : "cmfcmf 11/6/2020 16:02", + "bottomBackgroundColorFor:" : "cmfcmf 11/6/2020 15:50", + "bottomDoubleClickFor:" : "cmfcmf 11/4/2020 13:40", + "bottomEntries" : "cmfcmf 11/6/2020 15:54", + "bottomIconColumnFor:" : "cmfcmf 11/4/2020 16:22", + "bottomIconFor:" : "cmfcmf 11/4/2020 15:32", + "bottomKey:pressedFor:" : "cmfcmf 11/4/2020 14:00", + "bottomLabelFor:" : "cmfcmf 11/5/2020 13:17", + "bottomMenu:for:" : "cmfcmf 11/10/2020 10:52", + "bottomTextAttributesFor:" : "cmfcmf 11/4/2020 13:39", + "bottomTextAttributesFor:row:" : "cmfcmf 11/5/2020 13:21", + "calculateBottomContent" : "cmfcmf 1/4/2021 13:25", + "highlightMethod:" : "cmfcmf 11/4/2020 12:50", + "preprocessBottomEntriesForAncestorSearch:" : "cmfcmf 11/5/2020 12:37", + "selectMatchingEntriesFromCallgraph:" : "cmfcmf 11/5/2020 12:38", + "topDoubleClickFor:" : "cmfcmf 11/4/2020 12:52", + "topEntries" : "cmfcmf 11/4/2020 16:11", + "topKey:pressedFor:" : "cmfcmf 11/4/2020 14:01", + "topLabelFor:" : "cmfcmf 11/4/2020 16:10", + "topMenu:for:" : "cmfcmf 11/10/2020 10:09", + "topTextAttributesFor:" : "cmfcmf 11/4/2020 13:24" } } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/properties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/properties.json new file mode 100644 index 00000000..0086a87f --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-UI-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "additionalBottomTextAttributes" ], + "name" : "BPBrowserSidebarVisualizationExecutedMethods", + "pools" : [ + ], + "super" : "BPBrowserSidebarVisualizationEntriesWithDetails", + "type" : "normal" } diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/README.md b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/class/compilerClass.st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/class/compilerClass.st new file mode 100644 index 00000000..3e74d0c6 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/class/compilerClass.st @@ -0,0 +1,4 @@ +compiling +compilerClass + + ^ BPCompiler \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/class/initialize.st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/class/initialize.st new file mode 100644 index 00000000..0917737c --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/class/initialize.st @@ -0,0 +1,13 @@ +class initialization +initialize + + "BPBrowser initialize" + + "rare but correct for browsers" + super initialize. + self environment at: #TheWorldMenu ifPresent: [:menu | + (menu respondsTo: #registerOpenCommand:) ifTrue: [ + menu unregisterOpenCommand: 'Babylonian Call Graph Browser'. + menu registerOpenCommand: {'Babylonian Call Graph Browser'. {self. #open}}]]. + + Smalltalk addToStartUpList: self. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/class/startUp.st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/class/startUp.st new file mode 100644 index 00000000..0ccfa1fb --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/class/startUp.st @@ -0,0 +1,5 @@ +class initialization +startUp + "To ensure that the shortcut will remain working" + + SmalltalkEditor cmdActions at: $u asciiValue + 1 put: #probeIt:. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/buildDefaultBrowserWith..st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/buildDefaultBrowserWith..st new file mode 100644 index 00000000..4655926a --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/buildDefaultBrowserWith..st @@ -0,0 +1,6 @@ +callgraph +buildDefaultBrowserWith: aBuilder + + ^ (super buildDefaultBrowserWith: aBuilder) + extent: 900@500; + yourself \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/buildWindowWith.specs..st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/buildWindowWith.specs..st new file mode 100644 index 00000000..9f4577f4 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/buildWindowWith.specs..st @@ -0,0 +1,12 @@ +callgraph +buildWindowWith: aBuilder specs: aCollection + + | specs | + sidebar := BPBrowserSidebar new + when: #browseMethod send: #browseReference: to: self; + when: #highlightSend send: #highlightSendIn:at: to: self; + yourself. + specs := self compressWidthOfSpecs: aCollection from: 1 to: 0.7. + ^ super buildWindowWith: aBuilder specs: { + ((specs last key rightFraction)@0 corner: 1@1) -> [sidebar buildWith: aBuilder] + }, specs \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphCategoryMenu..st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphCategoryMenu..st new file mode 100644 index 00000000..bea60ed8 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphCategoryMenu..st @@ -0,0 +1,12 @@ +callgraph +callgraphCategoryMenu: aMenu + + + self flag: #todo. + ^ aMenu addList: #( + ('instrument for callgraphs' callgraphInstrumentClassCategory) + ('enable callgraph tracing' callgraphEnableTracingForClassCategory) + ('disable callgraph tracing' callgraphDisableTracingForClassCategory) + ('uninstrument for callgraphs' callgraphUninstrumentClassCategory) + -); + yourself \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphClassMenu..st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphClassMenu..st new file mode 100644 index 00000000..624f305e --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphClassMenu..st @@ -0,0 +1,12 @@ +callgraph context menus +callgraphClassMenu: aMenu + + + + ^ aMenu addList: #( + ('instrument for callgraphs' callgraphInstrumentClass) + ('enable callgraph tracing' callgraphEnableTracingForClass) + ('disable callgraph tracing' callgraphDisableTracingForClass) + ('uninstrument for callgraphs' callgraphUninstrumentClass) + -); + yourself \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphDisableTracingForClass.st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphDisableTracingForClass.st new file mode 100644 index 00000000..ce729aab --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphDisableTracingForClass.st @@ -0,0 +1,4 @@ +callgraph context menu actions +callgraphDisableTracingForClass + + BPByteCodeRewriter disableTracingForClass: self selectedClassOrMetaClass \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphDisableTracingForClassCategory.st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphDisableTracingForClassCategory.st new file mode 100644 index 00000000..aff8d606 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphDisableTracingForClassCategory.st @@ -0,0 +1,4 @@ +callgraph context menu actions +callgraphDisableTracingForClassCategory + + BPByteCodeRewriter disableTracingForClassCategory: self selectedSystemCategory \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphDisableTracingForMessage.st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphDisableTracingForMessage.st new file mode 100644 index 00000000..923acab5 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphDisableTracingForMessage.st @@ -0,0 +1,4 @@ +callgraph context menu actions +callgraphDisableTracingForMessage + + BPByteCodeRewriter disableTracingForClass: self selectedClassOrMetaClass selector: self selectedMessageName \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphEnableTracingForClass.st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphEnableTracingForClass.st new file mode 100644 index 00000000..04da5bb5 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphEnableTracingForClass.st @@ -0,0 +1,4 @@ +callgraph context menu actions +callgraphEnableTracingForClass + + BPByteCodeRewriter enableTracingForClass: self selectedClassOrMetaClass \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphEnableTracingForClassCategory.st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphEnableTracingForClassCategory.st new file mode 100644 index 00000000..76e50339 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphEnableTracingForClassCategory.st @@ -0,0 +1,4 @@ +callgraph context menu actions +callgraphEnableTracingForClassCategory + + BPByteCodeRewriter enableTracingForClassCategory: self selectedSystemCategory \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphEnableTracingForMessage.st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphEnableTracingForMessage.st new file mode 100644 index 00000000..7267950a --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphEnableTracingForMessage.st @@ -0,0 +1,4 @@ +callgraph context menu actions +callgraphEnableTracingForMessage + + BPByteCodeRewriter enableTracingForClass: self selectedClassOrMetaClass selector: self selectedMessageName \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphInstrumentClass.st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphInstrumentClass.st new file mode 100644 index 00000000..1217be60 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphInstrumentClass.st @@ -0,0 +1,4 @@ +callgraph context menu actions +callgraphInstrumentClass + + BPByteCodeRewriter instrumentClass: self selectedClassOrMetaClass \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphInstrumentClassCategory.st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphInstrumentClassCategory.st new file mode 100644 index 00000000..f9ecf32e --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphInstrumentClassCategory.st @@ -0,0 +1,4 @@ +callgraph context menu actions +callgraphInstrumentClassCategory + + BPByteCodeRewriter instrumentClassCategory: self selectedSystemCategory \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphInstrumentMessage.st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphInstrumentMessage.st new file mode 100644 index 00000000..cef72e14 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphInstrumentMessage.st @@ -0,0 +1,4 @@ +callgraph context menu actions +callgraphInstrumentMessage + + BPByteCodeRewriter instrumentClass: self selectedClassOrMetaClass selector: self selectedMessageName \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphMessageMenu..st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphMessageMenu..st new file mode 100644 index 00000000..246492e9 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphMessageMenu..st @@ -0,0 +1,14 @@ +callgraph context menus +callgraphMessageMenu: aMenu + + + + ^ aMenu addList: #( + ('show in sidebar' callgraphShowMessage) + - + ('instrument for callgraphs' callgraphInstrumentMessage) + ('enable callgraph tracing' callgraphEnableTracingForMessage) + ('disable callgraph tracing' callgraphDisableTracingForMessage) + ('uninstrument for callgraphs' callgraphUninstrumentMessage) + -); + yourself \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphShowMessage.st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphShowMessage.st new file mode 100644 index 00000000..f1035626 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphShowMessage.st @@ -0,0 +1,4 @@ +callgraph context menu actions +callgraphShowMessage + + self sidebarShowMethod: (MethodReference class: self selectedClassOrMetaClass selector: self selectedMessageName) \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphUninstrumentClass.st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphUninstrumentClass.st new file mode 100644 index 00000000..20055165 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphUninstrumentClass.st @@ -0,0 +1,4 @@ +callgraph context menu actions +callgraphUninstrumentClass + + BPByteCodeRewriter uninstrumentClass: self selectedClassOrMetaClass \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphUninstrumentClassCategory.st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphUninstrumentClassCategory.st new file mode 100644 index 00000000..591700bc --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphUninstrumentClassCategory.st @@ -0,0 +1,4 @@ +callgraph context menu actions +callgraphUninstrumentClassCategory + + BPByteCodeRewriter uninstrumentClassCategory: self selectedSystemCategory \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphUninstrumentMessage.st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphUninstrumentMessage.st new file mode 100644 index 00000000..69d0da86 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphUninstrumentMessage.st @@ -0,0 +1,4 @@ +callgraph context menu actions +callgraphUninstrumentMessage + + BPByteCodeRewriter uninstrumentClass: self selectedClassOrMetaClass selector: self selectedMessageName \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphcodePaneMenu..st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphcodePaneMenu..st new file mode 100644 index 00000000..a168b621 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphcodePaneMenu..st @@ -0,0 +1,9 @@ +callgraph context menus +callgraphcodePaneMenu: aMenu + + + + ^ aMenu addList: #( + ('show in sidebar' callgraphShowMessage) + -); + yourself \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/compressWidthOfSpecs.from.to..st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/compressWidthOfSpecs.from.to..st new file mode 100644 index 00000000..04752b87 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/compressWidthOfSpecs.from.to..st @@ -0,0 +1,10 @@ +callgraph ui +compressWidthOfSpecs: specs from: aFraction to: anotherFraction + true}' with: '1' with: '0.7'> + ^ specs collect: [:assoc || frame offset | + offset := aFraction - anotherFraction. + frame := assoc key isRectangle + ifTrue: [LayoutFrame fractions: assoc key] ifFalse: [assoc key]. + frame rightFraction: frame rightFraction / aFraction * anotherFraction. + frame leftFraction: frame leftFraction / aFraction * anotherFraction. + frame -> assoc value]. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/contentsSelection.st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/contentsSelection.st new file mode 100644 index 00000000..d3dd24f2 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/contentsSelection.st @@ -0,0 +1,14 @@ +as yet unclassified +contentsSelection + + ^ (selectedPC notNil and: [selectedPC first = self methodReference]) + ifTrue: [ | method | + "You want this to work? Then first figure out how to generate a source map for the + styled method, that is based on the instrumented version. Done? + Go to BPCallgraphModel>>#setSelectedEntry: and re-add the event triggering" + method := selectedPC first compiledMethod. + method debuggerMap + rangeForPC: selectedPC second + in: method + contextIsActiveContext: false] + ifFalse: [super contentsSelection] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/defaultBrowserTitle.st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/defaultBrowserTitle.st new file mode 100644 index 00000000..1167c496 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/defaultBrowserTitle.st @@ -0,0 +1,4 @@ +initialize-release +defaultBrowserTitle + + ^ 'Babylonian Callgraph Browser' \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/defineMessageFrom.notifying..st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/defineMessageFrom.notifying..st new file mode 100644 index 00000000..4b01d20d --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/defineMessageFrom.notifying..st @@ -0,0 +1,16 @@ +as yet unclassified +defineMessageFrom: aString notifying: aController + + "Wrapped to allow for re-instrumenting methods that already have been instrumented" + | resultingSelector | + (BPConfigureInstrumentation packagesToInstrument includes: self selectedSystemCategory) + ifTrue: [ + resultingSelector := #bpCallgraph withLayerDo: [ + super defineMessageFrom: aString notifying: aController]. + BPByteCodeRewriter + enableTracingForClass: self selectedClassOrMetaClass + selector: resultingSelector] + ifFalse: [resultingSelector := super defineMessageFrom: aString notifying: aController]. + + sidebar updateVisualizationMorphsIfNecessary. + ^ resultingSelector \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/highlightSendIn.at..st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/highlightSendIn.at..st new file mode 100644 index 00000000..2d154e79 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/highlightSendIn.at..st @@ -0,0 +1,8 @@ +callgraph +highlightSendIn: aMethodReference at: aPC + + + self browseReference: aMethodReference. + "check whether method is umodified" + selectedPC := {aMethodReference . aPC}. + self changed: #contentsSelection. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/messageIconFor..st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/messageIconFor..st new file mode 100644 index 00000000..adcce503 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/messageIconFor..st @@ -0,0 +1,21 @@ +callgraph context menus +messageIconFor: aSelector + | baseIcon callgraphIcon combinedIcon | + baseIcon := super messageIconFor: aSelector. + + callgraphIcon := self selectedClassOrMetaClass ifNotNil: [:class | | meth | + meth := [class >> aSelector] on: KeyNotFound do: [^ baseIcon]. + true caseOf: { + [BPByteCodeRewriter hasActiveTracing: meth] -> ["footsteps" BPEmojis i1F43EIcon]. + [BPByteCodeRewriter hasInactiveTracing: meth] -> ["grasshopper" BPEmojis i1F997Icon "ghost" "BPEmojis i1F47BIcon"]. + [(BPByteCodeRewriter hasTracing: meth) not] -> ["sheep" BPEmojis i1F411Icon]. + }]. + callgraphIcon := callgraphIcon scaledToSize: 12. + + baseIcon ifNil: [^ callgraphIcon]. + + combinedIcon := Form extent: 24@12 depth: 32. + combinedIcon copy: (0@0 extent: 12@12) from: baseIcon to: 0@0 rule: Form over. + combinedIcon copy: (0@0 extent: 12@12) from: callgraphIcon to: 12@0 rule: Form over. + + ^ combinedIcon \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/sidebarShowExample.id.traceValue..st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/sidebarShowExample.id.traceValue..st new file mode 100644 index 00000000..ecd7cacb --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/sidebarShowExample.id.traceValue..st @@ -0,0 +1,4 @@ +callgraph ui +sidebarShowExample: aBPExample id: aNumber traceValue: aBPTraceValue + + sidebar showExample: aBPExample id: aNumber traceValue: aBPTraceValue \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/sidebarShowMethod..st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/sidebarShowMethod..st new file mode 100644 index 00000000..1897f742 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/sidebarShowMethod..st @@ -0,0 +1,4 @@ +callgraph ui +sidebarShowMethod: aMethodReference + + sidebar showMethod: aMethodReference \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/methodProperties.json b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/methodProperties.json new file mode 100644 index 00000000..91013108 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/methodProperties.json @@ -0,0 +1,33 @@ +{ + "class" : { + "compilerClass" : "pre 7/26/2019 10:07", + "initialize" : "pre 1/22/2021 15:58", + "startUp" : "jb 12/3/2020 23:07" }, + "instance" : { + "buildDefaultBrowserWith:" : "pre 3/11/2021 16:54", + "buildWindowWith:specs:" : "pre 2/22/2021 18:41", + "callgraphCategoryMenu:" : "pre 1/15/2021 14:03", + "callgraphClassMenu:" : "cmfcmf 10/23/2020 12:56", + "callgraphDisableTracingForClass" : "cmfcmf 10/23/2020 12:55", + "callgraphDisableTracingForClassCategory" : "cmfcmf 10/22/2020 17:39", + "callgraphDisableTracingForMessage" : "cmfcmf 10/23/2020 11:38", + "callgraphEnableTracingForClass" : "cmfcmf 10/23/2020 12:55", + "callgraphEnableTracingForClassCategory" : "cmfcmf 10/22/2020 17:39", + "callgraphEnableTracingForMessage" : "cmfcmf 10/23/2020 11:38", + "callgraphInstrumentClass" : "cmfcmf 10/23/2020 12:55", + "callgraphInstrumentClassCategory" : "cmfcmf 10/22/2020 17:38", + "callgraphInstrumentMessage" : "cmfcmf 10/23/2020 12:54", + "callgraphMessageMenu:" : "cmfcmf 11/2/2020 14:22", + "callgraphShowMessage" : "cmfcmf 11/2/2020 14:26", + "callgraphUninstrumentClass" : "cmfcmf 10/23/2020 12:55", + "callgraphUninstrumentClassCategory" : "cmfcmf 10/22/2020 17:38", + "callgraphUninstrumentMessage" : "cmfcmf 10/23/2020 11:39", + "callgraphcodePaneMenu:" : "cmfcmf 11/2/2020 14:22", + "compressWidthOfSpecs:from:to:" : "pre 2/22/2021 18:41", + "contentsSelection" : "pre 2/22/2021 18:58", + "defaultBrowserTitle" : "pre 1/22/2021 15:55", + "defineMessageFrom:notifying:" : "pre 3/11/2021 17:44", + "highlightSendIn:at:" : "pre 2/22/2021 18:20", + "messageIconFor:" : "cmfcmf 10/23/2020 12:58", + "sidebarShowExample:id:traceValue:" : "cmfcmf 11/5/2020 13:00", + "sidebarShowMethod:" : "cmfcmf 11/2/2020 14:14" } } diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/properties.json b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/properties.json new file mode 100644 index 00000000..1c06c579 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Babylonian-UI", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "sidebar", + "selectedPC" ], + "name" : "BPCallgraphBrowser", + "pools" : [ + ], + "super" : "BPBrowser", + "type" : "normal" } diff --git a/packages/Babylonian-UI.package/BPCallgraphExplorer.class/README.md b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-UI.package/BPCallgraphExplorer.class/class/open.st b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/class/open.st new file mode 100644 index 00000000..5b720398 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/class/open.st @@ -0,0 +1,7 @@ +as yet unclassified +open + + | instance | + instance := self new. + ToolBuilder open: instance. + ^ instance \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphExplorer.class/class/openFromBPBrowser..st b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/class/openFromBPBrowser..st new file mode 100644 index 00000000..74999654 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/class/openFromBPBrowser..st @@ -0,0 +1,8 @@ +as yet unclassified +openFromBPBrowser: browser + + | instance | + self assert: (browser isKindOf: BPBrowser). + instance := self open. + instance browser: browser. + ^ instance \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/aboutToStyle.requestor..st b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/aboutToStyle.requestor..st new file mode 100644 index 00000000..5d3e3bf7 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/aboutToStyle.requestor..st @@ -0,0 +1,6 @@ +code pane +aboutToStyle: aStyler requestor: anObject + + aStyler selectedMethod: self codePaneMethodReference. + aStyler parseAMethod: true. + ^ true \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/addModelItemsToWindowMenu..st b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/addModelItemsToWindowMenu..st new file mode 100644 index 00000000..e577d1f6 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/addModelItemsToWindowMenu..st @@ -0,0 +1,8 @@ +as yet unclassified +addModelItemsToWindowMenu: aMenu + + aMenu addLine. + aMenu add: 'draw lines to probes' action: []. + self flag: #todo. + + ^ aMenu \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/annotationKeyPressed..st b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/annotationKeyPressed..st new file mode 100644 index 00000000..c2f7d562 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/annotationKeyPressed..st @@ -0,0 +1,5 @@ +annotation list +annotationKeyPressed: aChar + + "only called when a modifier key is pressed as well -> otherwise the list is filtered and this method not called" + aChar = $b ifTrue: [(self getAnnotations at: self getSelectedAnnotationIndex) doBrowse] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/annotationPaneDoubleClick.st b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/annotationPaneDoubleClick.st new file mode 100644 index 00000000..3abb0ad6 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/annotationPaneDoubleClick.st @@ -0,0 +1,8 @@ +annotation list +annotationPaneDoubleClick + + | entry | + entry := self getAnnotations at: self getSelectedAnnotationIndex. + callgraphModel selectEntry: entry. + codePaneMethodReference := entry methodReference. + self changed: #getCodePaneText \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/browser..st b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/browser..st new file mode 100644 index 00000000..30f54817 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/browser..st @@ -0,0 +1,4 @@ +as yet unclassified +browser: aBPBrowser + + browser := aBPBrowser \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/buildWith..st b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/buildWith..st new file mode 100644 index 00000000..618ea2c5 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/buildWith..st @@ -0,0 +1,35 @@ +as yet unclassified +buildWith: aBuilder + + | windowSpec | + windowSpec := aBuilder pluggableWindowSpec new + model: self; + label: 'Callgraph Explorer'; + children: { + callgraphModel getSpec + frame: (0@0 extent: 0.5@0.5); + "doubleClick: #callgraphDoubleClick:;" + yourself. + aBuilder pluggableListSpec new + frame: (0.5@0 corner: 1@0.5); + autoDeselect: false; + clearFilterAutomatically: false; + filterableList: true; + model: self; + list: #getAnnotationListLabels; + icon: #getAnnotationIcon:; + doubleClick: #annotationPaneDoubleClick; + getIndex: #getSelectedAnnotationIndex; + setIndex: #setSelectedAnnotationIndex:; + keyPress: #annotationKeyPressed:; + yourself. + aBuilder pluggableCodePaneSpec new + frame: (0@0.5 corner: 1@1); + stylerClass: BPStyler; + model: self; + getText: #getCodePaneText; + yourself + }; + yourself. + + ^ aBuilder build: windowSpec \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/callgraphDoubleClick..st b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/callgraphDoubleClick..st new file mode 100644 index 00000000..177ebfcc --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/callgraphDoubleClick..st @@ -0,0 +1,4 @@ +as yet unclassified +callgraphDoubleClick: aBPCallgraphEntry + + self setSelectedAnnotationIndex: (self getAnnotations indexOf: aBPCallgraphEntry) \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/codePaneMethodReference.st b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/codePaneMethodReference.st new file mode 100644 index 00000000..49762494 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/codePaneMethodReference.st @@ -0,0 +1,4 @@ +code pane +codePaneMethodReference + + ^ codePaneMethodReference \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/getAnnotationIcon..st b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/getAnnotationIcon..st new file mode 100644 index 00000000..4bc8c3e9 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/getAnnotationIcon..st @@ -0,0 +1,4 @@ +annotation list +getAnnotationIcon: aNumber + + ^ (self getAnnotations at: aNumber) iconForId \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/getAnnotationListLabels.st b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/getAnnotationListLabels.st new file mode 100644 index 00000000..4243162a --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/getAnnotationListLabels.st @@ -0,0 +1,4 @@ +annotation list +getAnnotationListLabels + + ^ self getAnnotations collect: [:each | each alternateLabel] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/getAnnotations.st b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/getAnnotations.st new file mode 100644 index 00000000..ddb91b89 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/getAnnotations.st @@ -0,0 +1,4 @@ +annotation list +getAnnotations + + ^ (callgraphModel callgraph ifNil: [{}] ifNotNil: #babylonianEntries) \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/getCodePaneText.st b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/getCodePaneText.st new file mode 100644 index 00000000..5e2af7a0 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/getCodePaneText.st @@ -0,0 +1,4 @@ +code pane +getCodePaneText + + ^ self codePaneMethodReference isValid ifTrue: [self codePaneMethodReference sourceCode] ifFalse: [''] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/getSelectedAnnotationIndex.st b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/getSelectedAnnotationIndex.st new file mode 100644 index 00000000..115787b1 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/getSelectedAnnotationIndex.st @@ -0,0 +1,4 @@ +annotation list +getSelectedAnnotationIndex + + ^ selectedAnnotationIndex ifNil: [0] ifNotNil: [selectedAnnotationIndex] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/initialize.st b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/initialize.st new file mode 100644 index 00000000..1e3482b2 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/initialize.st @@ -0,0 +1,6 @@ +as yet unclassified +initialize + + super initialize. + callgraphModel := BPCallgraphModel new. + codePaneMethodReference := MethodReference invalid \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/loadFromCallgraph..st b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/loadFromCallgraph..st new file mode 100644 index 00000000..4d7cd5d0 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/loadFromCallgraph..st @@ -0,0 +1,5 @@ +as yet unclassified +loadFromCallgraph: aBPCallgraph + + callgraphModel callgraph: aBPCallgraph. + self changed: #getAnnotationListLabels \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/loadFromCallgraphTracer..st b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/loadFromCallgraphTracer..st new file mode 100644 index 00000000..a58126f3 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/loadFromCallgraphTracer..st @@ -0,0 +1,4 @@ +as yet unclassified +loadFromCallgraphTracer: aBPByteCodeCallgraphTracer + + self loadFromCallgraph: aBPByteCodeCallgraphTracer eventsForTree \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/selectEntry..st b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/selectEntry..st new file mode 100644 index 00000000..9ce1941a --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/selectEntry..st @@ -0,0 +1,4 @@ +as yet unclassified +selectEntry: aBPCallgraphEntry + + callgraphModel selectEntry: aBPCallgraphEntry \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/setSelectedAnnotationIndex..st b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/setSelectedAnnotationIndex..st new file mode 100644 index 00000000..5b50349a --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/setSelectedAnnotationIndex..st @@ -0,0 +1,5 @@ +annotation list +setSelectedAnnotationIndex: aNumber + + selectedAnnotationIndex := aNumber. + self changed: #getSelectedAnnotationIndex \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphExplorer.class/methodProperties.json b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/methodProperties.json new file mode 100644 index 00000000..7b547ca1 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/methodProperties.json @@ -0,0 +1,23 @@ +{ + "class" : { + "open" : "cmfcmf 10/23/2020 13:19", + "openFromBPBrowser:" : "cmfcmf 10/28/2020 13:56" }, + "instance" : { + "aboutToStyle:requestor:" : "cmfcmf 10/28/2020 14:23", + "addModelItemsToWindowMenu:" : "cmfcmf 10/23/2020 18:05", + "annotationKeyPressed:" : "cmfcmf 10/28/2020 12:51", + "annotationPaneDoubleClick" : "cmfcmf 10/30/2020 14:49", + "browser:" : "cmfcmf 10/28/2020 13:56", + "buildWith:" : "cmfcmf 10/28/2020 14:13", + "callgraphDoubleClick:" : "cmfcmf 10/28/2020 12:44", + "codePaneMethodReference" : "cmfcmf 10/28/2020 14:17", + "getAnnotationIcon:" : "cmfcmf 10/28/2020 12:12", + "getAnnotationListLabels" : "cmfcmf 10/28/2020 11:39", + "getAnnotations" : "cmfcmf 10/28/2020 11:08", + "getCodePaneText" : "cmfcmf 10/28/2020 14:18", + "getSelectedAnnotationIndex" : "cmfcmf 10/28/2020 11:21", + "initialize" : "cmfcmf 10/28/2020 14:17", + "loadFromCallgraph:" : "cmfcmf 10/28/2020 11:23", + "loadFromCallgraphTracer:" : "cmfcmf 10/27/2020 14:43", + "selectEntry:" : "cmfcmf 10/27/2020 14:42", + "setSelectedAnnotationIndex:" : "cmfcmf 10/28/2020 11:21" } } diff --git a/packages/Babylonian-UI.package/BPCallgraphExplorer.class/properties.json b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/properties.json new file mode 100644 index 00000000..29a17808 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/properties.json @@ -0,0 +1,17 @@ +{ + "category" : "Babylonian-UI-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "callgraphModel", + "selectedAnnotationIndex", + "browser", + "codePaneMethodReference" ], + "name" : "BPCallgraphExplorer", + "pools" : [ + ], + "super" : "Model", + "type" : "normal" } diff --git a/packages/Babylonian-UI.package/BPCallgraphIndentingListItemMorph.class/README.md b/packages/Babylonian-UI.package/BPCallgraphIndentingListItemMorph.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-UI.package/BPCallgraphIndentingListItemMorph.class/class/iconColumnIndex.st b/packages/Babylonian-UI.package/BPCallgraphIndentingListItemMorph.class/class/iconColumnIndex.st new file mode 100644 index 00000000..a46097ea --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphIndentingListItemMorph.class/class/iconColumnIndex.st @@ -0,0 +1,4 @@ +as yet unclassified +iconColumnIndex + + ^ 2 \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphIndentingListItemMorph.class/instance/applyFilter.depthOffset..st b/packages/Babylonian-UI.package/BPCallgraphIndentingListItemMorph.class/instance/applyFilter.depthOffset..st new file mode 100644 index 00000000..1bfe3d7e --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphIndentingListItemMorph.class/instance/applyFilter.depthOffset..st @@ -0,0 +1,17 @@ +filtering +applyFilter: filter depthOffset: offset + + | selfMatch childMatch | + self isExpanded ifTrue: [self toggleExpandedState]. + + selfMatch := self matches: filter. + childMatch := self matchesAnyChild: filter depthOffset: offset. + + selfMatch | childMatch ifFalse: [^ self hide]. + + selfMatch ifTrue: [ + self backgroundColor: ((Color gray: 0.85) alpha: 0.5). + ""currentFilter := filter""]. + childMatch ifTrue: [ + self toggleExpandedState. + self childrenDo: [:child | child applyFilter: filter depthOffset: offset]]. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphIndentingListItemMorph.class/instance/removeFilter.st b/packages/Babylonian-UI.package/BPCallgraphIndentingListItemMorph.class/instance/removeFilter.st new file mode 100644 index 00000000..57d245e5 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphIndentingListItemMorph.class/instance/removeFilter.st @@ -0,0 +1,5 @@ +filtering +removeFilter + + self flag: #todo. "Actually use the currentFilter for highlighting. See LazyListMorph >> #getFilterOffsets, LazyListMorph >> #drawOn:" + currentFilter := nil \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphIndentingListItemMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPCallgraphIndentingListItemMorph.class/methodProperties.json new file mode 100644 index 00000000..b57585fd --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphIndentingListItemMorph.class/methodProperties.json @@ -0,0 +1,6 @@ +{ + "class" : { + "iconColumnIndex" : "cmfcmf 10/26/2020 12:05" }, + "instance" : { + "applyFilter:depthOffset:" : "cmfcmf 10/26/2020 13:17", + "removeFilter" : "cmfcmf 10/26/2020 13:22" } } diff --git a/packages/Babylonian-UI.package/BPCallgraphIndentingListItemMorph.class/properties.json b/packages/Babylonian-UI.package/BPCallgraphIndentingListItemMorph.class/properties.json new file mode 100644 index 00000000..1e50f26f --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphIndentingListItemMorph.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-UI-ToolBuilder", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "currentFilter" ], + "name" : "BPCallgraphIndentingListItemMorph", + "pools" : [ + ], + "super" : "IndentingListItemMorph", + "type" : "normal" } diff --git a/packages/Babylonian-UI.package/BPCallgraphListItemWrapper.class/README.md b/packages/Babylonian-UI.package/BPCallgraphListItemWrapper.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-UI.package/BPCallgraphListItemWrapper.class/instance/preferredColor.st b/packages/Babylonian-UI.package/BPCallgraphListItemWrapper.class/instance/preferredColor.st new file mode 100644 index 00000000..0e477ecc --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphListItemWrapper.class/instance/preferredColor.st @@ -0,0 +1,4 @@ +as yet unclassified +preferredColor + + ^ self item textColor \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphListItemWrapper.class/methodProperties.json b/packages/Babylonian-UI.package/BPCallgraphListItemWrapper.class/methodProperties.json new file mode 100644 index 00000000..57d9148e --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphListItemWrapper.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "preferredColor" : "cmfcmf 10/23/2020 16:14" } } diff --git a/packages/Babylonian-UI.package/BPCallgraphListItemWrapper.class/properties.json b/packages/Babylonian-UI.package/BPCallgraphListItemWrapper.class/properties.json new file mode 100644 index 00000000..505c33c1 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphListItemWrapper.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-UI-ToolBuilder", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "callgraphModel" ], + "name" : "BPCallgraphListItemWrapper", + "pools" : [ + ], + "super" : "PluggableTreeItemNode", + "type" : "normal" } diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/README.md b/packages/Babylonian-UI.package/BPCallgraphModel.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/class/showReturnNodes..st b/packages/Babylonian-UI.package/BPCallgraphModel.class/class/showReturnNodes..st new file mode 100644 index 00000000..0b3a7dd8 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/class/showReturnNodes..st @@ -0,0 +1,4 @@ +as yet unclassified +showReturnNodes: aBoolean + + ShowReturnNodes := aBoolean \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/class/showReturnNodes.st b/packages/Babylonian-UI.package/BPCallgraphModel.class/class/showReturnNodes.st new file mode 100644 index 00000000..118175eb --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/class/showReturnNodes.st @@ -0,0 +1,8 @@ +as yet unclassified +showReturnNodes + + + ^ ShowReturnNodes ifNil: [true] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/callgraph..st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/callgraph..st new file mode 100644 index 00000000..fb33a69f --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/callgraph..st @@ -0,0 +1,5 @@ +as yet unclassified +callgraph: aBPCallgraph + + callgraph := aBPCallgraph. + self changed: #rootEntries. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/callgraph.st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/callgraph.st new file mode 100644 index 00000000..094268b8 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/callgraph.st @@ -0,0 +1,4 @@ +as yet unclassified +callgraph + + ^ callgraph \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/childrenOf..st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/childrenOf..st new file mode 100644 index 00000000..6fc3bcb8 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/childrenOf..st @@ -0,0 +1,6 @@ +as yet unclassified +childrenOf: aBPCallgraphEntry + + ^ self class showReturnNodes + ifTrue: [aBPCallgraphEntry children] + ifFalse: [self withoutReturnNodes: aBPCallgraphEntry children] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/doubleClick..st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/doubleClick..st new file mode 100644 index 00000000..f3609d3c --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/doubleClick..st @@ -0,0 +1,5 @@ +as yet unclassified +doubleClick: anObject + + + self triggerEvent: #doubleClicked with: self getSelectedEntry \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/findCommonAncestorOfAllInvocations.st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/findCommonAncestorOfAllInvocations.st new file mode 100644 index 00000000..30adb8cb --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/findCommonAncestorOfAllInvocations.st @@ -0,0 +1,11 @@ +menu +findCommonAncestorOfAllInvocations + + | selected allInvocations ancestor paths | + selected := self getSelectedEntry. + self assert: selected class == BPCallgraphEntryEnter. + allInvocations := callgraph allInvocationsOf: selected. + ancestor := callgraph commonAncestorOf: allInvocations ignoringInvocationCounts: true. + ancestor ifNil: [^ UIManager default inform: 'No common ancestor found']. + paths := callgraph pathsBetween: ancestor andChildren: allInvocations. + paths explore \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/getSelectedEntry.st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/getSelectedEntry.st new file mode 100644 index 00000000..e38e7f35 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/getSelectedEntry.st @@ -0,0 +1,4 @@ +as yet unclassified +getSelectedEntry + + ^ selectedEntry \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/getSpec.st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/getSpec.st new file mode 100644 index 00000000..583d2bc5 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/getSpec.st @@ -0,0 +1,23 @@ +as yet unclassified +getSpec + + ^ BPCallgraphPluggableTreeSpec new + frame: (0@0 extent: 1@1); + roots: #rootEntries; + getChildren: #childrenOf:; + hasChildren: #hasChildren:; + label: #labelOf:; + model: self; + setSelected: #setSelectedEntry:; + getSelected: #getSelectedEntry; + autoDeselect: false; + keyPress: #key:from:event:; + icon: #iconOf:; + nodeClass: BPCallgraphListItemWrapper; + menu: #menuOf:; + doubleClick: #doubleClick:; + columns: { + [:listMorph | (listMorph filteredItems collect: [:item | item preferredWidthOfColumn: 1]) max + 10]. + [:listMorph | (listMorph filteredItems collect: [:item | item preferredWidthOfColumn: 2]) max]. + [:listMorph | (listMorph filteredItems collect: [:item | item preferredWidthOfColumn: 3]) max]}; + yourself \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/hasChildren..st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/hasChildren..st new file mode 100644 index 00000000..0677321c --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/hasChildren..st @@ -0,0 +1,4 @@ +as yet unclassified +hasChildren: aBPCallgraphEntry + + ^ aBPCallgraphEntry hasChildren \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/iconOf..st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/iconOf..st new file mode 100644 index 00000000..66bb320a --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/iconOf..st @@ -0,0 +1,4 @@ +as yet unclassified +iconOf: aBPCallgraphEntry + + ^ aBPCallgraphEntry icon \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/key.from.event..st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/key.from.event..st new file mode 100644 index 00000000..54373137 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/key.from.event..st @@ -0,0 +1,8 @@ +as yet unclassified +key: aChar from: view event: event + + event anyModifierKeyPressed ifFalse: [ + PluggableTreeMorph maximumSearchDepth == 1 ifTrue: [ + UIManager default inform: 'It looks like you are trying to filter the calltree. However, your maximum filter search depth is set to 1, which will only filter immediate children of the currently selected element. It is therefore recommended to increase the ''maximum tree search depth'' preference. WARNING: Filtering in other trees, such as the trees used by the Explorer, will slow down considerably when filtering objects that have recursive references.']. + ^ false]. + self getSelectedEntry ifNotNil: [:entry | entry keyPressed: aChar] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/labelOf..st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/labelOf..st new file mode 100644 index 00000000..c04fb536 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/labelOf..st @@ -0,0 +1,4 @@ +as yet unclassified +labelOf: aBPCallgraphEntry + + ^ aBPCallgraphEntry label \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/menuOf..st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/menuOf..st new file mode 100644 index 00000000..42215b74 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/menuOf..st @@ -0,0 +1,12 @@ +as yet unclassified +menuOf: aMenuMorph + + | entry | + entry := self getSelectedEntry. + entry menu: aMenuMorph. + + aMenuMorph add: 'select' action: [ | example | + example := BPActiveExamples value examples detect: [:each | each currentCallgraph == callgraph]. + BPSelectedCallgraphEntries select: self getSelectedEntry fromCallgraph: example currentCallgraph forExample: example]. + + ^ aMenuMorph \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/rootEntries.st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/rootEntries.st new file mode 100644 index 00000000..2abc70a6 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/rootEntries.st @@ -0,0 +1,7 @@ +as yet unclassified +rootEntries + + | roots | + roots := callgraph ifNotNil: #roots ifNil: [{}]. + self class showReturnNodes ifFalse: [roots := self withoutReturnNodes: roots]. + ^ roots \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectChildMethodCalls.st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectChildMethodCalls.st new file mode 100644 index 00000000..85921c29 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectChildMethodCalls.st @@ -0,0 +1,11 @@ +menu +selectChildMethodCalls + + "recursively finds all procedure calls done by the selected entry" + | entry procedures | + entry := self getSelectedEntry. + procedures := Set new. + entry children do: [:child | + self callgraph do: [:each | each class == BPCallgraphEntryEnter ifTrue: [ + procedures add: each asPathPart]] entry: child]. + procedures explore \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectContextSenderChange.st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectContextSenderChange.st new file mode 100644 index 00000000..7d913cf0 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectContextSenderChange.st @@ -0,0 +1,8 @@ +menu +selectContextSenderChange + + callgraph + detect: [:each | each class == BPCallgraphEntryContextSenderChanged] + before: self getSelectedEntry + ifFound: [:each | self selectEntry: each] + ifNone: [self error: 'should never happen'] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectCorrespondingBlockEnter.st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectCorrespondingBlockEnter.st new file mode 100644 index 00000000..9d44c45b --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectCorrespondingBlockEnter.st @@ -0,0 +1,16 @@ +menu +selectCorrespondingBlockEnter + + | entry | + entry := self getSelectedEntry. + self assert: (entry class == BPCallgraphEntryExit). + + callgraph + detect: [:each | (each class == BPCallgraphEntryEnter) + and: [each getClass == entry getClass] + and: [each getSelector == entry getSelector] + and: [each getBlockIdx == entry getBlockIdx] + and: [each getInvocationCount == entry getInvocationCount]] + before: entry + ifFound: [:each | self selectEntry: each] + ifNone: [UIManager default inform: 'Block enter not found'] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectCorrespondingBlockExit.st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectCorrespondingBlockExit.st new file mode 100644 index 00000000..5bc270d7 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectCorrespondingBlockExit.st @@ -0,0 +1,16 @@ +menu +selectCorrespondingBlockExit + + | entry | + entry := self getSelectedEntry. + self assert: (entry class == BPCallgraphEntryEnter). + + callgraph + detect: [:each | (each class == BPCallgraphEntryExit) + and: [each getClass == entry getClass] + and: [each getSelector == entry getSelector] + and: [each getBlockIdx == entry getBlockIdx or: [each getBlockIdx == 1 "if the method returns as a whole"]] + and: [each getInvocationCount == entry getInvocationCount]] + after: entry + ifFound: [:each | self selectEntry: each] + ifNone: [UIManager default inform: 'Block exit not found'] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectCorrespondingMethodEnter.st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectCorrespondingMethodEnter.st new file mode 100644 index 00000000..165cb4c6 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectCorrespondingMethodEnter.st @@ -0,0 +1,16 @@ +menu +selectCorrespondingMethodEnter + + | entry | + entry := self getSelectedEntry. + self assert: (entry class == BPCallgraphEntryExit). + + callgraph + detect: [:each | (each class == BPCallgraphEntryEnter) + and: [each getClass == entry getClass] + and: [each getSelector == entry getSelector] + and: [each getBlockIdx == 1] + and: [each getInvocationCount == entry getInvocationCount]] + before: entry + ifFound: [:each | self selectEntry: each] + ifNone: [UIManager default inform: 'Method enter not found'] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectCorrespondingMethodExit.st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectCorrespondingMethodExit.st new file mode 100644 index 00000000..7f950c20 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectCorrespondingMethodExit.st @@ -0,0 +1,16 @@ +menu +selectCorrespondingMethodExit + + | entry | + entry := self getSelectedEntry. + self assert: (entry class == BPCallgraphEntryEnter or: [entry class == BPCallgraphEntryContextJumpHelper]) . + + callgraph + detect: [:each | (each class == BPCallgraphEntryExit) + and: [each getClass == entry getClass] + and: [each getSelector == entry getSelector] + and: [each getBlockIdx == 1] + and: [each getInvocationCount == entry getInvocationCount]] + after: entry + ifFound: [:each | self selectEntry: each] + ifNone: [UIManager default inform: 'Method exit not found'] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectEntry..st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectEntry..st new file mode 100644 index 00000000..cab5f3fc --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectEntry..st @@ -0,0 +1,4 @@ +public +selectEntry: aBPCallgraphEntry + + self myDependents do: [:view | view selectPath: aBPCallgraphEntry path] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectExecutionContinuation.st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectExecutionContinuation.st new file mode 100644 index 00000000..b8762c83 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectExecutionContinuation.st @@ -0,0 +1,8 @@ +menu +selectExecutionContinuation + + callgraph + detect: [:each | each class == BPCallgraphEntryContextExecutionContinuation] + after: self getSelectedEntry + ifFound: [:each | self selectEntry: each] + ifNone: [self error: 'should never happen'] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectNextBlockCall.st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectNextBlockCall.st new file mode 100644 index 00000000..1e4abb36 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectNextBlockCall.st @@ -0,0 +1,10 @@ +menu +selectNextBlockCall + + | selected | + selected := self getSelectedEntry. + callgraph + detect: [:entry | entry class == BPCallgraphEntryEnter and: [entry getClass == selected getClass] and: [entry getSelector == selected getSelector] and: [entry getBlockIdx == selected getBlockIdx]] + after: selected + ifFound: [:entry | self selectEntry: entry] + ifNone: [UIManager default inform: 'No next block call found'] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectNextBlockCallInSameContext.st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectNextBlockCallInSameContext.st new file mode 100644 index 00000000..e0006762 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectNextBlockCallInSameContext.st @@ -0,0 +1,15 @@ +menu +selectNextBlockCallInSameContext + + | selected | + selected := self getSelectedEntry. + callgraph + detect: [:entry | + entry class == BPCallgraphEntryEnter + and: [entry getClass == selected getClass] + and: [entry getSelector == selected getSelector] + and: [entry getBlockIdx == selected getBlockIdx] + and: [entry getInvocationCount == selected getInvocationCount]] + after: selected + ifFound: [:entry | self selectEntry: entry] + ifNone: [UIManager default inform: 'No next call to this block in the same context found'] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectNextCustomEvent.st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectNextCustomEvent.st new file mode 100644 index 00000000..a1db42bf --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectNextCustomEvent.st @@ -0,0 +1,8 @@ +menu +selectNextCustomEvent + + callgraph + detect: [:entry | entry isKindOf: BPCallgraphEntryCustomEvent] + after: self getSelectedEntry + ifFound: [:entry | self selectEntry: entry] + ifNone: [UIManager default inform: 'No next entry found'] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectNextMethodCall.st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectNextMethodCall.st new file mode 100644 index 00000000..e74a9731 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectNextMethodCall.st @@ -0,0 +1,10 @@ +menu +selectNextMethodCall + + | selected | + selected := self getSelectedEntry. + callgraph + detect: [:entry | entry class == BPCallgraphEntryEnter and: [entry getClass == selected getClass] and: [entry getSelector == selected getSelector] and: [entry getBlockIdx == 1]] + after: selected + ifFound: [:entry | self selectEntry: entry] + ifNone: [UIManager default inform: 'No next method call found'] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectOriginalCall.st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectOriginalCall.st new file mode 100644 index 00000000..22b879dc --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectOriginalCall.st @@ -0,0 +1,8 @@ +menu +selectOriginalCall + + callgraph + detect: [:each | each class == BPCallgraphEntryEnter and: [each equalsClassSelectorBlockIdxInvocation: self getSelectedEntry]] + before: self getSelectedEntry + ifFound: [:entry | self selectEntry: entry] + ifNone: [self error: 'should never happen'] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectPrevBlockCall.st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectPrevBlockCall.st new file mode 100644 index 00000000..2593db58 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectPrevBlockCall.st @@ -0,0 +1,10 @@ +menu +selectPrevBlockCall + + | selected | + selected := self getSelectedEntry. + callgraph + detect: [:entry | entry class == BPCallgraphEntryEnter and: [entry getClass == selected getClass] and: [entry getSelector == selected getSelector] and: [entry getBlockIdx == selected getBlockIdx]] + before: selected + ifFound: [:entry | self selectEntry: entry] + ifNone: [UIManager default inform: 'No prev block call found'] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectPrevBlockCallInSameContext.st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectPrevBlockCallInSameContext.st new file mode 100644 index 00000000..8c87593b --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectPrevBlockCallInSameContext.st @@ -0,0 +1,10 @@ +menu +selectPrevBlockCallInSameContext + + | selected | + selected := self getSelectedEntry. + callgraph + detect: [:entry | entry class == BPCallgraphEntryEnter and: [entry getClass == selected getClass] and: [entry getSelector == selected getSelector] and: [entry getBlockIdx == selected getBlockIdx] and: [entry getInvocationCount == selected getInvocationCount]] + before: selected + ifFound: [:entry | self selectEntry: entry] + ifNone: [UIManager default inform: 'No prev call to this block in the same context found'] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectPrevCustomEvent.st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectPrevCustomEvent.st new file mode 100644 index 00000000..c0d61cbf --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectPrevCustomEvent.st @@ -0,0 +1,8 @@ +menu +selectPrevCustomEvent + + callgraph + detect: [:entry | entry isKindOf: BPCallgraphEntryCustomEvent] + before: self getSelectedEntry + ifFound: [:entry | self selectEntry: entry] + ifNone: [UIManager default inform: 'No prev entry found'] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectPrevMethodCall.st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectPrevMethodCall.st new file mode 100644 index 00000000..392bc014 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectPrevMethodCall.st @@ -0,0 +1,10 @@ +menu +selectPrevMethodCall + + | selected | + selected := self getSelectedEntry. + callgraph + detect: [:entry | entry class == BPCallgraphEntryEnter and: [entry getClass == selected getClass] and: [entry getSelector == selected getSelector] and: [entry getBlockIdx == 1]] + before: selected + ifFound: [:entry | self selectEntry: entry] + ifNone: [UIManager default inform: 'No prev method call found'] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/setSelectedEntry..st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/setSelectedEntry..st new file mode 100644 index 00000000..eb51bd6f --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/setSelectedEntry..st @@ -0,0 +1,7 @@ +as yet unclassified +setSelectedEntry: aBPCallgraphEntry + + selectedEntry := aBPCallgraphEntry. + self changed: #getSelectedEntry. + "You want to highlight the call site of a method -> trigger this event + self triggerEvent: #entryClicked with: aBPCallgraphEntry." \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/withoutReturnNodes..st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/withoutReturnNodes..st new file mode 100644 index 00000000..bd9e1b90 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/withoutReturnNodes..st @@ -0,0 +1,4 @@ +as yet unclassified +withoutReturnNodes: aCollection + + ^ aCollection reject: [:each | each class == BPCallgraphEntryExit] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/methodProperties.json b/packages/Babylonian-UI.package/BPCallgraphModel.class/methodProperties.json new file mode 100644 index 00000000..0a070548 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/methodProperties.json @@ -0,0 +1,37 @@ +{ + "class" : { + "showReturnNodes" : "cmfcmf 11/6/2020 14:26", + "showReturnNodes:" : "cmfcmf 11/6/2020 14:27" }, + "instance" : { + "callgraph" : "cmfcmf 10/28/2020 10:40", + "callgraph:" : "pre 3/11/2021 17:28", + "childrenOf:" : "cmfcmf 11/6/2020 14:29", + "doubleClick:" : "pre 2/22/2021 17:53", + "findCommonAncestorOfAllInvocations" : "cmfcmf 11/10/2020 10:52", + "getSelectedEntry" : "cmfcmf 10/22/2020 14:29", + "getSpec" : "cmfcmf 10/30/2020 14:57", + "hasChildren:" : "cmfcmf 10/22/2020 13:22", + "iconOf:" : "cmfcmf 10/23/2020 16:05", + "key:from:event:" : "cmfcmf 1/5/2021 21:35", + "labelOf:" : "cmfcmf 10/22/2020 13:23", + "menuOf:" : "cmfcmf 11/9/2020 16:48", + "rootEntries" : "cmfcmf 11/6/2020 14:28", + "selectChildMethodCalls" : "cmfcmf 1/4/2021 20:49", + "selectContextSenderChange" : "cmfcmf 10/27/2020 17:17", + "selectCorrespondingBlockEnter" : "cmfcmf 11/2/2020 14:07", + "selectCorrespondingBlockExit" : "cmfcmf 10/28/2020 12:25", + "selectCorrespondingMethodEnter" : "cmfcmf 10/27/2020 17:15", + "selectCorrespondingMethodExit" : "cmfcmf 1/4/2021 20:41", + "selectEntry:" : "cmfcmf 10/27/2020 16:30", + "selectExecutionContinuation" : "cmfcmf 11/2/2020 17:12", + "selectNextBlockCall" : "cmfcmf 11/2/2020 14:07", + "selectNextBlockCallInSameContext" : "cmfcmf 11/2/2020 14:08", + "selectNextCustomEvent" : "cmfcmf 10/28/2020 11:01", + "selectNextMethodCall" : "cmfcmf 11/2/2020 14:02", + "selectOriginalCall" : "cmfcmf 1/4/2021 15:29", + "selectPrevBlockCall" : "cmfcmf 11/2/2020 14:07", + "selectPrevBlockCallInSameContext" : "cmfcmf 11/2/2020 14:07", + "selectPrevCustomEvent" : "cmfcmf 10/28/2020 11:01", + "selectPrevMethodCall" : "cmfcmf 11/2/2020 14:02", + "setSelectedEntry:" : "pre 2/22/2021 18:57", + "withoutReturnNodes:" : "cmfcmf 11/6/2020 14:29" } } diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/properties.json b/packages/Babylonian-UI.package/BPCallgraphModel.class/properties.json new file mode 100644 index 00000000..6b5e4647 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Babylonian-UI-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + "ShowReturnNodes" ], + "commentStamp" : "", + "instvars" : [ + "callgraph", + "selectedEntry" ], + "name" : "BPCallgraphModel", + "pools" : [ + ], + "super" : "Model", + "type" : "normal" } diff --git a/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/README.md b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/instance/indentingItemClass.st b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/instance/indentingItemClass.st new file mode 100644 index 00000000..e0bcd839 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/instance/indentingItemClass.st @@ -0,0 +1,4 @@ +initialization +indentingItemClass + + ^ BPCallgraphIndentingListItemMorph \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/instance/indicateUnfiltered.st b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/instance/indicateUnfiltered.st new file mode 100644 index 00000000..6396f520 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/instance/indicateUnfiltered.st @@ -0,0 +1,5 @@ +filtering +indicateUnfiltered + + super indicateUnfiltered. + scroller submorphsDo: [:m | m removeFilter] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/instance/update..st b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/instance/update..st new file mode 100644 index 00000000..7915bd90 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/instance/update..st @@ -0,0 +1,28 @@ +as yet unclassified +update: anAspect + + | expandedEntryIndices scrollerOffset | + + "record expanded entries" + expandedEntryIndices := (scroller submorphs + withIndexCollect: [:m :i | m isExpanded ifTrue: [i] ifFalse: [nil]]) + reject: #isNil. + + "record scroller position" + scrollerOffset := scroller offset copy. + + super update: anAspect. + + "restore expanded entries" + "the repeated retrieval of submorphs is important, as by expanding + entries, we change the list" + [expandedEntryIndices do: [:index | + (scroller submorphs at: index ifAbsent: ["nothing left to be done"^ self]) expand]] + ensure: [ + self + adjustSubmorphPositions; + updateLayout. + "restore scroll" + scroller offset: scrollerOffset]. + + \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/methodProperties.json new file mode 100644 index 00000000..52ca5b0b --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/methodProperties.json @@ -0,0 +1,7 @@ +{ + "class" : { + }, + "instance" : { + "indentingItemClass" : "cmfcmf 10/23/2020 17:27", + "indicateUnfiltered" : "cmfcmf 10/26/2020 13:14", + "update:" : "pre 3/12/2021 10:50" } } diff --git a/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/properties.json b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/properties.json new file mode 100644 index 00000000..8bda3e96 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-UI-ToolBuilder", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPCallgraphPluggableTreeMorph", + "pools" : [ + ], + "super" : "PluggableTreeMorph", + "type" : "normal" } diff --git a/packages/Babylonian-UI.package/BPCallgraphPluggableTreeSpec.class/README.md b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeSpec.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-UI.package/BPCallgraphPluggableTreeSpec.class/instance/buildWith..st b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeSpec.class/instance/buildWith..st new file mode 100644 index 00000000..1edb8110 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeSpec.class/instance/buildWith..st @@ -0,0 +1,3 @@ +as yet unclassified +buildWith: builder + ^builder buildBPCallgraph: self \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphPluggableTreeSpec.class/methodProperties.json b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeSpec.class/methodProperties.json new file mode 100644 index 00000000..606a1b27 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeSpec.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "buildWith:" : "cmfcmf 10/23/2020 17:31" } } diff --git a/packages/Babylonian-UI.package/BPCallgraphPluggableTreeSpec.class/properties.json b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeSpec.class/properties.json new file mode 100644 index 00000000..42558b09 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeSpec.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-UI-ToolBuilder", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPCallgraphPluggableTreeSpec", + "pools" : [ + ], + "super" : "PluggableTreeSpec", + "type" : "normal" } diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/README.md b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/class/configure.st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/class/configure.st new file mode 100644 index 00000000..d2d382fb --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/class/configure.st @@ -0,0 +1,4 @@ +opening +configure + + ^ self new configure \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/class/packagesToInstrument.st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/class/packagesToInstrument.st new file mode 100644 index 00000000..c2cc59ce --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/class/packagesToInstrument.st @@ -0,0 +1,4 @@ +opening +packagesToInstrument + + ^ PackagesToInstrument \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/accept.st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/accept.st new file mode 100644 index 00000000..fac3aef6 --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/accept.st @@ -0,0 +1,5 @@ +toolbuilder +accept + + acceptChanges := true. + self changed: #close \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/buildButtons..st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/buildButtons..st new file mode 100644 index 00000000..e6307dbd --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/buildButtons..st @@ -0,0 +1,20 @@ +toolbuilder +buildButtons: builder + + ^ builder pluggablePanelSpec new + layout: #vertical; + frame: (LayoutFrame fractions: (0.5 @ 0 corner: 0.5 @ 1) offsets: (self buttonWidth / -2 @ 0 corner: self buttonWidth / 2 @ 0)); + children: { + builder pluggableActionButtonSpec new + model: self; + label: '>'; + enabled: #hasUninstrumentedSelection; + action: #instrumentSelected; + help: 'Start instrumenting the selected package'. + + builder pluggableActionButtonSpec new + model: self; + label: '<'; + enabled: #hasInstrumentedSelection; + action: #uninstrumentSelected; + help: 'Stop instrumenting the selected package'} \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/buildInstrumentedList..st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/buildInstrumentedList..st new file mode 100644 index 00000000..95b9464b --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/buildInstrumentedList..st @@ -0,0 +1,12 @@ +toolbuilder +buildInstrumentedList: builder + + ^ builder pluggableListSpec new + model: self; + filterableList: true; + clearFilterAutomatically: false; + autoDeselect: true; + list: #instrumentedPackagesWithTitle; + getIndex: #selectionInstrumented; + setIndex: #selectionInstrumented:; + frame: (LayoutFrame fractions: (0.5 @ 0 corner: 1 @ 1) offsets: (self buttonWidth / 2 @ 0 corner: 0 @ 0)) \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/buildUninstrumentedList..st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/buildUninstrumentedList..st new file mode 100644 index 00000000..c9f8c5e7 --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/buildUninstrumentedList..st @@ -0,0 +1,12 @@ +toolbuilder +buildUninstrumentedList: builder + + ^ builder pluggableListSpec new + model: self; + filterableList: true; + clearFilterAutomatically: false; + autoDeselect: true; + list: #uninstrumentedPackagesWithTitle; + getIndex: #selectionUninstrumented; + setIndex: #selectionUninstrumented:; + frame: (LayoutFrame fractions: (0 @ 0 corner: 0.5 @ 1) offsets: (0 @ 0 corner: self buttonWidth / -2 @ 0)) \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/buildWith..st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/buildWith..st new file mode 100644 index 00000000..915d0025 --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/buildWith..st @@ -0,0 +1,19 @@ +toolbuilder +buildWith: builder + + ^ (builder build: (builder pluggableDialogSpec new + model: self; + extent: self initialExtent; + autoCancel: true; + title: 'Start or stop instrumenting packages'; + children: { + self buildUninstrumentedList: builder. + self buildButtons: builder. + self buildInstrumentedList: builder}; + buttons: { + builder pluggableButtonSpec new + model: self; + label: 'Accept'; + action: #accept})) + addKeyboardCaptureFilter: self; + yourself \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/buttonWidth.st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/buttonWidth.st new file mode 100644 index 00000000..bd75e88c --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/buttonWidth.st @@ -0,0 +1,4 @@ +toolbuilder +buttonWidth + + ^ 40 \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/categoriesPlusPrefixes.st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/categoriesPlusPrefixes.st new file mode 100644 index 00000000..833f7349 --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/categoriesPlusPrefixes.st @@ -0,0 +1,7 @@ +choosing packages +categoriesPlusPrefixes + ^ (SystemOrganizer default categories gather: [:each | | eachSplitted | + eachSplitted := each splitBy: '-'. + eachSplitted withIndexCollect: [:x :index | + (eachSplitted copyFrom: 1 to: index) joinSeparatedBy: '-']]) + asSet asOrderedCollection sorted \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/configure.st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/configure.st new file mode 100644 index 00000000..4c38cead --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/configure.st @@ -0,0 +1,36 @@ +choosing packages +configure + + "returns true if any changes were made" + + | originalPackages addedPackages removedPackages warning | + acceptChanges := false. + instrumentedPackages := self packagesToInstrument asOrderedCollection sorted. + originalPackages := instrumentedPackages copy. + self updateUninstrumentedPackages. + + ToolBuilder open: self. + acceptChanges ifFalse: [^ false]. + + removedPackages := originalPackages copyWithoutAll: self instrumentedPackages. + addedPackages := self instrumentedPackages copyWithoutAll: originalPackages. + (removedPackages isEmpty and: [addedPackages isEmpty]) ifTrue: [^ false]. + + warning := 'This will instrument the newly selected +packages and can take considerable time!'. + (self confirm: warning) + ifTrue: [ + removedPackages + do: [:p | BPByteCodeRewriter uninstrumentClassCategory: p] + displayingProgress: [:p | 'Removing instrumentation from ' , p]. + PackagesToInstrument removeAllFoundIn: removedPackages. + + addedPackages + do: [:p | + BPByteCodeRewriter + instrumentClassCategory: p; + enableTracingForClassCategory: p] + displayingProgress: [:p | 'Adding instrumentation to ' , p]. + PackagesToInstrument addAll: addedPackages. + ^ true] + ifFalse: [^ false] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/hasInstrumentedSelection.st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/hasInstrumentedSelection.st new file mode 100644 index 00000000..14b7fbda --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/hasInstrumentedSelection.st @@ -0,0 +1,4 @@ +accessing +hasInstrumentedSelection + + ^ self selectionInstrumented > 1 and: [self instrumentedPackages notEmpty] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/hasUninstrumentedSelection.st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/hasUninstrumentedSelection.st new file mode 100644 index 00000000..f488e5e9 --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/hasUninstrumentedSelection.st @@ -0,0 +1,4 @@ +accessing +hasUninstrumentedSelection + + ^ self selectionUninstrumented > 1 and: [self uninstrumentedPackages notEmpty] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/inform..st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/inform..st new file mode 100644 index 00000000..9e4d0303 --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/inform..st @@ -0,0 +1,4 @@ +user interface +inform: aString + + self inform: aString. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/initialExtent.st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/initialExtent.st new file mode 100644 index 00000000..52d01bb9 --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/initialExtent.st @@ -0,0 +1,6 @@ +toolbuilder +initialExtent + + | listFont | + listFont := Preferences standardListFont. + ^ (20 * (listFont widthOf: $m)) * 2 @ (15 * listFont height) \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/instrumentSelected.st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/instrumentSelected.st new file mode 100644 index 00000000..3bdbc2b7 --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/instrumentSelected.st @@ -0,0 +1,24 @@ +actions +instrumentSelected + + | package conflictingPackages | + package := (self uninstrumentedPackagesWithTitle at: self selectionUninstrumented). + + conflictingPackages := self instrumentedPackages select: [:p | p beginsWith: package]. + + conflictingPackages ifNotEmpty: [ + (self confirm: 'To instrument this package, we will first remove ', + (conflictingPackages joinSeparatedBy: ', '), + ', because the new packages is a prefix/super package for these.', String cr, + '(Otherwise the package contents will be duplicated)') ifFalse: [^ self]]. + + self instrumentedPackages + removeAll: conflictingPackages; + add: package. + + self updateUninstrumentedPackages. + + self changed: #instrumentedPackagesWithTitle. + self changed: #uninstrumentedPackagesWithTitle. + self changed: #hasUninstrumentedSelection. + self changed: #hasInstrumentedSelection \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/instrumentedPackages.st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/instrumentedPackages.st new file mode 100644 index 00000000..e5e983de --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/instrumentedPackages.st @@ -0,0 +1,4 @@ +accessing +instrumentedPackages + + ^ instrumentedPackages \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/instrumentedPackagesWithTitle.st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/instrumentedPackagesWithTitle.st new file mode 100644 index 00000000..76fdd581 --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/instrumentedPackagesWithTitle.st @@ -0,0 +1,4 @@ +accessing +instrumentedPackagesWithTitle + + ^ #('-- Tracked Packages --'), self instrumentedPackages sorted \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/packagesToInstrument.st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/packagesToInstrument.st new file mode 100644 index 00000000..e2dfda9a --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/packagesToInstrument.st @@ -0,0 +1,4 @@ +choosing packages +packagesToInstrument + + ^ PackagesToInstrument ifNil: [PackagesToInstrument := OrderedCollection new] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/selectionInstrumented..st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/selectionInstrumented..st new file mode 100644 index 00000000..92f23cbb --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/selectionInstrumented..st @@ -0,0 +1,7 @@ +accessing +selectionInstrumented: aNumber + + aNumber ~= 1 ifTrue: [ + selectionInstrumented := aNumber. + self changed: #selectionInstrumented. + self changed: #hasInstrumentedSelection] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/selectionInstrumented.st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/selectionInstrumented.st new file mode 100644 index 00000000..5ba64d46 --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/selectionInstrumented.st @@ -0,0 +1,4 @@ +accessing +selectionInstrumented + + ^ selectionInstrumented ifNil: [0] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/selectionUninstrumented..st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/selectionUninstrumented..st new file mode 100644 index 00000000..159ec58f --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/selectionUninstrumented..st @@ -0,0 +1,7 @@ +accessing +selectionUninstrumented: aNumber + + aNumber ~= 1 ifTrue: [ + selectionUninstrumented := aNumber. + self changed: #selectionUninstrumented. + self changed: #hasUninstrumentedSelection] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/selectionUninstrumented.st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/selectionUninstrumented.st new file mode 100644 index 00000000..2b4a5193 --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/selectionUninstrumented.st @@ -0,0 +1,4 @@ +accessing +selectionUninstrumented + + ^ selectionUninstrumented ifNil: [0] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/uninstrumentSelected.st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/uninstrumentSelected.st new file mode 100644 index 00000000..58b194ac --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/uninstrumentSelected.st @@ -0,0 +1,17 @@ +actions +uninstrumentSelected + + | package | + package := (self instrumentedPackagesWithTitle at: self selectionInstrumented). + self instrumentedPackages remove: package. + + self updateUninstrumentedPackages. + + self changed: #instrumentedPackagesWithTitle. + self changed: #uninstrumentedPackagesWithTitle. + selectionInstrumented ifNotNil: + [selectionInstrumented := selectionInstrumented min: instrumentedPackages size + 1. + self changed: #selectionInstrumented]. + self changed: #hasInstrumentedSelection. + self changed: #hasUninstrumentedSelection. + \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/uninstrumentedPackages.st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/uninstrumentedPackages.st new file mode 100644 index 00000000..7b336399 --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/uninstrumentedPackages.st @@ -0,0 +1,4 @@ +accessing +uninstrumentedPackages + + ^ uninstrumentedPackages \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/uninstrumentedPackagesWithTitle.st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/uninstrumentedPackagesWithTitle.st new file mode 100644 index 00000000..a8c27f04 --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/uninstrumentedPackagesWithTitle.st @@ -0,0 +1,4 @@ +accessing +uninstrumentedPackagesWithTitle + + ^ #('-- Untracked Packages --'), self uninstrumentedPackages \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/updateUninstrumentedPackages.st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/updateUninstrumentedPackages.st new file mode 100644 index 00000000..a47cec10 --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/updateUninstrumentedPackages.st @@ -0,0 +1,6 @@ +choosing packages +updateUninstrumentedPackages + + uninstrumentedPackages := self categoriesPlusPrefixes reject: [:package | + self instrumentedPackages + anySatisfy: [:tracked | package = tracked or: [package beginsWith: tracked, '-']]] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/methodProperties.json b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/methodProperties.json new file mode 100644 index 00000000..25837860 --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/methodProperties.json @@ -0,0 +1,29 @@ +{ + "class" : { + "configure" : "pre 1/22/2021 17:01", + "packagesToInstrument" : "pre 3/11/2021 16:03" }, + "instance" : { + "accept" : "pre 1/22/2021 16:49", + "buildButtons:" : "pre 1/22/2021 17:02", + "buildInstrumentedList:" : "pre 1/22/2021 16:51", + "buildUninstrumentedList:" : "pre 1/22/2021 16:51", + "buildWith:" : "pre 1/22/2021 16:52", + "buttonWidth" : "TB 4/22/2018 11:44", + "categoriesPlusPrefixes" : "TB 4/22/2018 00:37", + "configure" : "pre 3/11/2021 16:38", + "hasInstrumentedSelection" : "pre 1/22/2021 16:55", + "hasUninstrumentedSelection" : "pre 1/22/2021 16:56", + "inform:" : "pre 1/22/2021 16:56", + "initialExtent" : "TB 4/22/2018 01:06", + "instrumentSelected" : "pre 1/22/2021 16:57", + "instrumentedPackages" : "pre 1/22/2021 16:59", + "instrumentedPackagesWithTitle" : "pre 3/11/2021 16:08", + "packagesToInstrument" : "pre 1/22/2021 17:01", + "selectionInstrumented" : "pre 1/22/2021 16:58", + "selectionInstrumented:" : "pre 1/22/2021 16:58", + "selectionUninstrumented" : "pre 1/22/2021 16:58", + "selectionUninstrumented:" : "pre 1/22/2021 16:59", + "uninstrumentSelected" : "pre 3/11/2021 16:16", + "uninstrumentedPackages" : "pre 1/22/2021 16:59", + "uninstrumentedPackagesWithTitle" : "pre 1/22/2021 17:00", + "updateUninstrumentedPackages" : "pre 1/22/2021 17:00" } } diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/properties.json b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/properties.json new file mode 100644 index 00000000..4c44e51c --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/properties.json @@ -0,0 +1,18 @@ +{ + "category" : "Babylonian-UI-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + "PackagesToInstrument" ], + "commentStamp" : "pre 3/11/2021 16:02", + "instvars" : [ + "acceptChanges", + "instrumentedPackages", + "selectionInstrumented", + "selectionUninstrumented", + "uninstrumentedPackages" ], + "name" : "BPConfigureInstrumentation", + "pools" : [ + ], + "super" : "Model", + "type" : "normal" } diff --git a/packages/Babylonian-UI.package/BPEmojis.class/class/emojiFor..st b/packages/Babylonian-UI.package/BPEmojis.class/class/emojiFor..st index 00bff3ce..f9bb292a 100644 --- a/packages/Babylonian-UI.package/BPEmojis.class/class/emojiFor..st +++ b/packages/Babylonian-UI.package/BPEmojis.class/class/emojiFor..st @@ -1,4 +1,4 @@ emojis emojiFor: anObject - ^ self perform: (self all atWrap: anObject identityHash) \ No newline at end of file + ^ self emojiForHash: anObject identityHash \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPEmojis.class/class/emojiForHash..st b/packages/Babylonian-UI.package/BPEmojis.class/class/emojiForHash..st new file mode 100644 index 00000000..6dc204c8 --- /dev/null +++ b/packages/Babylonian-UI.package/BPEmojis.class/class/emojiForHash..st @@ -0,0 +1,4 @@ +emojis +emojiForHash: aNumber + + ^ self perform: (self all atWrap: aNumber) \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPEmojis.class/methodProperties.json b/packages/Babylonian-UI.package/BPEmojis.class/methodProperties.json index fda89eab..0036b4c4 100644 --- a/packages/Babylonian-UI.package/BPEmojis.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPEmojis.class/methodProperties.json @@ -6,7 +6,8 @@ "e000IconContents" : "pre 7/23/2019 09:41", "e001Icon" : "pre 7/23/2019 09:41", "e001IconContents" : "pre 7/23/2019 09:41", - "emojiFor:" : "pre 7/23/2019 09:54", + "emojiFor:" : "cmfcmf 10/23/2020 16:27", + "emojiForHash:" : "cmfcmf 10/23/2020 16:26", "i1F400Icon" : "pre 7/23/2019 09:40", "i1F400IconContents" : "pre 7/23/2019 09:40", "i1F402Icon" : "pre 7/23/2019 09:40", diff --git a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/addCallgraphMorphs.st b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/addCallgraphMorphs.st new file mode 100644 index 00000000..4691fb97 --- /dev/null +++ b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/addCallgraphMorphs.st @@ -0,0 +1,27 @@ +callgraph +addCallgraphMorphs + + | sidebarButton | + "self addMorphBack: (TextMorph new + color: Color black; + hResizing: #shrinkWrap; + vResizing: #shrinkWrap; + readOnly: true; + contents: ''; + name: #duration; + yourself)." + + sidebarButton := IconicButton new. + sidebarButton + labelGraphic: (BPIcons sidebarIcon scaledToSize: self iconSize * 0.8); + name: #contextTrace; + color: Color transparent; + borderWidth: 0; + extent: sidebarButton extent * 0.8. + sidebarButton + actionSelector: #viewInSidebar; + target: self. + self addMorphBack: sidebarButton. + ^ sidebarButton + + \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/step.st b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/step.st index 0507da6b..321891fd 100644 --- a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/step.st +++ b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/step.st @@ -9,4 +9,8 @@ step (trace notNil and: [trace hasTraceCompleted not and: [self example tracingIsStillRunning]]) ifTrue: [self ensureLoaderIcon] - ifFalse: [self ensureNoLoaderIcon]. \ No newline at end of file + ifFalse: [self ensureNoLoaderIcon]. + + "(trace notNil and: [trace hasTraceCompleted] and: [trace exampleErrored not]) + ifTrue: [(self submorphNamed: #duration) contents: trace duration asMilliSeconds asString, ' ms'] + ifFalse: [(self submorphNamed: #duration) contents: 'did not run yet']" \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/updateMorphs.st b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/updateMorphs.st index 3d2604dc..85f2484c 100644 --- a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/updateMorphs.st +++ b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/updateMorphs.st @@ -10,4 +10,5 @@ updateMorphs addExampleNameMorph; addExampleConfigurationButtonMorph; addExampleSpecificMorphs; - addDeleteButtonMorph. \ No newline at end of file + addCallgraphMorphs; + addDeleteButtonMorph \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/viewInSidebar.st b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/viewInSidebar.st new file mode 100644 index 00000000..ba736247 --- /dev/null +++ b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/viewInSidebar.st @@ -0,0 +1,4 @@ +actions +viewInSidebar + + self containingBrowser sidebarShowExample: self example id: 0 traceValue: nil \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPExampleMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPExampleMorph.class/methodProperties.json index b629e521..5f22aeac 100644 --- a/packages/Babylonian-UI.package/BPExampleMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPExampleMorph.class/methodProperties.json @@ -4,6 +4,7 @@ "instance" : { "activateExampleButtonClicked" : "pre 1/6/2021 19:23", "addActivationButtonMorph" : "pre 9/30/2020 10:35", + "addCallgraphMorphs" : "pre 2/22/2021 11:50", "addCollapseButtonMorph" : "pre 2/22/2021 12:05", "addDeleteButtonMorph" : "pre 2/22/2021 12:06", "addExampleConfigurationButtonMorph" : "pre 2/22/2021 12:06", @@ -23,7 +24,8 @@ "isCollapsed" : "pre 1/12/2021 10:20", "isExample" : "pre 9/30/2020 10:34", "isExampleActive" : "pre 9/30/2020 10:34", - "removeButtonClicked" : "pre 1/21/2021 17:08", - "step" : "pre 1/7/2021 09:29", + "removeButtonClicked" : "pre 1/6/2021 19:41", + "step" : "pre 1/15/2021 13:43", "textEmphasis" : "pre 9/30/2020 10:35", - "updateMorphs" : "pre 1/21/2021 16:22" } } + "updateMorphs" : "pre 2/22/2021 11:49", + "viewInSidebar" : "pre 1/20/2021 17:22" } } diff --git a/packages/Babylonian-UI.package/BPExamplesBrowser.class/methodProperties.json b/packages/Babylonian-UI.package/BPExamplesBrowser.class/methodProperties.json index ad926c08..13317dbe 100644 --- a/packages/Babylonian-UI.package/BPExamplesBrowser.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPExamplesBrowser.class/methodProperties.json @@ -2,8 +2,8 @@ "class" : { "open" : "pre 10/13/2020 15:15" }, "instance" : { - "actualExampleList" : "pre 2/15/2021 11:15", - "actualPackageList" : "pre 2/15/2021 11:15", + "actualExampleList" : "pre 2/15/2021 10:29", + "actualPackageList" : "pre 2/15/2021 10:29", "buildExamplesListWith:" : "pre 10/13/2020 14:49", "buildPackagesListWith:" : "pre 10/13/2020 14:45", "buildWith:" : "pre 10/13/2020 14:51", diff --git a/packages/Babylonian-UI.package/BPLazyListMorph.class/README.md b/packages/Babylonian-UI.package/BPLazyListMorph.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-UI.package/BPLazyListMorph.class/instance/backgroundColorForRow.item..st b/packages/Babylonian-UI.package/BPLazyListMorph.class/instance/backgroundColorForRow.item..st new file mode 100644 index 00000000..48acace0 --- /dev/null +++ b/packages/Babylonian-UI.package/BPLazyListMorph.class/instance/backgroundColorForRow.item..st @@ -0,0 +1,7 @@ +drawing +backgroundColorForRow: row item: item + + "never overwrite background color when hovered or selected" + (row == selectedRow or: [(PluggableListMorph highlightHoveredRow and: [row == self listSource hoverRow])]) ifTrue: [^ nil]. + + ^ self listSource backgroundColorForRow: row \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPLazyListMorph.class/instance/display.atRow.on..st b/packages/Babylonian-UI.package/BPLazyListMorph.class/instance/display.atRow.on..st new file mode 100644 index 00000000..fca335f2 --- /dev/null +++ b/packages/Babylonian-UI.package/BPLazyListMorph.class/instance/display.atRow.on..st @@ -0,0 +1,16 @@ +drawing +display: item atRow: row on: canvas + + + (self backgroundColorForRow: row item: item) ifNotNil: [:backgroundColor | | drawBounds fill | + drawBounds := self drawBoundsForRow: row. + fill := backgroundColor isColor + ifTrue: [SolidFillStyle color: backgroundColor] + ifFalse: [backgroundColor]. + fill isGradientFill ifTrue: [ + fill origin: drawBounds topLeft. + fill direction: 0@ drawBounds height]. + + canvas fillRectangle: drawBounds fillStyle: fill]. + + super display: item atRow: row on: canvas \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPLazyListMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPLazyListMorph.class/methodProperties.json new file mode 100644 index 00000000..65d04dde --- /dev/null +++ b/packages/Babylonian-UI.package/BPLazyListMorph.class/methodProperties.json @@ -0,0 +1,6 @@ +{ + "class" : { + }, + "instance" : { + "backgroundColorForRow:item:" : "cmfcmf 11/6/2020 15:44", + "display:atRow:on:" : "cmfcmf 11/6/2020 15:36" } } diff --git a/packages/Babylonian-UI.package/BPLazyListMorph.class/properties.json b/packages/Babylonian-UI.package/BPLazyListMorph.class/properties.json new file mode 100644 index 00000000..075cb809 --- /dev/null +++ b/packages/Babylonian-UI.package/BPLazyListMorph.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-UI-ToolBuilder", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPLazyListMorph", + "pools" : [ + ], + "super" : "LazyListMorph", + "type" : "normal" } diff --git a/packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/README.md b/packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/instance/bottomColor..st b/packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/instance/bottomColor..st new file mode 100644 index 00000000..498136f5 --- /dev/null +++ b/packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/instance/bottomColor..st @@ -0,0 +1,4 @@ +accessing +bottomColor: aColor + + bottomColor := aColor \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/instance/drawOn..st b/packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/instance/drawOn..st new file mode 100644 index 00000000..06604404 --- /dev/null +++ b/packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/instance/drawOn..st @@ -0,0 +1,8 @@ +drawing +drawOn: aCanvas + + aCanvas + line: self innerBounds bottomLeft + to: self innerBounds bottomRight + width: 2 color: bottomColor. + super drawOn: aCanvas \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/instance/initialize.st b/packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/instance/initialize.st new file mode 100644 index 00000000..f0afa350 --- /dev/null +++ b/packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/instance/initialize.st @@ -0,0 +1,13 @@ +initialization +initialize + + + super initialize. + self + vResizing: #shrinkWrap; + hResizing: #shrinkWrap; + changeTableLayout; + listDirection: #leftToRight; + borderWidth: 0; + color: Color transparent; + bottomColor: Color transparent \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/methodProperties.json b/packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/methodProperties.json new file mode 100644 index 00000000..199d7060 --- /dev/null +++ b/packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/methodProperties.json @@ -0,0 +1,7 @@ +{ + "class" : { + }, + "instance" : { + "bottomColor:" : "cmfcmf 11/10/2020 13:27", + "drawOn:" : "pre 1/15/2021 14:43", + "initialize" : "pre 1/15/2021 14:43" } } diff --git a/packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/properties.json b/packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/properties.json new file mode 100644 index 00000000..2fe5eff2 --- /dev/null +++ b/packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-UI", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "bottomColor" ], + "name" : "BPMorphWithBottomBorder", + "pools" : [ + ], + "super" : "Morph", + "type" : "normal" } diff --git a/packages/Babylonian-UI.package/BPPluggableListMorph.class/README.md b/packages/Babylonian-UI.package/BPPluggableListMorph.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-UI.package/BPPluggableListMorph.class/instance/listMorphClass.st b/packages/Babylonian-UI.package/BPPluggableListMorph.class/instance/listMorphClass.st new file mode 100644 index 00000000..741b1fd7 --- /dev/null +++ b/packages/Babylonian-UI.package/BPPluggableListMorph.class/instance/listMorphClass.st @@ -0,0 +1,4 @@ +private +listMorphClass + + ^ BPLazyListMorph \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPPluggableListMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPPluggableListMorph.class/methodProperties.json new file mode 100644 index 00000000..6d1ae763 --- /dev/null +++ b/packages/Babylonian-UI.package/BPPluggableListMorph.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "listMorphClass" : "cmfcmf 11/6/2020 15:14" } } diff --git a/packages/Babylonian-UI.package/BPPluggableListMorph.class/properties.json b/packages/Babylonian-UI.package/BPPluggableListMorph.class/properties.json new file mode 100644 index 00000000..996d4402 --- /dev/null +++ b/packages/Babylonian-UI.package/BPPluggableListMorph.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-UI-ToolBuilder", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPPluggableListMorph", + "pools" : [ + ], + "super" : "PluggableListMorph", + "type" : "normal" } diff --git a/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/README.md b/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/instance/backgroundColorForRow..st b/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/instance/backgroundColorForRow..st new file mode 100644 index 00000000..20d81fa3 --- /dev/null +++ b/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/instance/backgroundColorForRow..st @@ -0,0 +1,4 @@ +as yet unclassified +backgroundColorForRow: aNumber + + ^ backgroundColorList at: (self modelIndexFor: aNumber) ifAbsent: [nil] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/instance/listMorphClass.st b/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/instance/listMorphClass.st new file mode 100644 index 00000000..a56e04aa --- /dev/null +++ b/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/instance/listMorphClass.st @@ -0,0 +1,4 @@ +as yet unclassified +listMorphClass + + ^ BPLazyListMorph \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/instance/setGetBackgroundColorSelector..st b/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/instance/setGetBackgroundColorSelector..st new file mode 100644 index 00000000..28a5eb86 --- /dev/null +++ b/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/instance/setGetBackgroundColorSelector..st @@ -0,0 +1,4 @@ +as yet unclassified +setGetBackgroundColorSelector: aSymbol + + getBackgroundColorSelector := aSymbol \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/instance/update..st b/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/instance/update..st new file mode 100644 index 00000000..f8f58184 --- /dev/null +++ b/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/instance/update..st @@ -0,0 +1,5 @@ +as yet unclassified +update: aSymbol + + aSymbol == getBackgroundColorSelector ifTrue: [self updateBackgroundColors]. + super update: aSymbol \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/instance/updateBackgroundColors.st b/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/instance/updateBackgroundColors.st new file mode 100644 index 00000000..ce7f5af5 --- /dev/null +++ b/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/instance/updateBackgroundColors.st @@ -0,0 +1,8 @@ +as yet unclassified +updateBackgroundColors + + | size | + getBackgroundColorSelector ifNil: [^ self]. + size := self fullListSize. + backgroundColorList := OrderedCollection new: size. + 1 to: size do: [:i | backgroundColorList addLast: (model perform: getBackgroundColorSelector with: i)] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/instance/updateList.st b/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/instance/updateList.st new file mode 100644 index 00000000..d56277a7 --- /dev/null +++ b/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/instance/updateList.st @@ -0,0 +1,5 @@ +as yet unclassified +updateList + + super updateList. + self updateBackgroundColors \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/methodProperties.json new file mode 100644 index 00000000..82690f3e --- /dev/null +++ b/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/methodProperties.json @@ -0,0 +1,10 @@ +{ + "class" : { + }, + "instance" : { + "backgroundColorForRow:" : "cmfcmf 11/9/2020 10:57", + "listMorphClass" : "cmfcmf 11/6/2020 15:20", + "setGetBackgroundColorSelector:" : "cmfcmf 11/6/2020 15:46", + "update:" : "cmfcmf 1/4/2021 15:04", + "updateBackgroundColors" : "cmfcmf 11/9/2020 10:49", + "updateList" : "cmfcmf 11/9/2020 10:50" } } diff --git a/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/properties.json b/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/properties.json new file mode 100644 index 00000000..22d50e0e --- /dev/null +++ b/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Babylonian-UI-ToolBuilder", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "getBackgroundColorSelector", + "backgroundColorList" ], + "name" : "BPPluggableMultiColumnListMorph", + "pools" : [ + ], + "super" : "PluggableMultiColumnListMorph", + "type" : "normal" } diff --git a/packages/Babylonian-UI.package/BPPluggableMultiColumnListSpec.class/README.md b/packages/Babylonian-UI.package/BPPluggableMultiColumnListSpec.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-UI.package/BPPluggableMultiColumnListSpec.class/instance/backgroundColor..st b/packages/Babylonian-UI.package/BPPluggableMultiColumnListSpec.class/instance/backgroundColor..st new file mode 100644 index 00000000..e757191d --- /dev/null +++ b/packages/Babylonian-UI.package/BPPluggableMultiColumnListSpec.class/instance/backgroundColor..st @@ -0,0 +1,4 @@ +as yet unclassified +backgroundColor: aSymbol + + backgroundColor := aSymbol \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPPluggableMultiColumnListSpec.class/instance/backgroundColor.st b/packages/Babylonian-UI.package/BPPluggableMultiColumnListSpec.class/instance/backgroundColor.st new file mode 100644 index 00000000..ade3fb94 --- /dev/null +++ b/packages/Babylonian-UI.package/BPPluggableMultiColumnListSpec.class/instance/backgroundColor.st @@ -0,0 +1,4 @@ +as yet unclassified +backgroundColor + + ^ backgroundColor \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPPluggableMultiColumnListSpec.class/instance/buildWith..st b/packages/Babylonian-UI.package/BPPluggableMultiColumnListSpec.class/instance/buildWith..st new file mode 100644 index 00000000..2f3283f7 --- /dev/null +++ b/packages/Babylonian-UI.package/BPPluggableMultiColumnListSpec.class/instance/buildWith..st @@ -0,0 +1,4 @@ +as yet unclassified +buildWith: builder + + ^builder buildBPPluggableMultiColumnList: self \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPPluggableMultiColumnListSpec.class/methodProperties.json b/packages/Babylonian-UI.package/BPPluggableMultiColumnListSpec.class/methodProperties.json new file mode 100644 index 00000000..9fad5956 --- /dev/null +++ b/packages/Babylonian-UI.package/BPPluggableMultiColumnListSpec.class/methodProperties.json @@ -0,0 +1,7 @@ +{ + "class" : { + }, + "instance" : { + "backgroundColor" : "cmfcmf 11/6/2020 15:47", + "backgroundColor:" : "cmfcmf 11/6/2020 15:46", + "buildWith:" : "cmfcmf 11/6/2020 15:16" } } diff --git a/packages/Babylonian-UI.package/BPPluggableMultiColumnListSpec.class/properties.json b/packages/Babylonian-UI.package/BPPluggableMultiColumnListSpec.class/properties.json new file mode 100644 index 00000000..3b6a482f --- /dev/null +++ b/packages/Babylonian-UI.package/BPPluggableMultiColumnListSpec.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-UI-ToolBuilder", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "backgroundColor" ], + "name" : "BPPluggableMultiColumnListSpec", + "pools" : [ + ], + "super" : "PluggableMultiColumnListSpec", + "type" : "normal" } diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/exploreButtonClickedFor..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/exploreButtonClickedFor..st index 82c52f31..97b371f1 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/exploreButtonClickedFor..st +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/exploreButtonClickedFor..st @@ -1,4 +1,13 @@ actions -exploreButtonClickedFor: tracedValues +exploreButtonClickedFor: aBPTrace + + | menu | + menu := MenuMorph new. + menu + title: 'traced values'; + add: 'explore' action: [((aBPTrace valuesForProbeId: self id) collect: [:v | v tracedValue]) explore]; + add: 'inspect' action: [((aBPTrace valuesForProbeId: self id) collect: [:v | v tracedValue]) inspect]; + addLine. - (tracedValues collect: [:aValue | aValue tracedValue]) explore. \ No newline at end of file + self callgraphMenu: menu forTrace: aBPTrace. + menu popUpInWorld diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExploreButtonFor..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExploreButtonFor..st index 5c3c91aa..65c2a3fa 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExploreButtonFor..st +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExploreButtonFor..st @@ -10,7 +10,7 @@ newExploreButtonFor: aTrace extent: (exploreButton extent x * 0.9)@(exploreButton extent y + self scrollBarSize). exploreButton actionSelector: #exploreButtonClickedFor:; - arguments: {aTrace valuesForProbeId: self id}; + arguments: {aTrace}; target: self; balloonText: 'click to see the traced values of this probe'. ^ exploreButton \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/selectInSidebarTracedValue.forExample..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/selectInSidebarTracedValue.forExample..st new file mode 100644 index 00000000..52126070 --- /dev/null +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/selectInSidebarTracedValue.forExample..st @@ -0,0 +1,7 @@ +private - sidebar +selectInSidebarTracedValue: traceValue forExample: anExample + + | entry callgraph | + callgraph := anExample currentCallgraph. + entry := callgraph babylonianEntries detect: [:each | (each respondsTo: #traceValue) and: [each traceValue == traceValue]]. + BPSelectedCallgraphEntries select: entry fromCallgraph: callgraph forExample: anExample. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valueMorphFor..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valueMorphFor..st deleted file mode 100644 index 33fb1677..00000000 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valueMorphFor..st +++ /dev/null @@ -1,7 +0,0 @@ -private -valueMorphFor: traceValue - - | morph | - morph := traceValue tracedValue bpProbeValueMorphIn: traceValue. - morph on: #click send: #value to: [traceValue tracedValue explore]. - ^ morph \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valueMorphFor.trace..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valueMorphFor.trace..st new file mode 100644 index 00000000..948d7fde --- /dev/null +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valueMorphFor.trace..st @@ -0,0 +1,24 @@ +private +valueMorphFor: traceValue trace: trace + + | morph wrapperMorph | + morph := traceValue tracedValue bpProbeValueMorphIn: traceValue. + morph on: #click send: #value to: [ | selection labels | + labels := {'explore' . 'view in sidebar'}. + BPBrowserSidebar showFancyAnalysisInCallgraph ifTrue: [ + labels := labels , {'select for callgraph analysis'}]. + selection := MenuMorph chooseFrom: labels lines: {3} title: 'Select action'. + selection caseOf: { + [1] -> [traceValue tracedValue explore]. + [2] -> [self containingBrowser sidebarShowExample: trace example id: self id traceValue: traceValue]. + [3] -> [self selectInSidebarTracedValue: traceValue forExample: trace example]} + otherwise: []]. + + ^ true ifTrue: [ + wrapperMorph := BPMorphWithBottomBorder new + bottomColor: (self colorForTraceValue: traceValue inTrace: trace); + hResizing: #shrinkWrap; + vResizing: #shrinkWrap; + addMorphBack: morph. + + wrapperMorph] ifFalse: [morph] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valuesMorphFor..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valuesMorphFor..st index 8ff4e33c..b20146a8 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valuesMorphFor..st +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valuesMorphFor..st @@ -10,7 +10,7 @@ valuesMorphFor: trace valuesContainer := self newContainerMorph. values - do: [:v | valuesContainer addMorphBack: (self valueMorphFor: v)] + do: [:v | valuesContainer addMorphBack: (self valueMorphFor: v trace: trace)] separatedBy: [valuesContainer addMorphBack: ', ' asMorph]. ^ valuesContainer \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json index 781f0ed7..8deb86c3 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json @@ -16,8 +16,9 @@ "newScrollPane" : "pre 1/6/2021 10:50", "noValuesText" : "pre 7/7/2020 16:38", "relevantTracesOf:do:" : "pre 11/18/2019 12:47", + "selectInSidebarTracedValue:forExample:" : "pre 3/11/2021 15:26", "setExpressionButtonClicked" : "pre 9/22/2020 10:05", "updateExpressionMorphIfNecessary" : "jb 12/7/2020 19:00", "updateFrom:" : "pre 12/16/2020 18:53", - "valueMorphFor:" : "pre 10/12/2020 18:00", - "valuesMorphFor:" : "jb 12/3/2020 23:30" } } + "valueMorphFor:trace:" : "pre 3/11/2021 15:27", + "valuesMorphFor:" : "pre 1/15/2021 13:58" } } diff --git a/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/README.md b/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/class/initialize.st b/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/class/initialize.st new file mode 100644 index 00000000..7e647df1 --- /dev/null +++ b/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/class/initialize.st @@ -0,0 +1,10 @@ +class initialization +initialize + + "self initialize" + self environment at: #TheWorldMenu ifPresent: [:menu | + (menu respondsTo: #registerOpenCommand:) ifTrue: [ + menu unregisterOpenCommand: 'Babylonian Call-Graph Browser'. + menu registerOpenCommand: {'Babylonian Call-Graph Browser'. {self. #open}}]]. + + Smalltalk addToStartUpList: self. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/instance/contents.notifying..st b/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/instance/contents.notifying..st new file mode 100644 index 00000000..44f941c2 --- /dev/null +++ b/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/instance/contents.notifying..st @@ -0,0 +1,9 @@ +accessing +contents: input notifying: aController + + | result | + result := super contents: input notifying: aController. + + sidebar changed: #getExampleListLabels. + + ^ result \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/instance/messageIconFor..st b/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/instance/messageIconFor..st new file mode 100644 index 00000000..5fc0b6fc --- /dev/null +++ b/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/instance/messageIconFor..st @@ -0,0 +1,21 @@ +callgraph context menus +messageIconFor: aSelector + + "Direct copy from BPBrowser>>#messageIconFor:" + | baseIcon exampleIcon combinedIcon | + baseIcon := super messageIconFor: aSelector. + + exampleIcon := self selectedClassOrMetaClass ifNotNil: [:class | | meth | + meth := [class >> aSelector] on: KeyNotFound do: [^ baseIcon]. + meth bpExamples + ifEmpty: [ToolIcons blank] + ifNotEmpty: [BPIcons boxIcon]]. + exampleIcon := exampleIcon scaledToSize: 12. + + baseIcon ifNil: [^ exampleIcon]. + + combinedIcon := Form extent: 24@12 depth: 32. + combinedIcon copy: (0@0 extent: 12@12) from: baseIcon to: 0@0 rule: Form over. + combinedIcon copy: (0@0 extent: 12@12) from: exampleIcon to: 12@0 rule: Form over. + + ^ combinedIcon \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/methodProperties.json b/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/methodProperties.json new file mode 100644 index 00000000..657c88b5 --- /dev/null +++ b/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/methodProperties.json @@ -0,0 +1,6 @@ +{ + "class" : { + "initialize" : "pre 2/15/2021 10:36" }, + "instance" : { + "contents:notifying:" : "pre 3/11/2021 17:32", + "messageIconFor:" : "pre 2/22/2021 18:44" } } diff --git a/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/properties.json b/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/properties.json new file mode 100644 index 00000000..9a0ec36a --- /dev/null +++ b/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-UI", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPSimpleCallgraphBrowser", + "pools" : [ + ], + "super" : "BPCallgraphBrowser", + "type" : "normal" } diff --git a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/callgraphMenu.forTrace..st b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/callgraphMenu.forTrace..st new file mode 100644 index 00000000..f21f8165 --- /dev/null +++ b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/callgraphMenu.forTrace..st @@ -0,0 +1,23 @@ +callgraphs +callgraphMenu: menu forTrace: aTrace + + | example callgraph entries | + example := aTrace example. + callgraph := example currentCallgraph. + entries := callgraph select: [:each | (each isKindOf: BPCallgraphEntryBPProbeOrAssertion) and: [each id == self id]]. + + menu + add: 'add to selection' action: [entries do: [:each | + BPSelectedCallgraphEntries select: each fromCallgraph: callgraph forExample: example]]; + add: 'find ancestor and invocation paths (ignoring context)' action: [callgraph + interactiveAncestorSearchFor: entries + ignoringInvocationCounts: true + browseMethodBlock: [:methodReference | + self containingBrowser sidebarShowMethod: methodReference. + self containingBrowser browseReference: methodReference]]; + add: 'find ancestor and invocation paths (with context)' action: [callgraph + interactiveAncestorSearchFor: entries + ignoringInvocationCounts: false + browseMethodBlock: [:methodReference | + self containingBrowser sidebarShowMethod: methodReference. + self containingBrowser browseReference: methodReference]] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/colorForTraceValue.inTrace..st b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/colorForTraceValue.inTrace..st new file mode 100644 index 00000000..ff3baf94 --- /dev/null +++ b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/colorForTraceValue.inTrace..st @@ -0,0 +1,16 @@ +callgraphs +colorForTraceValue: aBPTraceValue inTrace: aBPTrace + + ^ (colorCache at: aBPTrace ifAbsentPut: [| callgraph values path paths uniquePaths colors | + callgraph := aBPTrace example currentCallgraph. + callgraph ifNil: ["No call graph yet" ^ Color transparent]. + values := aBPTrace valuesForProbeId: self id. + paths := values collect: [:value | | entry | + entry := callgraph detect: [:each | + (each isKindOf: BPCallgraphEntryBPProbeOrAssertion) and: [each traceValue == value]]. + path := (entry pathWithResolvedOutOfStackJumps: callgraph) allButLast collect: #asPathPart. + value -> path]. + uniquePaths := (paths collect: #value) withoutDuplicates. + colors := "("Color wheel: uniquePaths size" // 2), (Color wheel: uniquePaths size // 2 saturation: 0.3 brightness: 0.8)". + Dictionary newFrom: (paths collect: [:each | each key -> (colors at: (uniquePaths indexOf: each value))]) + ]) at: aBPTraceValue \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/initialize.st b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/initialize.st index 4b674f13..9a672e53 100644 --- a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/initialize.st +++ b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/initialize.st @@ -5,6 +5,8 @@ initialize | removeButton | super initialize. + colorCache := Dictionary new. + allTracesCompleted := false. slidersForFiltering := Set new. displayedTraces := Set new. diff --git a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/newExampleLineMorph.st b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/newExampleLineMorph.st index 63eeaaa6..de6ccea0 100644 --- a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/newExampleLineMorph.st +++ b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/newExampleLineMorph.st @@ -5,7 +5,7 @@ newExampleLineMorph color: Color transparent; changeTableLayout; layoutInset: 0; - listDirection: #leftToRight; + listDirection: #leftToRight; vResizing: #shrinkWrap; hResizing: #spaceFill; cellPositioning: #leftCenter; diff --git a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/viewCommonAncestorForTrace..st b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/viewCommonAncestorForTrace..st new file mode 100644 index 00000000..be854472 --- /dev/null +++ b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/viewCommonAncestorForTrace..st @@ -0,0 +1,14 @@ +callgraphs +viewCommonAncestorForTrace: aTrace + + | ancestor callgraph children paths | + callgraph := aTrace example currentCallgraph. + children := callgraph select: [:each | (each isKindOf: BPCallgraphEntryBPProbeOrAssertion) and: [each id == self id]]. + children := children collect: [:each | each parent methodReference = each traceValue methodReference ifTrue: [each parent] ifFalse: [each]]. + ancestor := callgraph commonAncestorOf: children ignoringInvocationCounts: true. + + ancestor ifNil: [^ UIManager default inform: 'Probe hits have no single common ancestor']. + self containingBrowser sidebarShowMethod: ancestor methodReference. + + paths := callgraph pathsBetween: ancestor andChildren: children. + paths explore \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json index eec4bbe2..a645e11e 100644 --- a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json @@ -3,6 +3,8 @@ "isAbstract" : "pre 9/25/2020 10:15" }, "instance" : { "annotationLabel" : "pre 2/22/2021 12:19", + "callgraphMenu:forTrace:" : " 2/22/2021 17:36:04", + "colorForTraceValue:inTrace:" : " 2/22/2021 17:36:04", "filterValues:throughSliderForTrace:" : "pre 9/28/2020 11:21", "initialize" : "pre 2/22/2021 12:19", "listenToSlider:" : "jb 12/7/2020 18:59", @@ -14,4 +16,5 @@ "step" : "pre 1/11/2021 13:59", "stepTime" : "pre 8/20/2020 17:35", "update:" : "jb 12/7/2020 19:00", - "updateFrom:" : "jb 12/7/2020 19:00" } } + "updateFrom:" : "jb 12/7/2020 19:00", + "viewCommonAncestorForTrace:" : "pre 1/15/2021 13:59" } } diff --git a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/properties.json b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/properties.json index 2b19df5a..b288e075 100644 --- a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/properties.json +++ b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/properties.json @@ -10,7 +10,8 @@ "allTracesCompleted", "tracesMorph", "widgetsMorph", - "slidersForFiltering" ], + "slidersForFiltering", + "colorCache" ], "name" : "BPTraceBasedMorph", "pools" : [ ], diff --git a/packages/Babylonian-UI.package/CodeHolder.extension/instance/allAnnotationsMorphs.st b/packages/Babylonian-UI.package/CodeHolder.extension/instance/allAnnotationsMorphs.st new file mode 100644 index 00000000..a0c56ef7 --- /dev/null +++ b/packages/Babylonian-UI.package/CodeHolder.extension/instance/allAnnotationsMorphs.st @@ -0,0 +1,4 @@ +*Babylonian-UI-annotations +allAnnotationsMorphs + + ^ self codeTextMorph allMorphs select: [:m | m isBPAnnotationMorph] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/CodeHolder.extension/instance/compiledMethod.st b/packages/Babylonian-UI.package/CodeHolder.extension/instance/compiledMethod.st index 2df8e503..0293bbdb 100644 --- a/packages/Babylonian-UI.package/CodeHolder.extension/instance/compiledMethod.st +++ b/packages/Babylonian-UI.package/CodeHolder.extension/instance/compiledMethod.st @@ -1,4 +1,4 @@ *Babylonian-UI-private compiledMethod "Only callable on object responding to methodReference, currently BPBrowser and MessageSet" - ^ self methodReference compiledMethod \ No newline at end of file + ^ self methodReference ifNotNil: [:r | r compiledMethod] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/CodeHolder.extension/methodProperties.json b/packages/Babylonian-UI.package/CodeHolder.extension/methodProperties.json index 6798814d..c591f447 100644 --- a/packages/Babylonian-UI.package/CodeHolder.extension/methodProperties.json +++ b/packages/Babylonian-UI.package/CodeHolder.extension/methodProperties.json @@ -8,10 +8,11 @@ "addProbeToSelection" : "pre 8/6/2019 16:11", "addReplacementToSelection" : "pre 11/14/2019 15:50", "addSliderToSelection" : "pre 9/22/2020 18:27", + "allAnnotationsMorphs" : "pre 1/15/2021 14:02", "annotationsInSelection" : "pre 11/8/2019 12:05", "bindingOf:" : "pre 8/25/2020 10:10", "codePaneMenuAnnotationItems:" : "pre 9/24/2020 11:33", - "compiledMethod" : "pre 10/6/2020 11:11", + "compiledMethod" : "pre 1/21/2021 14:02", "determineIntervalToAnnotateFor:forNodes:" : "pre 9/22/2020 18:16", "doItReceiver" : "pre 8/25/2020 10:03", "exampleForEvaluation" : "pre 10/6/2020 09:16", diff --git a/packages/Babylonian-UI.package/MorphicToolBuilder.extension/instance/buildBPCallgraph..st b/packages/Babylonian-UI.package/MorphicToolBuilder.extension/instance/buildBPCallgraph..st new file mode 100644 index 00000000..c2011aa9 --- /dev/null +++ b/packages/Babylonian-UI.package/MorphicToolBuilder.extension/instance/buildBPCallgraph..st @@ -0,0 +1,58 @@ +*Babylonian-UI-ToolBuilder +buildBPCallgraph: aSpec + "largely copied from buildPluggableTree:" + | widget | + widget := BPCallgraphPluggableTreeMorph new. + self register: widget id: aSpec name. + + widget getLabelSelector: aSpec label. + widget getIconSelector: aSpec icon. + + widget model: aSpec model. + widget nodeClass: aSpec nodeClass. + + widget getRootsSelector: aSpec roots. + widget getChildrenSelector: aSpec getChildren. + widget hasChildrenSelector: aSpec hasChildren. + + widget getSelectedSelector: aSpec getSelected. + widget setSelectedSelector: aSpec setSelected. + widget getSelectedPathSelector: aSpec getSelectedPath. + widget setSelectedPathSelector: aSpec setSelectedPath. + + widget setSelectedParentSelector: aSpec setSelectedParent. + + widget getHelpSelector: aSpec help. + widget getMenuSelector: aSpec menu. + + widget keystrokeActionSelector: aSpec keyPress. + widget autoDeselect: aSpec autoDeselect. + widget doubleClickSelector: aSpec doubleClick. + + widget dropItemSelector: aSpec dropItem. + widget wantsDropSelector: aSpec dropAccept. + widget dragItemSelector: aSpec dragItem. + widget dragStartedSelector: aSpec dragStarted. + + widget columns: aSpec columns. + + "Override default scroll bar policies if needed. Widget will use preference values otherwise." + aSpec hScrollBarPolicy ifNotNil: [:policy | + policy caseOf: { + [#always] -> [widget alwaysShowHScrollBar]. + [#never] -> [widget hideHScrollBarIndefinitely]. + [#whenNeeded] -> [widget showHScrollBarOnlyWhenNeeded]. } ]. + aSpec vScrollBarPolicy ifNotNil: [:policy | + policy caseOf: { + [#always] -> [widget alwaysShowVScrollBar]. + [#never] -> [widget hideVScrollBarIndefinitely]. + [#whenNeeded] -> [widget showVScrollBarOnlyWhenNeeded]. } ]. + + self setFrame: aSpec frame in: widget. + self setLayoutHintsFor: widget spec: aSpec. + + parent ifNotNil:[self add: widget to: parent]. +" panes ifNotNil:[ + aSpec roots ifNotNil:[panes add: aSpec roots]. + ]. " + ^widget \ No newline at end of file diff --git a/packages/Babylonian-UI.package/MorphicToolBuilder.extension/instance/buildBPPluggableMultiColumnList..st b/packages/Babylonian-UI.package/MorphicToolBuilder.extension/instance/buildBPPluggableMultiColumnList..st new file mode 100644 index 00000000..82d32dc8 --- /dev/null +++ b/packages/Babylonian-UI.package/MorphicToolBuilder.extension/instance/buildBPPluggableMultiColumnList..st @@ -0,0 +1,41 @@ +*Babylonian-UI-ToolBuilder +buildBPPluggableMultiColumnList: aSpec + + "largely copied from buildPluggableMultiColumnList:" + | widget listClass getIndex setIndex | + aSpec getSelected ifNil:[ + listClass := BPPluggableMultiColumnListMorph. + getIndex := aSpec getIndex. + setIndex := aSpec setIndex. + ] ifNotNil: [ + self error: 'not supported'. + ]. + widget := listClass on: aSpec model + list: aSpec list + selected: getIndex + changeSelected: setIndex + menu: aSpec menu + keystroke: aSpec keyPress. + self register: widget id: aSpec name. + +" widget + dragItemSelector: aSpec dragItem; + dropItemSelector: aSpec dropItem; + wantsDropSelector: aSpec dropAccept; + dragStartedSelector: aSpec dragStarted." + + self setListPropertiesFor: widget spec: aSpec. + + "Be sure to enable the horizontal scrollbar if not all columns are #spaceFill." + (aSpec columnResizings anySatisfy: [:sym | sym ~= #spaceFill]) + ifTrue: [widget hScrollBarPolicy: #whenNeeded]. + + widget + cellPositioningForColumns: aSpec itemAlignments; + cellInsetForColumns: aSpec itemPaddings; + hResizingForColumns: aSpec columnResizings; + spaceFillWeightForColumns: aSpec columnSpaceFillWeights. + + widget setGetBackgroundColorSelector: aSpec backgroundColor. + + ^widget \ No newline at end of file diff --git a/packages/Babylonian-UI.package/MorphicToolBuilder.extension/methodProperties.json b/packages/Babylonian-UI.package/MorphicToolBuilder.extension/methodProperties.json new file mode 100644 index 00000000..5e165602 --- /dev/null +++ b/packages/Babylonian-UI.package/MorphicToolBuilder.extension/methodProperties.json @@ -0,0 +1,6 @@ +{ + "class" : { + }, + "instance" : { + "buildBPCallgraph:" : "cmfcmf 10/23/2020 17:28", + "buildBPPluggableMultiColumnList:" : "cmfcmf 11/6/2020 15:46" } } diff --git a/packages/Babylonian-UI.package/MorphicToolBuilder.extension/properties.json b/packages/Babylonian-UI.package/MorphicToolBuilder.extension/properties.json new file mode 100644 index 00000000..6d0ea559 --- /dev/null +++ b/packages/Babylonian-UI.package/MorphicToolBuilder.extension/properties.json @@ -0,0 +1,2 @@ +{ + "name" : "MorphicToolBuilder" } diff --git a/packages/Babylonian-UI.package/ToolBuilder.extension/instance/bpPluggableMultiColumnListSpec.st b/packages/Babylonian-UI.package/ToolBuilder.extension/instance/bpPluggableMultiColumnListSpec.st new file mode 100644 index 00000000..4dd8c9b6 --- /dev/null +++ b/packages/Babylonian-UI.package/ToolBuilder.extension/instance/bpPluggableMultiColumnListSpec.st @@ -0,0 +1,4 @@ +*Babylonian-UI-ToolBuilder +bpPluggableMultiColumnListSpec + + ^ BPPluggableMultiColumnListSpec \ No newline at end of file diff --git a/packages/Babylonian-UI.package/ToolBuilder.extension/methodProperties.json b/packages/Babylonian-UI.package/ToolBuilder.extension/methodProperties.json new file mode 100644 index 00000000..c91227d2 --- /dev/null +++ b/packages/Babylonian-UI.package/ToolBuilder.extension/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "bpPluggableMultiColumnListSpec" : "cmfcmf 11/6/2020 15:15" } } diff --git a/packages/Babylonian-UI.package/ToolBuilder.extension/properties.json b/packages/Babylonian-UI.package/ToolBuilder.extension/properties.json new file mode 100644 index 00000000..beb1e461 --- /dev/null +++ b/packages/Babylonian-UI.package/ToolBuilder.extension/properties.json @@ -0,0 +1,2 @@ +{ + "name" : "ToolBuilder" } diff --git a/packages/Babylonian-UI.package/monticello.meta/categories.st b/packages/Babylonian-UI.package/monticello.meta/categories.st index 61c3fb93..8998c27a 100644 --- a/packages/Babylonian-UI.package/monticello.meta/categories.st +++ b/packages/Babylonian-UI.package/monticello.meta/categories.st @@ -1 +1,3 @@ SystemOrganization addCategory: #'Babylonian-UI'! +SystemOrganization addCategory: #'Babylonian-UI-Callgraph'! +SystemOrganization addCategory: #'Babylonian-UI-ToolBuilder'! diff --git a/packages/BaselineOfBabylonianProgramming.package/BaselineOfBabylonianProgramming.class/instance/baseline..st b/packages/BaselineOfBabylonianProgramming.package/BaselineOfBabylonianProgramming.class/instance/baseline..st index a1975679..d14929b0 100644 --- a/packages/BaselineOfBabylonianProgramming.package/BaselineOfBabylonianProgramming.class/instance/baseline..st +++ b/packages/BaselineOfBabylonianProgramming.package/BaselineOfBabylonianProgramming.class/instance/baseline..st @@ -14,7 +14,9 @@ baseline: spec spec repository: 'http://www.hpi.uni-potsdam.de/hirschfeld/squeaksource/SwaUtilities']; package: 'ContextS2-Core' with: [ spec repository: 'http://www.hpi.uni-potsdam.de/hirschfeld/squeaksource/ContextSTrunk' ]; - package: 'Babylonian-Core' with: [spec requires: #('Babylonian-Compiler' 'ContextS2-Core')]; + baseline: 'MethodWrappers' with: + [ spec repository: 'github://hpi-swa/MethodWrappers:master/packages' ]; + package: 'Babylonian-Core' with: [spec requires: #('Babylonian-Compiler' 'ContextS2-Core' 'MethodWrappers')]; package: 'Babylonian-Compiler' with: [ spec requires: #('Ohm' 'PEG'); @@ -28,4 +30,4 @@ baseline: spec spec group: 'default' with: #('Babylonian-Core' 'Babylonian-UI'); group: 'tests' with: #('Babylonian-Tests')]; - yourself \ No newline at end of file + yourself