From 7123aa97cdea9ef2185dd06c97a816b331525c27 Mon Sep 17 00:00:00 2001 From: Christian Flach Date: Thu, 29 Oct 2020 14:41:12 +0100 Subject: [PATCH 01/71] MY STUFF \o/ --- .../BPCompiler.class/class/compilerClass.st | 4 +- .../instance/compile.ifFail..st | 18 +-- .../instance/compileCue.noPattern.ifFail..st | 24 ++++ .../BPCompiler.class/methodProperties.json | 7 +- ...ecutableCode.statements.finalStatement..st | 29 ++++ .../methodProperties.json | 1 + .../BPByteCodeAssociation.class/README.md | 1 + .../instance/literalEqual..st | 4 + .../methodProperties.json | 5 + .../properties.json | 14 ++ .../BPByteCodeCallgraphTracer.class/README.md | 0 .../class/customEvent.data..st | 5 + .../class/enter.invocation..st | 5 + .../class/exit.invocation.returns..st | 5 + .../class/swapSenderOf.newSender..st | 5 + .../instance/customEvent.data..st | 7 + .../instance/enter.invocation..st | 6 + .../instance/eventStream.st | 4 + .../instance/eventsForTree.st | 105 +++++++++++++++ .../instance/eventsToString.st | 125 ++++++++++++++++++ .../instance/eventsToStringForTest.st | 4 + .../instance/exit.invocation.returns..st | 7 + .../instance/initialize.st | 17 +++ .../instance/instrumentedDepthOf.below..st | 12 ++ .../instance/swapSenderOf.newSender..st | 36 +++++ .../methodProperties.json | 17 +++ .../properties.json | 15 +++ .../BPByteCodeMethodState.class/README.md | 0 .../class/ofMethod..st | 4 + .../instance/initialize.st | 6 + .../instance/isActive.st | 4 + .../instance/isInactive.st | 4 + .../instance/nopPositions.st | 4 + .../instance/setNOPPositions..st | 4 + .../instance/state..st | 5 + .../methodProperties.json | 10 ++ .../properties.json | 15 +++ .../README.md | 1 + .../instance/check..st | 4 + .../instance/findNode.in..st | 8 ++ .../instance/visitAssignmentNode..st | 5 + .../instance/visitBlockNode..st | 9 ++ .../instance/visitBraceNode..st | 5 + .../instance/visitCascadeNode..st | 5 + .../instance/visitCommentNode..st | 5 + .../instance/visitFieldNode..st | 5 + .../instance/visitFutureNode..st | 5 + .../instance/visitInstanceVariableNode..st | 5 + .../instance/visitLiteralNode..st | 5 + .../instance/visitLiteralVariableNode..st | 5 + .../instance/visitMessageNode..st | 5 + .../instance/visitMessageNodeInCascade..st | 5 + .../instance/visitMethodNode..st | 5 + .../instance/visitNewArrayNode..st | 5 + .../instance/visitRemoteTempVectorNode..st | 5 + .../instance/visitReturnNode..st | 5 + .../instance/visitSelectorNode..st | 5 + .../instance/visitTempVariableNode..st | 5 + .../instance/visitVariableNode..st | 5 + .../methodProperties.json | 25 ++++ .../properties.json | 16 +++ .../BPByteCodeRewriter.class/README.md | 0 .../class/adjustNumTemps.in..st | 8 ++ .../class/canEnableTracingFor..st | 22 +++ .../class/copyCompiledMethod..st | 16 +++ .../class/disableTracingForClass..st | 5 + .../class/disableTracingForClass.selector..st | 5 + .../class/disableTracingForClassCategory..st | 7 + .../class/disableTracingForCompiledMethod..st | 4 + .../disableTracingForCompiledMethod.mode..st | 5 + ...thod.mode.howToAddToMethodDictWhenSlow..st | 21 +++ .../class/enableTracingForClass..st | 5 + .../class/enableTracingForClass.selector..st | 5 + .../class/enableTracingForClassCategory..st | 7 + .../class/enableTracingForCompiledMethod..st | 4 + .../enableTracingForCompiledMethod.mode..st | 5 + ...thod.mode.howToAddToMethodDictWhenSlow..st | 25 ++++ .../class/getConfig..st | 4 + .../handleNonCompiledMethod.action.mode..st | 11 ++ .../class/hasActiveTracing..st | 4 + .../class/hasInactiveTracing..st | 4 + .../class/hasTracing..st | 4 + .../class/instrumentClass..st | 8 ++ .../class/instrumentClass.selector..st | 13 ++ .../class/instrumentClassCategory..st | 10 ++ .../class/instrumentCompiledMethod..st | 13 ++ .../class/instrumentContext.st | 16 +++ .../class/instrumentString..st | 21 +++ .../class/instrumentationMode.st | 4 + .../BPByteCodeRewriter.class/class/nuke.st | 19 +++ ...ClosureCreationByteCodeFor.withEncoder..st | 17 +++ .../class/privDisableTracingFor..st | 30 +++++ .../class/privEnableTracingFor..st | 123 +++++++++++++++++ ...teCodeFor.withEncoder.numArgs.numTemps..st | 11 ++ .../class/rewriteHeaderOf.numTemps..st | 4 + .../BPByteCodeRewriter.class/class/setup.st | 5 + .../class/shouldNeverInstrument.selector..st | 26 ++++ .../class/teardown.st | 4 + .../class/uninstallWrapper..st | 8 ++ .../class/uninstrumentClass..st | 8 ++ .../class/uninstrumentClass.selector..st | 7 + .../class/uninstrumentClassCategory..st | 10 ++ .../class/uninstrumentCompiledMethod..st | 6 + .../class/uninstrumentContext.st | 6 + .../methodProperties.json | 46 +++++++ .../BPByteCodeRewriter.class/properties.json | 14 ++ .../BPCallgraph.class/README.md | 0 .../BPCallgraph.class/instance/addRoot..st | 5 + .../instance/babylonianEntries.st | 5 + .../BPCallgraph.class/instance/detect..st | 5 + .../instance/detect.after..st | 8 ++ .../instance/detect.after.ifFound.ifNone..st | 5 + .../instance/detect.before..st | 8 ++ .../instance/detect.before.ifFound.ifNone..st | 5 + .../BPCallgraph.class/instance/do..st | 4 + .../BPCallgraph.class/instance/do.after..st | 21 +++ .../BPCallgraph.class/instance/do.before..st | 10 ++ .../BPCallgraph.class/instance/do.entry..st | 5 + .../BPCallgraph.class/instance/initialize.st | 5 + .../BPCallgraph.class/instance/roots.st | 4 + .../BPCallgraph.class/instance/select..st | 7 + .../BPCallgraph.class/methodProperties.json | 18 +++ .../BPCallgraph.class/properties.json | 15 +++ .../BPCallgraphEntry.class/README.md | 0 .../instance/addChild..st | 5 + .../instance/children.st | 4 + .../instance/doBrowse.st | 4 + .../instance/expandByDefault.st | 4 + .../instance/hasChildren.st | 4 + .../BPCallgraphEntry.class/instance/icon.st | 4 + .../instance/initialize.st | 6 + .../instance/keyPressed..st | 4 + .../BPCallgraphEntry.class/instance/label.st | 4 + .../BPCallgraphEntry.class/instance/menu..st | 4 + .../instance/parent..st | 4 + .../BPCallgraphEntry.class/instance/parent.st | 4 + .../BPCallgraphEntry.class/instance/path.st | 10 ++ .../BPCallgraphEntry.class/instance/root.st | 7 + .../instance/textColor.st | 4 + .../methodProperties.json | 19 +++ .../BPCallgraphEntry.class/properties.json | 15 +++ .../README.md | 0 .../instance/icon.st | 4 + .../instance/label.st | 10 ++ .../methodProperties.json | 6 + .../properties.json | 14 ++ .../BPCallgraphEntryBPExample.class/README.md | 0 .../instance/alternateLabel.st | 6 + .../instance/doBrowse.st | 12 ++ .../instance/example.st | 4 + .../instance/iconForId.st | 6 + .../instance/label.st | 6 + .../methodProperties.json | 9 ++ .../properties.json | 14 ++ .../BPCallgraphEntryBPProbe.class/README.md | 0 .../instance/icon.st | 4 + .../instance/label.st | 11 ++ .../methodProperties.json | 6 + .../properties.json | 14 ++ .../README.md | 0 .../instance/alternateLabel.st | 13 ++ .../instance/doBrowse.st | 7 + .../instance/iconForId.st | 4 + .../instance/id.st | 4 + .../instance/keyPressed..st | 6 + .../instance/traceValue.st | 4 + .../methodProperties.json | 10 ++ .../properties.json | 14 ++ .../README.md | 0 .../instance/alternateLabel.st | 4 + .../instance/doBrowse.st | 6 + .../instance/iconForId.st | 4 + .../methodProperties.json | 7 + .../properties.json | 14 ++ .../README.md | 0 .../instance/doBrowse.st | 5 + .../instance/label.st | 4 + .../instance/menu..st | 5 + .../instance/textColor.st | 5 + .../methodProperties.json | 8 ++ .../properties.json | 14 ++ .../README.md | 0 .../instance/expandByDefault.st | 4 + .../instance/label.st | 4 + .../instance/menu..st | 6 + .../instance/textColor.st | 4 + .../methodProperties.json | 8 ++ .../properties.json | 14 ++ .../README.md | 0 .../depthDelta.inChain.hasActiveTracing..st | 6 + .../instance/doBrowse.st | 5 + .../instance/label.st | 4 + .../instance/menu..st | 5 + .../instance/textColor.st | 4 + .../methodProperties.json | 9 ++ .../properties.json | 16 +++ .../README.md | 0 .../instance/data.st | 4 + .../instance/doBrowse.st | 4 + .../instance/label.st | 9 ++ .../instance/menu..st | 6 + .../instance/textColor.st | 5 + .../instance/type.data..st | 5 + .../instance/type.st | 4 + .../methodProperties.json | 11 ++ .../properties.json | 15 +++ .../BPCallgraphEntryEnter.class/README.md | 0 ...lass.selector.blockIdx.invocationCount..st | 9 ++ .../instance/doBrowse.st | 4 + .../instance/getBlockIdx.st | 4 + .../instance/getClass.st | 4 + .../instance/getInvocationCount.st | 4 + .../instance/getSelector.st | 4 + .../instance/icon.st | 4 + .../instance/label.st | 17 +++ .../instance/menu..st | 6 + .../methodProperties.json | 13 ++ .../properties.json | 17 +++ .../BPCallgraphEntryExit.class/README.md | 0 ...ector.blockIdx.invocationCount.returns..st | 5 + .../instance/label.st | 4 + .../instance/menu..st | 6 + .../instance/textColor.st | 4 + .../methodProperties.json | 8 ++ .../properties.json | 14 ++ .../BPCallgraphFromSimulator.class/README.md | 0 .../class/forEvents.andResult..st | 7 + .../instance/events..st | 4 + .../instance/eventsToString.st | 44 ++++++ .../instance/result..st | 4 + .../instance/result.st | 4 + .../instance/trace..st | 4 + .../instance/trace.st | 4 + .../methodProperties.json | 10 ++ .../properties.json | 16 +++ .../BPCallgrapher.class/README.md | 0 .../instance/executeSimulated..st | 26 ++++ .../BPCallgrapher.class/methodProperties.json | 5 + .../BPCallgrapher.class/properties.json | 14 ++ .../BPExample.class/README.md | 1 + .../BPExample.class/instance/^equals.st | 11 ++ .../BPExample.class/instance/argumentNames.st | 7 + .../instance/argumentScriptStringAt..st | 8 ++ .../instance/argumentScripts..st | 4 + .../instance/argumentScripts.st | 4 + .../instance/executeWithCallgraph.st | 13 ++ .../executeWithCallgraphusingSimulator.st | 13 ++ .../instance/isLiveSpecimenReference..st | 4 + .../BPExample.class/instance/newArguments.st | 6 + .../BPExample.class/instance/newReceiver.st | 9 ++ .../instance/receiverConstructor..st | 4 + .../instance/receiverConstructor.st | 4 + .../instance/resolveLiveSpecimen..st | 7 + .../instance/traceWithCallgraph.st | 7 + .../traceWithCallgraphUsingByteCodeTracer.st | 9 ++ .../traceWithCallgraphUsingSimulator.st | 7 + .../BPExample.class/methodProperties.json | 16 +++ .../BPExample.class/properties.json | 2 +- .../instance/createExampleMorph.st | 7 + .../methodProperties.json | 1 + .../instance/addTracedValue.forAssertion..st | 5 +- .../instance/addTracedValue.forProbe..st | 5 +- .../BPTrace.class/instance/duration..st | 4 + .../BPTrace.class/instance/duration.st | 4 + .../BPTrace.class/instance/timing.st | 10 ++ .../BPTrace.class/methodProperties.json | 7 +- ...e.previousValues.stack.methodReference..st | 6 + .../methodProperties.json | 3 +- .../class/value.stack.methodReference..st | 8 ++ .../BPTraceValue.class/instance/initialize.st | 5 + .../instance/methodReference..st | 4 + .../instance/methodReference.st | 4 + .../BPTraceValue.class/instance/printOn..st | 6 +- .../BPTraceValue.class/instance/time..st | 4 + .../BPTraceValue.class/instance/time.st | 4 + .../BPTraceValue.class/methodProperties.json | 10 +- .../BPTracer.class/instance/execute..st | 16 +++ .../instance/replace.with.for..st | 6 +- .../instance/traceBlock.forProbe..st | 2 +- .../instance/traceException..st | 4 + .../BPTracer.class/instance/wrapUserCode..st | 4 + .../BPTracer.class/methodProperties.json | 9 +- .../instance/genNops..st | 11 ++ .../methodProperties.json | 5 + .../BytecodeEncoder.extension/properties.json | 2 + .../class/babylonian.st | 11 ++ .../methodProperties.json | 5 + .../properties.json | 2 + .../monticello.meta/categories.st | 3 + .../README.md | 0 .../instance/assertBlock.generatesTrace..st | 7 + .../instance/testBlockReturn.st | 12 ++ .../instance/testBlockTemporaries.st | 8 ++ .../instance/testBlockTemporariesAgain.st | 10 ++ .../instance/testCascade.st | 10 ++ .../instance/testException.st | 17 +++ .../instance/testGenerator.st | 58 ++++++++ .../instance/testMixedBlockReturn.st | 14 ++ .../instance/testRecursion.st | 16 +++ .../instance/testSimple.st | 4 + .../instance/testWorksWithBPCompiler.st | 6 + ...InstrumentedAssertBlock.generatesTrace..st | 22 +++ .../methodProperties.json | 16 +++ .../properties.json | 14 ++ .../BPByteCodeNOPCompilerTest.class/README.md | 0 .../instance/assertLiterals..st | 27 ++++ .../instance/testBlockTemporaries.st | 58 ++++++++ .../instance/testBlockTemporaries2.st | 58 ++++++++ .../instance/testBlockTemporaries3.st | 38 ++++++ .../instance/testBlockTemporaries4.st | 36 +++++ .../instance/testBlockWithExplicitReturn.st | 48 +++++++ .../instance/testBlockWithImplicitReturn.st | 48 +++++++ .../instance/testBlocks.st | 50 +++++++ .../instance/testIfTrueIfFalse.st | 34 +++++ .../testIfTrueIfFalseWithInnerReturns.st | 41 ++++++ .../instance/testQuickReturnMethods.st | 9 ++ .../testSimpleExplicitlyReturningMethod.st | 33 +++++ .../testSimpleImplicitlyReturningMethod.st | 33 +++++ .../methodProperties.json | 17 +++ .../properties.json | 14 ++ .../BPByteCodeRewriterTest.class/README.md | 0 .../instance/testEdgeCases.st | 14 ++ .../instance/testPragmas.st | 12 ++ .../instance/testSimple.st | 13 ++ .../instance/testWithBlock.st | 15 +++ .../methodProperties.json | 8 ++ .../properties.json | 14 ++ .../README.md | 0 .../instance/a.st | 5 + .../instance/b.st | 4 + .../instance/blockReturnTest.st | 7 + .../instance/blockTemporariesAgainTest..st | 8 ++ .../instance/blockTemporariesTest.st | 22 +++ .../instance/br_a.st | 5 + .../instance/br_b..st | 4 + .../instance/br_c.st | 4 + .../instance/br_d.st | 4 + .../instance/c.st | 4 + .../instance/c_1.st | 4 + .../instance/c_2.st | 4 + .../instance/cascadeTest.st | 4 + .../instance/d.st | 4 + .../instance/exceptionTest.st | 7 + .../instance/instrumentationTest.st | 4 + .../instance/mixedBlockReturnTest..st | 7 + .../methodProperties.json | 21 +++ .../properties.json | 14 ++ .../README.md | 0 .../class/compilerClass.st | 4 + .../instance/foo.st | 4 + .../methodProperties.json | 5 + .../properties.json | 14 ++ .../instance/testRewritingIgnoresSliders.st | 13 ++ .../methodProperties.json | 1 + .../BPFancyMorph.class/README.md | 0 .../BPFancyMorph.class/class/compilerClass.st | 4 + .../BPFancyMorph.class/instance/initialize.st | 17 +++ .../BPFancyMorph.class/methodProperties.json | 5 + .../BPFancyMorph.class/properties.json | 14 ++ .../BPFancyStar.class/README.md | 0 .../BPFancyStar.class/class/compilerClass.st | 4 + .../BPFancyStar.class/instance/initialize.st | 9 ++ .../BPFancyStar.class/methodProperties.json | 5 + .../BPFancyStar.class/properties.json | 14 ++ .../monticello.meta/categories.st | 2 + .../instance/valueTextFor..st | 16 +++ .../methodProperties.json | 3 +- .../instance/addAnnotation.in..st | 23 ++++ .../instance/addAnnotationAtSelection..st | 14 ++ .../instance/addAssertionToSelection.st | 5 + .../instance/addProbeToSelection.st | 5 + .../instance/addReplacementToSelection.st | 4 + .../instance/allAnnotationsMorphs.st | 4 + .../instance/annotationsInSelection.st | 11 ++ .../BPBrowser.class/instance/bindingOf..st | 8 ++ .../instance/callgraphCategoryMenu..st | 12 ++ .../instance/callgraphClassMenu..st | 12 ++ .../callgraphDisableTracingForClass.st | 4 + ...callgraphDisableTracingForClassCategory.st | 4 + .../callgraphDisableTracingForMessage.st | 4 + .../callgraphEnableTracingForClass.st | 4 + .../callgraphEnableTracingForClassCategory.st | 4 + .../callgraphEnableTracingForMessage.st | 4 + .../instance/callgraphInstrumentClass.st | 4 + .../callgraphInstrumentClassCategory.st | 4 + .../instance/callgraphInstrumentMessage.st | 4 + .../instance/callgraphMessageMenu..st | 12 ++ .../instance/callgraphUninstrumentClass.st | 4 + .../callgraphUninstrumentClassCategory.st | 4 + .../instance/callgraphUninstrumentMessage.st | 4 + .../instance/codePaneMenuAnnotationItems..st | 29 ++++ .../instance/compileMessage.notifying..st | 4 + .../instance/compiledMethod.st | 4 + .../determineIntervalToAnnotateFor..st | 44 ++++++ .../BPBrowser.class/instance/doItReceiver.st | 8 ++ .../instance/exampleForEvaluation.st | 6 + .../instance/exampleMorphFor..st | 6 + .../instance/isAnnotatableRule..st | 4 + .../instance/messageIconFor..st | 21 +++ .../instance/removeAnnotations..st | 16 +++ .../instance/removeAssertionFromSelection.st | 4 + .../instance/removeProbeFromSelection.st | 4 + .../removeReplacementFromSelection.st | 4 + .../removeSelectedAnnotationsSatisfying..st | 15 +++ .../instance/saveMethodWithExamples.st | 5 + .../instance/saveMethodWithExamplesWith..st | 5 + .../BPBrowser.class/methodProperties.json | 41 +++++- .../BPCallgraphExplorer.class/README.md | 0 .../BPCallgraphExplorer.class/class/open.st | 7 + .../class/openFromBPBrowser..st | 8 ++ .../instance/aboutToStyle.requestor..st | 6 + .../instance/addModelItemsToWindowMenu..st | 8 ++ .../instance/annotationKeyPressed..st | 5 + .../instance/annotationPaneDoubleClick.st | 8 ++ .../instance/browser..st | 4 + .../instance/buildWith..st | 35 +++++ .../instance/callgraphDoubleClick..st | 4 + .../instance/codePaneMethodReference.st | 4 + .../instance/getAnnotationIcon..st | 4 + .../instance/getAnnotationListLabels.st | 4 + .../instance/getAnnotations.st | 4 + .../instance/getCodePaneText.st | 4 + .../instance/getSelectedAnnotationIndex.st | 4 + .../instance/initialize.st | 6 + .../instance/loadFromCallgraph..st | 5 + .../instance/loadFromCallgraphTracer..st | 4 + .../instance/selectEntry..st | 4 + .../instance/setSelectedAnnotationIndex..st | 5 + .../methodProperties.json | 23 ++++ .../BPCallgraphExplorer.class/properties.json | 17 +++ .../README.md | 0 .../class/iconColumnIndex.st | 4 + .../instance/applyFilter.depthOffset..st | 17 +++ .../instance/removeFilter.st | 5 + .../methodProperties.json | 6 + .../properties.json | 14 ++ .../README.md | 0 .../instance/preferredColor.st | 4 + .../methodProperties.json | 5 + .../properties.json | 14 ++ .../BPCallgraphModel.class/README.md | 0 .../instance/callgraph..st | 5 + .../instance/callgraph.st | 4 + .../instance/childrenOf..st | 4 + .../instance/getSelectedEntry.st | 4 + .../instance/getSpec.st | 22 +++ .../instance/hasChildren..st | 4 + .../instance/iconOf..st | 4 + .../instance/initialize.st | 4 + .../instance/key.from.event..st | 8 ++ .../instance/labelOf..st | 4 + .../instance/menuOf..st | 6 + .../instance/rootEntries.st | 4 + .../instance/selectContextSenderChange.st | 8 ++ .../instance/selectCorrespondingBlockEnter.st | 16 +++ .../instance/selectCorrespondingBlockExit.st | 16 +++ .../selectCorrespondingMethodEnter.st | 16 +++ .../instance/selectCorrespondingMethodExit.st | 16 +++ .../instance/selectEntry..st | 4 + .../instance/selectExecutionContinuation.st | 8 ++ .../instance/selectNextCustomEvent.st | 8 ++ .../instance/selectPrevCustomEvent.st | 8 ++ .../instance/setSelectedEntry..st | 5 + .../methodProperties.json | 26 ++++ .../BPCallgraphModel.class/properties.json | 15 +++ .../README.md | 0 .../instance/expandRecursivelyIfNeeded..st | 6 + .../instance/indentingItemClass.st | 4 + .../instance/indicateUnfiltered.st | 5 + .../instance/wrapRoots..st | 6 + .../methodProperties.json | 8 ++ .../properties.json | 14 ++ .../README.md | 0 .../instance/buildWith..st | 3 + .../methodProperties.json | 5 + .../properties.json | 14 ++ .../BPEmojis.class/class/emojiFor..st | 2 +- .../BPEmojis.class/class/emojiForHash..st | 4 + .../BPEmojis.class/methodProperties.json | 3 +- .../instance/addArgumentScriptMorphs.st | 31 +++++ .../instance/addCallgraphMorphs.st | 28 ++++ .../instance/addReceiverConstructorMorph.st | 14 ++ .../BPExampleMorph.class/instance/runOnce.st | 4 + .../instance/selectLiveSpecimenThen..st | 10 ++ .../BPExampleMorph.class/instance/step.st | 8 +- .../instance/viewCallgraph.st | 14 ++ .../methodProperties.json | 10 +- .../instance/addCreateExampleButton.st | 21 +++ .../methodProperties.json | 1 + .../instance/annotation..st | 8 ++ .../BPProbeMorph.class/instance/blinkFor..st | 4 + .../BPProbeMorph.class/instance/initialize.st | 19 +++ .../instance/newExampleLabelMorphFor..st | 13 ++ .../instance/newExampleLineMorph.st | 14 ++ .../instance/newTracesMorph.st | 12 ++ .../instance/newWidgetsMorph.st | 12 ++ .../removeLinesWithoutCurrentTrace..st | 6 + .../BPProbeMorph.class/instance/step.st | 17 +++ .../BPProbeMorph.class/instance/stepTime.st | 4 + .../instance/valueTextFor..st | 17 +++ .../instance/valuesTextFor..st | 12 ++ .../instance/viewCallgraphForTrace..st | 21 +++ .../BPProbeMorph.class/methodProperties.json | 15 ++- .../instance/annotation..st | 5 + .../instance/createMorphs.st | 4 + .../BPSliderMorph.class/methodProperties.json | 2 + .../instance/buildBPCallgraph..st | 58 ++++++++ .../methodProperties.json | 5 + .../properties.json | 2 + .../monticello.meta/categories.st | 1 + 510 files changed, 4885 insertions(+), 49 deletions(-) create mode 100644 packages/Babylonian-Compiler.package/BPCompiler.class/instance/compileCue.noPattern.ifFail..st create mode 100644 packages/Babylonian-Compiler.package/BPSourceRewriter.class/instance/MoreExecutableCode.statements.finalStatement..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeAssociation.class/README.md create mode 100644 packages/Babylonian-Core.package/BPByteCodeAssociation.class/instance/literalEqual..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeAssociation.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPByteCodeAssociation.class/properties.json create mode 100644 packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/README.md create mode 100644 packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/customEvent.data..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/enter.invocation..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/exit.invocation.returns..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/swapSenderOf.newSender..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/customEvent.data..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/enter.invocation..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventStream.st create mode 100644 packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsForTree.st create mode 100644 packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsToString.st create mode 100644 packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsToStringForTest.st create mode 100644 packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/exit.invocation.returns..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/initialize.st create mode 100644 packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/instrumentedDepthOf.below..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/swapSenderOf.newSender..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/properties.json create mode 100644 packages/Babylonian-Core.package/BPByteCodeMethodState.class/README.md create mode 100644 packages/Babylonian-Core.package/BPByteCodeMethodState.class/class/ofMethod..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeMethodState.class/instance/initialize.st create mode 100644 packages/Babylonian-Core.package/BPByteCodeMethodState.class/instance/isActive.st create mode 100644 packages/Babylonian-Core.package/BPByteCodeMethodState.class/instance/isInactive.st create mode 100644 packages/Babylonian-Core.package/BPByteCodeMethodState.class/instance/nopPositions.st create mode 100644 packages/Babylonian-Core.package/BPByteCodeMethodState.class/instance/setNOPPositions..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeMethodState.class/instance/state..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeMethodState.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPByteCodeMethodState.class/properties.json create mode 100644 packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/README.md create mode 100644 packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/check..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/findNode.in..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitAssignmentNode..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitBlockNode..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitBraceNode..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitCascadeNode..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitCommentNode..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitFieldNode..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitFutureNode..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitInstanceVariableNode..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitLiteralNode..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitLiteralVariableNode..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitMessageNode..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitMessageNodeInCascade..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitMethodNode..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitNewArrayNode..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitRemoteTempVectorNode..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitReturnNode..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitSelectorNode..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitTempVariableNode..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/instance/visitVariableNode..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPByteCodeParseNodeVisitor.class/properties.json create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/README.md create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/adjustNumTemps.in..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/canEnableTracingFor..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/copyCompiledMethod..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForClass..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForClass.selector..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForClassCategory..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForCompiledMethod..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForCompiledMethod.mode..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForCompiledMethod.mode.howToAddToMethodDictWhenSlow..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForClass..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForClass.selector..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForClassCategory..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForCompiledMethod..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForCompiledMethod.mode..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForCompiledMethod.mode.howToAddToMethodDictWhenSlow..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/getConfig..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/handleNonCompiledMethod.action.mode..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/hasActiveTracing..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/hasInactiveTracing..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/hasTracing..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClass..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClass.selector..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClassCategory..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentCompiledMethod..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentContext.st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentString..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentationMode.st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/nuke.st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/parseClosureCreationByteCodeFor.withEncoder..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/privDisableTracingFor..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/privEnableTracingFor..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/rewriteClosureCreationByteCodeFor.withEncoder.numArgs.numTemps..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/rewriteHeaderOf.numTemps..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/setup.st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/teardown.st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstallWrapper..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentClass..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentClass.selector..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentClassCategory..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentCompiledMethod..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentContext.st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/properties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraph.class/README.md create mode 100644 packages/Babylonian-Core.package/BPCallgraph.class/instance/addRoot..st create mode 100644 packages/Babylonian-Core.package/BPCallgraph.class/instance/babylonianEntries.st create mode 100644 packages/Babylonian-Core.package/BPCallgraph.class/instance/detect..st create mode 100644 packages/Babylonian-Core.package/BPCallgraph.class/instance/detect.after..st create mode 100644 packages/Babylonian-Core.package/BPCallgraph.class/instance/detect.after.ifFound.ifNone..st create mode 100644 packages/Babylonian-Core.package/BPCallgraph.class/instance/detect.before..st create mode 100644 packages/Babylonian-Core.package/BPCallgraph.class/instance/detect.before.ifFound.ifNone..st create mode 100644 packages/Babylonian-Core.package/BPCallgraph.class/instance/do..st create mode 100644 packages/Babylonian-Core.package/BPCallgraph.class/instance/do.after..st create mode 100644 packages/Babylonian-Core.package/BPCallgraph.class/instance/do.before..st create mode 100644 packages/Babylonian-Core.package/BPCallgraph.class/instance/do.entry..st create mode 100644 packages/Babylonian-Core.package/BPCallgraph.class/instance/initialize.st create mode 100644 packages/Babylonian-Core.package/BPCallgraph.class/instance/roots.st create mode 100644 packages/Babylonian-Core.package/BPCallgraph.class/instance/select..st create mode 100644 packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraph.class/properties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntry.class/README.md create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/addChild..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/children.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/doBrowse.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/expandByDefault.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/hasChildren.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/icon.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/initialize.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/keyPressed..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/label.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/menu..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/parent..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/parent.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/path.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/root.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/textColor.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntry.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntry.class/properties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPAssertion.class/README.md create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPAssertion.class/instance/icon.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPAssertion.class/instance/label.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPAssertion.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPAssertion.class/properties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/README.md create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/instance/alternateLabel.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/instance/doBrowse.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/instance/example.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/instance/iconForId.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/instance/label.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/properties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/README.md create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/instance/icon.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/instance/label.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/properties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/README.md create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/alternateLabel.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/doBrowse.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/iconForId.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/id.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/keyPressed..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/traceValue.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/properties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/README.md create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/instance/alternateLabel.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/instance/doBrowse.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/instance/iconForId.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/properties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/README.md create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/instance/doBrowse.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/instance/label.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/instance/menu..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/instance/textColor.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/properties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/README.md create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/expandByDefault.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/label.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/menu..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/textColor.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/properties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/README.md create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/depthDelta.inChain.hasActiveTracing..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/doBrowse.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/label.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/menu..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/textColor.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/properties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/README.md create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/data.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/doBrowse.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/label.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/menu..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/textColor.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/type.data..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/type.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/properties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/README.md create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/class.selector.blockIdx.invocationCount..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/doBrowse.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/getBlockIdx.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/getClass.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/getInvocationCount.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/getSelector.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/icon.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/label.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/menu..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/properties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryExit.class/README.md create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/class.selector.blockIdx.invocationCount.returns..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/label.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/menu..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/textColor.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryExit.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryExit.class/properties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/README.md create mode 100644 packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/class/forEvents.andResult..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/instance/events..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/instance/eventsToString.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/instance/result..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/instance/result.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/instance/trace..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/instance/trace.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphFromSimulator.class/properties.json create mode 100644 packages/Babylonian-Core.package/BPCallgrapher.class/README.md create mode 100644 packages/Babylonian-Core.package/BPCallgrapher.class/instance/executeSimulated..st create mode 100644 packages/Babylonian-Core.package/BPCallgrapher.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPCallgrapher.class/properties.json create mode 100644 packages/Babylonian-Core.package/BPExample.class/instance/^equals.st create mode 100644 packages/Babylonian-Core.package/BPExample.class/instance/argumentNames.st create mode 100644 packages/Babylonian-Core.package/BPExample.class/instance/argumentScriptStringAt..st create mode 100644 packages/Babylonian-Core.package/BPExample.class/instance/argumentScripts..st create mode 100644 packages/Babylonian-Core.package/BPExample.class/instance/argumentScripts.st create mode 100644 packages/Babylonian-Core.package/BPExample.class/instance/executeWithCallgraph.st create mode 100644 packages/Babylonian-Core.package/BPExample.class/instance/executeWithCallgraphusingSimulator.st create mode 100644 packages/Babylonian-Core.package/BPExample.class/instance/isLiveSpecimenReference..st create mode 100644 packages/Babylonian-Core.package/BPExample.class/instance/newArguments.st create mode 100644 packages/Babylonian-Core.package/BPExample.class/instance/newReceiver.st create mode 100644 packages/Babylonian-Core.package/BPExample.class/instance/receiverConstructor..st create mode 100644 packages/Babylonian-Core.package/BPExample.class/instance/receiverConstructor.st create mode 100644 packages/Babylonian-Core.package/BPExample.class/instance/resolveLiveSpecimen..st create mode 100644 packages/Babylonian-Core.package/BPExample.class/instance/traceWithCallgraph.st create mode 100644 packages/Babylonian-Core.package/BPExample.class/instance/traceWithCallgraphUsingByteCodeTracer.st create mode 100644 packages/Babylonian-Core.package/BPExample.class/instance/traceWithCallgraphUsingSimulator.st create mode 100644 packages/Babylonian-Core.package/BPExampleAnnotation.class/instance/createExampleMorph.st create mode 100644 packages/Babylonian-Core.package/BPTrace.class/instance/duration..st create mode 100644 packages/Babylonian-Core.package/BPTrace.class/instance/duration.st create mode 100644 packages/Babylonian-Core.package/BPTrace.class/instance/timing.st create mode 100644 packages/Babylonian-Core.package/BPTraceAssignmentValue.class/class/value.previousValues.stack.methodReference..st create mode 100644 packages/Babylonian-Core.package/BPTraceValue.class/class/value.stack.methodReference..st create mode 100644 packages/Babylonian-Core.package/BPTraceValue.class/instance/initialize.st create mode 100644 packages/Babylonian-Core.package/BPTraceValue.class/instance/methodReference..st create mode 100644 packages/Babylonian-Core.package/BPTraceValue.class/instance/methodReference.st create mode 100644 packages/Babylonian-Core.package/BPTraceValue.class/instance/time..st create mode 100644 packages/Babylonian-Core.package/BPTraceValue.class/instance/time.st create mode 100644 packages/Babylonian-Core.package/BPTracer.class/instance/execute..st create mode 100644 packages/Babylonian-Core.package/BPTracer.class/instance/traceException..st create mode 100644 packages/Babylonian-Core.package/BPTracer.class/instance/wrapUserCode..st create mode 100644 packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/genNops..st create mode 100644 packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BytecodeEncoder.extension/properties.json create mode 100644 packages/Babylonian-Core.package/RSSimulatorConfiguration.extension/class/babylonian.st create mode 100644 packages/Babylonian-Core.package/RSSimulatorConfiguration.extension/methodProperties.json create mode 100644 packages/Babylonian-Core.package/RSSimulatorConfiguration.extension/properties.json create mode 100644 packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/README.md create mode 100644 packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/assertBlock.generatesTrace..st create mode 100644 packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testBlockReturn.st create mode 100644 packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testBlockTemporaries.st create mode 100644 packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testBlockTemporariesAgain.st create mode 100644 packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testCascade.st create mode 100644 packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testException.st create mode 100644 packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testGenerator.st create mode 100644 packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testMixedBlockReturn.st create mode 100644 packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testRecursion.st create mode 100644 packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testSimple.st create mode 100644 packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testWorksWithBPCompiler.st create mode 100644 packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/withFixtureInstrumentedAssertBlock.generatesTrace..st create mode 100644 packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/methodProperties.json create mode 100644 packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/properties.json create mode 100644 packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/README.md create mode 100644 packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/assertLiterals..st create mode 100644 packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testBlockTemporaries.st create mode 100644 packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testBlockTemporaries2.st create mode 100644 packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testBlockTemporaries3.st create mode 100644 packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testBlockTemporaries4.st create mode 100644 packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testBlockWithExplicitReturn.st create mode 100644 packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testBlockWithImplicitReturn.st create mode 100644 packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testBlocks.st create mode 100644 packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testIfTrueIfFalse.st create mode 100644 packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testIfTrueIfFalseWithInnerReturns.st create mode 100644 packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testQuickReturnMethods.st create mode 100644 packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testSimpleExplicitlyReturningMethod.st create mode 100644 packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/instance/testSimpleImplicitlyReturningMethod.st create mode 100644 packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/methodProperties.json create mode 100644 packages/Babylonian-Tests.package/BPByteCodeNOPCompilerTest.class/properties.json create mode 100644 packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/README.md create mode 100644 packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/instance/testEdgeCases.st create mode 100644 packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/instance/testPragmas.st create mode 100644 packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/instance/testSimple.st create mode 100644 packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/instance/testWithBlock.st create mode 100644 packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/methodProperties.json create mode 100644 packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/properties.json create mode 100644 packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/README.md create mode 100644 packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/a.st create mode 100644 packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/b.st create mode 100644 packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/blockReturnTest.st create mode 100644 packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/blockTemporariesAgainTest..st create mode 100644 packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/blockTemporariesTest.st create mode 100644 packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/br_a.st create mode 100644 packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/br_b..st create mode 100644 packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/br_c.st create mode 100644 packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/br_d.st create mode 100644 packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/c.st create mode 100644 packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/c_1.st create mode 100644 packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/c_2.st create mode 100644 packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/cascadeTest.st create mode 100644 packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/d.st create mode 100644 packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/exceptionTest.st create mode 100644 packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/instrumentationTest.st create mode 100644 packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/mixedBlockReturnTest..st create mode 100644 packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/methodProperties.json create mode 100644 packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/properties.json create mode 100644 packages/Babylonian-Tests.package/BPCallGraphByteCodeFixtureWithBPCompiler.class/README.md create mode 100644 packages/Babylonian-Tests.package/BPCallGraphByteCodeFixtureWithBPCompiler.class/class/compilerClass.st create mode 100644 packages/Babylonian-Tests.package/BPCallGraphByteCodeFixtureWithBPCompiler.class/instance/foo.st create mode 100644 packages/Babylonian-Tests.package/BPCallGraphByteCodeFixtureWithBPCompiler.class/methodProperties.json create mode 100644 packages/Babylonian-Tests.package/BPCallGraphByteCodeFixtureWithBPCompiler.class/properties.json create mode 100644 packages/Babylonian-Tests.package/BPCompilerTest.class/instance/testRewritingIgnoresSliders.st create mode 100644 packages/Babylonian-Tests.package/BPFancyMorph.class/README.md create mode 100644 packages/Babylonian-Tests.package/BPFancyMorph.class/class/compilerClass.st create mode 100644 packages/Babylonian-Tests.package/BPFancyMorph.class/instance/initialize.st create mode 100644 packages/Babylonian-Tests.package/BPFancyMorph.class/methodProperties.json create mode 100644 packages/Babylonian-Tests.package/BPFancyMorph.class/properties.json create mode 100644 packages/Babylonian-Tests.package/BPFancyStar.class/README.md create mode 100644 packages/Babylonian-Tests.package/BPFancyStar.class/class/compilerClass.st create mode 100644 packages/Babylonian-Tests.package/BPFancyStar.class/instance/initialize.st create mode 100644 packages/Babylonian-Tests.package/BPFancyStar.class/methodProperties.json create mode 100644 packages/Babylonian-Tests.package/BPFancyStar.class/properties.json create mode 100644 packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/instance/valueTextFor..st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/addAnnotation.in..st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/addAnnotationAtSelection..st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/addAssertionToSelection.st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/addProbeToSelection.st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/addReplacementToSelection.st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/allAnnotationsMorphs.st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/annotationsInSelection.st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/bindingOf..st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphCategoryMenu..st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphClassMenu..st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForClass.st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForClassCategory.st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForMessage.st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForClass.st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForClassCategory.st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForMessage.st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentClass.st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentClassCategory.st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentMessage.st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphMessageMenu..st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentClass.st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentClassCategory.st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentMessage.st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/codePaneMenuAnnotationItems..st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/compiledMethod.st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/determineIntervalToAnnotateFor..st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/doItReceiver.st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/exampleForEvaluation.st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/exampleMorphFor..st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/isAnnotatableRule..st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/messageIconFor..st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/removeAnnotations..st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/removeAssertionFromSelection.st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/removeProbeFromSelection.st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/removeReplacementFromSelection.st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/removeSelectedAnnotationsSatisfying..st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/saveMethodWithExamples.st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/saveMethodWithExamplesWith..st create mode 100644 packages/Babylonian-UI.package/BPCallgraphExplorer.class/README.md create mode 100644 packages/Babylonian-UI.package/BPCallgraphExplorer.class/class/open.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphExplorer.class/class/openFromBPBrowser..st create mode 100644 packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/aboutToStyle.requestor..st create mode 100644 packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/addModelItemsToWindowMenu..st create mode 100644 packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/annotationKeyPressed..st create mode 100644 packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/annotationPaneDoubleClick.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/browser..st create mode 100644 packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/buildWith..st create mode 100644 packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/callgraphDoubleClick..st create mode 100644 packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/codePaneMethodReference.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/getAnnotationIcon..st create mode 100644 packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/getAnnotationListLabels.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/getAnnotations.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/getCodePaneText.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/getSelectedAnnotationIndex.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/initialize.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/loadFromCallgraph..st create mode 100644 packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/loadFromCallgraphTracer..st create mode 100644 packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/selectEntry..st create mode 100644 packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/setSelectedAnnotationIndex..st create mode 100644 packages/Babylonian-UI.package/BPCallgraphExplorer.class/methodProperties.json create mode 100644 packages/Babylonian-UI.package/BPCallgraphExplorer.class/properties.json create mode 100644 packages/Babylonian-UI.package/BPCallgraphIndentingListItemMorph.class/README.md create mode 100644 packages/Babylonian-UI.package/BPCallgraphIndentingListItemMorph.class/class/iconColumnIndex.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphIndentingListItemMorph.class/instance/applyFilter.depthOffset..st create mode 100644 packages/Babylonian-UI.package/BPCallgraphIndentingListItemMorph.class/instance/removeFilter.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphIndentingListItemMorph.class/methodProperties.json create mode 100644 packages/Babylonian-UI.package/BPCallgraphIndentingListItemMorph.class/properties.json create mode 100644 packages/Babylonian-UI.package/BPCallgraphListItemWrapper.class/README.md create mode 100644 packages/Babylonian-UI.package/BPCallgraphListItemWrapper.class/instance/preferredColor.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphListItemWrapper.class/methodProperties.json create mode 100644 packages/Babylonian-UI.package/BPCallgraphListItemWrapper.class/properties.json create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/README.md create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/callgraph..st create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/callgraph.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/childrenOf..st create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/getSelectedEntry.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/getSpec.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/hasChildren..st create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/iconOf..st create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/initialize.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/key.from.event..st create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/labelOf..st create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/menuOf..st create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/rootEntries.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectContextSenderChange.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectCorrespondingBlockEnter.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectCorrespondingBlockExit.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectCorrespondingMethodEnter.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectCorrespondingMethodExit.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectEntry..st create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectExecutionContinuation.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectNextCustomEvent.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectPrevCustomEvent.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/setSelectedEntry..st create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/methodProperties.json create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/properties.json create mode 100644 packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/README.md create mode 100644 packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/instance/expandRecursivelyIfNeeded..st create mode 100644 packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/instance/indentingItemClass.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/instance/indicateUnfiltered.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/instance/wrapRoots..st create mode 100644 packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/methodProperties.json create mode 100644 packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/properties.json create mode 100644 packages/Babylonian-UI.package/BPCallgraphPluggableTreeSpec.class/README.md create mode 100644 packages/Babylonian-UI.package/BPCallgraphPluggableTreeSpec.class/instance/buildWith..st create mode 100644 packages/Babylonian-UI.package/BPCallgraphPluggableTreeSpec.class/methodProperties.json create mode 100644 packages/Babylonian-UI.package/BPCallgraphPluggableTreeSpec.class/properties.json create mode 100644 packages/Babylonian-UI.package/BPEmojis.class/class/emojiForHash..st create mode 100644 packages/Babylonian-UI.package/BPExampleMorph.class/instance/addArgumentScriptMorphs.st create mode 100644 packages/Babylonian-UI.package/BPExampleMorph.class/instance/addCallgraphMorphs.st create mode 100644 packages/Babylonian-UI.package/BPExampleMorph.class/instance/addReceiverConstructorMorph.st create mode 100644 packages/Babylonian-UI.package/BPExampleMorph.class/instance/runOnce.st create mode 100644 packages/Babylonian-UI.package/BPExampleMorph.class/instance/selectLiveSpecimenThen..st create mode 100644 packages/Babylonian-UI.package/BPExampleMorph.class/instance/viewCallgraph.st create mode 100644 packages/Babylonian-UI.package/BPExamplesMorph.class/instance/addCreateExampleButton.st create mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/annotation..st create mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/blinkFor..st create mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/initialize.st create mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExampleLabelMorphFor..st create mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExampleLineMorph.st create mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/newTracesMorph.st create mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/newWidgetsMorph.st create mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/removeLinesWithoutCurrentTrace..st create mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/step.st create mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/stepTime.st create mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/valueTextFor..st create mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/valuesTextFor..st create mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/viewCallgraphForTrace..st create mode 100644 packages/Babylonian-UI.package/BPSliderMorph.class/instance/annotation..st create mode 100644 packages/Babylonian-UI.package/BPSliderMorph.class/instance/createMorphs.st create mode 100644 packages/Babylonian-UI.package/MorphicToolBuilder.extension/instance/buildBPCallgraph..st create mode 100644 packages/Babylonian-UI.package/MorphicToolBuilder.extension/methodProperties.json create mode 100644 packages/Babylonian-UI.package/MorphicToolBuilder.extension/properties.json diff --git a/packages/Babylonian-Compiler.package/BPCompiler.class/class/compilerClass.st b/packages/Babylonian-Compiler.package/BPCompiler.class/class/compilerClass.st index 143008a9..0f12f4c9 100644 --- a/packages/Babylonian-Compiler.package/BPCompiler.class/class/compilerClass.st +++ b/packages/Babylonian-Compiler.package/BPCompiler.class/class/compilerClass.st @@ -1,4 +1,4 @@ -compiling +as yet unclassified compilerClass - ^ BPCompiler \ No newline at end of file + ^ "BP"Compiler \ No newline at end of file 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..b1aa3c66 --- /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 already has annotations in comments present" + + | originalMethod 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. + originalMethod := super compileCue: basicCue noPattern: aBoolean ifFail: failBlock. + + "bpSource := originalMethod sourceText asString. + (self methodSourceRequiresBPLayers: bpSource) ifTrue: [ + (self compileInstrumentedVersionOf: aCueWithBPSource) ifFalse: failBlock]." + + ^ originalMethod \ 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 98dd5fe7..0c7b512b 100644 --- a/packages/Babylonian-Compiler.package/BPCompiler.class/methodProperties.json +++ b/packages/Babylonian-Compiler.package/BPCompiler.class/methodProperties.json @@ -1,11 +1,12 @@ { "class" : { - "compilerClass" : "pre 1/27/2020 09:44", + "compilerClass" : "cmfcmf 10/27/2020 11:16", "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", + "backgroundCompileInstrumentedVersionOf:basedOn:" : "pre 8/20/2020 15:46", + "compile:ifFail:" : "cmfcmf 10/27/2020 11:15", + "compileCue:noPattern:ifFail:" : "cmfcmf 10/29/2020 14:13", "compileInstrumentedVersionOf:" : "pre 8/17/2020 08:58", "keywords" : "pre 7/26/2019 14:00", "methodSourceRequiresBPLayers:" : "pre 11/11/2019 15:49", diff --git a/packages/Babylonian-Compiler.package/BPSourceRewriter.class/instance/MoreExecutableCode.statements.finalStatement..st b/packages/Babylonian-Compiler.package/BPSourceRewriter.class/instance/MoreExecutableCode.statements.finalStatement..st new file mode 100644 index 00000000..9feb682d --- /dev/null +++ b/packages/Babylonian-Compiler.package/BPSourceRewriter.class/instance/MoreExecutableCode.statements.finalStatement..st @@ -0,0 +1,29 @@ +grammar rules +MoreExecutableCode: aNode statements: statements finalStatement: finalStatement + + | finalStatementSource statementsSource finalStatementTemplate blockId | + blockId := ""self nextBlockId"". + statementsSource := self value: statements. + finalStatementTemplate := 'self bpBlock: {1} leftWith: ({2}) at: thisContext'. + finalStatementSource := self value: finalStatement. + finalStatementSource + ifEmpty: [ + statementsSource := self valueStatements: statements withLastStatementAs: [:lastStatement | + finalStatementTemplate format: {blockId . lastStatement}]. ] + ifNotEmpty: [ + statementsSource := self value: statements. + "We have to express the condition this akwardly to protect from lines as the condition itself (small riddle :))" + finalStatementSource := (finalStatementSource withBlanksTrimmed first = $^) + ifTrue: [ | finalStatementParts | + finalStatementParts := { + (finalStatementSource copyUpTo: $^) , '^ '. + (finalStatementSource copyAfterLast: $^) withBlanksTrimmed }. + finalStatementParts first , (finalStatementTemplate format: {blockId . finalStatementParts second})] + ifFalse: [ + finalStatementTemplate format: {blockId . finalStatementSource}]]. + + ^ '{1} +{2}{3}' format: { + 'self bpBlock: {1} enteredAt: thisContext.' format: {blockId}. + ""statementsSource"". + finalStatementSource} \ No newline at end of file diff --git a/packages/Babylonian-Compiler.package/BPSourceRewriter.class/methodProperties.json b/packages/Babylonian-Compiler.package/BPSourceRewriter.class/methodProperties.json index c6372174..237f89ac 100644 --- a/packages/Babylonian-Compiler.package/BPSourceRewriter.class/methodProperties.json +++ b/packages/Babylonian-Compiler.package/BPSourceRewriter.class/methodProperties.json @@ -13,6 +13,7 @@ "CascadedMessages:with:and:and:" : "pre 4/29/2020 17:05", "ExecutableCode:variables:pragmas:moreCode:" : "pre 9/25/2020 11:47", "MethodHeader:with:" : "pre 9/25/2020 11:14", + "MoreExecutableCode:statements:finalStatement:" : "pre 1/27/2020 17:53", "bpAssert:with:" : "pre 9/25/2020 11:20", "bpProbe:with:" : "pre 9/25/2020 11:20", "bpReplace:with:" : "pre 9/25/2020 11:20", 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/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..05831f7c --- /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 | t swapSenderOf: context newSender: newSender] \ 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..c84a3643 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/enter.invocation..st @@ -0,0 +1,6 @@ +tracing +enter: aString invocation: aNumber + + events nextPut: #enter. + events nextPut: aString. + events nextPut: aNumber \ 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..9a476fdb --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsForTree.st @@ -0,0 +1,105 @@ +post processing +eventsForTree + + | callgraph depth depthAfterExit depthMap printContinuesHere eventStream treeCache addToTree prevDepth overwriteDepth | + + 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 moved to the right -> we need to add new tree nodes to correctly display the context change" + 0 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 | + entry := BPCallgraphEntryContextJump new. + addToTree value: entry]. + + eventStream := self eventStream. + [eventStream atEnd] whileFalse: [| entry | eventStream next caseOf: { + [#enter] -> [ | parts class selector blockIdx invocationCount | + 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. + + entry := BPCallgraphEntryEnter new. + entry class: class selector: selector blockIdx: blockIdx invocationCount: invocationCount. + 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 inChain hasActiveTracing | + depthDelta := eventStream next. + inChain := eventStream next. + 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. + + entry := BPCallgraphEntryContextSenderChanged new. + entry depthDelta: depthDelta inChain: inChain hasActiveTracing: hasActiveTracing. + 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..3f5e2d72 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsToString.st @@ -0,0 +1,125 @@ +post processing +eventsToString + + + ^ String streamContents: [:stringStream | | 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. + + 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 hasActiveTracing | + depthDelta := eventStream next. + inChain := eventStream next. + 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..93507655 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/exit.invocation.returns..st @@ -0,0 +1,7 @@ +tracing +exit: aString invocation: aNumber returns: aBoolean + + events nextPut: #exit. + events nextPut: aString. + events nextPut: aNumber. + events 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..e0589a02 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/initialize.st @@ -0,0 +1,17 @@ +initialize-release +initialize + + "BPByteCodeCallgraphTracer initialize" + + super initialize. + 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/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/swapSenderOf.newSender..st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/swapSenderOf.newSender..st new file mode 100644 index 00000000..cefd1609 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/swapSenderOf.newSender..st @@ -0,0 +1,36 @@ +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 == 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. + 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. + events nextPut: hasActiveTracing. + ^ self]. + + [| depthOld depthNew | + depthOld := self instrumentedDepthOf: context below: nil. + depthNew := self instrumentedDepthOf: newSenderContext below: nil. + + events nextPut: #contextSenderChanged. + events nextPut: depthNew - depthOld. + events nextPut: false. + 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..509a1ee1 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json @@ -0,0 +1,17 @@ +{ + "class" : { + "customEvent:data:" : "cmfcmf 10/23/2020 14:56", + "enter:invocation:" : "cmfcmf 10/20/2020 12:18", + "exit:invocation:returns:" : "cmfcmf 10/19/2020 12:50", + "swapSenderOf:newSender:" : "cmfcmf 10/20/2020 12:18" }, + "instance" : { + "customEvent:data:" : "cmfcmf 10/23/2020 14:56", + "enter:invocation:" : "cmfcmf 10/20/2020 13:44", + "eventStream" : "cmfcmf 10/20/2020 13:49", + "eventsForTree" : "cmfcmf 10/28/2020 12:35", + "eventsToString" : "cmfcmf 10/23/2020 16:42", + "eventsToStringForTest" : "cmfcmf 10/7/2020 14:07", + "exit:invocation:returns:" : "cmfcmf 10/20/2020 13:47", + "initialize" : "cmfcmf 10/20/2020 13:51", + "instrumentedDepthOf:below:" : "cmfcmf 10/7/2020 16:19", + "swapSenderOf:newSender:" : "cmfcmf 10/20/2020 13:47" } } 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..9c36ee40 --- /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" : "DynamicVariable", + "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..b920249c --- /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..2b588b8e --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForCompiledMethod.mode..st @@ -0,0 +1,5 @@ +3 - disable tracing +disableTracingForCompiledMethod: oldMethod mode: aSymbol + + ^ self disableTracingForCompiledMethod: oldMethod mode: aSymbol howToAddToMethodDictWhenSlow: [:newMethod | + newMethod methodClass methodDict at: newMethod selector put: 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..474e9a8b --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForCompiledMethod.mode.howToAddToMethodDictWhenSlow..st @@ -0,0 +1,21 @@ +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. + oldMethod selector flushCache] + ifFalse: [oldMethod becomeForward: newMethod]] \ 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..e95790f9 --- /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..e6d75426 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForCompiledMethod.mode..st @@ -0,0 +1,5 @@ +2 - enable tracing +enableTracingForCompiledMethod: oldMethod mode: aSymbol + + ^ self enableTracingForCompiledMethod: oldMethod mode: aSymbol howToAddToMethodDictWhenSlow: [:newMethod | + newMethod methodClass methodDict at: newMethod selector put: 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..5620dbcd --- /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). + + 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. + oldMethod selector flushCache] + ifFalse: [oldMethod becomeForward: newMethod]] \ 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/instrumentClass..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClass..st new file mode 100644 index 00000000..2f3943a8 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClass..st @@ -0,0 +1,8 @@ +1 - instrument +instrumentClass: aClass + + CSLayeredMethod pauseFlushingCachesDuring: [ + aClass selectors + do: [:selector | self instrumentClass: aClass selector: selector] + displayingProgress: [:selector | 'Recompiling ', aClass, ' >> #', selector] + every: 100] \ 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..7f3d9041 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClass.selector..st @@ -0,0 +1,13 @@ +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]. + 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..c1997f78 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClassCategory..st @@ -0,0 +1,10 @@ +1 - instrument +instrumentClassCategory: aSymbol + + CSLayeredMethod pauseFlushingCachesDuring: [ + (SystemOrganization classesIn: aSymbol) + do: [:class | + self instrumentClass: class theNonMetaClass. + self instrumentClass: class theMetaClass] + displayingProgress: [:selector | 'Recompiling ', aSymbol] + every: 100] \ 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..ebae9f23 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentationMode.st @@ -0,0 +1,4 @@ +0 - setup +instrumentationMode + + ^ #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..b85322e3 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/privDisableTracingFor..st @@ -0,0 +1,30 @@ +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)] valueUnpreemptively + \ 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..44b3226e --- /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 | + + 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 | + 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. + + 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" + + ] valueUnpreemptively. + + 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..72f441ca --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st @@ -0,0 +1,26 @@ +1 - instrument +shouldNeverInstrument: aClass selector: aSymbol + + "largely copied from MwMethodWrapper class >> #canWrap:inClass:" + | class method | + (aClass category beginsWith: 'Babylonian-') ifTrue: [ + aClass category ~= 'Babylonian-Tests-Callgraph-ByteCode-Fixtures' ifTrue: [^ true]]. + (aClass theNonMetaClass includesBehavior: Context) ifTrue: [^ true]. + ((aClass includesBehavior: CompiledMethod) and: [aSymbol == #valueWithReceiver:arguments:]) ifTrue: [^ true]. + ((aClass includesBehavior: BlockClosure) and: [aSymbol == #value or: [aSymbol == #ensure:]]) ifTrue: [^ true]. + ((aClass theNonMetaClass includesBehavior: Binding) and: [aSymbol == #value]) ifTrue: [^ true]. + + (aClass theNonMetaClass includesBehavior: BPByteCodeCallgraphTracer) ifTrue: [^ true]. + (aClass theNonMetaClass includesBehavior: DynamicVariable) ifTrue: [^ true]. + ((aClass includesBehavior: WriteStream) and: [aSymbol == #nextPut:]) ifTrue: [^ true]. + + (aClass theNonMetaClass includesBehavior: BPByteCodeMethodState) ifTrue: [^ true]. + (aClass theNonMetaClass includesBehavior: BPByteCodeAssociation) 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/uninstrumentClass..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentClass..st new file mode 100644 index 00000000..3e852e9d --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentClass..st @@ -0,0 +1,8 @@ +4 - uninstrument +uninstrumentClass: aClass + + CSLayeredMethod pauseFlushingCachesDuring: [ + aClass selectors + do: [:selector | self uninstrumentClass: aClass selector: selector] + displayingProgress: [:selector | 'Recompiling ', aClass, ' >> #', selector] + every: 100] \ 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..fc128706 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentClassCategory..st @@ -0,0 +1,10 @@ +4 - uninstrument +uninstrumentClassCategory: aSymbol + + CSLayeredMethod pauseFlushingCachesDuring: [ + (SystemOrganization classesIn: aSymbol) + do: [:class | + self uninstrumentClass: class theNonMetaClass. + self uninstrumentClass: class theMetaClass] + displayingProgress: [:selector | 'Recompiling ', aSymbol] + every: 100] \ 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..6c0d8d67 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json @@ -0,0 +1,46 @@ +{ + "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:" : "cmfcmf 10/23/2020 13:04", + "disableTracingForCompiledMethod:" : "cmfcmf 10/20/2020 14:22", + "disableTracingForCompiledMethod:mode:" : "cmfcmf 10/26/2020 15:37", + "disableTracingForCompiledMethod:mode:howToAddToMethodDictWhenSlow:" : "cmfcmf 10/27/2020 12:55", + "enableTracingForClass:" : "cmfcmf 10/20/2020 14:32", + "enableTracingForClass:selector:" : "cmfcmf 9/29/2020 16:59", + "enableTracingForClassCategory:" : "cmfcmf 10/23/2020 13:04", + "enableTracingForCompiledMethod:" : "cmfcmf 10/20/2020 14:27", + "enableTracingForCompiledMethod:mode:" : "cmfcmf 10/26/2020 15:34", + "enableTracingForCompiledMethod:mode:howToAddToMethodDictWhenSlow:" : "cmfcmf 10/27/2020 12:55", + "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", + "instrumentClass:" : "cmfcmf 10/20/2020 13:31", + "instrumentClass:selector:" : "cmfcmf 10/24/2020 11:38", + "instrumentClassCategory:" : "cmfcmf 10/23/2020 13:03", + "instrumentCompiledMethod:" : "cmfcmf 10/20/2020 12:46", + "instrumentContext" : "cmfcmf 10/8/2020 11:41", + "instrumentString:" : "cmfcmf 10/26/2020 16:15", + "instrumentationMode" : "cmfcmf 10/20/2020 14:34", + "nuke" : "cmfcmf 10/22/2020 13:00", + "parseClosureCreationByteCodeFor:withEncoder:" : "cmfcmf 10/11/2020 11:22", + "privDisableTracingFor:" : "cmfcmf 10/20/2020 14:04", + "privEnableTracingFor:" : "cmfcmf 10/26/2020 12:46", + "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:" : "cmfcmf 10/26/2020 10:53", + "teardown" : "cmfcmf 10/7/2020 15:31", + "uninstallWrapper:" : "cmfcmf 10/29/2020 13:06", + "uninstrumentClass:" : "cmfcmf 10/20/2020 13:31", + "uninstrumentClass:selector:" : "cmfcmf 10/20/2020 12:44", + "uninstrumentClassCategory:" : "cmfcmf 10/23/2020 13:03", + "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..0182e60b --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Core-Callgraph-ByteCode", + "classinstvars" : [ + ], + "classvars" : [ + ], + "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..5d602def --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/addRoot..st @@ -0,0 +1,5 @@ +public +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/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/detect..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect..st new file mode 100644 index 00000000..0b68b957 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect..st @@ -0,0 +1,5 @@ +enumerating +detect: aBlock + + self do: [:each | (aBlock value: each) ifTrue: [^ each]]. + 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/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.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/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/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..9be3deb3 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json @@ -0,0 +1,18 @@ +{ + "class" : { + }, + "instance" : { + "addRoot:" : "cmfcmf 10/27/2020 14:10", + "babylonianEntries" : "cmfcmf 10/28/2020 11:01", + "detect:" : "cmfcmf 10/27/2020 16:22", + "detect:after:" : "cmfcmf 10/27/2020 16:26", + "detect:after:ifFound:ifNone:" : "cmfcmf 10/27/2020 16:25", + "detect:before:" : "cmfcmf 10/27/2020 16:37", + "detect:before:ifFound:ifNone:" : "cmfcmf 10/27/2020 16:37", + "do:" : "cmfcmf 10/27/2020 14:48", + "do:after:" : "cmfcmf 10/27/2020 17:07", + "do:before:" : "cmfcmf 10/27/2020 16:42", + "do:entry:" : "cmfcmf 10/27/2020 14:48", + "initialize" : "cmfcmf 10/27/2020 14:14", + "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/children.st b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/children.st new file mode 100644 index 00000000..c3ee145c --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/children.st @@ -0,0 +1,4 @@ +as yet unclassified +children + + ^ children "reject: [:child | child isKindOf: BPCallgraphEntryExit]" \ 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/expandByDefault.st b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/expandByDefault.st new file mode 100644 index 00000000..792a0214 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/expandByDefault.st @@ -0,0 +1,4 @@ +as yet unclassified +expandByDefault + + ^ false \ 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/menu..st b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/menu..st new file mode 100644 index 00000000..d987579a --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/menu..st @@ -0,0 +1,4 @@ +as yet unclassified +menu: aMenuMorph + + ^ 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/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/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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntry.class/methodProperties.json new file mode 100644 index 00000000..e628a236 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/methodProperties.json @@ -0,0 +1,19 @@ +{ + "class" : { + }, + "instance" : { + "addChild:" : "cmfcmf 10/27/2020 14:01", + "children" : "cmfcmf 10/26/2020 12:18", + "doBrowse" : "cmfcmf 10/23/2020 15:42", + "expandByDefault" : "cmfcmf 10/23/2020 17:37", + "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", + "menu:" : "cmfcmf 10/27/2020 16:12", + "parent" : "cmfcmf 10/27/2020 14:10", + "parent:" : "cmfcmf 10/27/2020 14:01", + "path" : "cmfcmf 10/27/2020 16:31", + "root" : "cmfcmf 10/27/2020 16:20", + "textColor" : "cmfcmf 10/23/2020 16:14" } } 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/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..72066613 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPAssertion.class/methodProperties.json @@ -0,0 +1,6 @@ +{ + "class" : { + }, + "instance" : { + "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/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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/methodProperties.json new file mode 100644 index 00000000..0e054679 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/methodProperties.json @@ -0,0 +1,9 @@ +{ + "class" : { + }, + "instance" : { + "alternateLabel" : "cmfcmf 10/28/2020 12:42", + "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" } } 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/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..da5c8de9 --- /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: 'value: '; + nextPutAll: (self traceValue tracedValue printStringLimitedTo: 300); + tab; + nextPutAll: 'id: '; + nextPutAll: self id asString "probe id"] \ 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..72066613 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/methodProperties.json @@ -0,0 +1,6 @@ +{ + "class" : { + }, + "instance" : { + "icon" : "cmfcmf 10/28/2020 11:04", + "label" : "cmfcmf 10/28/2020 12:10" } } 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..13f52366 --- /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 actualClass asString, + ' >> #', + 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/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/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..6269fbf7 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/methodProperties.json @@ -0,0 +1,10 @@ +{ + "class" : { + }, + "instance" : { + "alternateLabel" : "cmfcmf 10/28/2020 12:32", + "doBrowse" : "cmfcmf 10/28/2020 13:05", + "iconForId" : "cmfcmf 10/28/2020 12:33", + "id" : "cmfcmf 10/28/2020 12:33", + "keyPressed:" : "cmfcmf 10/28/2020 13:07", + "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..f04c354c --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Core-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/methodProperties.json new file mode 100644 index 00000000..70cd8b84 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/methodProperties.json @@ -0,0 +1,7 @@ +{ + "class" : { + }, + "instance" : { + "alternateLabel" : "cmfcmf 10/28/2020 12:36", + "doBrowse" : "cmfcmf 10/28/2020 12:36", + "iconForId" : "cmfcmf 10/28/2020 12:37" } } 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/BPCallgraphEntryContextJump.class/README.md b/packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/instance/doBrowse.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/instance/doBrowse.st new file mode 100644 index 00000000..34d7ada0 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextJump.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/BPCallgraphEntryContextJump.class/instance/label.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/instance/label.st new file mode 100644 index 00000000..cc877632 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextJump.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/BPCallgraphEntryContextJump.class/instance/menu..st b/packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/instance/menu..st new file mode 100644 index 00000000..dec65827 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/instance/menu..st @@ -0,0 +1,5 @@ +as yet unclassified +menu: aMenuMorph + + aMenuMorph add: 'go to context sender change' action: #selectContextSenderChange. + ^ aMenuMorph \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/instance/textColor.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/instance/textColor.st new file mode 100644 index 00000000..c071f9c9 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/instance/textColor.st @@ -0,0 +1,5 @@ +as yet unclassified +textColor + + + ^ Color orchid \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/methodProperties.json new file mode 100644 index 00000000..68644661 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/methodProperties.json @@ -0,0 +1,8 @@ +{ + "class" : { + }, + "instance" : { + "doBrowse" : "cmfcmf 10/23/2020 15:42", + "label" : "cmfcmf 10/26/2020 12:09", + "menu:" : "cmfcmf 10/27/2020 17:17", + "textColor" : "cmfcmf 10/23/2020 17:50" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/properties.json new file mode 100644 index 00000000..cba813e5 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Core-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPCallgraphEntryContextJump", + "pools" : [ + ], + "super" : "BPCallgraphEntry", + "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/README.md b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/expandByDefault.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/expandByDefault.st new file mode 100644 index 00000000..0f307aeb --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/expandByDefault.st @@ -0,0 +1,4 @@ +as yet unclassified +expandByDefault + + ^ true \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/label.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/label.st new file mode 100644 index 00000000..294c51b6 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/label.st @@ -0,0 +1,4 @@ +as yet unclassified +label + + ^ '-> Context moving right', String tab \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/menu..st b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/menu..st new file mode 100644 index 00000000..a412e7c1 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/menu..st @@ -0,0 +1,6 @@ +as yet unclassified +menu: aMenuMorph + + aMenuMorph add: 'go to execution continuation' action: #selectExecutionContinuation. + aMenuMorph add: 'go to context sender change' action: #selectContextSenderChange. + ^ aMenuMorph \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/textColor.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/textColor.st new file mode 100644 index 00000000..f6ca9c6b --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/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/BPCallgraphEntryContextJumpHelper.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/methodProperties.json new file mode 100644 index 00000000..e11f842d --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/methodProperties.json @@ -0,0 +1,8 @@ +{ + "class" : { + }, + "instance" : { + "expandByDefault" : "cmfcmf 10/23/2020 17:37", + "label" : "cmfcmf 10/26/2020 12:09", + "menu:" : "cmfcmf 10/27/2020 17:17", + "textColor" : "cmfcmf 10/23/2020 17:48" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/properties.json new file mode 100644 index 00000000..448ea3e1 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-Core-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPCallgraphEntryContextJumpHelper", + "pools" : [ + ], + "super" : "BPCallgraphEntryContextJump", + "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/instance/depthDelta.inChain.hasActiveTracing..st b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/depthDelta.inChain.hasActiveTracing..st new file mode 100644 index 00000000..fbb7fefa --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/depthDelta.inChain.hasActiveTracing..st @@ -0,0 +1,6 @@ +as yet unclassified +depthDelta: theDepthDelta inChain: isInChain hasActiveTracing: tracing + + depthDelta := theDepthDelta. + inChain := isInChain. + hasActiveTracing := tracing \ 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/label.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/label.st new file mode 100644 index 00000000..7fe89ef8 --- /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 \ 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..6669af47 --- /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. + ^ 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..f55ef225 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/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/BPCallgraphEntryContextSenderChanged.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/methodProperties.json new file mode 100644 index 00000000..fb338ada --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/methodProperties.json @@ -0,0 +1,9 @@ +{ + "class" : { + }, + "instance" : { + "depthDelta:inChain:hasActiveTracing:" : "cmfcmf 10/22/2020 13:47", + "doBrowse" : "cmfcmf 10/23/2020 15:42", + "label" : "cmfcmf 10/26/2020 12:08", + "menu:" : "cmfcmf 10/27/2020 17:16", + "textColor" : "cmfcmf 10/23/2020 17:50" } } 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..dc3cee0e --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/properties.json @@ -0,0 +1,16 @@ +{ + "category" : "Babylonian-Core-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "depthDelta", + "inChain", + "hasActiveTracing" ], + "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/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..485af50a --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/textColor.st @@ -0,0 +1,5 @@ +as yet unclassified +textColor + + + ^ Color tangerine \ 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..45800bf3 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/methodProperties.json @@ -0,0 +1,11 @@ +{ + "class" : { + }, + "instance" : { + "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 10/23/2020 17:50", + "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/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/doBrowse.st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/doBrowse.st new file mode 100644 index 00000000..512b80da --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/doBrowse.st @@ -0,0 +1,4 @@ +as yet unclassified +doBrowse + + (MethodReference class: class selector: selector) browse \ 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..77e2917a --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/getBlockIdx.st @@ -0,0 +1,4 @@ +as yet unclassified +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..b3dfd7f3 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/getClass.st @@ -0,0 +1,4 @@ +as yet unclassified +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..a0e025eb --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/getInvocationCount.st @@ -0,0 +1,4 @@ +as yet unclassified +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..63f733f6 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/getSelector.st @@ -0,0 +1,4 @@ +as yet unclassified +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..9ad1c90f --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/icon.st @@ -0,0 +1,4 @@ +as yet unclassified +icon + + ^ (BPEmojis emojiForHash: invocationCount + class identityHash + selector identityHash) scaledToSize: 12 \ 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/menu..st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/menu..st new file mode 100644 index 00000000..8dbe4188 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/menu..st @@ -0,0 +1,6 @@ +as yet unclassified +menu: aMenuMorph + + blockIndex > 1 ifTrue: [aMenuMorph add: 'find block exit' action: #selectCorrespondingBlockExit]. + aMenuMorph add: 'find method exit' action: #selectCorrespondingMethodExit. + ^ aMenuMorph \ 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..89b4d8fe --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/methodProperties.json @@ -0,0 +1,13 @@ +{ + "class" : { + }, + "instance" : { + "class:selector:blockIdx:invocationCount:" : "cmfcmf 10/28/2020 13:45", + "doBrowse" : "cmfcmf 10/28/2020 13:45", + "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" : "cmfcmf 10/23/2020 16:27", + "label" : "cmfcmf 10/26/2020 12:00", + "menu:" : "cmfcmf 10/27/2020 17:00" } } 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..7a89c21e --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/properties.json @@ -0,0 +1,17 @@ +{ + "category" : "Babylonian-Core-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "class", + "selector", + "blockIndex", + "invocationCount" ], + "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/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/menu..st b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/menu..st new file mode 100644 index 00000000..c0beca72 --- /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. + ^ aMenuMorph \ 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..fae7dac2 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/methodProperties.json @@ -0,0 +1,8 @@ +{ + "class" : { + }, + "instance" : { + "class:selector:blockIdx:invocationCount:returns:" : "cmfcmf 10/22/2020 13:42", + "label" : "cmfcmf 10/22/2020 14:17", + "menu:" : "cmfcmf 10/27/2020 17:00", + "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/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/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..513fefb4 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgrapher.class/instance/executeSimulated..st @@ -0,0 +1,26 @@ +public +executeSimulated: aBlock + + "based on Context >> #trace:on" + | prev result events simulator | + + events := OrderedCollection new: 100000. + + prev := aBlock. + simulator := RSSimulator new. + simulator config: RSSimulatorConfiguration babylonian. + 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..13820538 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgrapher.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "executeSimulated:" : "cmfcmf 10/27/2020 14:03" } } 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/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/executeWithCallgraph.st b/packages/Babylonian-Core.package/BPExample.class/instance/executeWithCallgraph.st new file mode 100644 index 00000000..65c8fda0 --- /dev/null +++ b/packages/Babylonian-Core.package/BPExample.class/instance/executeWithCallgraph.st @@ -0,0 +1,13 @@ +tracing +executeWithCallgraph + + | 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/executeWithCallgraphusingSimulator.st b/packages/Babylonian-Core.package/BPExample.class/instance/executeWithCallgraphusingSimulator.st new file mode 100644 index 00000000..ba1f7a73 --- /dev/null +++ b/packages/Babylonian-Core.package/BPExample.class/instance/executeWithCallgraphusingSimulator.st @@ -0,0 +1,13 @@ +tracing +executeWithCallgraphusingSimulator + + | 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/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/traceWithCallgraph.st b/packages/Babylonian-Core.package/BPExample.class/instance/traceWithCallgraph.st new file mode 100644 index 00000000..5265c117 --- /dev/null +++ b/packages/Babylonian-Core.package/BPExample.class/instance/traceWithCallgraph.st @@ -0,0 +1,7 @@ +tracing +traceWithCallgraph + + | graph | + graph := self executeWithCallgraph. + traceInformation trace: graph trace. + ^ graph \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExample.class/instance/traceWithCallgraphUsingByteCodeTracer.st b/packages/Babylonian-Core.package/BPExample.class/instance/traceWithCallgraphUsingByteCodeTracer.st new file mode 100644 index 00000000..96671fb3 --- /dev/null +++ b/packages/Babylonian-Core.package/BPExample.class/instance/traceWithCallgraphUsingByteCodeTracer.st @@ -0,0 +1,9 @@ +tracing +traceWithCallgraphUsingByteCodeTracer + + | tracer | + tracer := BPByteCodeCallgraphTracer new. + BPByteCodeCallgraphTracer value: tracer during: [ + BPByteCodeCallgraphTracer customEvent: #bpExample data: self. + self trace]. + ^ tracer \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExample.class/instance/traceWithCallgraphUsingSimulator.st b/packages/Babylonian-Core.package/BPExample.class/instance/traceWithCallgraphUsingSimulator.st new file mode 100644 index 00000000..fb9c5018 --- /dev/null +++ b/packages/Babylonian-Core.package/BPExample.class/instance/traceWithCallgraphUsingSimulator.st @@ -0,0 +1,7 @@ +tracing +traceWithCallgraphUsingSimulator + + | graph | + graph := self executeWithCallgraph. + traceInformation trace: graph trace. + ^ graph \ 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 8429755c..a92a2ab2 100644 --- a/packages/Babylonian-Core.package/BPExample.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPExample.class/methodProperties.json @@ -4,6 +4,11 @@ "fromPragma:" : "pre 9/30/2020 10:20", "newFor:" : "pre 9/30/2020 11:08" }, "instance" : { + "=" : "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 9/30/2020 09:50", @@ -13,20 +18,31 @@ "exampleName:" : "pre 9/30/2020 09:50", "exampleReference" : "pre 9/30/2020 09:53", "execute" : "pre 9/30/2020 09:54", + "executeWithCallgraph" : "cmfcmf 9/23/2020 15:49", + "executeWithCallgraphusingSimulator" : "cmfcmf 10/23/2020 15:05", "hash" : "pre 9/30/2020 09:54", "initialize" : "pre 9/30/2020 09:55", "initializeFromMethod:" : "pre 9/30/2020 11:09", "initializeFromPragma:" : "pre 9/30/2020 10:14", "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" : "pre 8/21/2020 16:51", + "newReceiver" : "pre 8/21/2020 16:50", "printOn:" : "pre 9/30/2020 09:54", + "receiverConstructor" : "pre 5/17/2019 14:06", + "receiverConstructor:" : "pre 5/17/2019 14:06", + "resolveLiveSpecimen:" : "pre 7/10/2020 18:22", "toggleIsActive" : "pre 10/23/2020 10:16", "trace" : "pre 9/30/2020 09:55", "traceAsyncNotifying:" : "pre 9/30/2020 09:55", "traceInBackground" : "pre 9/30/2020 09:55", "traceToHaltAt:" : "pre 9/30/2020 09:55", + "traceWithCallgraph" : "cmfcmf 9/23/2020 13:24", + "traceWithCallgraphUsingByteCodeTracer" : "cmfcmf 10/28/2020 12:30", + "traceWithCallgraphUsingSimulator" : "cmfcmf 10/23/2020 15:26", "uniqueIdentifier" : "pre 9/30/2020 09:55" } } diff --git a/packages/Babylonian-Core.package/BPExample.class/properties.json b/packages/Babylonian-Core.package/BPExample.class/properties.json index 4d80f656..a6945483 100644 --- a/packages/Babylonian-Core.package/BPExample.class/properties.json +++ b/packages/Babylonian-Core.package/BPExample.class/properties.json @@ -4,7 +4,7 @@ ], "classvars" : [ ], - "commentStamp" : "", + "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 ea9944f1..e7e1fec8 100644 --- a/packages/Babylonian-Core.package/BPExampleAnnotation.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPExampleAnnotation.class/methodProperties.json @@ -6,6 +6,7 @@ "actualExample" : "pre 8/17/2020 14:21", "asMorph" : "pre 9/30/2020 10:41", "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:" : "pre 7/23/2019 11:56", 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 3fd0b56d..90387840 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 \ No newline at end of file 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 e2aae598..20b45b6a 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 \ 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..47a88899 --- /dev/null +++ b/packages/Babylonian-Core.package/BPTrace.class/instance/duration..st @@ -0,0 +1,4 @@ +as yet unclassified +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..b0a70366 --- /dev/null +++ b/packages/Babylonian-Core.package/BPTrace.class/instance/duration.st @@ -0,0 +1,4 @@ +as yet unclassified +duration + + ^ duration \ 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..54b68f26 --- /dev/null +++ b/packages/Babylonian-Core.package/BPTrace.class/instance/timing.st @@ -0,0 +1,10 @@ +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 b8ed383d..7615ef57 100644 --- a/packages/Babylonian-Core.package/BPTrace.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPTrace.class/methodProperties.json @@ -2,9 +2,11 @@ "class" : { }, "instance" : { - "addTracedValue:forAssertion:" : "pre 5/10/2019 10:09", - "addTracedValue:forProbe:" : "pre 5/10/2019 10:08", + "addTracedValue:forAssertion:" : "cmfcmf 10/23/2020 15:03", + "addTracedValue:forProbe:" : "cmfcmf 10/23/2020 15:03", "assertions" : "pre 5/10/2019 10:09", + "duration" : "cmfcmf 9/17/2020 13:40", + "duration:" : "cmfcmf 9/17/2020 13:40", "example" : "pre 5/8/2019 16:26", "example:" : "pre 5/8/2019 16:26", "exampleErrored" : "pre 7/25/2019 12:19", @@ -23,6 +25,7 @@ "resultsForAssertionId:" : "pre 11/18/2019 12:55", "runsForBlockId:" : "pre 9/25/2020 17:08", "stackFrom:" : "pre 9/28/2020 10:33", + "timing" : "cmfcmf 9/17/2020 13:14", "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", diff --git a/packages/Babylonian-Core.package/BPTraceAssignmentValue.class/class/value.previousValues.stack.methodReference..st b/packages/Babylonian-Core.package/BPTraceAssignmentValue.class/class/value.previousValues.stack.methodReference..st new file mode 100644 index 00000000..ff142fb9 --- /dev/null +++ b/packages/Babylonian-Core.package/BPTraceAssignmentValue.class/class/value.previousValues.stack.methodReference..st @@ -0,0 +1,6 @@ +instance creation +value: anObject previousValues: variableAndValuesTuples stack: arrayOfContexts methodReference: aMethodReference + + ^ (self value: anObject 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 160d8281..a33fd902 100644 --- a/packages/Babylonian-Core.package/BPTraceAssignmentValue.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPTraceAssignmentValue.class/methodProperties.json @@ -1,6 +1,7 @@ { "class" : { - "value:identityHash:previousValues:stack:" : "pre 10/12/2020 17:58" }, + "value:identityHash:previousValues:stack:" : "pre 10/12/2020 17:58", + "value:previousValues:stack:methodReference:" : "cmfcmf 10/28/2020 12:06" }, "instance" : { "assignedVariableNames" : "pre 7/6/2020 18:41", "initialize" : "pre 7/6/2020 18:23", diff --git a/packages/Babylonian-Core.package/BPTraceValue.class/class/value.stack.methodReference..st b/packages/Babylonian-Core.package/BPTraceValue.class/class/value.stack.methodReference..st new file mode 100644 index 00000000..9a997492 --- /dev/null +++ b/packages/Babylonian-Core.package/BPTraceValue.class/class/value.stack.methodReference..st @@ -0,0 +1,8 @@ +instance creation +value: aValue stack: aCollection methodReference: aMethodReference + + ^ self new + tracedValue: aValue; + 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 8f411f34..557ad8f2 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 \ 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..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 1f9c3634..14294468 100644 --- a/packages/Babylonian-Core.package/BPTraceValue.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPTraceValue.class/methodProperties.json @@ -1,10 +1,16 @@ { "class" : { - "value:identityHash:stack:" : "pre 10/12/2020 17:57" }, + "value:identityHash:stack:" : "pre 10/12/2020 17:57", + "value:stack:methodReference:" : "cmfcmf 10/28/2020 12:04" }, "instance" : { - "printOn:" : "pre 5/13/2019 12:05", + "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:" : "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:" : "pre 5/8/2019 16:42", 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 8c5e0522..c8c2af5f 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: [:e | trace traceException: e 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..ddab34bd --- /dev/null +++ b/packages/Babylonian-Core.package/BPTracer.class/instance/wrapUserCode..st @@ -0,0 +1,4 @@ +callgraph +wrapUserCode: aBlock + + ^ [RSSimulator simulateIfNeeded: aBlock additionalDepth: 0] \ 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 6202c7ca..60036e3c 100644 --- a/packages/Babylonian-Core.package/BPTracer.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPTracer.class/methodProperties.json @@ -7,14 +7,17 @@ "completeTrace" : "pre 9/25/2020 17:07", "example" : "pre 8/17/2020 10:15", "exampleNameMatches:" : "pre 11/18/2019 13:03", + "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", + "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:" : "pre 10/12/2020 12:32", - "traceError:" : "pre 10/12/2020 11:16" } } + "traceBlock:forProbe:" : "cmfcmf 9/22/2020 18:04", + "traceError:" : "pre 10/12/2020 11:16", + "traceException:" : "pre 8/17/2020 10:15", + "wrapUserCode:" : "cmfcmf 10/4/2020 15:13" } } 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..52a4ff2f --- /dev/null +++ b/packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/genNops..st @@ -0,0 +1,11 @@ +*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]. + + 1 to: aNumber - size do: [:i | self genDup] \ 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..bc2292db --- /dev/null +++ b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "genNops:" : "cmfcmf 10/11/2020 11:12" } } 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/RSSimulatorConfiguration.extension/class/babylonian.st b/packages/Babylonian-Core.package/RSSimulatorConfiguration.extension/class/babylonian.st new file mode 100644 index 00000000..2167a525 --- /dev/null +++ b/packages/Babylonian-Core.package/RSSimulatorConfiguration.extension/class/babylonian.st @@ -0,0 +1,11 @@ +*Babylonian-Core-Callgraph +babylonian + + + | config | + config := self "empty" default. + config quickSelectors addAll: ((Object methodsInCategory: #'*Babylonian-Core') collect: [:symbol | symbol -> #yesNotWrapped]). + config quickClasses addAll: { + BPByteCodeCallgraphTracer -> #yesNotWrapped. + BPByteCodeCallgraphTracer class -> #yesNotWrapped}. + ^ config \ No newline at end of file diff --git a/packages/Babylonian-Core.package/RSSimulatorConfiguration.extension/methodProperties.json b/packages/Babylonian-Core.package/RSSimulatorConfiguration.extension/methodProperties.json new file mode 100644 index 00000000..87a92740 --- /dev/null +++ b/packages/Babylonian-Core.package/RSSimulatorConfiguration.extension/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + "babylonian" : "cmfcmf 10/20/2020 16:31" }, + "instance" : { + } } diff --git a/packages/Babylonian-Core.package/RSSimulatorConfiguration.extension/properties.json b/packages/Babylonian-Core.package/RSSimulatorConfiguration.extension/properties.json new file mode 100644 index 00000000..f81ffd27 --- /dev/null +++ b/packages/Babylonian-Core.package/RSSimulatorConfiguration.extension/properties.json @@ -0,0 +1,2 @@ +{ + "name" : "RSSimulatorConfiguration" } 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-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/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..bea47491 --- /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: [:prime | g yield: prime]]. + [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..c308e8dd --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/methodProperties.json @@ -0,0 +1,16 @@ +{ + "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", + "testCascade" : "cmfcmf 10/12/2020 14:03", + "testException" : "cmfcmf 10/26/2020 10:53", + "testGenerator" : "cmfcmf 10/26/2020 10:55", + "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..b8e7bf3a --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/instance/testEdgeCases.st @@ -0,0 +1,14 @@ +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 + } 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..f54edced --- /dev/null +++ b/packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/methodProperties.json @@ -0,0 +1,8 @@ +{ + "class" : { + }, + "instance" : { + "testEdgeCases" : "cmfcmf 10/20/2020 12:06", + "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/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..3731350d --- /dev/null +++ b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/methodProperties.json @@ -0,0 +1,21 @@ +{ + "class" : { + }, + "instance" : { + "a" : "cmfcmf 10/8/2020 11:32", + "b" : "cmfcmf 10/8/2020 11:32", + "blockReturnTest" : "cmfcmf 10/8/2020 12:31", + "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/BPCompilerTest.class/instance/testRewritingIgnoresSliders.st b/packages/Babylonian-Tests.package/BPCompilerTest.class/instance/testRewritingIgnoresSliders.st new file mode 100644 index 00000000..1e82a486 --- /dev/null +++ b/packages/Babylonian-Tests.package/BPCompilerTest.class/instance/testRewritingIgnoresSliders.st @@ -0,0 +1,13 @@ +tests +testRewritingIgnoresSliders + + self + assertCompilerRewrites: +'method + 2 + ""[a + b]""' + to: +'method + + self bpBlock: 1 enteredAt: thisContext. +self bpBlock: 1 leftWith: (2 + [self bpBlock: 2 enteredAt: thisContext. +self bpBlock: 2 leftWith: (a + b) at: thisContext]) at: thisContext' \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPCompilerTest.class/methodProperties.json b/packages/Babylonian-Tests.package/BPCompilerTest.class/methodProperties.json index 7470b198..1a35c052 100644 --- a/packages/Babylonian-Tests.package/BPCompilerTest.class/methodProperties.json +++ b/packages/Babylonian-Tests.package/BPCompilerTest.class/methodProperties.json @@ -13,6 +13,7 @@ "testRewritingErrorOnIncompleteExpressionForReplacement" : "pre 5/10/2019 11:41", "testRewritingErrorOnIncompleteExpressionProbe" : "pre 8/17/2020 08:52", "testRewritingExampleSpecificAssertion" : "pre 9/25/2020 11:56", + "testRewritingIgnoresSliders" : "pre 3/5/2020 17:45", "testRewritingKeywordMessageArgumentProbe" : "pre 9/25/2020 12:00", "testRewritingKeywordMessageBinaryArgumentProbe" : "pre 9/25/2020 16:54", "testRewritingKeywordMessageBinaryReceiverProbe" : "pre 9/25/2020 16:54", 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/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/BPAssignmentProbeMorph.class/instance/valueTextFor..st b/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/instance/valueTextFor..st new file mode 100644 index 00000000..590461fc --- /dev/null +++ b/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/instance/valueTextFor..st @@ -0,0 +1,16 @@ +private +valueTextFor: traceValue + + | previousValueText valueText | + traceValue traceHasFailedBefore ifTrue: [^ super valueTextFor: traceValue]. + previousValueText := (traceValue previousValueOf: traceValue assignedVariableNames first) printString asText. + previousValueText addAttribute: TextEmphasis struckOut. + valueText := super valueTextFor: traceValue. + ^ Text streamContents: [:str | + str + << previousValueText; + << '|' asText; + << valueText] + + + \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/methodProperties.json index d6999e10..313271fc 100644 --- a/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/methodProperties.json @@ -2,4 +2,5 @@ "class" : { }, "instance" : { - "valueMorphFor:" : "pre 10/12/2020 17:27" } } + "valueMorphFor:" : "pre 10/12/2020 17:27", + "valueTextFor:" : "pre 7/10/2020 15:55" } } diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/addAnnotation.in..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/addAnnotation.in..st new file mode 100644 index 00000000..3c3eca45 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/addAnnotation.in..st @@ -0,0 +1,23 @@ +private +addAnnotation: anAnnotation in: interval + + | newContent text actualInterval | + actualInterval := self determineIntervalToAnnotateFor: interval. + actualInterval ifNil: [self codeTextMorph textMorph flash. ^ self]. + + anAnnotation methodReference: self methodReference. + text := self codeTextMorph text. + newContent := Character startOfHeader asString asText , (text copyFrom: actualInterval start to: actualInterval stop). + newContent addAttribute: (BPTextAnchor new + anchoredMorph: anAnnotation asMorph; + yourself). + newContent := text + copyReplaceFrom: actualInterval start + to: actualInterval stop + with: newContent. + + (self codeTextMorph) + setText: newContent; + hasUnacceptedEdits: true; + accept. + diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/addAnnotationAtSelection..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/addAnnotationAtSelection..st new file mode 100644 index 00000000..87b94d50 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/addAnnotationAtSelection..st @@ -0,0 +1,14 @@ +private +addAnnotationAtSelection: anAnnotation + + | result | + self hasUnacceptedEdits ifTrue: [ + self inform: 'To add annotations, +save method first.'. + ^ false]. + + result := self + addAnnotation: anAnnotation + in: (self selectedInterval start to: self selectedInterval stop). + self codeTextMorph setSelection: (self selectedInterval start + 1 to: self selectedInterval stop + 2). + ^ result \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/addAssertionToSelection.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/addAssertionToSelection.st new file mode 100644 index 00000000..a19a0e75 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/addAssertionToSelection.st @@ -0,0 +1,5 @@ +annotations menu +addAssertionToSelection + + self addAnnotationAtSelection: BPAssertion new + \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/addProbeToSelection.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/addProbeToSelection.st new file mode 100644 index 00000000..9c13dd85 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/addProbeToSelection.st @@ -0,0 +1,5 @@ +annotations menu +addProbeToSelection + + self addAnnotationAtSelection: BPProbe new. + \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/addReplacementToSelection.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/addReplacementToSelection.st new file mode 100644 index 00000000..665c92a3 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/addReplacementToSelection.st @@ -0,0 +1,4 @@ +annotations menu +addReplacementToSelection + + self addAnnotationAtSelection: BPReplacement new. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/allAnnotationsMorphs.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/allAnnotationsMorphs.st new file mode 100644 index 00000000..1a45eaf1 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/allAnnotationsMorphs.st @@ -0,0 +1,4 @@ +as yet unclassified +allAnnotationsMorphs + + ^ self codeTextMorph allMorphs select: [:m | m isBPAnnotationMorph] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/annotationsInSelection.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/annotationsInSelection.st new file mode 100644 index 00000000..4bad39cb --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/annotationsInSelection.st @@ -0,0 +1,11 @@ +private +annotationsInSelection + + | annotations interval| + annotations := Set new. + interval := self codeTextMorph selectionInterval. + (interval start to: interval stop + 1) do: [:index | + self codeTextMorph text attributesAt: index do: [:attr | + ((attr isKindOf: TextAnchor) and: [attr anchoredMorph isBPAnnotationMorph]) + ifTrue: [annotations add: attr anchoredMorph annotation]]]. + ^ annotations \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/bindingOf..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/bindingOf..st new file mode 100644 index 00000000..6c7a3af3 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/bindingOf..st @@ -0,0 +1,8 @@ +binding +bindingOf: aString + + ^ self exampleForEvaluation + ifNil: [super bindingOf: aString] + ifNotNil: [:e | + (self exampleMorphFor: e) ifNotNil: [:m | m flash]. + aString -> (e newArguments at: (e argumentNames indexOf: aString))] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphCategoryMenu..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphCategoryMenu..st new file mode 100644 index 00000000..7d66ddb3 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphCategoryMenu..st @@ -0,0 +1,12 @@ +callgraphs +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/BPBrowser.class/instance/callgraphClassMenu..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphClassMenu..st new file mode 100644 index 00000000..696e3d55 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphClassMenu..st @@ -0,0 +1,12 @@ +callgraphs +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/BPBrowser.class/instance/callgraphDisableTracingForClass.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForClass.st new file mode 100644 index 00000000..b04079f2 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForClass.st @@ -0,0 +1,4 @@ +callgraphs +callgraphDisableTracingForClass + + BPByteCodeRewriter disableTracingForClass: self selectedClassOrMetaClass \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForClassCategory.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForClassCategory.st new file mode 100644 index 00000000..1bf7b860 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForClassCategory.st @@ -0,0 +1,4 @@ +callgraphs +callgraphDisableTracingForClassCategory + + BPByteCodeRewriter disableTracingForClassCategory: self selectedSystemCategory \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForMessage.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForMessage.st new file mode 100644 index 00000000..aabf2bff --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForMessage.st @@ -0,0 +1,4 @@ +callgraphs +callgraphDisableTracingForMessage + + BPByteCodeRewriter disableTracingForClass: self selectedClassOrMetaClass selector: self selectedMessageName \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForClass.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForClass.st new file mode 100644 index 00000000..70f9c29a --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForClass.st @@ -0,0 +1,4 @@ +callgraphs +callgraphEnableTracingForClass + + BPByteCodeRewriter enableTracingForClass: self selectedClassOrMetaClass \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForClassCategory.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForClassCategory.st new file mode 100644 index 00000000..1fe10f87 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForClassCategory.st @@ -0,0 +1,4 @@ +callgraphs +callgraphEnableTracingForClassCategory + + BPByteCodeRewriter enableTracingForClassCategory: self selectedSystemCategory \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForMessage.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForMessage.st new file mode 100644 index 00000000..d4ff2086 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForMessage.st @@ -0,0 +1,4 @@ +callgraphs +callgraphEnableTracingForMessage + + BPByteCodeRewriter enableTracingForClass: self selectedClassOrMetaClass selector: self selectedMessageName \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentClass.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentClass.st new file mode 100644 index 00000000..1a61c338 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentClass.st @@ -0,0 +1,4 @@ +callgraphs +callgraphInstrumentClass + + BPByteCodeRewriter instrumentClass: self selectedClassOrMetaClass \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentClassCategory.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentClassCategory.st new file mode 100644 index 00000000..b29a9e54 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentClassCategory.st @@ -0,0 +1,4 @@ +callgraphs +callgraphInstrumentClassCategory + + BPByteCodeRewriter instrumentClassCategory: self selectedSystemCategory \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentMessage.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentMessage.st new file mode 100644 index 00000000..73fd3a89 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentMessage.st @@ -0,0 +1,4 @@ +callgraphs +callgraphInstrumentMessage + + BPByteCodeRewriter instrumentClass: self selectedClassOrMetaClass selector: self selectedMessageName \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphMessageMenu..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphMessageMenu..st new file mode 100644 index 00000000..3b50062b --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphMessageMenu..st @@ -0,0 +1,12 @@ +callgraphs +callgraphMessageMenu: aMenu + + + + ^ aMenu addList: #( + ('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/BPBrowser.class/instance/callgraphUninstrumentClass.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentClass.st new file mode 100644 index 00000000..997f9875 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentClass.st @@ -0,0 +1,4 @@ +callgraphs +callgraphUninstrumentClass + + BPByteCodeRewriter uninstrumentClass: self selectedClassOrMetaClass \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentClassCategory.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentClassCategory.st new file mode 100644 index 00000000..a3e1cef6 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentClassCategory.st @@ -0,0 +1,4 @@ +callgraphs +callgraphUninstrumentClassCategory + + BPByteCodeRewriter uninstrumentClassCategory: self selectedSystemCategory \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentMessage.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentMessage.st new file mode 100644 index 00000000..a8e073d6 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentMessage.st @@ -0,0 +1,4 @@ +callgraphs +callgraphUninstrumentMessage + + BPByteCodeRewriter uninstrumentClass: self selectedClassOrMetaClass selector: self selectedMessageName \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/codePaneMenuAnnotationItems..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/codePaneMenuAnnotationItems..st new file mode 100644 index 00000000..b13db1aa --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/codePaneMenuAnnotationItems..st @@ -0,0 +1,29 @@ +annotations menu +codePaneMenuAnnotationItems: aMenu + + + + | annotationsInSelection | + + self hasUnacceptedEdits ifTrue: [ + aMenu add: 'for annotations save method first' action: #yourself. + ^ aMenu]. + + annotationsInSelection := self annotationsInSelection. + + annotationsInSelection ifEmpty: [ + aMenu + add: 'add probe (u)' action: #addProbeToSelection; + add: 'add assertion' action: #addAssertionToSelection; + add: 'add replacement' action: #addReplacementToSelection]. + + aMenu addLine. + + (annotationsInSelection anySatisfy: [:a | a isProbe]) ifTrue: [ + aMenu add: 'remove probe' action: #removeProbeFromSelection]. + (annotationsInSelection anySatisfy: [:a | a isAssertion]) ifTrue: [ + aMenu add: 'remove assertion' action: #removeAssertionFromSelection]. + (annotationsInSelection anySatisfy: [:a | a isReplacement]) ifTrue: [ + aMenu add: 'remove replacement' action: #removeReplacementFromSelection]. + + ^ aMenu \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st new file mode 100644 index 00000000..5bd2178d --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st @@ -0,0 +1,4 @@ +code pane +compileMessage: aText notifying: aController + + ^ super compileMessage: aText notifying: aController \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/compiledMethod.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/compiledMethod.st new file mode 100644 index 00000000..e5ac86ce --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/compiledMethod.st @@ -0,0 +1,4 @@ +accessing +compiledMethod + + ^ self methodReference compiledMethod \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/determineIntervalToAnnotateFor..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/determineIntervalToAnnotateFor..st new file mode 100644 index 00000000..f5eefa92 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/determineIntervalToAnnotateFor..st @@ -0,0 +1,44 @@ +as yet unclassified +determineIntervalToAnnotateFor: anInterval + "This determines the interval to annotate for a selected interval. The selected interval can also be a 0 width selection. + If there is not valid interval this method will return nil." + + + + | nodes parents lowestCommonAncestorIndex ancestors lowestUsefulAncestor | + + self bpBlock: 1 enteredAt: thisContext. +nodes := currentCompiledMethod bpSourceMap atAll: {(anInterval start). anInterval stop}. + "This is necessary as we do only assume that the last node is the lowest one, not that + the rest of the nodes is necessarily ordered according to the tree" + parents := nodes collect: [:allNodes | self bpBlock: 2 enteredAt: thisContext. +self bpBlock: 2 leftWith: ({allNodes last} , allNodes last allParents) at: thisContext]. + + "This is a naiive approach but is fine as the trees are not that deep." + lowestCommonAncestorIndex := (parents first findFirst: [:n | self bpBlock: 3 enteredAt: thisContext. +self bpBlock: 3 leftWith: (parents second includes: n) at: thisContext]). + lowestCommonAncestorIndex = 0 ifTrue: [self bpBlock: 4 enteredAt: thisContext. +self bpBlock: 4 leftWith: (self error: 'broken tree, no common root found') at: thisContext]. + + ancestors := parents first + copyFrom: lowestCommonAncestorIndex + to: parents first size. + + "This is not enough yet, we have the list of AST nodes covering the selected interval + and their full ranges, but these nodes could be nonsensical to annotate." + lowestUsefulAncestor := (ancestors) + detect: [:n | self bpBlock: 5 enteredAt: thisContext. +self bpBlock: 5 leftWith: (self isAnnotatableRule: n ruleName) at: thisContext] + ifNone: ["This can happen if users selected more than one statement, + we now have to search for the first statement below the current index" + self bpBlock: 6 enteredAt: thisContext. +self bpBlock: 6 leftWith: ((parents first first: lowestCommonAncestorIndex) reverse + detect: [:n | self bpBlock: 7 enteredAt: thisContext. +self bpBlock: 7 leftWith: (self isAnnotatableRule: n ruleName) at: thisContext] + ifNone: ["Try it again for the end of the interval" + self bpBlock: 8 enteredAt: thisContext. +self bpBlock: 8 leftWith: ((parents second copyUpTo: (parents first at: lowestCommonAncestorIndex)) reverse + detect: [:n | self bpBlock: 9 enteredAt: thisContext. +self bpBlock: 9 leftWith: (self isAnnotatableRule: n ruleName) at: thisContext] + ifNone: [self bpBlock: 10 enteredAt: thisContext. +^ self bpBlock: 10 leftWith: (nil "There really is nothing to annotate") at: thisContext]) at: thisContext]) at: thisContext].^ self bpBlock: 1 leftWith: ((lowestUsefulAncestor) interval) at: thisContext \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/doItReceiver.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/doItReceiver.st new file mode 100644 index 00000000..4140bd0d --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/doItReceiver.st @@ -0,0 +1,8 @@ +accessing +doItReceiver + + ^ self exampleForEvaluation + ifNil: [super doItReceiver] + ifNotNil: [:e | + (self exampleMorphFor: e) ifNotNil: [:m | m flash]. + e newReceiver] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/exampleForEvaluation.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/exampleForEvaluation.st new file mode 100644 index 00000000..7cd8b02b --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/exampleForEvaluation.st @@ -0,0 +1,6 @@ +private +exampleForEvaluation + + ^ self compiledMethod bpActiveExamples + ifEmpty: [nil] + ifNotEmptyDo: [:examples | examples first] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/exampleMorphFor..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/exampleMorphFor..st new file mode 100644 index 00000000..7500bb2a --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/exampleMorphFor..st @@ -0,0 +1,6 @@ +private +exampleMorphFor: anExample + + ^ self codeTextMorph allMorphs + detect: [:m | m isBPAnnotationMorph and: [m isExample and: [m example == anExample]]] + ifNone: [nil] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/isAnnotatableRule..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/isAnnotatableRule..st new file mode 100644 index 00000000..448a6423 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/isAnnotatableRule..st @@ -0,0 +1,4 @@ +private +isAnnotatableRule: aRuleName + + ^ #(UnaryMessageSend BinaryMessageSend KeywordMessageSend Expression Statement Operand) includes: aRuleName \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/messageIconFor..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/messageIconFor..st new file mode 100644 index 00000000..71cf1ffc --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/messageIconFor..st @@ -0,0 +1,21 @@ +callgraphs +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/BPBrowser.class/instance/removeAnnotations..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/removeAnnotations..st new file mode 100644 index 00000000..cbe12ea1 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/removeAnnotations..st @@ -0,0 +1,16 @@ +private +removeAnnotations: aCollectionOfAnnotations + + | attributes attributesToBeRemoved newContent | + attributes := (self codeTextMorph text runs values gather: [:c | c]) asSet. + attributesToBeRemoved := attributes select: [:attr | (attr isKindOf: TextAnchor) + and: [attr anchoredMorph isBPAnnotationMorph] + and: [aCollectionOfAnnotations includes: attr anchoredMorph annotation]]. + + newContent := self codeTextMorph text copy. + attributesToBeRemoved do: [:attr | + newContent removeAttribute: attr from: 1 to: newContent size]. + + self saveMethodWithExamplesWith: newContent. + + \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/removeAssertionFromSelection.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/removeAssertionFromSelection.st new file mode 100644 index 00000000..568b23cb --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/removeAssertionFromSelection.st @@ -0,0 +1,4 @@ +annotations menu +removeAssertionFromSelection + + self removeSelectedAnnotationsSatisfying: [:a | a isAssertion] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/removeProbeFromSelection.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/removeProbeFromSelection.st new file mode 100644 index 00000000..907fada3 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/removeProbeFromSelection.st @@ -0,0 +1,4 @@ +annotations menu +removeProbeFromSelection + + self removeSelectedAnnotationsSatisfying: [:a | a isProbe] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/removeReplacementFromSelection.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/removeReplacementFromSelection.st new file mode 100644 index 00000000..78ea7fba --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/removeReplacementFromSelection.st @@ -0,0 +1,4 @@ +annotations menu +removeReplacementFromSelection + + self removeSelectedAnnotationsSatisfying: [:a | a isReplacement] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/removeSelectedAnnotationsSatisfying..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/removeSelectedAnnotationsSatisfying..st new file mode 100644 index 00000000..889369b9 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/removeSelectedAnnotationsSatisfying..st @@ -0,0 +1,15 @@ +private +removeSelectedAnnotationsSatisfying: aSelectBlock + + | attributes attributesToBeRemoved | + attributes := self codeTextMorph text attributesAt: self codeTextMorph selectionInterval start. + attributesToBeRemoved := attributes select: [:attr | + self codeTextMorph selectionInterval allSatisfy: [:index | + (self codeTextMorph text attributesAt: index) includes: attr]]. + attributesToBeRemoved := attributesToBeRemoved asSet select: [:attr | + (attr isKindOf: TextAnchor) + and: [attr anchoredMorph isBPAnnotationMorph] + and: [aSelectBlock value: attr anchoredMorph annotation]]. + + self removeAnnotations: (attributesToBeRemoved collect: [:attr | + attr anchoredMorph annotation]). diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/saveMethodWithExamples.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/saveMethodWithExamples.st new file mode 100644 index 00000000..01d7886c --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/saveMethodWithExamples.st @@ -0,0 +1,5 @@ +private +saveMethodWithExamples + + self codeTextMorph hasUnacceptedEdits: true. + self codeTextMorph accept. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/saveMethodWithExamplesWith..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/saveMethodWithExamplesWith..st new file mode 100644 index 00000000..34b63cf2 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/saveMethodWithExamplesWith..st @@ -0,0 +1,5 @@ +private +saveMethodWithExamplesWith: newContent + + self codeTextMorph setText: newContent. + self saveMethodWithExamples \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json index 6e20d373..76ba70bf 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json @@ -6,7 +6,46 @@ "instance" : { "aboutToStyle:" : "pre 11/11/2019 09:44", "aboutToStyle:requestor:" : "pre 11/8/2019 17:16", + "addAnnotation:in:" : "pre 7/17/2020 17:49", + "addAnnotationAtSelection:" : "pre 7/13/2020 15:46", + "addAssertionToSelection" : "pre 11/13/2019 17:37", + "addProbeToSelection" : "pre 8/6/2019 16:11", + "addReplacementToSelection" : "pre 11/14/2019 15:50", + "allAnnotationsMorphs" : "cmfcmf 10/28/2020 13:03", + "annotationsInSelection" : "pre 11/8/2019 12:05", + "bindingOf:" : "pre 8/25/2020 10:10", "buildCodePaneWith:" : "pre 7/13/2020 16:07", + "callgraphCategoryMenu:" : "cmfcmf 10/23/2020 12:56", + "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 10/23/2020 12:56", + "callgraphUninstrumentClass" : "cmfcmf 10/23/2020 12:55", + "callgraphUninstrumentClassCategory" : "cmfcmf 10/22/2020 17:38", + "callgraphUninstrumentMessage" : "cmfcmf 10/23/2020 11:39", + "codePaneMenuAnnotationItems:" : "pre 8/25/2020 09:17", + "compileMessage:notifying:" : "pre 11/11/2019 09:46", + "compiledMethod" : "pre 1/24/2020 15:08", "defaultBrowserTitle" : "pre 11/8/2019 17:17", + "determineIntervalToAnnotateFor:" : "cmfcmf 9/16/2020 14:55", + "doItReceiver" : "pre 8/25/2020 10:03", + "exampleForEvaluation" : "pre 8/25/2020 09:59", + "exampleMorphFor:" : "pre 8/25/2020 10:01", + "isAnnotatableRule:" : "pre 7/2/2020 19:37", + "messageIconFor:" : "cmfcmf 10/23/2020 12:58", "messageList" : "pre 9/24/2020 14:26", - "rawMessageCategoryList" : "pre 3/19/2020 11:26" } } + "rawMessageCategoryList" : "pre 3/19/2020 11:26", + "removeAnnotations:" : "pre 8/24/2020 18:28", + "removeAssertionFromSelection" : "pre 7/23/2019 14:48", + "removeProbeFromSelection" : "pre 7/23/2019 14:48", + "removeReplacementFromSelection" : "pre 4/29/2020 19:07", + "removeSelectedAnnotationsSatisfying:" : "pre 7/26/2019 16:08", + "saveMethodWithExamples" : "pre 11/11/2019 09:36", + "saveMethodWithExamplesWith:" : "pre 8/6/2019 13:57" } } 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..01def729 --- /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 traceValue 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..dde04b02 --- /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/28/2020 14:19", + "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..96eda692 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphIndentingListItemMorph.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-UI-Callgraph", + "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..0b54e33e --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphListItemWrapper.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-UI-Callgraph", + "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/instance/callgraph..st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/callgraph..st new file mode 100644 index 00000000..8c30b97c --- /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..222fd93c --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/childrenOf..st @@ -0,0 +1,4 @@ +as yet unclassified +childrenOf: aBPCallgraphEntry + + ^ aBPCallgraphEntry children \ 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..b682b1dc --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/getSpec.st @@ -0,0 +1,22 @@ +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:; + 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/initialize.st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/initialize.st new file mode 100644 index 00000000..8d644225 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/initialize.st @@ -0,0 +1,4 @@ +as yet unclassified +initialize + + super initialize \ 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..019f0515 --- /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.']. + ^ 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..6bfdb029 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/menuOf..st @@ -0,0 +1,6 @@ +as yet unclassified +menuOf: aMenuMorph + + | entry | + entry := self getSelectedEntry. + ^ entry menu: 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..d94514fd --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/rootEntries.st @@ -0,0 +1,4 @@ +as yet unclassified +rootEntries + + ^ callgraph ifNotNil: #roots ifNil: [{}] \ 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..93f63109 --- /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 exit 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..3b6ba64c --- /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). + + 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..53a8f25c --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectExecutionContinuation.st @@ -0,0 +1,8 @@ +menu +selectExecutionContinuation + + callgraph + detect: [:each | each class == BPCallgraphEntryContextJump] + 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/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/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/setSelectedEntry..st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/setSelectedEntry..st new file mode 100644 index 00000000..db646ad7 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/setSelectedEntry..st @@ -0,0 +1,5 @@ +as yet unclassified +setSelectedEntry: aBPCallgraphEntry + + selectedEntry := aBPCallgraphEntry. + self changed: #getSelectedEntry \ 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..c3adac91 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/methodProperties.json @@ -0,0 +1,26 @@ +{ + "class" : { + }, + "instance" : { + "callgraph" : "cmfcmf 10/28/2020 10:40", + "callgraph:" : "cmfcmf 10/27/2020 14:12", + "childrenOf:" : "cmfcmf 10/22/2020 13:22", + "getSelectedEntry" : "cmfcmf 10/22/2020 14:29", + "getSpec" : "cmfcmf 10/28/2020 10:09", + "hasChildren:" : "cmfcmf 10/22/2020 13:22", + "iconOf:" : "cmfcmf 10/23/2020 16:05", + "initialize" : "cmfcmf 10/27/2020 16:44", + "key:from:event:" : "cmfcmf 10/26/2020 13:03", + "labelOf:" : "cmfcmf 10/22/2020 13:23", + "menuOf:" : "cmfcmf 10/27/2020 16:14", + "rootEntries" : "cmfcmf 10/27/2020 14:13", + "selectContextSenderChange" : "cmfcmf 10/27/2020 17:17", + "selectCorrespondingBlockEnter" : "cmfcmf 10/27/2020 17:15", + "selectCorrespondingBlockExit" : "cmfcmf 10/28/2020 12:25", + "selectCorrespondingMethodEnter" : "cmfcmf 10/27/2020 17:15", + "selectCorrespondingMethodExit" : "cmfcmf 10/27/2020 17:15", + "selectEntry:" : "cmfcmf 10/27/2020 16:30", + "selectExecutionContinuation" : "cmfcmf 10/27/2020 17:15", + "selectNextCustomEvent" : "cmfcmf 10/28/2020 11:01", + "selectPrevCustomEvent" : "cmfcmf 10/28/2020 11:01", + "setSelectedEntry:" : "cmfcmf 10/23/2020 15:38" } } 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..048aaf6e --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Babylonian-UI-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "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/expandRecursivelyIfNeeded..st b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/instance/expandRecursivelyIfNeeded..st new file mode 100644 index 00000000..8b422e24 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/instance/expandRecursivelyIfNeeded..st @@ -0,0 +1,6 @@ +as yet unclassified +expandRecursivelyIfNeeded: aBPCallgraphIndentingListItemMorph + + aBPCallgraphIndentingListItemMorph complexContents item expandByDefault ifFalse: [^ self]. + aBPCallgraphIndentingListItemMorph expand. + aBPCallgraphIndentingListItemMorph childrenDo: [:child | self expandRecursivelyIfNeeded: child]. \ No newline at end of file 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/wrapRoots..st b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/instance/wrapRoots..st new file mode 100644 index 00000000..ff289731 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/instance/wrapRoots..st @@ -0,0 +1,6 @@ +updating +wrapRoots: someObjects + + super wrapRoots: someObjects. + self roots do: [:each | self expandRecursivelyIfNeeded: each]. + self adjustSubmorphPositions \ 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..86b6e363 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/methodProperties.json @@ -0,0 +1,8 @@ +{ + "class" : { + }, + "instance" : { + "expandRecursivelyIfNeeded:" : "cmfcmf 10/23/2020 17:49", + "indentingItemClass" : "cmfcmf 10/23/2020 17:27", + "indicateUnfiltered" : "cmfcmf 10/26/2020 13:14", + "wrapRoots:" : "cmfcmf 10/23/2020 17:49" } } 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..e976ba03 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-UI-Callgraph", + "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..f319190e --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeSpec.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-UI-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPCallgraphPluggableTreeSpec", + "pools" : [ + ], + "super" : "PluggableTreeSpec", + "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 62e86e88..4f358d4c 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/addArgumentScriptMorphs.st b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/addArgumentScriptMorphs.st new file mode 100644 index 00000000..b7df9e52 --- /dev/null +++ b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/addArgumentScriptMorphs.st @@ -0,0 +1,31 @@ +private - ui +addArgumentScriptMorphs + + | editField | + self example argumentNames withIndexDo: [:argumentName :index | + self addMorphBack: (argumentName , ': ') asMorph. + + "Editing field" + editField := self + editFieldInitialContent: (self example argumentScriptStringAt: index) + onChange: [:str | + self example argumentScripts at: index put: str. + self codeContentChanged] + onAccept: [:str | + self containingBrowser saveMethodWithExamples. + false "Do not continue handling this morphs edit"]. + self addMorphBack: editField. + + "Live specimen selection" + self addMorphBack: (SimpleButtonMorph new + height: self fontHeight; + color: self color; + borderWidth: 2; + label: 's'; + target: [ + self selectLiveSpecimenThen: [:specimen |. + self example argumentScripts at: index put: specimen. + self codeContentChanged. + editField setText: (self example argumentScriptStringAt: index)]]; + actionSelector: #value; + yourself)] \ No newline at end of file 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..17c18be4 --- /dev/null +++ b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/addCallgraphMorphs.st @@ -0,0 +1,28 @@ +private - ui +addCallgraphMorphs + + + self addMorphBack: (TextMorph new + color: Color black; + hResizing: #shrinkWrap; + vResizing: #shrinkWrap; + readOnly: true; + contents: ''; + name: #duration; + yourself). + self addMorphBack: (SimpleButtonMorph new + hResizing: #shrinkWrap; + vResizing: #shrinkWrap; + name: #contextTrace; + label: 'view callgraph'; + target: self; + actionSelector: #viewCallgraph + yourself). + self addMorphBack: (SimpleButtonMorph new + hResizing: #shrinkWrap; + vResizing: #shrinkWrap; + name: #contextTrace; + label: 'run once'; + target: self; + actionSelector: #runOnce + yourself). \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/addReceiverConstructorMorph.st b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/addReceiverConstructorMorph.st new file mode 100644 index 00000000..33d0ed9c --- /dev/null +++ b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/addReceiverConstructorMorph.st @@ -0,0 +1,14 @@ +private - ui +addReceiverConstructorMorph + + self addMorphBack: 'self: ' asMorph. + + self addMorphBack: (self + editFieldInitialContent: (self example receiverConstructor isSymbol + ifTrue: [self example receiverConstructor printString] + ifFalse: [self example receiverConstructor]) + onChange: [:str | + self example receiverConstructor: str. + self codeContentChanged] + onAccept: [:str | + self containingBrowser codeTextMorph accept]) \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/runOnce.st b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/runOnce.st new file mode 100644 index 00000000..058a2e14 --- /dev/null +++ b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/runOnce.st @@ -0,0 +1,4 @@ +as yet unclassified +runOnce + + self example traceInBackground \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/selectLiveSpecimenThen..st b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/selectLiveSpecimenThen..st new file mode 100644 index 00000000..6f6f1df5 --- /dev/null +++ b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/selectLiveSpecimenThen..st @@ -0,0 +1,10 @@ +private - ui +selectLiveSpecimenThen: uiThenBlock + + "This is somewhat feature-envy-ish, the representation of live specimen is leaking throughout + the registry, example, and this UI..." + BPSelectViaDropMorph new + then: [:specimen | | reference | + reference := BPActiveSpecimenRegistry value storeSpecimen: specimen. + uiThenBlock value: reference]; + openInWindow \ 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 21f05cb8..7bd810d7 100644 --- a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/step.st +++ b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/step.st @@ -1,6 +1,6 @@ stepping and presenter step - + | trace | trace := self example currentTrace. (trace notNil and: [trace exampleErrored]) @@ -9,4 +9,8 @@ step (trace notNil and: [trace hasTraceCompleted not]) 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/viewCallgraph.st b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/viewCallgraph.st new file mode 100644 index 00000000..ea1b07c4 --- /dev/null +++ b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/viewCallgraph.st @@ -0,0 +1,14 @@ +as yet unclassified +viewCallgraph + + | tracer explorer | + tracer := self example traceWithCallgraphUsingByteCodeTracer. + explorer := BPCallgraphExplorer open. + explorer loadFromCallgraphTracer: tracer. + + "| graph str | + + graph := self example traceWithCallgraphUsingSimulator. + str := graph eventsToString. + str toTmpFile. + graph explore." \ 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 5ba48b4f..60182a56 100644 --- a/packages/Babylonian-UI.package/BPExampleMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPExampleMorph.class/methodProperties.json @@ -4,10 +4,13 @@ "instance" : { "activateExampleButtonClicked" : "pre 10/23/2020 12:03", "addActivationButtonMorph" : "pre 9/30/2020 10:35", + "addArgumentScriptMorphs" : "pre 8/25/2020 10:23", + "addCallgraphMorphs" : "cmfcmf 9/18/2020 11:09", "addDeleteButtonMorph" : "pre 9/30/2020 10:35", "addExampleNameMorph" : "pre 10/6/2020 10:27", "addExampleSpecificMorphs" : "pre 9/30/2020 10:37", "addLoaderIconHolder" : "pre 9/30/2020 10:36", + "addReceiverConstructorMorph" : "pre 8/25/2020 09:26", "ensureLoaderIcon" : "pre 9/30/2020 10:35", "ensureNoLoaderIcon" : "pre 9/30/2020 10:35", "example" : "pre 9/30/2020 10:34", @@ -16,6 +19,9 @@ "isExample" : "pre 9/30/2020 10:34", "isExampleActive" : "pre 9/30/2020 10:34", "removeButtonClicked" : "pre 9/30/2020 10:35", - "step" : "pre 9/30/2020 10:35", + "runOnce" : "cmfcmf 9/18/2020 11:10", + "selectLiveSpecimenThen:" : "pre 7/10/2020 18:24", + "step" : "cmfcmf 9/18/2020 11:11", "textEmphasis" : "pre 9/30/2020 10:35", - "updateMorphs" : "pre 9/30/2020 10:37" } } + "updateMorphs" : "pre 9/30/2020 10:37", + "viewCallgraph" : "cmfcmf 10/27/2020 14:27" } } diff --git a/packages/Babylonian-UI.package/BPExamplesMorph.class/instance/addCreateExampleButton.st b/packages/Babylonian-UI.package/BPExamplesMorph.class/instance/addCreateExampleButton.st new file mode 100644 index 00000000..13ec65e8 --- /dev/null +++ b/packages/Babylonian-UI.package/BPExamplesMorph.class/instance/addCreateExampleButton.st @@ -0,0 +1,21 @@ +initialization +addCreateExampleButton + + | addExampleButton | + addExampleButton := IconicButton new + labelGraphic: ('add an example' asText addAttribute: (TextColor color: Color lightGray); yourself) asMorph imageForm; + yourself. + + addExampleButton + color: Color transparent; + borderWidth: 0; + hResizing: #shrinkWrap; + layoutInset: 1; + extent: addExampleButton extent * 0.8. + + addExampleButton + target: self; + actionSelector: #addExampleButtonClicked. + + self addMorph: addExampleButton + \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPExamplesMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPExamplesMorph.class/methodProperties.json index f3db1d7a..4506018c 100644 --- a/packages/Babylonian-UI.package/BPExamplesMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPExamplesMorph.class/methodProperties.json @@ -3,6 +3,7 @@ }, "instance" : { "addButtonBar" : "pre 9/30/2020 11:06", + "addCreateExampleButton" : "pre 8/25/2020 10:22", "addCreateExampleButtonLabeled:selector:" : "pre 10/6/2020 11:54", "addExampleButtonClicked" : "pre 9/30/2020 11:12", "addNewExampleAnnotation:" : "pre 9/30/2020 11:11", diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/annotation..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/annotation..st new file mode 100644 index 00000000..38b592c8 --- /dev/null +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/annotation..st @@ -0,0 +1,8 @@ +accessing +annotation: anObject + + | result | + result := super annotation: anObject. + self updateFrom: self emptyTraces. + ^ result + \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/blinkFor..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/blinkFor..st new file mode 100644 index 00000000..59a7ecb1 --- /dev/null +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/blinkFor..st @@ -0,0 +1,4 @@ +stepping and presenter +blinkFor: aDuration + + blinkCounter := aDuration asMilliSeconds // self stepTime \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/initialize.st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/initialize.st new file mode 100644 index 00000000..880cde43 --- /dev/null +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/initialize.st @@ -0,0 +1,19 @@ +initialization +initialize + + + | removeButton | + super initialize. + blinkCounter := 0. + + allTracesCompleted := false. + + "This morph holds the traces and the expression morph" + widgetsMorph := self newWidgetsMorph. + self addMorphBack: widgetsMorph. + + tracesMorph := self newTracesMorph. + widgetsMorph addMorphBack: tracesMorph. + + removeButton := self newRemoveButton. + self addMorphBack: removeButton \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExampleLabelMorphFor..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExampleLabelMorphFor..st new file mode 100644 index 00000000..1eeadb81 --- /dev/null +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExampleLabelMorphFor..st @@ -0,0 +1,13 @@ +private - ui +newExampleLabelMorphFor: aTrace + + | exampleLabel | + exampleLabel := aTrace example exampleName asText. + exampleLabel addAttribute: (BPPluggableTextAttribute new evalBlock: [ + ToolSet + browse: aTrace example method methodClass + selector: aTrace example method selector asSymbol]). + ^ (TextMorph new) + contents: exampleLabel; + color: aTrace example color; + yourself \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExampleLineMorph.st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExampleLineMorph.st new file mode 100644 index 00000000..25f0b5d1 --- /dev/null +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExampleLineMorph.st @@ -0,0 +1,14 @@ +private - ui +newExampleLineMorph + + ^ Morph new + color: Color transparent; + changeTableLayout; + layoutInset: 0; + listDirection: #leftToRight; + vResizing: #shrinkWrap; + hResizing: #shrinkWrap; + cellPositioning: #leftCenter; + cellGap: 1; + name: 'example line'; + yourself. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newTracesMorph.st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newTracesMorph.st new file mode 100644 index 00000000..aecc3614 --- /dev/null +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newTracesMorph.st @@ -0,0 +1,12 @@ +private - ui +newTracesMorph + + ^ Morph new + color: Color transparent; + changeTableLayout; + listDirection: #topToBottom; + vResizing: #shrinkWrap; + hResizing: #shrinkWrap; + cellPositioning: #topLeft; + layoutInset: 1; + yourself. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newWidgetsMorph.st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newWidgetsMorph.st new file mode 100644 index 00000000..69a0beb3 --- /dev/null +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newWidgetsMorph.st @@ -0,0 +1,12 @@ +private - ui +newWidgetsMorph + + ^ Morph new + color: Color transparent; + changeTableLayout; + listDirection: #topToBottom; + vResizing: #shrinkWrap; + hResizing: #shrinkWrap; + cellPositioning: #topLeft; + layoutInset: 1; + yourself. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/removeLinesWithoutCurrentTrace..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/removeLinesWithoutCurrentTrace..st new file mode 100644 index 00000000..ef599637 --- /dev/null +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/removeLinesWithoutCurrentTrace..st @@ -0,0 +1,6 @@ +private - ui +removeLinesWithoutCurrentTrace: traces + + tracesMorph submorphs do: [:line | + (traces includes: (line valueOfProperty: #bpTrace)) ifFalse: [ + line abandon]] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/step.st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/step.st new file mode 100644 index 00000000..19f6f235 --- /dev/null +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/step.st @@ -0,0 +1,17 @@ +stepping and presenter +step + + | newTraces | + self methodReference ifNil: [^ false]. + newTraces := self getTraces asIdentitySet. + + (allTracesCompleted not or: [newTraces ~= displayedTraces]) ifTrue: [ + allTracesCompleted := newTraces ifEmpty: [false] ifNotEmpty: [:ts | ts allSatisfy: [:t | t hasTraceCompleted]]. + (newTraces notNil and: [newTraces notEmpty]) + ifTrue: [ self updateFrom: newTraces] + ifFalse: [self updateFrom: self emptyTraces]. + displayedTraces := newTraces]. + + blinkCounter > 0 ifTrue: [ + self color: (blinkCounter odd ifTrue: [Color palePeach slightlyLighter] ifFalse: [Color red]). + blinkCounter := blinkCounter - 1] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/stepTime.st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/stepTime.st new file mode 100644 index 00000000..b7fabca7 --- /dev/null +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/stepTime.st @@ -0,0 +1,4 @@ +stepping and presenter +stepTime + + ^ 100 \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valueTextFor..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valueTextFor..st new file mode 100644 index 00000000..39390b03 --- /dev/null +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valueTextFor..st @@ -0,0 +1,17 @@ +private +valueTextFor: traceValue + + | value | + value := traceValue tracedValue. + ^ (value isCollection or: [value isNumber]) + ifTrue: [value printString asText] + ifFalse: [| iconMorph | + iconMorph := self iconForValue: value. + ((Text + string: Character startOfHeader asString + attributes: {TextAnchor new + anchoredMorph: iconMorph; + yourself}) , + String space , + value printString asText)] + \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valuesTextFor..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valuesTextFor..st new file mode 100644 index 00000000..64774f77 --- /dev/null +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valuesTextFor..st @@ -0,0 +1,12 @@ +private +valuesTextFor: trace + + | values | + values := trace valuesForProbeId: self id. + values first traceHasFailedBefore ifTrue: [ + ^ 'Error during execution: ' , trace recordedException printString]. + values ifEmpty: [ + ^ self noValuesText]. + ^ Text streamContents: [:str | values + do: [:v | str << (self valueTextFor: v)] + separatedBy: [str << ', ' asText]] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/viewCallgraphForTrace..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/viewCallgraphForTrace..st new file mode 100644 index 00000000..7e1a3432 --- /dev/null +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/viewCallgraphForTrace..st @@ -0,0 +1,21 @@ +private - ui +viewCallgraphForTrace: aTrace + + | values index callgraph explorer | + values := aTrace valuesForProbeId: self id. + index := UIManager default + chooseFrom: (values withIndexCollect: [:v :i | '#', i, ': ', (v tracedValue)]), {'at the top'} + values: (values withIndexCollect: [:v :i | i]), {0} + title: 'At which invocation do you want to open the callgraph?'. + index ifNil: [^ self]. + + callgraph := aTrace example traceWithCallgraphUsingByteCodeTracer eventsForTree. + explorer := BPCallgraphExplorer open. + explorer loadFromCallgraph: callgraph. + index > 0 ifTrue: [ | entry n | + n := 0. + entry := callgraph babylonianEntries detect: [:each | + ((each class == BPCallgraphEntryBPProbe) and: [each id == self id]) + ifTrue: [(n := n + 1) == index] + ifFalse: [false]]. + explorer selectEntry: entry] \ 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 6b00a8be..0fd5e581 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json @@ -2,21 +2,34 @@ "class" : { }, "instance" : { + "annotation:" : "cmfcmf 10/13/2020 12:16", + "blinkFor:" : "cmfcmf 10/28/2020 12:59", "ensureLineMorphFor:" : "pre 8/21/2020 12:09", "exploreButtonClickedFor:" : "pre 7/23/2019 09:16", "haltButtonClickedFor:and:" : "pre 9/29/2020 16:12", "iconForValue:" : "pre 10/6/2020 09:21", + "initialize" : "cmfcmf 10/28/2020 13:02", "isProbe" : "pre 7/3/2019 11:11", "newAddExpressionMorph" : "pre 10/6/2020 11:53", + "newExampleLabelMorphFor:" : "pre 1/27/2020 18:23", + "newExampleLineMorph" : "pre 11/18/2019 12:43", "newExploreButtonFor:" : "pre 8/21/2020 11:15", "newExpressionMorph" : "pre 10/8/2020 10:46", "newHaltButtonFor:" : "pre 9/29/2020 15:55", "newLineMorphFor:" : "pre 10/8/2020 10:46", "newScrollPane" : "pre 10/12/2020 11:23", + "newTracesMorph" : "pre 3/19/2020 14:06", + "newWidgetsMorph" : "pre 9/22/2020 10:03", "noValuesText" : "pre 7/7/2020 16:38", "relevantTracesOf:do:" : "pre 11/18/2019 12:47", + "removeLinesWithoutCurrentTrace:" : "pre 8/20/2020 16:32", "setExpressionButtonClicked" : "pre 9/22/2020 10:05", + "step" : "cmfcmf 10/28/2020 13:01", + "stepTime" : "pre 8/20/2020 17:35", "updateExpressionMorphIfNecessary" : "pre 9/22/2020 10:04", "updateFrom:" : "pre 10/12/2020 18:02", "valueMorphFor:" : "pre 10/12/2020 18:00", - "valuesMorphFor:" : "pre 10/12/2020 17:51" } } + "valueTextFor:" : "pre 7/7/2020 16:43", + "valuesMorphFor:" : "pre 10/12/2020 17:51", + "valuesTextFor:" : "pre 8/17/2020 09:31", + "viewCallgraphForTrace:" : "cmfcmf 10/28/2020 11:02" } } diff --git a/packages/Babylonian-UI.package/BPSliderMorph.class/instance/annotation..st b/packages/Babylonian-UI.package/BPSliderMorph.class/instance/annotation..st new file mode 100644 index 00000000..555fd67e --- /dev/null +++ b/packages/Babylonian-UI.package/BPSliderMorph.class/instance/annotation..st @@ -0,0 +1,5 @@ +accessing +annotation: anObject + + super annotation: anObject. + self createMorphs. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPSliderMorph.class/instance/createMorphs.st b/packages/Babylonian-UI.package/BPSliderMorph.class/instance/createMorphs.st new file mode 100644 index 00000000..d60b0f2d --- /dev/null +++ b/packages/Babylonian-UI.package/BPSliderMorph.class/instance/createMorphs.st @@ -0,0 +1,4 @@ +private +createMorphs + + self removeAllMorphs. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPSliderMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPSliderMorph.class/methodProperties.json index e2a02a4b..ea75c451 100644 --- a/packages/Babylonian-UI.package/BPSliderMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPSliderMorph.class/methodProperties.json @@ -2,6 +2,8 @@ "class" : { }, "instance" : { + "annotation:" : "pre 1/24/2020 16:13", + "createMorphs" : "pre 1/24/2020 16:15", "for:selectContextAt:" : "pre 9/28/2020 10:54", "initialize" : "pre 9/28/2020 09:56", "isSlider" : "pre 1/24/2020 16:14", 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..7c21db7d --- /dev/null +++ b/packages/Babylonian-UI.package/MorphicToolBuilder.extension/instance/buildBPCallgraph..st @@ -0,0 +1,58 @@ +*Babylonian-UI-Callgraph +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/methodProperties.json b/packages/Babylonian-UI.package/MorphicToolBuilder.extension/methodProperties.json new file mode 100644 index 00000000..b1cedf7e --- /dev/null +++ b/packages/Babylonian-UI.package/MorphicToolBuilder.extension/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "buildBPCallgraph:" : "cmfcmf 10/23/2020 17:28" } } 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/monticello.meta/categories.st b/packages/Babylonian-UI.package/monticello.meta/categories.st index 61c3fb93..fe79427f 100644 --- a/packages/Babylonian-UI.package/monticello.meta/categories.st +++ b/packages/Babylonian-UI.package/monticello.meta/categories.st @@ -1 +1,2 @@ SystemOrganization addCategory: #'Babylonian-UI'! +SystemOrganization addCategory: #'Babylonian-UI-Callgraph'! From 7d1b89dd34eeaac6c9219d5b3136451a780ad77f Mon Sep 17 00:00:00 2001 From: Christian Flach Date: Fri, 30 Oct 2020 12:49:22 +0100 Subject: [PATCH 02/71] Complete merge --- .../BPCompiler.class/class/compilerClass.st | 4 ++-- .../instance/compileCue.noPattern.ifFail..st | 18 +++++++++--------- .../BPCompiler.class/methodProperties.json | 4 ++-- ...lue.previousValues.expression.stackFrom..st | 3 ++- .../newTracedValue.expression.stackFrom..st | 3 ++- .../BPTrace.class/methodProperties.json | 4 ++-- .../BPTrace.class/properties.json | 3 ++- ...h.previousValues.stack.methodReference..st} | 4 ++-- ...ue.previousValues.stack.methodReference..st | 6 ------ .../methodProperties.json | 3 +-- ...lue.identityHash.stack.methodReference..st} | 3 ++- .../class/value.stack.methodReference..st | 8 -------- .../BPTraceValue.class/methodProperties.json | 3 +-- .../BPTraceValue.class/properties.json | 4 +++- ...heck.after.forAssertion.given.inContext..st | 2 +- .../BPTracer.class/methodProperties.json | 2 +- .../BPExampleMorph.class/instance/step.st | 4 ++-- .../instance/updateMorphs.st | 5 +++-- .../BPExampleMorph.class/methodProperties.json | 4 ++-- .../instance/newLineMorphFor..st | 9 +++++++++ .../BPProbeMorph.class/methodProperties.json | 2 +- 21 files changed, 49 insertions(+), 49 deletions(-) rename packages/Babylonian-Core.package/BPTraceAssignmentValue.class/class/{value.identityHash.previousValues.stack..st => value.identityHash.previousValues.stack.methodReference..st} (62%) delete mode 100644 packages/Babylonian-Core.package/BPTraceAssignmentValue.class/class/value.previousValues.stack.methodReference..st rename packages/Babylonian-Core.package/BPTraceValue.class/class/{value.identityHash.stack..st => value.identityHash.stack.methodReference..st} (72%) delete mode 100644 packages/Babylonian-Core.package/BPTraceValue.class/class/value.stack.methodReference..st diff --git a/packages/Babylonian-Compiler.package/BPCompiler.class/class/compilerClass.st b/packages/Babylonian-Compiler.package/BPCompiler.class/class/compilerClass.st index 0f12f4c9..143008a9 100644 --- a/packages/Babylonian-Compiler.package/BPCompiler.class/class/compilerClass.st +++ b/packages/Babylonian-Compiler.package/BPCompiler.class/class/compilerClass.st @@ -1,4 +1,4 @@ -as yet unclassified +compiling compilerClass - ^ "BP"Compiler \ No newline at end of file + ^ BPCompiler \ 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 index b1aa3c66..843b5b71 100644 --- a/packages/Babylonian-Compiler.package/BPCompiler.class/instance/compileCue.noPattern.ifFail..st +++ b/packages/Babylonian-Compiler.package/BPCompiler.class/instance/compileCue.noPattern.ifFail..st @@ -1,10 +1,10 @@ public access compileCue: aCueWithBPSource noPattern: aBoolean ifFail: failBlock - - "This method expects source code which already has annotations in comments present" - - | originalMethod bpSource basicCue | + + "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. @@ -15,10 +15,10 @@ compileCue: aCueWithBPSource noPattern: aBoolean ifFail: failBlock class: aCueWithBPSource getClass environment: aCueWithBPSource environment requestor: aCueWithBPSource requestor. - originalMethod := super compileCue: basicCue noPattern: aBoolean ifFail: failBlock. + originalMethodNode := super compileCue: basicCue noPattern: aBoolean ifFail: failBlock. - "bpSource := originalMethod sourceText asString. + bpSource := originalMethodNode sourceText asString. (self methodSourceRequiresBPLayers: bpSource) ifTrue: [ - (self compileInstrumentedVersionOf: aCueWithBPSource) ifFalse: failBlock]." - - ^ originalMethod \ No newline at end of file + (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 0c7b512b..072e6b0c 100644 --- a/packages/Babylonian-Compiler.package/BPCompiler.class/methodProperties.json +++ b/packages/Babylonian-Compiler.package/BPCompiler.class/methodProperties.json @@ -1,12 +1,12 @@ { "class" : { - "compilerClass" : "cmfcmf 10/27/2020 11:16", + "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 8/20/2020 15:46", "compile:ifFail:" : "cmfcmf 10/27/2020 11:15", - "compileCue:noPattern:ifFail:" : "cmfcmf 10/29/2020 14:13", + "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", 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/methodProperties.json b/packages/Babylonian-Core.package/BPTrace.class/methodProperties.json index 7615ef57..15f6eced 100644 --- a/packages/Babylonian-Core.package/BPTrace.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPTrace.class/methodProperties.json @@ -17,8 +17,8 @@ "includesValuesForProbeId:" : "pre 7/24/2019 11:30", "initialize" : "pre 9/25/2020 17:05", "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:" : "pre 7/25/2019 12:29", diff --git a/packages/Babylonian-Core.package/BPTrace.class/properties.json b/packages/Babylonian-Core.package/BPTrace.class/properties.json index 1a799e8f..f1c2da71 100644 --- a/packages/Babylonian-Core.package/BPTrace.class/properties.json +++ b/packages/Babylonian-Core.package/BPTrace.class/properties.json @@ -13,7 +13,8 @@ "recordedException", "exampleExecutionProcess", "hasTraceCompleted", - "blockRecord" ], + "blockRecord", + "duration" ], "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/class/value.previousValues.stack.methodReference..st b/packages/Babylonian-Core.package/BPTraceAssignmentValue.class/class/value.previousValues.stack.methodReference..st deleted file mode 100644 index ff142fb9..00000000 --- a/packages/Babylonian-Core.package/BPTraceAssignmentValue.class/class/value.previousValues.stack.methodReference..st +++ /dev/null @@ -1,6 +0,0 @@ -instance creation -value: anObject previousValues: variableAndValuesTuples stack: arrayOfContexts methodReference: aMethodReference - - ^ (self value: anObject 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 a33fd902..c7f64708 100644 --- a/packages/Babylonian-Core.package/BPTraceAssignmentValue.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPTraceAssignmentValue.class/methodProperties.json @@ -1,7 +1,6 @@ { "class" : { - "value:identityHash:previousValues:stack:" : "pre 10/12/2020 17:58", - "value:previousValues:stack:methodReference:" : "cmfcmf 10/28/2020 12:06" }, + "value:identityHash:previousValues:stack:methodReference:" : "cmfcmf 10/30/2020 12:30" }, "instance" : { "assignedVariableNames" : "pre 7/6/2020 18:41", "initialize" : "pre 7/6/2020 18:23", 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/class/value.stack.methodReference..st b/packages/Babylonian-Core.package/BPTraceValue.class/class/value.stack.methodReference..st deleted file mode 100644 index 9a997492..00000000 --- a/packages/Babylonian-Core.package/BPTraceValue.class/class/value.stack.methodReference..st +++ /dev/null @@ -1,8 +0,0 @@ -instance creation -value: aValue stack: aCollection methodReference: aMethodReference - - ^ self new - tracedValue: aValue; - stack: aCollection; - methodReference: aMethodReference; - yourself \ 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 14294468..98f3cc53 100644 --- a/packages/Babylonian-Core.package/BPTraceValue.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPTraceValue.class/methodProperties.json @@ -1,7 +1,6 @@ { "class" : { - "value:identityHash:stack:" : "pre 10/12/2020 17:57", - "value:stack:methodReference:" : "cmfcmf 10/28/2020 12:04" }, + "value:identityHash:stack:methodReference:" : "cmfcmf 10/30/2020 12:30" }, "instance" : { "initialize" : "cmfcmf 9/17/2020 14:45", "methodReference" : "cmfcmf 10/28/2020 12:05", 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/methodProperties.json b/packages/Babylonian-Core.package/BPTracer.class/methodProperties.json index 60036e3c..d7baf635 100644 --- a/packages/Babylonian-Core.package/BPTracer.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPTracer.class/methodProperties.json @@ -2,7 +2,7 @@ "class" : { "forExample:" : "pre 5/8/2019 16:28" }, "instance" : { - "check:after:forAssertion:given:inContext:" : "pre 9/29/2020 16:15", + "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", diff --git a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/step.st b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/step.st index 7bd810d7..d894c143 100644 --- a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/step.st +++ b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/step.st @@ -11,6 +11,6 @@ step ifTrue: [self ensureLoaderIcon] ifFalse: [self ensureNoLoaderIcon]. - (trace notNil and: [trace hasTraceCompleted] and: [trace exampleErrored not]) + "(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 + 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 6d85881b..8cbbbcd9 100644 --- a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/updateMorphs.st +++ b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/updateMorphs.st @@ -1,6 +1,6 @@ private - ui updateMorphs - + self removeAllMorphs. self @@ -8,5 +8,6 @@ updateMorphs addLoaderIconHolder; addExampleNameMorph; addExampleSpecificMorphs; - addDeleteButtonMorph. + addDeleteButtonMorph; + addCallgraphMorphs. \ 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 60182a56..876d3345 100644 --- a/packages/Babylonian-UI.package/BPExampleMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPExampleMorph.class/methodProperties.json @@ -21,7 +21,7 @@ "removeButtonClicked" : "pre 9/30/2020 10:35", "runOnce" : "cmfcmf 9/18/2020 11:10", "selectLiveSpecimenThen:" : "pre 7/10/2020 18:24", - "step" : "cmfcmf 9/18/2020 11:11", + "step" : "cmfcmf 10/30/2020 12:43", "textEmphasis" : "pre 9/30/2020 10:35", - "updateMorphs" : "pre 9/30/2020 10:37", + "updateMorphs" : "cmfcmf 10/30/2020 12:28", "viewCallgraph" : "cmfcmf 10/27/2020 14:27" } } diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newLineMorphFor..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newLineMorphFor..st index ffcc0422..e41d3915 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newLineMorphFor..st +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newLineMorphFor..st @@ -24,5 +24,14 @@ newLineMorphFor: aTrace scrollPane := self newScrollPane. newLine addMorphBack: scrollPane. + newLine addMorphBack: (SimpleButtonMorph new + hResizing: #shrinkWrap; + "vResizing: #shrinkWrap;" + label: 'view callgraph'; + target: self; + actionSelector: #viewCallgraphForTrace:; + arguments: {aTrace}; + yourself). + ^ newLine \ 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 0fd5e581..bb0cee2b 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json @@ -16,7 +16,7 @@ "newExploreButtonFor:" : "pre 8/21/2020 11:15", "newExpressionMorph" : "pre 10/8/2020 10:46", "newHaltButtonFor:" : "pre 9/29/2020 15:55", - "newLineMorphFor:" : "pre 10/8/2020 10:46", + "newLineMorphFor:" : "cmfcmf 10/30/2020 12:46", "newScrollPane" : "pre 10/12/2020 11:23", "newTracesMorph" : "pre 3/19/2020 14:06", "newWidgetsMorph" : "pre 9/22/2020 10:03", From ce7a8e10e940565bd83527f476c5a1e67e529815 Mon Sep 17 00:00:00 2001 From: Christian Flach Date: Fri, 30 Oct 2020 15:42:19 +0100 Subject: [PATCH 03/71] Integrate callgraph visualizations into BPBrowser --- .../instance/methodReference.st | 4 +++ .../methodProperties.json | 3 ++- .../instance/methodReference.st | 4 +++ .../methodProperties.json | 1 + .../instance/methodReference.st | 4 +++ .../methodProperties.json | 3 ++- .../instance/doBrowse.st | 2 +- .../instance/methodReference.st | 4 +++ .../methodProperties.json | 5 ++-- .../methodProperties.json | 2 +- .../instance/buildWindowWith.specs..st | 10 +++++++ .../instance/callgraphCategoryMenu..st | 2 +- .../instance/callgraphClassMenu..st | 2 +- .../callgraphDisableTracingForClass.st | 2 +- ...callgraphDisableTracingForClassCategory.st | 2 +- .../callgraphDisableTracingForMessage.st | 2 +- .../callgraphEnableTracingForClass.st | 2 +- .../callgraphEnableTracingForClassCategory.st | 2 +- .../callgraphEnableTracingForMessage.st | 2 +- .../instance/callgraphInstrumentClass.st | 2 +- .../callgraphInstrumentClassCategory.st | 2 +- .../instance/callgraphInstrumentMessage.st | 2 +- .../instance/callgraphMessageMenu..st | 2 +- .../instance/callgraphUninstrumentClass.st | 2 +- .../callgraphUninstrumentClassCategory.st | 2 +- .../instance/callgraphUninstrumentMessage.st | 2 +- .../instance/compressWidthOfSpecs.from.to..st | 10 +++++++ .../instance/messageIconFor..st | 2 +- .../BPBrowser.class/methodProperties.json | 2 ++ .../BPBrowserSidebar.class/README.md | 0 .../instance/buildExampleListWith..st | 15 +++++++++++ .../instance/buildVisualizationTypeWith..st | 13 +++++++++ .../instance/buildVisualizationWith..st | 7 +++++ .../instance/buildWith..st | 23 ++++++++++++++++ .../instance/exampleListDoubleClick.st | 5 ++++ .../instance/getExampleList.st | 6 +++++ .../instance/getExampleListIndex.st | 5 ++++ .../instance/getExampleListLabels.st | 5 ++++ .../instance/getVisualizationTypeIndex.st | 4 +++ .../instance/getVisualizationTypeLabels.st | 4 +++ .../instance/getVisualizationTypes.st | 7 +++++ .../instance/initialize.st | 9 +++++++ .../instance/selectedExample.st | 4 +++ .../instance/selectedVisualizationType.st | 4 +++ .../instance/setExampleListIndex..st | 6 +++++ .../instance/setVisualizationTypeIndex..st | 6 +++++ .../instance/visualizationMorphs.st | 27 +++++++++++++++++++ .../methodProperties.json | 21 +++++++++++++++ .../BPBrowserSidebar.class/properties.json | 15 +++++++++++ .../README.md | 0 .../instance/buildWith..st | 4 +++ .../instance/callgraph.st | 6 +++++ .../instance/example..st | 4 +++ .../instance/example.st | 4 +++ .../methodProperties.json | 8 ++++++ .../properties.json | 15 +++++++++++ .../README.md | 0 .../instance/buildWith..st | 19 +++++++++++++ .../instance/doubleClick.st | 6 +++++ .../instance/getAnnotations.st | 4 +++ .../instance/getIndex.st | 4 +++ .../instance/getList.st | 4 +++ .../instance/getListIcon..st | 4 +++ .../instance/initialize.st | 6 +++++ .../instance/keyPressed..st | 5 ++++ .../instance/setIndex..st | 5 ++++ .../methodProperties.json | 13 +++++++++ .../properties.json | 14 ++++++++++ .../README.md | 0 .../instance/buildWith..st | 11 ++++++++ .../methodProperties.json | 5 ++++ .../properties.json | 14 ++++++++++ .../instance/annotationPaneDoubleClick.st | 2 +- .../methodProperties.json | 2 +- .../instance/doubleClick..st | 5 ++++ .../instance/getSpec.st | 3 ++- .../instance/initialize.st | 4 --- .../methodProperties.json | 4 +-- 78 files changed, 416 insertions(+), 31 deletions(-) create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/instance/methodReference.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/methodReference.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/instance/methodReference.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/methodReference.st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/buildWindowWith.specs..st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/compressWidthOfSpecs.from.to..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebar.class/README.md create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildExampleListWith..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildVisualizationTypeWith..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildVisualizationWith..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildWith..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/exampleListDoubleClick.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getExampleList.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getExampleListIndex.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getExampleListLabels.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getVisualizationTypeIndex.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getVisualizationTypeLabels.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getVisualizationTypes.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/initialize.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/selectedExample.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/selectedVisualizationType.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/setExampleListIndex..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/setVisualizationTypeIndex..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/visualizationMorphs.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebar.class/properties.json create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/README.md create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/buildWith..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/callgraph.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/example..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/example.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/methodProperties.json create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/properties.json create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/README.md create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/buildWith..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/doubleClick.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getAnnotations.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getIndex.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getList.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getListIcon..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/initialize.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/keyPressed..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/setIndex..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/methodProperties.json create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/properties.json create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/README.md create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/buildWith..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/methodProperties.json create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/properties.json create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/doubleClick..st delete mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/initialize.st 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 index 0e054679..ff3f855e 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/methodProperties.json @@ -6,4 +6,5 @@ "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" } } + "label" : "cmfcmf 10/28/2020 12:38", + "methodReference" : "cmfcmf 10/30/2020 14:48" } } 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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/methodProperties.json index 6269fbf7..94df689d 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/methodProperties.json @@ -7,4 +7,5 @@ "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", "traceValue" : "cmfcmf 10/28/2020 12:33" } } 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 index 70cd8b84..0afaea00 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/methodProperties.json @@ -4,4 +4,5 @@ "instance" : { "alternateLabel" : "cmfcmf 10/28/2020 12:36", "doBrowse" : "cmfcmf 10/28/2020 12:36", - "iconForId" : "cmfcmf 10/28/2020 12:37" } } + "iconForId" : "cmfcmf 10/28/2020 12:37", + "methodReference" : "cmfcmf 10/30/2020 14:48" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/doBrowse.st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/doBrowse.st index 512b80da..6e602630 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/doBrowse.st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/doBrowse.st @@ -1,4 +1,4 @@ as yet unclassified doBrowse - (MethodReference class: class selector: selector) browse \ No newline at end of file + self methodReference browse \ 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..9f547cad --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/methodReference.st @@ -0,0 +1,4 @@ +as yet unclassified +methodReference + + ^ MethodReference class: class selector: selector \ 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 index 89b4d8fe..bdab4e84 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/methodProperties.json @@ -3,11 +3,12 @@ }, "instance" : { "class:selector:blockIdx:invocationCount:" : "cmfcmf 10/28/2020 13:45", - "doBrowse" : "cmfcmf 10/28/2020 13:45", + "doBrowse" : "cmfcmf 10/30/2020 14:53", "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" : "cmfcmf 10/23/2020 16:27", "label" : "cmfcmf 10/26/2020 12:00", - "menu:" : "cmfcmf 10/27/2020 17:00" } } + "menu:" : "cmfcmf 10/27/2020 17:00", + "methodReference" : "cmfcmf 10/30/2020 14:53" } } diff --git a/packages/Babylonian-Core.package/BPScriptExample.class/methodProperties.json b/packages/Babylonian-Core.package/BPScriptExample.class/methodProperties.json index 074d884f..b4a88a57 100644 --- a/packages/Babylonian-Core.package/BPScriptExample.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPScriptExample.class/methodProperties.json @@ -3,7 +3,7 @@ "bpExamplePragmaSelectors" : "pre 9/30/2020 10:53" }, "instance" : { "asPragma" : "pre 9/30/2020 10:57", - "execute" : "pre 10/6/2020 09:07", + "execute" : "cmfcmf 10/30/2020 12:51", "initializeFromPragma:" : "pre 9/30/2020 10:59", "morphClass" : "pre 9/30/2020 10:41", "script" : "pre 9/30/2020 11:00", diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/buildWindowWith.specs..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/buildWindowWith.specs..st new file mode 100644 index 00000000..bc2c39f1 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/buildWindowWith.specs..st @@ -0,0 +1,10 @@ +callgraph ui +buildWindowWith: aBuilder specs: aCollection + + | specs | + specs := self compressWidthOfSpecs: aCollection from: 1 to: 0.7. + ^ super buildWindowWith: aBuilder specs: { + (0@0 corner: (specs first key leftFraction)@1) -> [BPBrowserSidebar new + when: #browseMethod send: #browseReference: to: self; + buildWith: aBuilder] + }, specs \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphCategoryMenu..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphCategoryMenu..st index 7d66ddb3..73ce24ab 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphCategoryMenu..st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphCategoryMenu..st @@ -1,4 +1,4 @@ -callgraphs +callgraph context menus callgraphCategoryMenu: aMenu diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphClassMenu..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphClassMenu..st index 696e3d55..624f305e 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphClassMenu..st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphClassMenu..st @@ -1,4 +1,4 @@ -callgraphs +callgraph context menus callgraphClassMenu: aMenu diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForClass.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForClass.st index b04079f2..cce2206b 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForClass.st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForClass.st @@ -1,4 +1,4 @@ -callgraphs +callgraph context menus callgraphDisableTracingForClass BPByteCodeRewriter disableTracingForClass: self selectedClassOrMetaClass \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForClassCategory.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForClassCategory.st index 1bf7b860..da09f2b5 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForClassCategory.st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForClassCategory.st @@ -1,4 +1,4 @@ -callgraphs +callgraph context menus callgraphDisableTracingForClassCategory BPByteCodeRewriter disableTracingForClassCategory: self selectedSystemCategory \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForMessage.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForMessage.st index aabf2bff..e277410a 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForMessage.st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForMessage.st @@ -1,4 +1,4 @@ -callgraphs +callgraph context menus callgraphDisableTracingForMessage BPByteCodeRewriter disableTracingForClass: self selectedClassOrMetaClass selector: self selectedMessageName \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForClass.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForClass.st index 70f9c29a..29fbbddf 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForClass.st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForClass.st @@ -1,4 +1,4 @@ -callgraphs +callgraph context menus callgraphEnableTracingForClass BPByteCodeRewriter enableTracingForClass: self selectedClassOrMetaClass \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForClassCategory.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForClassCategory.st index 1fe10f87..6f9ef847 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForClassCategory.st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForClassCategory.st @@ -1,4 +1,4 @@ -callgraphs +callgraph context menus callgraphEnableTracingForClassCategory BPByteCodeRewriter enableTracingForClassCategory: self selectedSystemCategory \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForMessage.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForMessage.st index d4ff2086..72a3ecfa 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForMessage.st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForMessage.st @@ -1,4 +1,4 @@ -callgraphs +callgraph context menus callgraphEnableTracingForMessage BPByteCodeRewriter enableTracingForClass: self selectedClassOrMetaClass selector: self selectedMessageName \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentClass.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentClass.st index 1a61c338..cf97e2d5 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentClass.st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentClass.st @@ -1,4 +1,4 @@ -callgraphs +callgraph context menus callgraphInstrumentClass BPByteCodeRewriter instrumentClass: self selectedClassOrMetaClass \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentClassCategory.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentClassCategory.st index b29a9e54..45a9c862 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentClassCategory.st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentClassCategory.st @@ -1,4 +1,4 @@ -callgraphs +callgraph context menus callgraphInstrumentClassCategory BPByteCodeRewriter instrumentClassCategory: self selectedSystemCategory \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentMessage.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentMessage.st index 73fd3a89..7dcaf824 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentMessage.st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentMessage.st @@ -1,4 +1,4 @@ -callgraphs +callgraph context menus callgraphInstrumentMessage BPByteCodeRewriter instrumentClass: self selectedClassOrMetaClass selector: self selectedMessageName \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphMessageMenu..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphMessageMenu..st index 3b50062b..ee365c36 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphMessageMenu..st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphMessageMenu..st @@ -1,4 +1,4 @@ -callgraphs +callgraph context menus callgraphMessageMenu: aMenu diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentClass.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentClass.st index 997f9875..492f715b 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentClass.st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentClass.st @@ -1,4 +1,4 @@ -callgraphs +callgraph context menus callgraphUninstrumentClass BPByteCodeRewriter uninstrumentClass: self selectedClassOrMetaClass \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentClassCategory.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentClassCategory.st index a3e1cef6..67a22b13 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentClassCategory.st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentClassCategory.st @@ -1,4 +1,4 @@ -callgraphs +callgraph context menus callgraphUninstrumentClassCategory BPByteCodeRewriter uninstrumentClassCategory: self selectedSystemCategory \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentMessage.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentMessage.st index a8e073d6..c89ec653 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentMessage.st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentMessage.st @@ -1,4 +1,4 @@ -callgraphs +callgraph context menus callgraphUninstrumentMessage BPByteCodeRewriter uninstrumentClass: self selectedClassOrMetaClass selector: self selectedMessageName \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/compressWidthOfSpecs.from.to..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/compressWidthOfSpecs.from.to..st new file mode 100644 index 00000000..1406af22 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/compressWidthOfSpecs.from.to..st @@ -0,0 +1,10 @@ +callgraph ui +compressWidthOfSpecs: specs from: aFraction to: anotherFraction + + ^ 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 + offset. + frame leftFraction: frame leftFraction / aFraction * anotherFraction + offset. + frame -> assoc value]. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/messageIconFor..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/messageIconFor..st index 71cf1ffc..adcce503 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/messageIconFor..st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/messageIconFor..st @@ -1,4 +1,4 @@ -callgraphs +callgraph context menus messageIconFor: aSelector | baseIcon callgraphIcon combinedIcon | baseIcon := super messageIconFor: aSelector. diff --git a/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json index 76ba70bf..03c65495 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json @@ -15,6 +15,7 @@ "annotationsInSelection" : "pre 11/8/2019 12:05", "bindingOf:" : "pre 8/25/2020 10:10", "buildCodePaneWith:" : "pre 7/13/2020 16:07", + "buildWindowWith:specs:" : "cmfcmf 10/30/2020 15:00", "callgraphCategoryMenu:" : "cmfcmf 10/23/2020 12:56", "callgraphClassMenu:" : "cmfcmf 10/23/2020 12:56", "callgraphDisableTracingForClass" : "cmfcmf 10/23/2020 12:55", @@ -33,6 +34,7 @@ "codePaneMenuAnnotationItems:" : "pre 8/25/2020 09:17", "compileMessage:notifying:" : "pre 11/11/2019 09:46", "compiledMethod" : "pre 1/24/2020 15:08", + "compressWidthOfSpecs:from:to:" : "cmfcmf 10/30/2020 13:07", "defaultBrowserTitle" : "pre 11/8/2019 17:17", "determineIntervalToAnnotateFor:" : "cmfcmf 9/16/2020 14:55", "doItReceiver" : "pre 8/25/2020 10:03", 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/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..b658cd2b --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildWith..st @@ -0,0 +1,23 @@ +as yet unclassified +buildWith: aBuilder + + | visualizationTypeHeight | + visualizationTypeHeight := self getVisualizationTypes size * 16 + 2. + + ^ aBuilder pluggablePanelSpec new + wantsResizeHandles: true; + children: { + (self buildExampleListWith: aBuilder) + frame: (0@0 corner: 1@0.2); + yourself. + (self buildVisualizationTypeWith: aBuilder) + frame: (LayoutFrame + fractions: (0@0.2 corner: 1@0.2) + offsets: (0@0 corner: 0@visualizationTypeHeight)); + yourself. + (self buildVisualizationWith: aBuilder) + frame: (LayoutFrame + fractions: (0@0.2 corner: 1@1) + offsets: (0@visualizationTypeHeight 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..278e042c --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getExampleList.st @@ -0,0 +1,6 @@ +example selection +getExampleList + + ^ "BPExample allSubInstances"BPActiveExamples value examples sorted: [:a :b | (a isActive and: [b isActive not]) + ifTrue: [true] + ifFalse: [a exampleName < b exampleName]] \ 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..c78ca6e0 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getVisualizationTypes.st @@ -0,0 +1,7 @@ +visualization type +getVisualizationTypes + + ^ { + 'callgraph' -> #callgraph. + 'annotations' -> #annotations + } \ 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..eee911c6 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/initialize.st @@ -0,0 +1,9 @@ +initialize-release +initialize + + + + super initialize. + + exampleListIndex := 0. + visualizationTypeIndex := 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..2958c930 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/selectedExample.st @@ -0,0 +1,4 @@ +visualization type +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/setExampleListIndex..st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/setExampleListIndex..st new file mode 100644 index 00000000..3b28fa26 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/setExampleListIndex..st @@ -0,0 +1,6 @@ +example selection +setExampleListIndex: aNumber + + exampleListIndex := aNumber. + self changed: #getExampleListIndex. + self changed: #visualizationMorphs \ 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..62cd5855 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/setVisualizationTypeIndex..st @@ -0,0 +1,6 @@ +visualization type +setVisualizationTypeIndex: aNumber + + visualizationTypeIndex := aNumber. + self changed: #getVisualizationTypeIndex. + 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..46ca7e61 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/visualizationMorphs.st @@ -0,0 +1,27 @@ +visualization +visualizationMorphs + + | morphs | + + self selectedExample + ifNil: [morphs := {'No example selected'}] + ifNotNil: [ + morphs := self selectedVisualizationType caseOf: { + [#none] -> [{'No visualization selected'}]. + [#callgraph] -> [{BPBrowserSidebarVisualizationCallgraph new + example: self selectedExample; + when: #browseMethod evaluate: [:ref | self triggerEvent: #browseMethod with: ref]; + buildWith: ToolBuilder default}]. + [#annotations] -> [{BPBrowserSidebarVisualizationAnnotations new + example: self selectedExample; + when: #browseMethod evaluate: [:ref | self triggerEvent: #browseMethod with: ref]; + buildWith: ToolBuilder default}]. + } otherwise: [{'Visualization is not yet supported.'}]]. + + ^ morphs + collect: [:each | each isString + ifFalse: [each] + ifTrue: [TextMorph new + contents: each; + layoutFrame: (LayoutFrame fractions: (0@0 corner: 1@1)); + yourself]] \ 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..1790cf78 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json @@ -0,0 +1,21 @@ +{ + "class" : { + }, + "instance" : { + "buildExampleListWith:" : "cmfcmf 10/30/2020 15:37", + "buildVisualizationTypeWith:" : "cmfcmf 10/30/2020 14:09", + "buildVisualizationWith:" : "cmfcmf 10/30/2020 14:08", + "buildWith:" : "cmfcmf 10/30/2020 15:35", + "exampleListDoubleClick" : "cmfcmf 10/30/2020 14:26", + "getExampleList" : "cmfcmf 10/30/2020 13:59", + "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" : "cmfcmf 10/30/2020 15:33", + "initialize" : "cmfcmf 10/30/2020 14:03", + "selectedExample" : "cmfcmf 10/30/2020 14:20", + "selectedVisualizationType" : "cmfcmf 10/30/2020 14:14", + "setExampleListIndex:" : "cmfcmf 10/30/2020 14:25", + "setVisualizationTypeIndex:" : "cmfcmf 10/30/2020 14:10", + "visualizationMorphs" : "cmfcmf 10/30/2020 14:47" } } 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..a4a94b7d --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Babylonian-UI-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "exampleListIndex", + "visualizationTypeIndex" ], + "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/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..b747c7d7 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/callgraph.st @@ -0,0 +1,6 @@ +as yet unclassified +callgraph + + callgraph ifNotNil: [^ callgraph]. + callgraph := self example traceWithCallgraphUsingByteCodeTracer eventsForTree. + ^ callgraph \ 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/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/methodProperties.json new file mode 100644 index 00000000..16e5847a --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/methodProperties.json @@ -0,0 +1,8 @@ +{ + "class" : { + }, + "instance" : { + "buildWith:" : "cmfcmf 10/30/2020 14:30", + "callgraph" : "cmfcmf 10/30/2020 14:39", + "example" : "cmfcmf 10/30/2020 14:29", + "example:" : "cmfcmf 10/30/2020 14:28" } } 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..f57ef1f8 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Babylonian-UI-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "example", + "callgraph" ], + "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/buildWith..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/buildWith..st new file mode 100644 index 00000000..6ec916cd --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/buildWith..st @@ -0,0 +1,19 @@ +toolbuilder +buildWith: aBuilder + + | model | + model := BPCallgraphModel new. + model callgraph: self callgraph. + ^ aBuilder build: (aBuilder pluggableListSpec new + frame: (0@0 corner: 1@1); + autoDeselect: false; + clearFilterAutomatically: false; + filterableList: true; + model: self; + list: #getList; + icon: #getListIcon:; + doubleClick: #doubleClick; + getIndex: #getIndex; + setIndex: #setIndex:; + "keyPress: #annotationKeyPressed:;" + yourself) \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/doubleClick.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/doubleClick.st new file mode 100644 index 00000000..633f4a0b --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/doubleClick.st @@ -0,0 +1,6 @@ +as yet unclassified +doubleClick + + | entry | + entry := self getAnnotations at: self getIndex. + self triggerEvent: #browseMethod with: entry methodReference \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getAnnotations.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getAnnotations.st new file mode 100644 index 00000000..6379f23a --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getAnnotations.st @@ -0,0 +1,4 @@ +as yet unclassified +getAnnotations + + ^ self callgraph babylonianEntries \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getIndex.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getIndex.st new file mode 100644 index 00000000..fc86776a --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getIndex.st @@ -0,0 +1,4 @@ +as yet unclassified +getIndex + + ^ listIndex \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getList.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getList.st new file mode 100644 index 00000000..1c931240 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getList.st @@ -0,0 +1,4 @@ +as yet unclassified +getList + + ^ self getAnnotations collect: [:each | each alternateLabel] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getListIcon..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getListIcon..st new file mode 100644 index 00000000..699d604c --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getListIcon..st @@ -0,0 +1,4 @@ +as yet unclassified +getListIcon: aNumber + + ^ (self getAnnotations at: aNumber) iconForId \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/initialize.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/initialize.st new file mode 100644 index 00000000..285acbfa --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/initialize.st @@ -0,0 +1,6 @@ +initialize-release +initialize + + super initialize. + + listIndex := 0 \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/keyPressed..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/keyPressed..st new file mode 100644 index 00000000..a7e0ba6f --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/keyPressed..st @@ -0,0 +1,5 @@ +as yet unclassified +keyPressed: 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 getIndex) doBrowse] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/setIndex..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/setIndex..st new file mode 100644 index 00000000..7dc6948b --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/setIndex..st @@ -0,0 +1,5 @@ +as yet unclassified +setIndex: aNumber + + listIndex := aNumber. + self changed: #getIndex \ 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..cc922e0f --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/methodProperties.json @@ -0,0 +1,13 @@ +{ + "class" : { + }, + "instance" : { + "buildWith:" : "cmfcmf 10/30/2020 14:44", + "doubleClick" : "cmfcmf 10/30/2020 14:48", + "getAnnotations" : "cmfcmf 10/30/2020 14:42", + "getIndex" : "cmfcmf 10/30/2020 14:41", + "getList" : "cmfcmf 10/30/2020 14:42", + "getListIcon:" : "cmfcmf 10/30/2020 14:44", + "initialize" : "cmfcmf 10/30/2020 14:41", + "keyPressed:" : "cmfcmf 10/30/2020 14:45", + "setIndex:" : "cmfcmf 10/30/2020 14:41" } } 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..4cc1f6c6 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-UI-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "listIndex" ], + "name" : "BPBrowserSidebarVisualizationAnnotations", + "pools" : [ + ], + "super" : "BPBrowserSidebarVisualization", + "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..b8d8b21f --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/buildWith..st @@ -0,0 +1,11 @@ +toolbuilder +buildWith: aBuilder + + | model | + model := BPCallgraphModel new. + model callgraph: self callgraph. + model when: #doubleClicked evaluate: [:entry | (entry respondsTo: #methodReference) + ifTrue: [self triggerEvent: #browseMethod with: entry methodReference]]. + ^ 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/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/methodProperties.json new file mode 100644 index 00000000..de50f87b --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "buildWith:" : "cmfcmf 10/30/2020 15:02" } } 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..0d9ac99f --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-UI-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + ], + "name" : "BPBrowserSidebarVisualizationCallgraph", + "pools" : [ + ], + "super" : "BPBrowserSidebarVisualization", + "type" : "normal" } diff --git a/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/annotationPaneDoubleClick.st b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/annotationPaneDoubleClick.st index 01def729..3abb0ad6 100644 --- a/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/annotationPaneDoubleClick.st +++ b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/instance/annotationPaneDoubleClick.st @@ -4,5 +4,5 @@ annotationPaneDoubleClick | entry | entry := self getAnnotations at: self getSelectedAnnotationIndex. callgraphModel selectEntry: entry. - codePaneMethodReference := entry traceValue methodReference. + codePaneMethodReference := entry methodReference. self changed: #getCodePaneText \ 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 index dde04b02..7b547ca1 100644 --- a/packages/Babylonian-UI.package/BPCallgraphExplorer.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPCallgraphExplorer.class/methodProperties.json @@ -6,7 +6,7 @@ "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/28/2020 14:19", + "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", 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..fc15d96e --- /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/getSpec.st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/getSpec.st index b682b1dc..583d2bc5 100644 --- a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/getSpec.st +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/getSpec.st @@ -1,6 +1,6 @@ as yet unclassified getSpec - + ^ BPCallgraphPluggableTreeSpec new frame: (0@0 extent: 1@1); roots: #rootEntries; @@ -15,6 +15,7 @@ getSpec 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]. diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/initialize.st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/initialize.st deleted file mode 100644 index 8d644225..00000000 --- a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/initialize.st +++ /dev/null @@ -1,4 +0,0 @@ -as yet unclassified -initialize - - super initialize \ 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 index c3adac91..45ea7254 100644 --- a/packages/Babylonian-UI.package/BPCallgraphModel.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/methodProperties.json @@ -5,11 +5,11 @@ "callgraph" : "cmfcmf 10/28/2020 10:40", "callgraph:" : "cmfcmf 10/27/2020 14:12", "childrenOf:" : "cmfcmf 10/22/2020 13:22", + "doubleClick:" : "cmfcmf 10/30/2020 14:57", "getSelectedEntry" : "cmfcmf 10/22/2020 14:29", - "getSpec" : "cmfcmf 10/28/2020 10:09", + "getSpec" : "cmfcmf 10/30/2020 14:57", "hasChildren:" : "cmfcmf 10/22/2020 13:22", "iconOf:" : "cmfcmf 10/23/2020 16:05", - "initialize" : "cmfcmf 10/27/2020 16:44", "key:from:event:" : "cmfcmf 10/26/2020 13:03", "labelOf:" : "cmfcmf 10/22/2020 13:23", "menuOf:" : "cmfcmf 10/27/2020 16:14", From 03e6ffb9941f941f834e1ffacff1fe39c058d6c4 Mon Sep 17 00:00:00 2001 From: Christian Flach Date: Fri, 30 Oct 2020 16:34:49 +0100 Subject: [PATCH 04/71] Integrate sidebar with trace values --- .../{valueMorphFor..st => valueMorphFor.trace..st} | 4 ++-- .../methodProperties.json | 2 +- .../instance/buildWindowWith.specs..st | 3 ++- .../instance/sidebarShowExample.traceValue..st | 4 ++++ .../BPBrowser.class/methodProperties.json | 5 +++-- .../BPBrowser.class/properties.json | 2 +- .../instance/setExampleListIndex..st | 1 + .../instance/showExample.traceValue..st | 7 +++++++ .../instance/visualizationMorphs.st | 5 +++-- .../BPBrowserSidebar.class/methodProperties.json | 5 +++-- .../BPBrowserSidebar.class/properties.json | 3 ++- .../instance/highlightTraceValue..st | 4 ++++ .../methodProperties.json | 3 ++- .../instance/highlightTraceValue..st | 6 ++++++ .../methodProperties.json | 1 + .../instance/buildWith..st | 2 +- .../instance/highlightTraceValue..st | 7 +++++++ .../methodProperties.json | 3 ++- .../properties.json | 2 +- .../BPProbeMorph.class/instance/valueMorphFor..st | 7 ------- .../instance/valueMorphFor.trace..st | 13 +++++++++++++ .../BPProbeMorph.class/instance/valuesMorphFor..st | 2 +- .../BPProbeMorph.class/methodProperties.json | 4 ++-- 23 files changed, 69 insertions(+), 26 deletions(-) rename packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/instance/{valueMorphFor..st => valueMorphFor.trace..st} (73%) create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/sidebarShowExample.traceValue..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/showExample.traceValue..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/highlightTraceValue..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/highlightTraceValue..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/highlightTraceValue..st delete mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/valueMorphFor..st create mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/valueMorphFor.trace..st 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..171c6e55 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: trace | initialValueMorph previousValueMorph | - initialValueMorph := super valueMorphFor: traceValue. + initialValueMorph := super valueMorphFor: traceValue trace: trace. 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 313271fc..67e8348d 100644 --- a/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "valueMorphFor:" : "pre 10/12/2020 17:27", + "valueMorphFor:trace:" : "cmfcmf 10/30/2020 15:56", "valueTextFor:" : "pre 7/10/2020 15:55" } } diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/buildWindowWith.specs..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/buildWindowWith.specs..st index bc2c39f1..9a6c9a2d 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/buildWindowWith.specs..st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/buildWindowWith.specs..st @@ -2,9 +2,10 @@ callgraph ui buildWindowWith: aBuilder specs: aCollection | specs | + sidebar := BPBrowserSidebar new. specs := self compressWidthOfSpecs: aCollection from: 1 to: 0.7. ^ super buildWindowWith: aBuilder specs: { - (0@0 corner: (specs first key leftFraction)@1) -> [BPBrowserSidebar new + (0@0 corner: (specs first key leftFraction)@1) -> [sidebar when: #browseMethod send: #browseReference: to: self; buildWith: aBuilder] }, specs \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/sidebarShowExample.traceValue..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/sidebarShowExample.traceValue..st new file mode 100644 index 00000000..b32fe295 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/sidebarShowExample.traceValue..st @@ -0,0 +1,4 @@ +callgraph ui +sidebarShowExample: aBPExample traceValue: aBPTraceValue + + sidebar showExample: aBPExample traceValue: aBPTraceValue \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json index 03c65495..6af150c2 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json @@ -15,7 +15,7 @@ "annotationsInSelection" : "pre 11/8/2019 12:05", "bindingOf:" : "pre 8/25/2020 10:10", "buildCodePaneWith:" : "pre 7/13/2020 16:07", - "buildWindowWith:specs:" : "cmfcmf 10/30/2020 15:00", + "buildWindowWith:specs:" : "cmfcmf 10/30/2020 15:58", "callgraphCategoryMenu:" : "cmfcmf 10/23/2020 12:56", "callgraphClassMenu:" : "cmfcmf 10/23/2020 12:56", "callgraphDisableTracingForClass" : "cmfcmf 10/23/2020 12:55", @@ -50,4 +50,5 @@ "removeReplacementFromSelection" : "pre 4/29/2020 19:07", "removeSelectedAnnotationsSatisfying:" : "pre 7/26/2019 16:08", "saveMethodWithExamples" : "pre 11/11/2019 09:36", - "saveMethodWithExamplesWith:" : "pre 8/6/2019 13:57" } } + "saveMethodWithExamplesWith:" : "pre 8/6/2019 13:57", + "sidebarShowExample:traceValue:" : "cmfcmf 10/30/2020 16:01" } } diff --git a/packages/Babylonian-UI.package/BPBrowser.class/properties.json b/packages/Babylonian-UI.package/BPBrowser.class/properties.json index 557e149f..cf757344 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/properties.json +++ b/packages/Babylonian-UI.package/BPBrowser.class/properties.json @@ -6,7 +6,7 @@ ], "commentStamp" : "", "instvars" : [ - ], + "sidebar" ], "name" : "BPBrowser", "pools" : [ ], diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/setExampleListIndex..st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/setExampleListIndex..st index 3b28fa26..81e2c706 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/setExampleListIndex..st +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/setExampleListIndex..st @@ -1,6 +1,7 @@ example selection setExampleListIndex: aNumber + aNumber == exampleListIndex ifTrue: [^ self]. exampleListIndex := aNumber. self changed: #getExampleListIndex. self changed: #visualizationMorphs \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/showExample.traceValue..st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/showExample.traceValue..st new file mode 100644 index 00000000..14ebacbc --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/showExample.traceValue..st @@ -0,0 +1,7 @@ +as yet unclassified +showExample: aBPExample traceValue: aBPTraceValue + + self setExampleListIndex: (self getExampleList indexOf: aBPExample). + self selectedVisualizationType == #none ifTrue: [ + self setVisualizationTypeIndex: 1]. + visualization ifNotNil: [visualization highlightTraceValue: aBPTraceValue] \ 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 index 46ca7e61..aef9828a 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/visualizationMorphs.st +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/visualizationMorphs.st @@ -3,16 +3,17 @@ visualizationMorphs | morphs | + visualization := nil. self selectedExample ifNil: [morphs := {'No example selected'}] ifNotNil: [ morphs := self selectedVisualizationType caseOf: { [#none] -> [{'No visualization selected'}]. - [#callgraph] -> [{BPBrowserSidebarVisualizationCallgraph new + [#callgraph] -> [{(visualization := BPBrowserSidebarVisualizationCallgraph new) example: self selectedExample; when: #browseMethod evaluate: [:ref | self triggerEvent: #browseMethod with: ref]; buildWith: ToolBuilder default}]. - [#annotations] -> [{BPBrowserSidebarVisualizationAnnotations new + [#annotations] -> [{(visualization := BPBrowserSidebarVisualizationAnnotations new) example: self selectedExample; when: #browseMethod evaluate: [:ref | self triggerEvent: #browseMethod with: ref]; buildWith: ToolBuilder default}]. diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json index 1790cf78..9f904f2a 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json @@ -16,6 +16,7 @@ "initialize" : "cmfcmf 10/30/2020 14:03", "selectedExample" : "cmfcmf 10/30/2020 14:20", "selectedVisualizationType" : "cmfcmf 10/30/2020 14:14", - "setExampleListIndex:" : "cmfcmf 10/30/2020 14:25", + "setExampleListIndex:" : "cmfcmf 10/30/2020 16:08", "setVisualizationTypeIndex:" : "cmfcmf 10/30/2020 14:10", - "visualizationMorphs" : "cmfcmf 10/30/2020 14:47" } } + "showExample:traceValue:" : "cmfcmf 10/30/2020 16:05", + "visualizationMorphs" : "cmfcmf 10/30/2020 16:05" } } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/properties.json b/packages/Babylonian-UI.package/BPBrowserSidebar.class/properties.json index a4a94b7d..3e05ee4f 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/properties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/properties.json @@ -7,7 +7,8 @@ "commentStamp" : "", "instvars" : [ "exampleListIndex", - "visualizationTypeIndex" ], + "visualizationTypeIndex", + "visualization" ], "name" : "BPBrowserSidebar", "pools" : [ ], diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/highlightTraceValue..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/highlightTraceValue..st new file mode 100644 index 00000000..d0851d8f --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/highlightTraceValue..st @@ -0,0 +1,4 @@ +as yet unclassified +highlightTraceValue: aBPTraceValue + + 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 index 16e5847a..4cae8b1a 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/methodProperties.json @@ -5,4 +5,5 @@ "buildWith:" : "cmfcmf 10/30/2020 14:30", "callgraph" : "cmfcmf 10/30/2020 14:39", "example" : "cmfcmf 10/30/2020 14:29", - "example:" : "cmfcmf 10/30/2020 14:28" } } + "example:" : "cmfcmf 10/30/2020 14:28", + "highlightTraceValue:" : "cmfcmf 10/30/2020 16:03" } } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/highlightTraceValue..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/highlightTraceValue..st new file mode 100644 index 00000000..4107cbb2 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/highlightTraceValue..st @@ -0,0 +1,6 @@ +as yet unclassified +highlightTraceValue: aBPTraceValue + + self getAnnotations withIndexDo: [:each :i | + ((each respondsTo: #traceValue) and: [each traceValue == aBPTraceValue]) ifTrue: [^ self setIndex: i]]. + self setIndex: 0 \ 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 index cc922e0f..bfac37df 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/methodProperties.json @@ -8,6 +8,7 @@ "getIndex" : "cmfcmf 10/30/2020 14:41", "getList" : "cmfcmf 10/30/2020 14:42", "getListIcon:" : "cmfcmf 10/30/2020 14:44", + "highlightTraceValue:" : "cmfcmf 10/30/2020 16:14", "initialize" : "cmfcmf 10/30/2020 14:41", "keyPressed:" : "cmfcmf 10/30/2020 14:45", "setIndex:" : "cmfcmf 10/30/2020 14:41" } } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/buildWith..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/buildWith..st index b8d8b21f..26f45e82 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/buildWith..st +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/buildWith..st @@ -1,7 +1,7 @@ toolbuilder buildWith: aBuilder - | model | + model := BPCallgraphModel new. model callgraph: self callgraph. model when: #doubleClicked evaluate: [:entry | (entry respondsTo: #methodReference) diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/highlightTraceValue..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/highlightTraceValue..st new file mode 100644 index 00000000..6ee4b14f --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/highlightTraceValue..st @@ -0,0 +1,7 @@ +toolbuilder +highlightTraceValue: aBPTraceValue + + 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/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/methodProperties.json index de50f87b..8e654569 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/methodProperties.json @@ -2,4 +2,5 @@ "class" : { }, "instance" : { - "buildWith:" : "cmfcmf 10/30/2020 15:02" } } + "buildWith:" : "cmfcmf 10/30/2020 16:16", + "highlightTraceValue:" : "cmfcmf 10/30/2020 16:17" } } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/properties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/properties.json index 0d9ac99f..9bd1eda5 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/properties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/properties.json @@ -6,7 +6,7 @@ ], "commentStamp" : "", "instvars" : [ - ], + "model" ], "name" : "BPBrowserSidebarVisualizationCallgraph", "pools" : [ ], 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..4aa32910 --- /dev/null +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valueMorphFor.trace..st @@ -0,0 +1,13 @@ +private +valueMorphFor: traceValue trace: trace + + | morph | + morph := traceValue tracedValue bpProbeValueMorphIn: traceValue. + morph on: #click send: #value to: [ | selection | + selection := MenuMorph chooseFrom: {'explore' . 'inspect' . 'browse' . 'view in callgraph'} lines: {3} title: 'Select action'. + selection caseOf: { + [1] -> [traceValue tracedValue explore]. + [2] -> [traceValue tracedValue inspect]. + [3] -> [traceValue tracedValue browse]. + [4] -> [self containingBrowser sidebarShowExample: trace example traceValue: traceValue]} otherwise: []]. + ^ 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 889cd79d..8e218a7a 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valuesMorphFor..st +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valuesMorphFor..st @@ -11,7 +11,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 bb0cee2b..8c8cb26f 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json @@ -28,8 +28,8 @@ "stepTime" : "pre 8/20/2020 17:35", "updateExpressionMorphIfNecessary" : "pre 9/22/2020 10:04", "updateFrom:" : "pre 10/12/2020 18:02", - "valueMorphFor:" : "pre 10/12/2020 18:00", + "valueMorphFor:trace:" : "cmfcmf 10/30/2020 15:59", "valueTextFor:" : "pre 7/7/2020 16:43", - "valuesMorphFor:" : "pre 10/12/2020 17:51", + "valuesMorphFor:" : "cmfcmf 10/30/2020 15:56", "valuesTextFor:" : "pre 8/17/2020 09:31", "viewCallgraphForTrace:" : "cmfcmf 10/28/2020 11:02" } } From 9b1f0fb2dd9299d8246f1e6483c7bae8a0a89b19 Mon Sep 17 00:00:00 2001 From: Christian Flach Date: Tue, 3 Nov 2020 11:09:46 +0100 Subject: [PATCH 05/71] More visualizations, improved "context moving right" positioning --- .../class/swapSenderOf.newSender..st | 2 +- .../instance/eventsForTree.st | 17 ++++++---- .../instrumentedAncestorAndDepthOf.and..st | 32 +++++++++++++++++++ .../instance/swapSenderOf.newSender..st | 17 +++++++--- .../methodProperties.json | 7 ++-- .../BPCallgraph.class/instance/addRoot..st | 2 +- ...monAncestorOf.ignoringInvocationCounts..st | 20 ++++++++++++ .../BPCallgraph.class/instance/detect..st | 3 +- .../instance/detect.ifFound..st | 4 +++ .../instance/detect.ifFound.ifNone..st | 5 +++ .../instance/do.between.and..st | 4 +++ .../BPCallgraph.class/methodProperties.json | 6 +++- .../instance/expandByDefault.st | 4 --- .../instance/pathWithoutContextMovingRight.st | 14 ++++++++ .../instance/printOn..st | 4 +++ .../methodProperties.json | 3 +- .../README.md | 0 .../instance/contextSenderChangedEntry..st | 4 +++ .../instance/contextSenderChangedEntry.st | 4 +++ .../instance/doBrowse.st | 0 .../instance/label.st | 0 .../instance/menu..st | 0 .../instance/textColor.st | 0 .../methodProperties.json | 2 ++ .../properties.json | 4 +-- .../instance/doBrowse.st | 5 +++ .../instance/executionContinuationEntry.st | 8 +++++ .../instance/expandByDefault.st | 4 --- .../methodProperties.json | 3 +- .../properties.json | 2 +- .../depthDelta.inChain.hasActiveTracing..st | 6 ---- ...tiveTracing.executionContinuationEntry..st | 8 +++++ ...acing.executionContinuationEntry.debug..st | 9 ++++++ .../instance/executionContinuationEntry.st | 4 +++ .../instance/label.st | 2 +- .../methodProperties.json | 6 ++-- .../properties.json | 4 ++- .../instance/menu..st | 14 ++++++++ .../methodProperties.json | 2 +- .../methodProperties.json | 2 +- .../callgraphDisableTracingForClass.st | 2 +- ...callgraphDisableTracingForClassCategory.st | 2 +- .../callgraphDisableTracingForMessage.st | 2 +- .../callgraphEnableTracingForClass.st | 2 +- .../callgraphEnableTracingForClassCategory.st | 2 +- .../callgraphEnableTracingForMessage.st | 2 +- .../instance/callgraphInstrumentClass.st | 2 +- .../callgraphInstrumentClassCategory.st | 2 +- .../instance/callgraphInstrumentMessage.st | 2 +- .../instance/callgraphMessageMenu..st | 2 ++ .../instance/callgraphShowMessage.st | 4 +++ .../instance/callgraphUninstrumentClass.st | 2 +- .../callgraphUninstrumentClassCategory.st | 2 +- .../instance/callgraphUninstrumentMessage.st | 2 +- .../instance/callgraphcodePaneMenu..st | 9 ++++++ .../instance/sidebarShowMethod..st | 4 +++ .../BPBrowser.class/methodProperties.json | 7 ++-- .../instance/buildButtonBarWith..st | 24 ++++++++++++++ .../instance/buildWith..st | 12 +++++-- .../instance/getVisualizationTypes.st | 5 ++- .../BPBrowserSidebar.class/instance/popout.st | 13 ++++++++ .../instance/selectedExample.st | 2 +- .../instance/showMethod..st | 15 +++++++++ .../instance/visualizationMorphs.st | 12 +++++++ .../methodProperties.json | 9 ++++-- .../instance/highlightMethod..st | 4 +++ .../methodProperties.json | 1 + .../instance/highlightMethod..st | 3 ++ .../methodProperties.json | 1 + .../README.md | 0 .../instance/getAnnotations.st | 19 +++++++++++ .../instance/getList.st | 9 ++++++ .../instance/getListIcon..st | 6 ++++ .../instance/initialize.st | 6 ++++ .../instance/setIndex..st | 7 ++++ .../methodProperties.json | 9 ++++++ .../properties.json | 14 ++++++++ .../instance/highlightMethod..st | 7 ++++ .../methodProperties.json | 1 + .../README.md | 0 .../instance/buildWith..st | 18 +++++++++++ .../instance/doubleClick.st | 6 ++++ .../instance/getIndex.st | 4 +++ .../instance/getList.st | 4 +++ .../instance/getListIcon..st | 4 +++ .../instance/getMethods.st | 12 +++++++ .../instance/highlightMethod..st | 5 +++ .../instance/highlightTraceValue..st | 4 +++ .../instance/initialize.st | 6 ++++ .../instance/keyPressed..st | 5 +++ .../instance/setIndex..st | 5 +++ .../methodProperties.json | 15 +++++++++ .../properties.json | 15 +++++++++ .../README.md | 0 .../instance/getList.st | 9 ++++++ .../instance/getMethods.st | 30 +++++++++++++++++ .../instance/initialize.st | 6 ++++ .../instance/setIndex..st | 8 +++++ .../methodProperties.json | 8 +++++ .../properties.json | 14 ++++++++ .../instance/selectCorrespondingBlockEnter.st | 2 +- .../instance/selectExecutionContinuation.st | 2 +- .../instance/selectNextBlockCall.st | 10 ++++++ .../selectNextBlockCallInSameContext.st | 15 +++++++++ .../instance/selectNextMethodCall.st | 10 ++++++ .../instance/selectPrevBlockCall.st | 10 ++++++ .../selectPrevBlockCallInSameContext.st | 10 ++++++ .../instance/selectPrevMethodCall.st | 10 ++++++ .../methodProperties.json | 10 ++++-- .../instance/expandRecursivelyIfNeeded..st | 6 ---- .../instance/wrapRoots..st | 6 ---- .../methodProperties.json | 4 +-- .../instance/newLineMorphFor..st | 9 ++++++ .../instance/viewCommonAncestorForTrace..st | 11 +++++++ .../BPProbeMorph.class/methodProperties.json | 5 +-- 115 files changed, 676 insertions(+), 88 deletions(-) create mode 100644 packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/instrumentedAncestorAndDepthOf.and..st create mode 100644 packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st create mode 100644 packages/Babylonian-Core.package/BPCallgraph.class/instance/detect.ifFound..st create mode 100644 packages/Babylonian-Core.package/BPCallgraph.class/instance/detect.ifFound.ifNone..st create mode 100644 packages/Babylonian-Core.package/BPCallgraph.class/instance/do.between.and..st delete mode 100644 packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/expandByDefault.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/pathWithoutContextMovingRight.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/printOn..st rename packages/Babylonian-Core.package/{BPCallgraphEntryContextJump.class => BPCallgraphEntryContextExecutionContinuation.class}/README.md (100%) create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/contextSenderChangedEntry..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/contextSenderChangedEntry.st rename packages/Babylonian-Core.package/{BPCallgraphEntryContextJump.class => BPCallgraphEntryContextExecutionContinuation.class}/instance/doBrowse.st (100%) rename packages/Babylonian-Core.package/{BPCallgraphEntryContextJump.class => BPCallgraphEntryContextExecutionContinuation.class}/instance/label.st (100%) rename packages/Babylonian-Core.package/{BPCallgraphEntryContextJump.class => BPCallgraphEntryContextExecutionContinuation.class}/instance/menu..st (100%) rename packages/Babylonian-Core.package/{BPCallgraphEntryContextJump.class => BPCallgraphEntryContextExecutionContinuation.class}/instance/textColor.st (100%) rename packages/Babylonian-Core.package/{BPCallgraphEntryContextJump.class => BPCallgraphEntryContextExecutionContinuation.class}/methodProperties.json (63%) rename packages/Babylonian-Core.package/{BPCallgraphEntryContextJump.class => BPCallgraphEntryContextExecutionContinuation.class}/properties.json (69%) create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/doBrowse.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/executionContinuationEntry.st delete mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/expandByDefault.st delete mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/depthDelta.inChain.hasActiveTracing..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/depthDelta.inChain.hasActiveTracing.executionContinuationEntry..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/depthDelta.inChain.hasActiveTracing.executionContinuationEntry.debug..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/executionContinuationEntry.st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphShowMessage.st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphcodePaneMenu..st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/sidebarShowMethod..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildButtonBarWith..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/popout.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/showMethod..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/highlightMethod..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/highlightMethod..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/README.md create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/getAnnotations.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/getList.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/getListIcon..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/initialize.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/setIndex..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/methodProperties.json create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/properties.json create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/highlightMethod..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/README.md create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/buildWith..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/doubleClick.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getIndex.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getList.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getListIcon..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getMethods.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/highlightMethod..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/highlightTraceValue..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/initialize.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/keyPressed..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/setIndex..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/methodProperties.json create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/properties.json create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/README.md create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/getList.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/getMethods.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/initialize.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/setIndex..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/methodProperties.json create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/properties.json create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectNextBlockCall.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectNextBlockCallInSameContext.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectNextMethodCall.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectPrevBlockCall.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectPrevBlockCallInSameContext.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectPrevMethodCall.st delete mode 100644 packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/instance/expandRecursivelyIfNeeded..st delete mode 100644 packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/instance/wrapRoots..st create mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/viewCommonAncestorForTrace..st diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/swapSenderOf.newSender..st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/swapSenderOf.newSender..st index 05831f7c..24fdea2a 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/swapSenderOf.newSender..st +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/swapSenderOf.newSender..st @@ -2,4 +2,4 @@ tracing swapSenderOf: context newSender: newSender - self value ifNotNil: [:t | t swapSenderOf: context newSender: newSender] \ No newline at end of file + 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/instance/eventsForTree.st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsForTree.st index 9a476fdb..0d3f88bc 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsForTree.st +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsForTree.st @@ -1,7 +1,7 @@ post processing eventsForTree - | callgraph depth depthAfterExit depthMap printContinuesHere eventStream treeCache addToTree prevDepth overwriteDepth | + | callgraph depth depthAfterExit depthMap printContinuesHere eventStream treeCache addToTree prevDepth overwriteDepth executionContinuationEntry | depth := 0. depthAfterExit := nil. @@ -16,7 +16,7 @@ eventsForTree theDepth := overwriteDepth >= 0 ifTrue: [overwriteDepth] ifFalse: [depth]. theDepth > (prevDepth + 1) ifTrue: [ "context moved to the right -> we need to add new tree nodes to correctly display the context change" - 0 to: theDepth - 1 do: [:i | + (theDepth - 1 - executionContinuationEntry second) to: theDepth - 1 do: [:i | overwriteDepth := i. addToTree value: BPCallgraphEntryContextJumpHelper new]. overwriteDepth := -1]. @@ -28,8 +28,8 @@ eventsForTree prevDepth := theDepth]. printContinuesHere := [| entry | - entry := BPCallgraphEntryContextJump new. - addToTree value: entry]. + addToTree value: executionContinuationEntry first. + executionContinuationEntry := nil]. eventStream := self eventStream. [eventStream atEnd] whileFalse: [| entry | eventStream next caseOf: { @@ -71,9 +71,10 @@ eventsForTree depth := depthAfterExit. depthAfterExit := nil. printContinuesHere value]]. - [#contextSenderChanged] -> [ | depthDelta inChain hasActiveTracing | + [#contextSenderChanged] -> [ | depthDelta inChainOrNumMoveRight inChain hasActiveTracing | depthDelta := eventStream next. - inChain := 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." @@ -85,8 +86,10 @@ eventsForTree ifFalse: [depth := depth + depthDelta]. self assert: depth >= 0. + executionContinuationEntry := {BPCallgraphEntryContextExecutionContinuation new. inChainOrNumMoveRight}. entry := BPCallgraphEntryContextSenderChanged new. - entry depthDelta: depthDelta inChain: inChain hasActiveTracing: hasActiveTracing. + entry depthDelta: depthDelta inChain: inChain hasActiveTracing: hasActiveTracing executionContinuationEntry: executionContinuationEntry first + debug: inChainOrNumMoveRight. addToTree value: entry. hasActiveTracing ifFalse: [printContinuesHere value]]]. 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..2eb6a1cf --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/instrumentedAncestorAndDepthOf.and..st @@ -0,0 +1,32 @@ +private +instrumentedAncestorAndDepthOf: aContext and: anotherContext + + + | a b seenA seenB | + seenA := OrderedCollection new. + seenB := OrderedCollection new. + + a := aContext. + b := anotherContext. + + [| idx depth | + [[a notNil and: [(BPByteCodeRewriter hasActiveTracing: a method) not]] whileTrue: [a := a sender]] value. + [[b notNil and: [(BPByteCodeRewriter hasActiveTracing: b method) not]] whileTrue: [b := b sender]] value. + + (a isNil and: [b isNil]) ifTrue: [self error: 'context have no common ancestor - this should never happen.']. + + a ifNotNil: [seenA addLast: a]. + b ifNotNil: [seenB addLast: b]. + + a ifNotNil: [(idx := seenB indexOf: a) > 0 ifTrue: ["jump left" + depth := idx - seenA size. + self assert: depth <= 0. + ^ {Float negativeInfinity "unused" . depth}]]. + b ifNotNil: [(idx := seenA indexOf: b) > 0 ifTrue: ["jump right" + depth := seenB size - idx. + self assert: depth > 0. + ^ {idx - 1 . depth}]]. + + a ifNotNil: [a := a sender]. + b ifNotNil: [b := b sender]. + ] repeat. \ 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 index cefd1609..0d28ab8a 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/swapSenderOf.newSender..st +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/swapSenderOf.newSender..st @@ -3,7 +3,7 @@ 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 == context) ifFalse: [^ self]. + ("thisContext hasSender: context"thisContext sender sender sender sender sender sender sender sender sender == context) ifFalse: [^ self]. hasActiveTracing := BPByteCodeRewriter hasActiveTracing: context method. @@ -25,12 +25,19 @@ swapSenderOf: context newSender: newSenderContext events nextPut: hasActiveTracing. ^ self]. - [| depthOld depthNew | + [| 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 >= 0]). + events nextPut: #contextSenderChanged. - events nextPut: depthNew - depthOld. - events nextPut: false. + events nextPut: depth. + events nextPut: tmp first. 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 index 509a1ee1..b28076f6 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json @@ -3,15 +3,16 @@ "customEvent:data:" : "cmfcmf 10/23/2020 14:56", "enter:invocation:" : "cmfcmf 10/20/2020 12:18", "exit:invocation:returns:" : "cmfcmf 10/19/2020 12:50", - "swapSenderOf:newSender:" : "cmfcmf 10/20/2020 12:18" }, + "swapSenderOf:newSender:" : "cmfcmf 11/2/2020 19:06" }, "instance" : { "customEvent:data:" : "cmfcmf 10/23/2020 14:56", "enter:invocation:" : "cmfcmf 10/20/2020 13:44", "eventStream" : "cmfcmf 10/20/2020 13:49", - "eventsForTree" : "cmfcmf 10/28/2020 12:35", + "eventsForTree" : "cmfcmf 11/2/2020 19:27", "eventsToString" : "cmfcmf 10/23/2020 16:42", "eventsToStringForTest" : "cmfcmf 10/7/2020 14:07", "exit:invocation:returns:" : "cmfcmf 10/20/2020 13:47", "initialize" : "cmfcmf 10/20/2020 13:51", + "instrumentedAncestorAndDepthOf:and:" : "cmfcmf 11/2/2020 19:20", "instrumentedDepthOf:below:" : "cmfcmf 10/7/2020 16:19", - "swapSenderOf:newSender:" : "cmfcmf 10/20/2020 13:47" } } + "swapSenderOf:newSender:" : "cmfcmf 11/2/2020 19:29" } } diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/addRoot..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/addRoot..st index 5d602def..e5d70878 100644 --- a/packages/Babylonian-Core.package/BPCallgraph.class/instance/addRoot..st +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/addRoot..st @@ -1,4 +1,4 @@ -public +private addRoot: aBPCallgraphEntry self assert: aBPCallgraphEntry parent isNil. 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..e72369b8 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st @@ -0,0 +1,20 @@ +accessing +commonAncestorOf: aCollection ignoringInvocationCounts: aBoolean + + | possibleAncestors | + + aBoolean ifTrue: [self error: 'not yet implemented']. + + possibleAncestors := aCollection first pathWithoutContextMovingRight. + + aCollection allButFirst do: [:each | | path found | + path := each pathWithoutContextMovingRight. + found := false. + path reverseDo: [:entry | | idx | + found ifFalse: [ + idx := possibleAncestors indexOf: entry. + idx ~= 0 ifTrue: [possibleAncestors := possibleAncestors copyFrom: 1 to: idx. + found := true]]]. + found ifFalse: [^ nil]]. + + ^possibleAncestors last. \ 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 index 0b68b957..dad461a6 100644 --- a/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect..st +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect..st @@ -1,5 +1,4 @@ enumerating detect: aBlock - self do: [:each | (aBlock value: each) ifTrue: [^ each]]. - self errorNotFound: aBlock \ No newline at end of file + ^ 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.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.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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json index 9be3deb3..cfc0f9bc 100644 --- a/packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json @@ -4,14 +4,18 @@ "instance" : { "addRoot:" : "cmfcmf 10/27/2020 14:10", "babylonianEntries" : "cmfcmf 10/28/2020 11:01", - "detect:" : "cmfcmf 10/27/2020 16:22", + "commonAncestorOf:ignoringInvocationCounts:" : "cmfcmf 11/2/2020 21:13", + "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 10/27/2020 16:37", "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", "initialize" : "cmfcmf 10/27/2020 14:14", "roots" : "cmfcmf 10/27/2020 14:11", diff --git a/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/expandByDefault.st b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/expandByDefault.st deleted file mode 100644 index 792a0214..00000000 --- a/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/expandByDefault.st +++ /dev/null @@ -1,4 +0,0 @@ -as yet unclassified -expandByDefault - - ^ false \ 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..f93158b6 --- /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 == BPCallgraphEntryContextJumpHelper 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/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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntry.class/methodProperties.json index e628a236..60442de0 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntry.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/methodProperties.json @@ -5,7 +5,6 @@ "addChild:" : "cmfcmf 10/27/2020 14:01", "children" : "cmfcmf 10/26/2020 12:18", "doBrowse" : "cmfcmf 10/23/2020 15:42", - "expandByDefault" : "cmfcmf 10/23/2020 17:37", "hasChildren" : "cmfcmf 10/22/2020 14:15", "icon" : "cmfcmf 10/23/2020 17:05", "initialize" : "cmfcmf 10/22/2020 14:10", @@ -15,5 +14,7 @@ "parent" : "cmfcmf 10/27/2020 14:10", "parent:" : "cmfcmf 10/27/2020 14:01", "path" : "cmfcmf 10/27/2020 16:31", + "pathWithoutContextMovingRight" : "cmfcmf 11/2/2020 19:39", + "printOn:" : "cmfcmf 11/2/2020 17:33", "root" : "cmfcmf 10/27/2020 16:20", "textColor" : "cmfcmf 10/23/2020 16:14" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/README.md b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/README.md similarity index 100% rename from packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/README.md rename to packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/README.md 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/BPCallgraphEntryContextJump.class/instance/doBrowse.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/doBrowse.st similarity index 100% rename from packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/instance/doBrowse.st rename to packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/doBrowse.st diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/instance/label.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/label.st similarity index 100% rename from packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/instance/label.st rename to packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/label.st diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/instance/menu..st b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/menu..st similarity index 100% rename from packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/instance/menu..st rename to packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/menu..st diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/instance/textColor.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/textColor.st similarity index 100% rename from packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/instance/textColor.st rename to packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/textColor.st diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/methodProperties.json similarity index 63% rename from packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/methodProperties.json rename to packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/methodProperties.json index 68644661..a4ad633e 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/methodProperties.json @@ -2,6 +2,8 @@ "class" : { }, "instance" : { + "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", "menu:" : "cmfcmf 10/27/2020 17:17", diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/properties.json similarity index 69% rename from packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/properties.json rename to packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/properties.json index cba813e5..4b2f684c 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextJump.class/properties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/properties.json @@ -6,8 +6,8 @@ ], "commentStamp" : "", "instvars" : [ - ], - "name" : "BPCallgraphEntryContextJump", + "contextSenderChangedEntry" ], + "name" : "BPCallgraphEntryContextExecutionContinuation", "pools" : [ ], "super" : "BPCallgraphEntry", diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/doBrowse.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/doBrowse.st new file mode 100644 index 00000000..34d7ada0 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.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/BPCallgraphEntryContextJumpHelper.class/instance/executionContinuationEntry.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/executionContinuationEntry.st new file mode 100644 index 00000000..7bb587d4 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.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/BPCallgraphEntryContextJumpHelper.class/instance/expandByDefault.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/expandByDefault.st deleted file mode 100644 index 0f307aeb..00000000 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/expandByDefault.st +++ /dev/null @@ -1,4 +0,0 @@ -as yet unclassified -expandByDefault - - ^ true \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/methodProperties.json index e11f842d..5e1cef42 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/methodProperties.json @@ -2,7 +2,8 @@ "class" : { }, "instance" : { - "expandByDefault" : "cmfcmf 10/23/2020 17:37", + "doBrowse" : "cmfcmf 11/2/2020 17:31", + "executionContinuationEntry" : "cmfcmf 11/2/2020 17:17", "label" : "cmfcmf 10/26/2020 12:09", "menu:" : "cmfcmf 10/27/2020 17:17", "textColor" : "cmfcmf 10/23/2020 17:48" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/properties.json index 448ea3e1..a30f64ab 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/properties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/properties.json @@ -10,5 +10,5 @@ "name" : "BPCallgraphEntryContextJumpHelper", "pools" : [ ], - "super" : "BPCallgraphEntryContextJump", + "super" : "BPCallgraphEntry", "type" : "normal" } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/depthDelta.inChain.hasActiveTracing..st b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/depthDelta.inChain.hasActiveTracing..st deleted file mode 100644 index fbb7fefa..00000000 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/depthDelta.inChain.hasActiveTracing..st +++ /dev/null @@ -1,6 +0,0 @@ -as yet unclassified -depthDelta: theDepthDelta inChain: isInChain hasActiveTracing: tracing - - depthDelta := theDepthDelta. - inChain := isInChain. - hasActiveTracing := tracing \ 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..bda7d8b7 --- /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. + entry contextSenderChangedEntry: self. + executionContinuationEntry := entry \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/depthDelta.inChain.hasActiveTracing.executionContinuationEntry.debug..st b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/depthDelta.inChain.hasActiveTracing.executionContinuationEntry.debug..st new file mode 100644 index 00000000..36becc91 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/depthDelta.inChain.hasActiveTracing.executionContinuationEntry.debug..st @@ -0,0 +1,9 @@ +as yet unclassified +depthDelta: theDepthDelta inChain: isInChain hasActiveTracing: tracing executionContinuationEntry: entry debug: debug + + depthDelta := theDepthDelta. + inChain := isInChain. + hasActiveTracing := tracing. + entry contextSenderChangedEntry: self. + executionContinuationEntry := entry. + tmpdebug := debug \ 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 index 7fe89ef8..f0e23286 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/label.st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/label.st @@ -1,4 +1,4 @@ as yet unclassified label - ^ 'Context sender changed', String tab \ No newline at end of file + ^ 'Context sender changed', String tab, depthDelta, String tab, inChain, ': ', tmpdebug \ 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 index fb338ada..17be8d18 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/methodProperties.json @@ -2,8 +2,10 @@ "class" : { }, "instance" : { - "depthDelta:inChain:hasActiveTracing:" : "cmfcmf 10/22/2020 13:47", + "depthDelta:inChain:hasActiveTracing:executionContinuationEntry:" : "cmfcmf 11/2/2020 17:14", + "depthDelta:inChain:hasActiveTracing:executionContinuationEntry:debug:" : "cmfcmf 11/2/2020 18:54", "doBrowse" : "cmfcmf 10/23/2020 15:42", - "label" : "cmfcmf 10/26/2020 12:08", + "executionContinuationEntry" : "cmfcmf 11/2/2020 17:13", + "label" : "cmfcmf 11/2/2020 18:54", "menu:" : "cmfcmf 10/27/2020 17:16", "textColor" : "cmfcmf 10/23/2020 17:50" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/properties.json index dc3cee0e..ffa3ee07 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/properties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/properties.json @@ -8,7 +8,9 @@ "instvars" : [ "depthDelta", "inChain", - "hasActiveTracing" ], + "hasActiveTracing", + "executionContinuationEntry", + "tmpdebug" ], "name" : "BPCallgraphEntryContextSenderChanged", "pools" : [ ], diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/menu..st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/menu..st index 8dbe4188..b897b37b 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/menu..st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/menu..st @@ -1,6 +1,20 @@ 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 \ 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 index bdab4e84..b4df1fe8 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/methodProperties.json @@ -10,5 +10,5 @@ "getSelector" : "cmfcmf 10/27/2020 16:48", "icon" : "cmfcmf 10/23/2020 16:27", "label" : "cmfcmf 10/26/2020 12:00", - "menu:" : "cmfcmf 10/27/2020 17:00", + "menu:" : "cmfcmf 11/2/2020 14:18", "methodReference" : "cmfcmf 10/30/2020 14:53" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/methodProperties.json index fae7dac2..6213b9bb 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/methodProperties.json @@ -4,5 +4,5 @@ "instance" : { "class:selector:blockIdx:invocationCount:returns:" : "cmfcmf 10/22/2020 13:42", "label" : "cmfcmf 10/22/2020 14:17", - "menu:" : "cmfcmf 10/27/2020 17:00", + "menu:" : "cmfcmf 11/2/2020 13:59", "textColor" : "cmfcmf 10/23/2020 16:15" } } diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForClass.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForClass.st index cce2206b..ce729aab 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForClass.st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForClass.st @@ -1,4 +1,4 @@ -callgraph context menus +callgraph context menu actions callgraphDisableTracingForClass BPByteCodeRewriter disableTracingForClass: self selectedClassOrMetaClass \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForClassCategory.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForClassCategory.st index da09f2b5..aff8d606 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForClassCategory.st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForClassCategory.st @@ -1,4 +1,4 @@ -callgraph context menus +callgraph context menu actions callgraphDisableTracingForClassCategory BPByteCodeRewriter disableTracingForClassCategory: self selectedSystemCategory \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForMessage.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForMessage.st index e277410a..923acab5 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForMessage.st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForMessage.st @@ -1,4 +1,4 @@ -callgraph context menus +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/BPBrowser.class/instance/callgraphEnableTracingForClass.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForClass.st index 29fbbddf..04da5bb5 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForClass.st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForClass.st @@ -1,4 +1,4 @@ -callgraph context menus +callgraph context menu actions callgraphEnableTracingForClass BPByteCodeRewriter enableTracingForClass: self selectedClassOrMetaClass \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForClassCategory.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForClassCategory.st index 6f9ef847..76e50339 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForClassCategory.st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForClassCategory.st @@ -1,4 +1,4 @@ -callgraph context menus +callgraph context menu actions callgraphEnableTracingForClassCategory BPByteCodeRewriter enableTracingForClassCategory: self selectedSystemCategory \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForMessage.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForMessage.st index 72a3ecfa..7267950a 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForMessage.st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForMessage.st @@ -1,4 +1,4 @@ -callgraph context menus +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/BPBrowser.class/instance/callgraphInstrumentClass.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentClass.st index cf97e2d5..1217be60 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentClass.st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentClass.st @@ -1,4 +1,4 @@ -callgraph context menus +callgraph context menu actions callgraphInstrumentClass BPByteCodeRewriter instrumentClass: self selectedClassOrMetaClass \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentClassCategory.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentClassCategory.st index 45a9c862..f9ecf32e 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentClassCategory.st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentClassCategory.st @@ -1,4 +1,4 @@ -callgraph context menus +callgraph context menu actions callgraphInstrumentClassCategory BPByteCodeRewriter instrumentClassCategory: self selectedSystemCategory \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentMessage.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentMessage.st index 7dcaf824..cef72e14 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentMessage.st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentMessage.st @@ -1,4 +1,4 @@ -callgraph context menus +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/BPBrowser.class/instance/callgraphMessageMenu..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphMessageMenu..st index ee365c36..246492e9 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphMessageMenu..st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphMessageMenu..st @@ -4,6 +4,8 @@ callgraphMessageMenu: aMenu ^ aMenu addList: #( + ('show in sidebar' callgraphShowMessage) + - ('instrument for callgraphs' callgraphInstrumentMessage) ('enable callgraph tracing' callgraphEnableTracingForMessage) ('disable callgraph tracing' callgraphDisableTracingForMessage) diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphShowMessage.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphShowMessage.st new file mode 100644 index 00000000..f1035626 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.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/BPBrowser.class/instance/callgraphUninstrumentClass.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentClass.st index 492f715b..20055165 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentClass.st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentClass.st @@ -1,4 +1,4 @@ -callgraph context menus +callgraph context menu actions callgraphUninstrumentClass BPByteCodeRewriter uninstrumentClass: self selectedClassOrMetaClass \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentClassCategory.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentClassCategory.st index 67a22b13..591700bc 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentClassCategory.st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentClassCategory.st @@ -1,4 +1,4 @@ -callgraph context menus +callgraph context menu actions callgraphUninstrumentClassCategory BPByteCodeRewriter uninstrumentClassCategory: self selectedSystemCategory \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentMessage.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentMessage.st index c89ec653..69d0da86 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentMessage.st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentMessage.st @@ -1,4 +1,4 @@ -callgraph context menus +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/BPBrowser.class/instance/callgraphcodePaneMenu..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphcodePaneMenu..st new file mode 100644 index 00000000..a168b621 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.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/BPBrowser.class/instance/sidebarShowMethod..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/sidebarShowMethod..st new file mode 100644 index 00000000..1897f742 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.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/BPBrowser.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json index 6af150c2..d7553b5f 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json @@ -27,10 +27,12 @@ "callgraphInstrumentClass" : "cmfcmf 10/23/2020 12:55", "callgraphInstrumentClassCategory" : "cmfcmf 10/22/2020 17:38", "callgraphInstrumentMessage" : "cmfcmf 10/23/2020 12:54", - "callgraphMessageMenu:" : "cmfcmf 10/23/2020 12:56", + "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", "codePaneMenuAnnotationItems:" : "pre 8/25/2020 09:17", "compileMessage:notifying:" : "pre 11/11/2019 09:46", "compiledMethod" : "pre 1/24/2020 15:08", @@ -51,4 +53,5 @@ "removeSelectedAnnotationsSatisfying:" : "pre 7/26/2019 16:08", "saveMethodWithExamples" : "pre 11/11/2019 09:36", "saveMethodWithExamplesWith:" : "pre 8/6/2019 13:57", - "sidebarShowExample:traceValue:" : "cmfcmf 10/30/2020 16:01" } } + "sidebarShowExample:traceValue:" : "cmfcmf 10/30/2020 16:01", + "sidebarShowMethod:" : "cmfcmf 11/2/2020 14:14" } } 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..17fe8edc --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildButtonBarWith..st @@ -0,0 +1,24 @@ +buttons +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 extent: 0.25@1); + yourself. + aBuilder pluggableButtonSpec new + frame: (0.75@0 extent: 0.25@1); + yourself. + } + 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 index b658cd2b..5599e0fc 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildWith..st +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildWith..st @@ -1,8 +1,9 @@ as yet unclassified buildWith: aBuilder - | visualizationTypeHeight | - visualizationTypeHeight := self getVisualizationTypes size * 16 + 2. + | visualizationTypeHeight buttonBarHeight | + visualizationTypeHeight := self getVisualizationTypes size * 15 + 3. + buttonBarHeight := 23. ^ aBuilder pluggablePanelSpec new wantsResizeHandles: true; @@ -18,6 +19,11 @@ buildWith: aBuilder (self buildVisualizationWith: aBuilder) frame: (LayoutFrame fractions: (0@0.2 corner: 1@1) - offsets: (0@visualizationTypeHeight corner: 0@0)); + 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/getVisualizationTypes.st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getVisualizationTypes.st index c78ca6e0..2e002165 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getVisualizationTypes.st +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getVisualizationTypes.st @@ -3,5 +3,8 @@ getVisualizationTypes ^ { 'callgraph' -> #callgraph. - 'annotations' -> #annotations + 'annotations' -> #annotations. + 'annotations with paths' -> #annotationsWithPaths. + 'method set' -> #methodSet. + 'method set with paths' -> #methodSetWithPaths } \ 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..84581b1b --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/popout.st @@ -0,0 +1,13 @@ +buttons +popout + + | builder instance spec windowSpec | + builder := ToolBuilder default. + instance := self copy. + instance when: #browseMethod evaluate: [:methodReference | methodReference browse]. + instance breakDependents. + 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/selectedExample.st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/selectedExample.st index 2958c930..c24797fb 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/selectedExample.st +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/selectedExample.st @@ -1,4 +1,4 @@ -visualization type +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/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/visualizationMorphs.st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/visualizationMorphs.st index aef9828a..4730e20a 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/visualizationMorphs.st +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/visualizationMorphs.st @@ -17,6 +17,18 @@ visualizationMorphs example: self selectedExample; when: #browseMethod evaluate: [:ref | self triggerEvent: #browseMethod with: ref]; buildWith: ToolBuilder default}]. + [#annotationsWithPaths] -> [{(visualization := BPBrowserSidebarVisualizationAnnotationsWithPaths new) + example: self selectedExample; + when: #browseMethod evaluate: [:ref | self triggerEvent: #browseMethod with: ref]; + buildWith: ToolBuilder default}]. + [#methodSet] -> [{(visualization := BPBrowserSidebarVisualizationExecutedMethods new) + example: self selectedExample; + when: #browseMethod evaluate: [:ref | self triggerEvent: #browseMethod with: ref]; + buildWith: ToolBuilder default}]. + [#methodSetWithPaths] -> [{(visualization := BPBrowserSidebarVisualizationExecutedMethodsWithPaths new) + example: self selectedExample; + when: #browseMethod evaluate: [:ref | self triggerEvent: #browseMethod with: ref]; + buildWith: ToolBuilder default}]. } otherwise: [{'Visualization is not yet supported.'}]]. ^ morphs diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json index 9f904f2a..ba8ddd6b 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json @@ -2,21 +2,24 @@ "class" : { }, "instance" : { + "buildButtonBarWith:" : "cmfcmf 11/2/2020 21:02", "buildExampleListWith:" : "cmfcmf 10/30/2020 15:37", "buildVisualizationTypeWith:" : "cmfcmf 10/30/2020 14:09", "buildVisualizationWith:" : "cmfcmf 10/30/2020 14:08", - "buildWith:" : "cmfcmf 10/30/2020 15:35", + "buildWith:" : "cmfcmf 11/2/2020 12:18", "exampleListDoubleClick" : "cmfcmf 10/30/2020 14:26", "getExampleList" : "cmfcmf 10/30/2020 13:59", "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" : "cmfcmf 10/30/2020 15:33", + "getVisualizationTypes" : "cmfcmf 11/2/2020 20:34", "initialize" : "cmfcmf 10/30/2020 14:03", + "popout" : "cmfcmf 11/2/2020 11:49", "selectedExample" : "cmfcmf 10/30/2020 14:20", "selectedVisualizationType" : "cmfcmf 10/30/2020 14:14", "setExampleListIndex:" : "cmfcmf 10/30/2020 16:08", "setVisualizationTypeIndex:" : "cmfcmf 10/30/2020 14:10", "showExample:traceValue:" : "cmfcmf 10/30/2020 16:05", - "visualizationMorphs" : "cmfcmf 10/30/2020 16:05" } } + "showMethod:" : "cmfcmf 11/2/2020 14:34", + "visualizationMorphs" : "cmfcmf 11/2/2020 20:34" } } 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/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/methodProperties.json index 4cae8b1a..e103ceb3 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/methodProperties.json @@ -6,4 +6,5 @@ "callgraph" : "cmfcmf 10/30/2020 14:39", "example" : "cmfcmf 10/30/2020 14:29", "example:" : "cmfcmf 10/30/2020 14:28", + "highlightMethod:" : "cmfcmf 11/2/2020 14:09", "highlightTraceValue:" : "cmfcmf 10/30/2020 16:03" } } 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..7ef6759d --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/highlightMethod..st @@ -0,0 +1,3 @@ +as yet unclassified +highlightMethod: aMethodReference + \ 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 index bfac37df..1cb71da5 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/methodProperties.json @@ -8,6 +8,7 @@ "getIndex" : "cmfcmf 10/30/2020 14:41", "getList" : "cmfcmf 10/30/2020 14:42", "getListIcon:" : "cmfcmf 10/30/2020 14:44", + "highlightMethod:" : "cmfcmf 11/2/2020 14:09", "highlightTraceValue:" : "cmfcmf 10/30/2020 16:14", "initialize" : "cmfcmf 10/30/2020 14:41", "keyPressed:" : "cmfcmf 10/30/2020 14:45", diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/README.md b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/getAnnotations.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/getAnnotations.st new file mode 100644 index 00000000..42c5ee5e --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/getAnnotations.st @@ -0,0 +1,19 @@ +as yet unclassified +getAnnotations + + | list | + list := super getAnnotations copy. + + annotationIndex > 0 ifTrue: [| selectedEntry entries | + list addLast: '################################################################################'. + selectedEntry := super getAnnotations at: annotationIndex. + entries := self callgraph select: [:each | (each isKindOf: BPCallgraphEntryBPProbeOrAssertion) + and: [each id == selectedEntry id]]. + entries withIndexDo: [:entry :i | | attributes | + attributes := OrderedCollection with: TextEmphasis bold. + entry traceValue == selectedEntry traceValue + ifTrue: [attributes addLast: (TextColor color: Color red)]. + list addLast: (Text string: 'Hit ', i attributes: attributes). + list addAll: entry pathWithoutContextMovingRight]]. + + ^ list \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/getList.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/getList.st new file mode 100644 index 00000000..5af8a78c --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/getList.st @@ -0,0 +1,9 @@ +as yet unclassified +getList + + ^ self getAnnotations collect: [:each | (each isKindOf: BPCallgraphEntry) + ifTrue: [ | label | + label := (((each respondsTo: #alternateLabel) ifTrue: [each alternateLabel] ifFalse: [each label]) splitBy: String tab) first. + each textColor ifNotNil: [:color | label := Text string: label attribute: (TextColor color: color)]. + label] + ifFalse: [each]] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/getListIcon..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/getListIcon..st new file mode 100644 index 00000000..9d133359 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/getListIcon..st @@ -0,0 +1,6 @@ +as yet unclassified +getListIcon: aNumber + + | entry | + entry := self getAnnotations at: aNumber. + ^ (entry isKindOf: BPCallgraphEntryBPProbeOrAssertion) ifTrue: [entry iconForId] ifFalse: [ToolIcons blank] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/initialize.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/initialize.st new file mode 100644 index 00000000..470039ba --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/initialize.st @@ -0,0 +1,6 @@ +as yet unclassified +initialize + + super initialize. + + annotationIndex := 0 \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/setIndex..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/setIndex..st new file mode 100644 index 00000000..49223b3c --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/setIndex..st @@ -0,0 +1,7 @@ +as yet unclassified +setIndex: aNumber + + super setIndex: aNumber. + (aNumber <= super getAnnotations size and: [aNumber > 1]) ifTrue: [ + annotationIndex := aNumber. + self changed: #getList]. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/methodProperties.json new file mode 100644 index 00000000..460a7225 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/methodProperties.json @@ -0,0 +1,9 @@ +{ + "class" : { + }, + "instance" : { + "getAnnotations" : "cmfcmf 11/2/2020 20:49", + "getList" : "cmfcmf 11/2/2020 20:44", + "getListIcon:" : "cmfcmf 11/2/2020 20:40", + "initialize" : "cmfcmf 11/2/2020 20:37", + "setIndex:" : "cmfcmf 11/2/2020 20:45" } } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/properties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/properties.json new file mode 100644 index 00000000..ce2b6d07 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-UI-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "annotationIndex" ], + "name" : "BPBrowserSidebarVisualizationAnnotationsWithPaths", + "pools" : [ + ], + "super" : "BPBrowserSidebarVisualizationAnnotations", + "type" : "normal" } 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/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/methodProperties.json index 8e654569..47c5bc40 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/methodProperties.json @@ -3,4 +3,5 @@ }, "instance" : { "buildWith:" : "cmfcmf 10/30/2020 16:16", + "highlightMethod:" : "cmfcmf 11/2/2020 14:27", "highlightTraceValue:" : "cmfcmf 10/30/2020 16:17" } } 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/buildWith..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/buildWith..st new file mode 100644 index 00000000..6767d2d0 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/buildWith..st @@ -0,0 +1,18 @@ +toolbuilder +buildWith: aBuilder + + | model | + model := BPCallgraphModel new. + model callgraph: self callgraph. + ^ aBuilder build: (aBuilder pluggableListSpec new + frame: (0@0 corner: 1@1); + autoDeselect: false; + clearFilterAutomatically: false; + filterableList: true; + model: self; + list: #getList; + icon: #getListIcon:; + doubleClick: #doubleClick; + getIndex: #getIndex; + setIndex: #setIndex:; + yourself) \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/doubleClick.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/doubleClick.st new file mode 100644 index 00000000..364f9027 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/doubleClick.st @@ -0,0 +1,6 @@ +as yet unclassified +doubleClick + + | entry | + entry := self getMethods at: self getIndex. + self triggerEvent: #browseMethod with: entry methodReference \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getIndex.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getIndex.st new file mode 100644 index 00000000..fc86776a --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getIndex.st @@ -0,0 +1,4 @@ +as yet unclassified +getIndex + + ^ listIndex \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getList.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getList.st new file mode 100644 index 00000000..bde0f825 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getList.st @@ -0,0 +1,4 @@ +as yet unclassified +getList + + ^ self getMethods collect: [:each | (each label splitBy: String tab) first] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getListIcon..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getListIcon..st new file mode 100644 index 00000000..3e532325 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getListIcon..st @@ -0,0 +1,4 @@ +as yet unclassified +getListIcon: aNumber + + ^ ToolIcons blank \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getMethods.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getMethods.st new file mode 100644 index 00000000..993b4c96 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getMethods.st @@ -0,0 +1,12 @@ +as yet unclassified +getMethods + + | tmp | + methods ifNotNil: [^ methods]. + + tmp := OrderedDictionary new. + (self callgraph do: [:each | (each class == BPCallgraphEntryEnter) ifTrue: [tmp at: {each getClass . each getSelector . each getBlockIdx} ifAbsentPut: [each]]]). + + methods := OrderedCollection new. + methods addAll: tmp values. + ^ methods \ 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..585ce170 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/highlightMethod..st @@ -0,0 +1,5 @@ +as yet unclassified +highlightMethod: aMethodReference + + self getMethods + withIndexDo: [:each :i | (each getClass == aMethodReference actualClass and: [each getSelector == aMethodReference selector]) ifTrue: [^ self setIndex: i]] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/highlightTraceValue..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/highlightTraceValue..st new file mode 100644 index 00000000..045090ba --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/highlightTraceValue..st @@ -0,0 +1,4 @@ +as yet unclassified +highlightTraceValue: aBPTraceValue + + \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/initialize.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/initialize.st new file mode 100644 index 00000000..285acbfa --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/initialize.st @@ -0,0 +1,6 @@ +initialize-release +initialize + + super initialize. + + listIndex := 0 \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/keyPressed..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/keyPressed..st new file mode 100644 index 00000000..58ad4e34 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/keyPressed..st @@ -0,0 +1,5 @@ +as yet unclassified +keyPressed: 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 getMethods at: self getIndex) doBrowse] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/setIndex..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/setIndex..st new file mode 100644 index 00000000..7dc6948b --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/setIndex..st @@ -0,0 +1,5 @@ +as yet unclassified +setIndex: aNumber + + listIndex := aNumber. + self changed: #getIndex \ 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..227db5c8 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/methodProperties.json @@ -0,0 +1,15 @@ +{ + "class" : { + }, + "instance" : { + "buildWith:" : "cmfcmf 11/2/2020 11:54", + "doubleClick" : "cmfcmf 11/2/2020 12:00", + "getIndex" : "cmfcmf 10/30/2020 14:41", + "getList" : "cmfcmf 11/2/2020 12:02", + "getListIcon:" : "cmfcmf 11/2/2020 11:59", + "getMethods" : "cmfcmf 11/2/2020 12:50", + "highlightMethod:" : "cmfcmf 11/2/2020 14:13", + "highlightTraceValue:" : "cmfcmf 11/2/2020 11:54", + "initialize" : "cmfcmf 10/30/2020 14:41", + "keyPressed:" : "cmfcmf 11/2/2020 12:00", + "setIndex:" : "cmfcmf 10/30/2020 14:41" } } 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..2e568bff --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Babylonian-UI-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "listIndex", + "methods" ], + "name" : "BPBrowserSidebarVisualizationExecutedMethods", + "pools" : [ + ], + "super" : "BPBrowserSidebarVisualization", + "type" : "normal" } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/README.md b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/getList.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/getList.st new file mode 100644 index 00000000..813b240a --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/getList.st @@ -0,0 +1,9 @@ +as yet unclassified +getList + + ^ self getMethods collect: [:each | (each isKindOf: BPCallgraphEntry) + ifTrue: [ | label | + label := (each label splitBy: String tab) first. + each textColor ifNotNil: [:color | label := Text string: label attribute: (TextColor color: color)]. + label] + ifFalse: [each]] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/getMethods.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/getMethods.st new file mode 100644 index 00000000..d1c98635 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/getMethods.st @@ -0,0 +1,30 @@ +as yet unclassified +getMethods + + | list | + list := super getMethods copy. + + methodIndex > 0 ifTrue: [| selectedEntry entries | + list addLast: '################################################################################'. + selectedEntry := super getMethods at: methodIndex. + entries := self callgraph select: [:each | each class == BPCallgraphEntryEnter + and: [each getClass == selectedEntry getClass] + and: [each getSelector == selectedEntry getSelector] + and: [each getBlockIdx == selectedEntry getBlockIdx]]. + entries withIndexDo: [:entry :i | | path | + list addLast: (Text string: 'Invocation ', i attribute: TextEmphasis bold). + path := entry pathWithoutContextMovingRight. + "path overlappingPairsDo: [:a :b | + list add: a. + self callgraph do: [:each | (each isKindOf: BPCallgraphEntryCustomEvent) ifTrue: [list add: each]] between: a and: b]. + list add: path last." + + "path do: [:each | + list add: each. + list addAll: (each children select: [:child | child isKindOf: BPCallgraphEntryCustomEvent])]." + + list addAll: path. + + "i < entries size ifTrue: [list addLast: '------------------------------------------------------------']"]]. + + ^ list \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/initialize.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/initialize.st new file mode 100644 index 00000000..4f42bdb8 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/initialize.st @@ -0,0 +1,6 @@ +as yet unclassified +initialize + + super initialize. + + methodIndex := 0 \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/setIndex..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/setIndex..st new file mode 100644 index 00000000..783b4bd5 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/setIndex..st @@ -0,0 +1,8 @@ +as yet unclassified +setIndex: aNumber + + super setIndex: aNumber. + + aNumber <= super getMethods size ifTrue: [ + methodIndex := aNumber. + self changed: #getList]. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/methodProperties.json new file mode 100644 index 00000000..858e65ab --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/methodProperties.json @@ -0,0 +1,8 @@ +{ + "class" : { + }, + "instance" : { + "getList" : "cmfcmf 11/2/2020 20:00", + "getMethods" : "cmfcmf 11/2/2020 20:31", + "initialize" : "cmfcmf 11/2/2020 19:57", + "setIndex:" : "cmfcmf 11/2/2020 19:59" } } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/properties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/properties.json new file mode 100644 index 00000000..eb0dd155 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-UI-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "methodIndex" ], + "name" : "BPBrowserSidebarVisualizationExecutedMethodsWithPaths", + "pools" : [ + ], + "super" : "BPBrowserSidebarVisualizationExecutedMethods", + "type" : "normal" } diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectCorrespondingBlockEnter.st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectCorrespondingBlockEnter.st index 93f63109..9d44c45b 100644 --- a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectCorrespondingBlockEnter.st +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectCorrespondingBlockEnter.st @@ -13,4 +13,4 @@ selectCorrespondingBlockEnter and: [each getInvocationCount == entry getInvocationCount]] before: entry ifFound: [:each | self selectEntry: each] - ifNone: [UIManager default inform: 'Block exit not found'] \ No newline at end of file + ifNone: [UIManager default inform: 'Block enter not found'] \ 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 index 53a8f25c..b8762c83 100644 --- a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectExecutionContinuation.st +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectExecutionContinuation.st @@ -2,7 +2,7 @@ menu selectExecutionContinuation callgraph - detect: [:each | each class == BPCallgraphEntryContextJump] + 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/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/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/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/methodProperties.json b/packages/Babylonian-UI.package/BPCallgraphModel.class/methodProperties.json index 45ea7254..7596a9bf 100644 --- a/packages/Babylonian-UI.package/BPCallgraphModel.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/methodProperties.json @@ -15,12 +15,18 @@ "menuOf:" : "cmfcmf 10/27/2020 16:14", "rootEntries" : "cmfcmf 10/27/2020 14:13", "selectContextSenderChange" : "cmfcmf 10/27/2020 17:17", - "selectCorrespondingBlockEnter" : "cmfcmf 10/27/2020 17:15", + "selectCorrespondingBlockEnter" : "cmfcmf 11/2/2020 14:07", "selectCorrespondingBlockExit" : "cmfcmf 10/28/2020 12:25", "selectCorrespondingMethodEnter" : "cmfcmf 10/27/2020 17:15", "selectCorrespondingMethodExit" : "cmfcmf 10/27/2020 17:15", "selectEntry:" : "cmfcmf 10/27/2020 16:30", - "selectExecutionContinuation" : "cmfcmf 10/27/2020 17:15", + "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", + "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:" : "cmfcmf 10/23/2020 15:38" } } diff --git a/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/instance/expandRecursivelyIfNeeded..st b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/instance/expandRecursivelyIfNeeded..st deleted file mode 100644 index 8b422e24..00000000 --- a/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/instance/expandRecursivelyIfNeeded..st +++ /dev/null @@ -1,6 +0,0 @@ -as yet unclassified -expandRecursivelyIfNeeded: aBPCallgraphIndentingListItemMorph - - aBPCallgraphIndentingListItemMorph complexContents item expandByDefault ifFalse: [^ self]. - aBPCallgraphIndentingListItemMorph expand. - aBPCallgraphIndentingListItemMorph childrenDo: [:child | self expandRecursivelyIfNeeded: child]. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/instance/wrapRoots..st b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/instance/wrapRoots..st deleted file mode 100644 index ff289731..00000000 --- a/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/instance/wrapRoots..st +++ /dev/null @@ -1,6 +0,0 @@ -updating -wrapRoots: someObjects - - super wrapRoots: someObjects. - self roots do: [:each | self expandRecursivelyIfNeeded: each]. - self adjustSubmorphPositions \ 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 index 86b6e363..fad41aff 100644 --- a/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/methodProperties.json @@ -2,7 +2,5 @@ "class" : { }, "instance" : { - "expandRecursivelyIfNeeded:" : "cmfcmf 10/23/2020 17:49", "indentingItemClass" : "cmfcmf 10/23/2020 17:27", - "indicateUnfiltered" : "cmfcmf 10/26/2020 13:14", - "wrapRoots:" : "cmfcmf 10/23/2020 17:49" } } + "indicateUnfiltered" : "cmfcmf 10/26/2020 13:14" } } diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newLineMorphFor..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newLineMorphFor..st index e41d3915..9fb01f08 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newLineMorphFor..st +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newLineMorphFor..st @@ -24,6 +24,15 @@ newLineMorphFor: aTrace scrollPane := self newScrollPane. newLine addMorphBack: scrollPane. + newLine addMorphBack: (SimpleButtonMorph new + hResizing: #shrinkWrap; + "vResizing: #shrinkWrap;" + label: 'view common ancestor'; + target: self; + actionSelector: #viewCommonAncestorForTrace:; + arguments: {aTrace}; + yourself). + newLine addMorphBack: (SimpleButtonMorph new hResizing: #shrinkWrap; "vResizing: #shrinkWrap;" diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/viewCommonAncestorForTrace..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/viewCommonAncestorForTrace..st new file mode 100644 index 00000000..6561dd3b --- /dev/null +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/viewCommonAncestorForTrace..st @@ -0,0 +1,11 @@ +private - ui +viewCommonAncestorForTrace: aTrace + + | ancestor callgraph | + callgraph := aTrace example traceWithCallgraphUsingByteCodeTracer eventsForTree. + ancestor := callgraph commonAncestorOf: (callgraph select: [:each | + (each isKindOf: BPCallgraphEntryBPProbeOrAssertion) and: [each id == self id]]) ignoringInvocationCounts: false. + + ancestor + ifNil: [UIManager default inform: 'Probe hits have no single common ancestor'] + ifNotNil: [self containingBrowser sidebarShowMethod: ancestor methodReference] \ 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 8c8cb26f..9a91b88c 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json @@ -16,7 +16,7 @@ "newExploreButtonFor:" : "pre 8/21/2020 11:15", "newExpressionMorph" : "pre 10/8/2020 10:46", "newHaltButtonFor:" : "pre 9/29/2020 15:55", - "newLineMorphFor:" : "cmfcmf 10/30/2020 12:46", + "newLineMorphFor:" : "cmfcmf 11/2/2020 21:11", "newScrollPane" : "pre 10/12/2020 11:23", "newTracesMorph" : "pre 3/19/2020 14:06", "newWidgetsMorph" : "pre 9/22/2020 10:03", @@ -32,4 +32,5 @@ "valueTextFor:" : "pre 7/7/2020 16:43", "valuesMorphFor:" : "cmfcmf 10/30/2020 15:56", "valuesTextFor:" : "pre 8/17/2020 09:31", - "viewCallgraphForTrace:" : "cmfcmf 10/28/2020 11:02" } } + "viewCallgraphForTrace:" : "cmfcmf 10/28/2020 11:02", + "viewCommonAncestorForTrace:" : "cmfcmf 11/2/2020 21:15" } } From 961611ca0e388d0549fb246f3f6ad274e04b0b6d Mon Sep 17 00:00:00 2001 From: Christian Flach Date: Tue, 3 Nov 2020 13:44:56 +0100 Subject: [PATCH 06/71] Introduce "path parts" :) --- ...monAncestorOf.ignoringInvocationCounts..st | 18 +++++++++++------- ...ingInvocationCountsBetween.andChildren..st | 12 ++++++++++++ .../BPCallgraph.class/methodProperties.json | 3 ++- .../instance/parent..st | 6 ++++++ .../methodProperties.json | 3 ++- .../class/textColor.st | 4 ++++ .../instance/asPathPart.st | 5 +++++ .../instance/textColor.st | 2 +- .../methodProperties.json | 5 +++-- .../class/textColor.st | 4 ++++ .../instance/textColor.st | 2 +- .../methodProperties.json | 4 ++-- .../instance/asPathPart.st | 5 +++++ .../methodProperties.json | 1 + .../class/textColor.st | 4 ++++ .../instance/asPathPart.st | 5 +++++ .../instance/equalsClassSelector..st | 5 +++++ .../instance/equalsClassSelectorBlockIdx..st | 5 +++++ .../equalsClassSelectorBlockIdxInvocation..st | 5 +++++ .../instance/getBlockIdx.st | 2 +- .../instance/getClass.st | 2 +- .../instance/getInvocationCount.st | 2 +- .../instance/getSelector.st | 2 +- .../instance/methodReference.st | 2 +- .../instance/textColor.st | 4 ++++ .../methodProperties.json | 9 +++++++-- .../instance/asPathPart.st | 5 +++++ .../methodProperties.json | 1 + .../README.md | 0 .../instance/^equals.st | 4 ++++ .../instance/doBrowse.st | 4 ++++ .../instance/hash.st | 4 ++++ .../instance/printOn..st | 4 ++++ .../instance/textColor.st | 5 +++++ .../methodProperties.json | 9 +++++++++ .../properties.json | 14 ++++++++++++++ .../README.md | 0 .../instance/^equals.st | 4 ++++ .../instance/doBrowse.st | 2 ++ .../instance/hash.st | 4 ++++ .../instance/printOn..st | 4 ++++ .../instance/textColor.st | 4 ++++ .../methodProperties.json | 9 +++++++++ .../properties.json | 14 ++++++++++++++ .../README.md | 0 .../class/class.selector.blockIdx..st | 6 ++++++ .../instance/^equals.st | 4 ++++ .../instance/class.selector.blockIdx..st | 6 ++++++ .../instance/doBrowse.st | 4 ++++ .../instance/equalsClassSelectorBlockIdx..st | 6 ++++++ .../instance/getBlockIdx.st | 4 ++++ .../instance/getClass.st | 4 ++++ .../instance/getSelector.st | 5 +++++ .../instance/hash.st | 4 ++++ .../instance/methodReference.st | 4 ++++ .../instance/printOn..st | 13 +++++++++++++ .../instance/textColor.st | 4 ++++ .../methodProperties.json | 15 +++++++++++++++ .../properties.json | 16 ++++++++++++++++ .../BPCallgraphPathPart.class/README.md | 0 .../instance/^equals.st | 4 ++++ .../instance/doBrowse.st | 4 ++++ .../instance/hash.st | 4 ++++ .../instance/icon.st | 4 ++++ .../instance/textColor.st | 4 ++++ .../methodProperties.json | 9 +++++++++ .../BPCallgraphPathPart.class/properties.json | 14 ++++++++++++++ .../instance/buildWith..st | 1 + .../instance/getMenu..st | 4 ++++ .../instance/keyPressed..st | 5 ----- .../methodProperties.json | 4 ++-- .../instance/getList.st | 9 +++++++-- .../instance/getMenu..st | 19 +++++++++++++++++++ .../methodProperties.json | 3 ++- 74 files changed, 363 insertions(+), 32 deletions(-) create mode 100644 packages/Babylonian-Core.package/BPCallgraph.class/instance/pathsIgnoringInvocationCountsBetween.andChildren..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/instance/parent..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/class/textColor.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/asPathPart.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/class/textColor.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/asPathPart.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/class/textColor.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/asPathPart.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/equalsClassSelector..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/equalsClassSelectorBlockIdx..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/equalsClassSelectorBlockIdxInvocation..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/textColor.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/asPathPart.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/README.md create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/instance/^equals.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/instance/doBrowse.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/instance/hash.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/instance/printOn..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/instance/textColor.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/properties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/README.md create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/instance/^equals.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/instance/doBrowse.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/instance/hash.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/instance/printOn..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/instance/textColor.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/properties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/README.md create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/class/class.selector.blockIdx..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/^equals.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/class.selector.blockIdx..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/doBrowse.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/equalsClassSelectorBlockIdx..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/getBlockIdx.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/getClass.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/getSelector.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/hash.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/methodReference.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/printOn..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/textColor.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/properties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathPart.class/README.md create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/^equals.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/doBrowse.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/hash.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/icon.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/textColor.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathPart.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathPart.class/properties.json create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getMenu..st delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/keyPressed..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/getMenu..st diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st index e72369b8..b3c8cf00 100644 --- a/packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st @@ -1,20 +1,24 @@ -accessing +finding ancestors commonAncestorOf: aCollection ignoringInvocationCounts: aBoolean - | possibleAncestors | - - aBoolean ifTrue: [self error: 'not yet implemented']. + | theAncestor possibleAncestors | + aCollection ifEmpty: [^ nil]. possibleAncestors := aCollection first pathWithoutContextMovingRight. aCollection allButFirst do: [:each | | path found | path := each pathWithoutContextMovingRight. found := false. - path reverseDo: [:entry | | idx | + path allButLast reverseDo: [:entry | | idx | found ifFalse: [ - idx := possibleAncestors indexOf: entry. + idx := possibleAncestors findFirst: [:ancestor | entry class == BPCallgraphEntryEnter + ifFalse: [false] + ifTrue: [aBoolean + ifFalse: [ancestor equalsClassSelectorBlockIdxInvocation: entry] + ifTrue: [ancestor equalsClassSelectorBlockIdx: entry]]]. idx ~= 0 ifTrue: [possibleAncestors := possibleAncestors copyFrom: 1 to: idx. found := true]]]. found ifFalse: [^ nil]]. - ^possibleAncestors last. \ No newline at end of file + theAncestor := possibleAncestors last. + ^ aBoolean ifTrue: [theAncestor asPathPart] ifFalse: [theAncestor] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/pathsIgnoringInvocationCountsBetween.andChildren..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/pathsIgnoringInvocationCountsBetween.andChildren..st new file mode 100644 index 00000000..aceb57e1 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/pathsIgnoringInvocationCountsBetween.andChildren..st @@ -0,0 +1,12 @@ +finding ancestors +pathsIgnoringInvocationCountsBetween: ancestor andChildren: aCollection + + | paths | + paths := Set new. + aCollection do: [:each | | rootPath path ancestorIndex | + rootPath := each pathWithoutContextMovingRight. + ancestorIndex := rootPath findLast: [:entry | entry class == BPCallgraphEntryEnter and: [ancestor equalsClassSelectorBlockIdx: entry]]. + self assert: ancestorIndex > 0. + path := rootPath copyFrom: ancestorIndex to: rootPath size. + paths add: (path collect: #asPathPart)]. + ^ paths asOrderedCollection \ 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 index cfc0f9bc..24cf5eb3 100644 --- a/packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json @@ -4,7 +4,7 @@ "instance" : { "addRoot:" : "cmfcmf 10/27/2020 14:10", "babylonianEntries" : "cmfcmf 10/28/2020 11:01", - "commonAncestorOf:ignoringInvocationCounts:" : "cmfcmf 11/2/2020 21:13", + "commonAncestorOf:ignoringInvocationCounts:" : "cmfcmf 11/3/2020 13:44", "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", @@ -18,5 +18,6 @@ "do:between:and:" : "cmfcmf 11/2/2020 20:20", "do:entry:" : "cmfcmf 10/27/2020 14:48", "initialize" : "cmfcmf 10/27/2020 14:14", + "pathsIgnoringInvocationCountsBetween:andChildren:" : "cmfcmf 11/3/2020 13:44", "roots" : "cmfcmf 10/27/2020 14:11", "select:" : "cmfcmf 10/28/2020 10:47" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/instance/parent..st b/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/instance/parent..st new file mode 100644 index 00000000..d6799ae5 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/instance/parent..st @@ -0,0 +1,6 @@ +as yet unclassified +parent: aBPCallgraphEntry + + "sanity check: All probes and assertions should be direct children of method entries or nil" + self assert: (aBPCallgraphEntry isNil or: [aBPCallgraphEntry class == BPCallgraphEntryEnter]). + super parent: aBPCallgraphEntry \ 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 index 0afaea00..f10d9342 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/methodProperties.json @@ -5,4 +5,5 @@ "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" } } + "methodReference" : "cmfcmf 10/30/2020 14:48", + "parent:" : "cmfcmf 11/3/2020 13:02" } } 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/textColor.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/textColor.st index c071f9c9..febcf13e 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/textColor.st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/textColor.st @@ -2,4 +2,4 @@ as yet unclassified textColor - ^ Color orchid \ No newline at end of file + ^ 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 index a4ad633e..ca0e28dc 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/methodProperties.json @@ -1,10 +1,11 @@ { "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", "menu:" : "cmfcmf 10/27/2020 17:17", - "textColor" : "cmfcmf 10/23/2020 17:50" } } + "textColor" : "cmfcmf 11/3/2020 12:52" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/class/textColor.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/class/textColor.st new file mode 100644 index 00000000..f6ca9c6b --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.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/BPCallgraphEntryContextJumpHelper.class/instance/textColor.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/textColor.st index f6ca9c6b..85d661bd 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/textColor.st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/textColor.st @@ -1,4 +1,4 @@ as yet unclassified textColor - ^ Color nickel muchLighter \ No newline at end of file + ^ self class textColor \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/methodProperties.json index 5e1cef42..06bbb9df 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/methodProperties.json @@ -1,9 +1,9 @@ { "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 10/26/2020 12:09", "menu:" : "cmfcmf 10/27/2020 17:17", - "textColor" : "cmfcmf 10/23/2020 17:48" } } + "textColor" : "cmfcmf 11/3/2020 12:52" } } 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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/methodProperties.json index 17be8d18..561aecbe 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/methodProperties.json @@ -2,6 +2,7 @@ "class" : { }, "instance" : { + "asPathPart" : "cmfcmf 11/3/2020 13:44", "depthDelta:inChain:hasActiveTracing:executionContinuationEntry:" : "cmfcmf 11/2/2020 17:14", "depthDelta:inChain:hasActiveTracing:executionContinuationEntry:debug:" : "cmfcmf 11/2/2020 18:54", "doBrowse" : "cmfcmf 10/23/2020 15:42", 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/equalsClassSelector..st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/equalsClassSelector..st new file mode 100644 index 00000000..d1895c9f --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/equalsClassSelector..st @@ -0,0 +1,5 @@ +comparing +equalsClassSelector: aBPCallgraphEntryEnter + + self assert: aBPCallgraphEntryEnter class == self class. + ^ (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..57b95039 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/equalsClassSelectorBlockIdx..st @@ -0,0 +1,5 @@ +comparing +equalsClassSelectorBlockIdx: aBPCallgraphEntryEnter + + self assert: aBPCallgraphEntryEnter class == self class. + ^ (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..39775fa9 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/equalsClassSelectorBlockIdxInvocation..st @@ -0,0 +1,5 @@ +comparing +equalsClassSelectorBlockIdxInvocation: aBPCallgraphEntryEnter + + self assert: aBPCallgraphEntryEnter class == self class. + ^ (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 index 77e2917a..ca47be5a 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/getBlockIdx.st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/getBlockIdx.st @@ -1,4 +1,4 @@ -as yet unclassified +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 index b3dfd7f3..b78e9722 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/getClass.st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/getClass.st @@ -1,4 +1,4 @@ -as yet unclassified +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 index a0e025eb..4e7607d8 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/getInvocationCount.st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/getInvocationCount.st @@ -1,4 +1,4 @@ -as yet unclassified +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 index 63f733f6..37fcf6e8 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/getSelector.st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/getSelector.st @@ -1,4 +1,4 @@ -as yet unclassified +accessing getSelector ^ selector \ 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 index 9f547cad..40710310 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/methodReference.st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/methodReference.st @@ -1,4 +1,4 @@ -as yet unclassified +accessing methodReference ^ MethodReference class: class selector: selector \ 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 index b4df1fe8..a46a1d7a 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/methodProperties.json @@ -1,9 +1,13 @@ { "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", "doBrowse" : "cmfcmf 10/30/2020 14:53", + "equalsClassSelector:" : "cmfcmf 11/3/2020 11:24", + "equalsClassSelectorBlockIdx:" : "cmfcmf 11/3/2020 11:24", + "equalsClassSelectorBlockIdxInvocation:" : "cmfcmf 11/3/2020 11:25", "getBlockIdx" : "cmfcmf 10/27/2020 16:48", "getClass" : "cmfcmf 10/27/2020 16:48", "getInvocationCount" : "cmfcmf 10/27/2020 16:48", @@ -11,4 +15,5 @@ "icon" : "cmfcmf 10/23/2020 16:27", "label" : "cmfcmf 10/26/2020 12:00", "menu:" : "cmfcmf 11/2/2020 14:18", - "methodReference" : "cmfcmf 10/30/2020 14:53" } } + "methodReference" : "cmfcmf 10/30/2020 14:53", + "textColor" : "cmfcmf 11/3/2020 12:53" } } 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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/methodProperties.json index 6213b9bb..54bcb82d 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/methodProperties.json @@ -2,6 +2,7 @@ "class" : { }, "instance" : { + "asPathPart" : "cmfcmf 11/3/2020 13:44", "class:selector:blockIdx:invocationCount:returns:" : "cmfcmf 10/22/2020 13:42", "label" : "cmfcmf 10/22/2020 14:17", "menu:" : "cmfcmf 11/2/2020 13:59", 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/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..f5ddba94 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/methodProperties.json @@ -0,0 +1,9 @@ +{ + "class" : { + }, + "instance" : { + "=" : "cmfcmf 11/3/2020 12:41", + "doBrowse" : "cmfcmf 11/3/2020 12:54", + "hash" : "cmfcmf 11/3/2020 12:41", + "printOn:" : "cmfcmf 11/3/2020 12:57", + "textColor" : "cmfcmf 11/3/2020 12:52" } } 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/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..c2b2e9d6 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/instance/textColor.st @@ -0,0 +1,4 @@ +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..af6a90a2 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/methodProperties.json @@ -0,0 +1,9 @@ +{ + "class" : { + }, + "instance" : { + "=" : "cmfcmf 11/3/2020 12:41", + "doBrowse" : "cmfcmf 11/3/2020 12:55", + "hash" : "cmfcmf 11/3/2020 12:41", + "printOn:" : "cmfcmf 11/3/2020 12:56", + "textColor" : "cmfcmf 11/3/2020 12:53" } } 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/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/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..4b075f7e --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/methodProperties.json @@ -0,0 +1,15 @@ +{ + "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", + "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/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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphPathPart.class/methodProperties.json new file mode 100644 index 00000000..57a89365 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathPart.class/methodProperties.json @@ -0,0 +1,9 @@ +{ + "class" : { + }, + "instance" : { + "=" : "cmfcmf 11/3/2020 12:50", + "doBrowse" : "cmfcmf 11/3/2020 12:53", + "hash" : "cmfcmf 11/3/2020 12:50", + "icon" : "cmfcmf 11/3/2020 12:56", + "textColor" : "cmfcmf 11/3/2020 12:53" } } 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-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/buildWith..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/buildWith..st index 6767d2d0..0bd84ff2 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/buildWith..st +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/buildWith..st @@ -15,4 +15,5 @@ buildWith: aBuilder doubleClick: #doubleClick; getIndex: #getIndex; setIndex: #setIndex:; + menu: #getMenu:; yourself) \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getMenu..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getMenu..st new file mode 100644 index 00000000..46dce6a0 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getMenu..st @@ -0,0 +1,4 @@ +toolbuilder +getMenu: shiftKeyState + + ^ nil \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/keyPressed..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/keyPressed..st deleted file mode 100644 index 58ad4e34..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/keyPressed..st +++ /dev/null @@ -1,5 +0,0 @@ -as yet unclassified -keyPressed: 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 getMethods at: self getIndex) doBrowse] \ 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 index 227db5c8..c8ceeb08 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/methodProperties.json @@ -2,14 +2,14 @@ "class" : { }, "instance" : { - "buildWith:" : "cmfcmf 11/2/2020 11:54", + "buildWith:" : "cmfcmf 11/3/2020 11:27", "doubleClick" : "cmfcmf 11/2/2020 12:00", "getIndex" : "cmfcmf 10/30/2020 14:41", "getList" : "cmfcmf 11/2/2020 12:02", "getListIcon:" : "cmfcmf 11/2/2020 11:59", + "getMenu:" : "cmfcmf 11/3/2020 11:29", "getMethods" : "cmfcmf 11/2/2020 12:50", "highlightMethod:" : "cmfcmf 11/2/2020 14:13", "highlightTraceValue:" : "cmfcmf 11/2/2020 11:54", "initialize" : "cmfcmf 10/30/2020 14:41", - "keyPressed:" : "cmfcmf 11/2/2020 12:00", "setIndex:" : "cmfcmf 10/30/2020 14:41" } } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/getList.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/getList.st index 813b240a..68635889 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/getList.st +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/getList.st @@ -1,9 +1,14 @@ as yet unclassified getList - ^ self getMethods collect: [:each | (each isKindOf: BPCallgraphEntry) + | methodSetSize | + methodSetSize := super getMethods size. + + ^ self getMethods withIndexCollect: [:each :i | (each isKindOf: BPCallgraphEntry) ifTrue: [ | label | - label := (each label splitBy: String tab) first. + i > methodSetSize + ifTrue: [label := (each label splitBy: String tab) joinSeparatedBy: ' '] + ifFalse: [label := (each label splitBy: String tab) first]. each textColor ifNotNil: [:color | label := Text string: label attribute: (TextColor color: color)]. label] ifFalse: [each]] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/getMenu..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/getMenu..st new file mode 100644 index 00000000..bee47ee3 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/getMenu..st @@ -0,0 +1,19 @@ +as yet unclassified +getMenu: shiftKeyState + + | method superMenu menu allInvocations | + superMenu := super getMenu: shiftKeyState. + + method := self getMethods at: self getIndex. + method class == BPCallgraphEntryEnter ifFalse: [^ superMenu]. + allInvocations := self callgraph select: [:each | each class == BPCallgraphEntryEnter and: [each equalsClassSelectorBlockIdx: method]]. + + menu := (superMenu ifNil: [MenuMorph new]) + add: 'find common ancestor of all invocations of this method' + action: [| ancestor paths | + ancestor := self callgraph commonAncestorOf: allInvocations ignoringInvocationCounts: true. + ancestor ifNil: [^ UIManager default inform: 'No common ancestor found']. + paths := self callgraph pathsIgnoringInvocationCountsBetween: ancestor andChildren: allInvocations. + paths explore]. + + ^ menu \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/methodProperties.json index 858e65ab..5ebc669d 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/methodProperties.json @@ -2,7 +2,8 @@ "class" : { }, "instance" : { - "getList" : "cmfcmf 11/2/2020 20:00", + "getList" : "cmfcmf 11/3/2020 11:17", + "getMenu:" : "cmfcmf 11/3/2020 12:14", "getMethods" : "cmfcmf 11/2/2020 20:31", "initialize" : "cmfcmf 11/2/2020 19:57", "setIndex:" : "cmfcmf 11/2/2020 19:59" } } From 5bef663817a7807ae65f17935bf89f6152238948 Mon Sep 17 00:00:00 2001 From: Christian Flach Date: Wed, 4 Nov 2020 16:25:21 +0100 Subject: [PATCH 07/71] Simplify and improve sidebar --- .../instance/allInvocationsOf..st | 4 ++ ...monAncestorOf.ignoringInvocationCounts..st | 2 +- ...ingInvocationCountsBetween.andChildren..st | 7 ++- .../BPCallgraph.class/methodProperties.json | 5 +- .../methodProperties.json | 2 +- .../instance/asPathPart.st | 7 +++ .../methodProperties.json | 1 + .../instance/asPathPart.st | 6 +++ .../methodProperties.json | 1 + .../instance/asPathPart.st | 7 +++ .../methodProperties.json | 1 + .../instance/alternateLabel.st | 2 +- .../methodProperties.json | 2 +- .../instance/parent..st | 6 --- .../methodProperties.json | 3 +- .../class/textColor.st | 4 ++ .../instance/label.st | 2 +- .../instance/textColor.st | 2 +- .../methodProperties.json | 6 +-- .../class/textColor.st | 4 ++ .../instance/asPathPart.st | 5 ++ .../instance/textColor.st | 2 +- .../methodProperties.json | 5 +- .../instance/menu..st | 3 ++ .../methodProperties.json | 2 +- .../README.md | 0 .../instance/doBrowse.st | 4 ++ .../instance/methodReference.st | 4 ++ .../instance/textColor.st | 4 ++ .../methodProperties.json | 7 +++ .../properties.json | 14 +++++ .../README.md | 0 .../instance/printOn..st | 4 ++ .../methodProperties.json | 5 ++ .../properties.json | 14 +++++ .../README.md | 0 .../instance/^equals.st | 4 ++ .../instance/example..st | 4 ++ .../instance/example.st} | 4 +- .../instance/hash.st} | 4 +- .../instance/icon.st | 4 ++ .../instance/methodReference.st | 4 ++ .../instance/printOn..st | 4 ++ .../methodProperties.json | 11 ++++ .../properties.json | 14 +++++ .../README.md | 0 .../instance/printOn..st | 4 ++ .../methodProperties.json | 5 ++ .../properties.json | 14 +++++ .../README.md | 0 .../instance/^equals.st | 4 ++ .../instance/hash.st | 4 ++ .../instance/icon.st | 4 ++ .../instance/id..st | 4 ++ .../instance/id.st | 4 ++ .../instance/methodReference..st | 4 ++ .../instance/methodReference.st | 4 ++ .../instance/printOn.type..st | 11 ++++ .../methodProperties.json | 12 +++++ .../properties.json | 15 ++++++ .../README.md | 0 .../instance/^equals.st | 4 ++ .../instance/hash.st | 4 ++ .../methodProperties.json | 6 +++ .../properties.json | 14 +++++ .../instance/getVisualizationTypes.st | 2 - .../BPBrowserSidebar.class/instance/popout.st | 5 +- .../instance/postCopy.st | 6 +++ .../instance/visualizationMorphs.st | 54 +++++++------------ .../methodProperties.json | 7 +-- .../instance/browseMethod..st | 4 ++ .../methodProperties.json | 1 + .../instance/bottomEntries.st | 13 +++++ .../instance/buildWith..st | 19 ------- .../instance/doubleClick.st | 6 --- .../instance/getAnnotations.st | 4 -- .../instance/getList.st | 4 -- .../instance/getListIcon..st | 4 -- .../instance/highlightMethod..st | 8 ++- .../instance/highlightTraceValue..st | 8 +-- .../instance/initialize.st | 6 --- .../instance/keyPressed..st | 5 -- .../instance/setIndex..st | 5 -- .../instance/topEntries.st | 4 ++ .../instance/topMenu.for..st | 12 +++++ .../methodProperties.json | 16 ++---- .../properties.json | 4 +- .../instance/getAnnotations.st | 19 ------- .../instance/getList.st | 9 ---- .../instance/getListIcon..st | 6 --- .../instance/initialize.st | 6 --- .../instance/setIndex..st | 7 --- .../methodProperties.json | 9 ---- .../README.md | 0 .../instance/bottomCanSelect..st | 4 ++ .../instance/bottomDoubleClick.st | 4 ++ .../instance/bottomDoubleClickFor..st | 2 + .../instance/bottomEntries.st | 5 ++ .../instance/bottomEntryByIndex..st | 4 ++ .../instance/bottomIcon..st | 4 ++ .../instance/bottomIconColumnFor..st | 4 ++ .../instance/bottomIconFor..st | 4 ++ .../instance/bottomIconRow.column..st | 9 ++++ .../instance/bottomIndex..st | 6 +++ .../instance/bottomIndex.st | 4 ++ .../instance/bottomKey.pressedFor..st | 2 + .../instance/bottomKeyPress..st | 4 ++ .../instance/bottomLabelFor..st | 4 ++ .../instance/bottomLabels.st | 18 +++++++ .../instance/bottomMenu..st | 8 +++ .../instance/bottomMenu.for..st | 2 + .../instance/bottomTextAttributesFor..st | 4 ++ .../instance/buildWith..st | 40 ++++++++++++++ .../instance/highlightMethod..st | 4 ++ .../instance/highlightTraceValue..st | 2 +- .../instance/initialize.st | 9 ++++ .../instance/selectedBottomEntry.st | 4 ++ .../instance/selectedTopEntry.st | 4 ++ .../instance/sortBottomEntries..st | 5 ++ .../instance/sortTopEntries..st | 5 ++ .../instance/topCanSelect..st | 4 ++ .../instance/topDoubleClick.st | 4 ++ .../instance/topDoubleClickFor..st | 2 + .../instance/topEntries.st | 4 ++ .../instance/topEntryByIndex..st | 4 ++ .../instance/topIcon..st | 4 ++ .../instance/topIconFor..st | 4 ++ .../instance/topIndex..st | 7 +++ .../instance/topIndex.st | 4 ++ .../instance/topKey.pressedFor..st | 2 + .../instance/topKeyPress..st | 4 ++ .../instance/topLabelFor..st | 4 ++ .../instance/topLabels.st | 10 ++++ .../instance/topMenu..st | 8 +++ .../instance/topMenu.for..st | 2 + .../instance/topTextAttributesFor..st | 4 ++ .../methodProperties.json | 46 ++++++++++++++++ .../properties.json | 8 +-- .../instance/bottomDoubleClickFor..st | 4 ++ .../instance/bottomEntries.st | 25 +++++++++ .../instance/bottomIconColumnFor..st | 4 ++ .../instance/bottomIconFor..st | 4 ++ .../instance/bottomKey.pressedFor..st | 5 ++ .../instance/bottomLabelFor..st | 4 ++ .../instance/bottomMenu.for..st | 17 ++++++ .../instance/bottomTextAttributesFor..st | 4 ++ .../instance/buildWith..st | 19 ------- .../instance/doubleClick.st | 6 --- .../instance/getList.st | 4 -- .../instance/getListIcon..st | 4 -- .../instance/getMenu..st | 4 -- .../instance/getMethods.st | 12 ----- .../instance/highlightMethod..st | 7 +-- .../instance/initialize.st | 6 --- .../instance/setIndex..st | 5 -- .../instance/topDoubleClickFor..st | 5 ++ .../instance/topEntries.st | 5 ++ .../instance/topKey.pressedFor..st | 5 ++ .../instance/topLabelFor..st | 4 ++ .../instance/topMenu.for..st | 12 +++++ .../instance/topTextAttributesFor..st | 4 ++ .../methodProperties.json | 26 +++++---- .../properties.json | 5 +- .../instance/getList.st | 14 ----- .../instance/getMenu..st | 19 ------- .../instance/getMethods.st | 30 ----------- .../instance/initialize.st | 6 --- .../instance/setIndex..st | 8 --- .../methodProperties.json | 9 ---- .../properties.json | 14 ----- .../findCommonAncestorOfAllInvocations.st | 11 ++++ .../methodProperties.json | 1 + 172 files changed, 792 insertions(+), 380 deletions(-) create mode 100644 packages/Babylonian-Core.package/BPCallgraph.class/instance/allInvocationsOf..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPAssertion.class/instance/asPathPart.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/instance/asPathPart.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/instance/asPathPart.st delete mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/instance/parent..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/class/textColor.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/class/textColor.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/asPathPart.st rename packages/{Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class => Babylonian-Core.package/BPCallgraphPathBabylonian.class}/README.md (100%) create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonian.class/instance/doBrowse.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonian.class/instance/methodReference.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonian.class/instance/textColor.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonian.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonian.class/properties.json rename packages/{Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class => Babylonian-Core.package/BPCallgraphPathBabylonianAssertion.class}/README.md (100%) create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonianAssertion.class/instance/printOn..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonianAssertion.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonianAssertion.class/properties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/README.md create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/^equals.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/example..st rename packages/{Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getIndex.st => Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/example.st} (50%) rename packages/{Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getIndex.st => Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/hash.st} (50%) create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/icon.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/methodReference.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/printOn..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/properties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonianProbe.class/README.md create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonianProbe.class/instance/printOn..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonianProbe.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonianProbe.class/properties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/README.md create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/^equals.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/hash.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/icon.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/id..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/id.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/methodReference..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/methodReference.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/printOn.type..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/properties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathCustomEvent.class/README.md create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathCustomEvent.class/instance/^equals.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathCustomEvent.class/instance/hash.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathCustomEvent.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathCustomEvent.class/properties.json create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/postCopy.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/browseMethod..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/bottomEntries.st delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/buildWith..st delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/doubleClick.st delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getAnnotations.st delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getList.st delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getListIcon..st delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/initialize.st delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/keyPressed..st delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/setIndex..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/topEntries.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/topMenu.for..st delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/getAnnotations.st delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/getList.st delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/getListIcon..st delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/initialize.st delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/setIndex..st delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/methodProperties.json create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/README.md create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomCanSelect..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomDoubleClick.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomDoubleClickFor..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomEntries.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomEntryByIndex..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomIcon..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomIconColumnFor..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomIconFor..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomIconRow.column..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomIndex..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomIndex.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomKey.pressedFor..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomKeyPress..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomLabelFor..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomLabels.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomMenu..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomMenu.for..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomTextAttributesFor..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/buildWith..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/highlightMethod..st rename packages/Babylonian-UI.package/{BPBrowserSidebarVisualizationExecutedMethods.class => BPBrowserSidebarVisualizationEntriesWithDetails.class}/instance/highlightTraceValue..st (65%) create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/initialize.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/selectedBottomEntry.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/selectedTopEntry.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/sortBottomEntries..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/sortTopEntries..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topCanSelect..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topDoubleClick.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topDoubleClickFor..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topEntries.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topEntryByIndex..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topIcon..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topIconFor..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topIndex..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topIndex.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topKey.pressedFor..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topKeyPress..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topLabelFor..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topLabels.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topMenu..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topMenu.for..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topTextAttributesFor..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/methodProperties.json rename packages/Babylonian-UI.package/{BPBrowserSidebarVisualizationAnnotationsWithPaths.class => BPBrowserSidebarVisualizationEntriesWithDetails.class}/properties.json (53%) create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomDoubleClickFor..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomEntries.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomIconColumnFor..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomIconFor..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomKey.pressedFor..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomLabelFor..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomMenu.for..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomTextAttributesFor..st delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/buildWith..st delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/doubleClick.st delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getList.st delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getListIcon..st delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getMenu..st delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getMethods.st delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/initialize.st delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/setIndex..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/topDoubleClickFor..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/topEntries.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/topKey.pressedFor..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/topLabelFor..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/topMenu.for..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/topTextAttributesFor..st delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/getList.st delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/getMenu..st delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/getMethods.st delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/initialize.st delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/setIndex..st delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/methodProperties.json delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/properties.json create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/findCommonAncestorOfAllInvocations.st 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/commonAncestorOf.ignoringInvocationCounts..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st index b3c8cf00..08169091 100644 --- a/packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st @@ -20,5 +20,5 @@ commonAncestorOf: aCollection ignoringInvocationCounts: aBoolean found := true]]]. found ifFalse: [^ nil]]. - theAncestor := possibleAncestors last. + theAncestor := possibleAncestors reversed detect: [:each | each class == BPCallgraphEntryEnter]. ^ aBoolean ifTrue: [theAncestor asPathPart] ifFalse: [theAncestor] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/pathsIgnoringInvocationCountsBetween.andChildren..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/pathsIgnoringInvocationCountsBetween.andChildren..st index aceb57e1..62875c46 100644 --- a/packages/Babylonian-Core.package/BPCallgraph.class/instance/pathsIgnoringInvocationCountsBetween.andChildren..st +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/pathsIgnoringInvocationCountsBetween.andChildren..st @@ -2,11 +2,10 @@ finding ancestors pathsIgnoringInvocationCountsBetween: ancestor andChildren: aCollection | paths | - paths := Set new. - aCollection do: [:each | | rootPath path ancestorIndex | + paths := (aCollection collect: [:each | | rootPath path ancestorIndex | rootPath := each pathWithoutContextMovingRight. ancestorIndex := rootPath findLast: [:entry | entry class == BPCallgraphEntryEnter and: [ancestor equalsClassSelectorBlockIdx: entry]]. self assert: ancestorIndex > 0. path := rootPath copyFrom: ancestorIndex to: rootPath size. - paths add: (path collect: #asPathPart)]. - ^ paths asOrderedCollection \ No newline at end of file + path collect: #asPathPart]) withoutDuplicates. + ^ paths keys \ 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 index 24cf5eb3..90dc9b53 100644 --- a/packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json @@ -3,8 +3,9 @@ }, "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 11/3/2020 13:44", + "commonAncestorOf:ignoringInvocationCounts:" : "cmfcmf 11/3/2020 14:48", "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", @@ -18,6 +19,6 @@ "do:between:and:" : "cmfcmf 11/2/2020 20:20", "do:entry:" : "cmfcmf 10/27/2020 14:48", "initialize" : "cmfcmf 10/27/2020 14:14", - "pathsIgnoringInvocationCountsBetween:andChildren:" : "cmfcmf 11/3/2020 13:44", + "pathsIgnoringInvocationCountsBetween:andChildren:" : "cmfcmf 11/4/2020 15:52", "roots" : "cmfcmf 10/27/2020 14:11", "select:" : "cmfcmf 10/28/2020 10:47" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntry.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntry.class/methodProperties.json index 60442de0..8120e159 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntry.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/methodProperties.json @@ -14,7 +14,7 @@ "parent" : "cmfcmf 10/27/2020 14:10", "parent:" : "cmfcmf 10/27/2020 14:01", "path" : "cmfcmf 10/27/2020 16:31", - "pathWithoutContextMovingRight" : "cmfcmf 11/2/2020 19:39", + "pathWithoutContextMovingRight" : "cmfcmf 11/3/2020 13:50", "printOn:" : "cmfcmf 11/2/2020 17:33", "root" : "cmfcmf 10/27/2020 16:20", "textColor" : "cmfcmf 10/23/2020 16:14" } } 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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryBPAssertion.class/methodProperties.json index 72066613..37624598 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryBPAssertion.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPAssertion.class/methodProperties.json @@ -2,5 +2,6 @@ "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/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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/methodProperties.json index ff3f855e..85da0815 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPExample.class/methodProperties.json @@ -3,6 +3,7 @@ }, "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", 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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/methodProperties.json index 72066613..37624598 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/methodProperties.json @@ -2,5 +2,6 @@ "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/BPCallgraphEntryBPProbeOrAssertion.class/instance/alternateLabel.st b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/alternateLabel.st index 13f52366..049791bc 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/alternateLabel.st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/alternateLabel.st @@ -4,7 +4,7 @@ alternateLabel | parts method | parts := self label splitBy: String tab. - method := self traceValue methodReference actualClass asString, + method := self traceValue methodReference classSymbol, ' >> #', self traceValue methodReference methodSymbol. diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/methodProperties.json index 94df689d..d7b6f218 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/methodProperties.json @@ -2,7 +2,7 @@ "class" : { }, "instance" : { - "alternateLabel" : "cmfcmf 10/28/2020 12:32", + "alternateLabel" : "cmfcmf 11/4/2020 14:39", "doBrowse" : "cmfcmf 10/28/2020 13:05", "iconForId" : "cmfcmf 10/28/2020 12:33", "id" : "cmfcmf 10/28/2020 12:33", diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/instance/parent..st b/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/instance/parent..st deleted file mode 100644 index d6799ae5..00000000 --- a/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/instance/parent..st +++ /dev/null @@ -1,6 +0,0 @@ -as yet unclassified -parent: aBPCallgraphEntry - - "sanity check: All probes and assertions should be direct children of method entries or nil" - self assert: (aBPCallgraphEntry isNil or: [aBPCallgraphEntry class == BPCallgraphEntryEnter]). - super parent: aBPCallgraphEntry \ 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 index f10d9342..0afaea00 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBabylonian.class/methodProperties.json @@ -5,5 +5,4 @@ "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", - "parent:" : "cmfcmf 11/3/2020 13:02" } } + "methodReference" : "cmfcmf 10/30/2020 14:48" } } 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/label.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/label.st index f0e23286..4cb7a888 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/label.st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/label.st @@ -1,4 +1,4 @@ as yet unclassified label - ^ 'Context sender changed', String tab, depthDelta, String tab, inChain, ': ', tmpdebug \ No newline at end of file + ^ 'Context sender changed' \ 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 index f55ef225..85d661bd 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/textColor.st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/textColor.st @@ -1,4 +1,4 @@ as yet unclassified textColor - ^ Color orchid \ No newline at end of file + ^ 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 index 561aecbe..a2377f80 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/methodProperties.json @@ -1,12 +1,12 @@ { "class" : { - }, + "textColor" : "cmfcmf 11/4/2020 13:17" }, "instance" : { "asPathPart" : "cmfcmf 11/3/2020 13:44", "depthDelta:inChain:hasActiveTracing:executionContinuationEntry:" : "cmfcmf 11/2/2020 17:14", "depthDelta:inChain:hasActiveTracing:executionContinuationEntry:debug:" : "cmfcmf 11/2/2020 18:54", "doBrowse" : "cmfcmf 10/23/2020 15:42", "executionContinuationEntry" : "cmfcmf 11/2/2020 17:13", - "label" : "cmfcmf 11/2/2020 18:54", + "label" : "cmfcmf 11/3/2020 17:43", "menu:" : "cmfcmf 10/27/2020 17:16", - "textColor" : "cmfcmf 10/23/2020 17:50" } } + "textColor" : "cmfcmf 11/4/2020 13:18" } } 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/textColor.st b/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/textColor.st index 485af50a..febcf13e 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/textColor.st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/instance/textColor.st @@ -2,4 +2,4 @@ as yet unclassified textColor - ^ Color tangerine \ No newline at end of file + ^ self class textColor \ 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 index 45800bf3..b251e65f 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryCustomEvent.class/methodProperties.json @@ -1,11 +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 10/23/2020 17:50", + "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/BPCallgraphEntryEnter.class/instance/menu..st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/menu..st index b897b37b..bd0f39f9 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/menu..st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/menu..st @@ -17,4 +17,7 @@ menu: aMenuMorph 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 \ 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 index a46a1d7a..2c0bf836 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/methodProperties.json @@ -14,6 +14,6 @@ "getSelector" : "cmfcmf 10/27/2020 16:48", "icon" : "cmfcmf 10/23/2020 16:27", "label" : "cmfcmf 10/26/2020 12:00", - "menu:" : "cmfcmf 11/2/2020 14:18", + "menu:" : "cmfcmf 11/3/2020 13:55", "methodReference" : "cmfcmf 10/30/2020 14:53", "textColor" : "cmfcmf 11/3/2020 12:53" } } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/README.md b/packages/Babylonian-Core.package/BPCallgraphPathBabylonian.class/README.md similarity index 100% rename from packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/README.md rename to packages/Babylonian-Core.package/BPCallgraphPathBabylonian.class/README.md 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..36d2a312 --- /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" : "BPCallgraphPathPart", + "type" : "normal" } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/README.md b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianAssertion.class/README.md similarity index 100% rename from packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/README.md rename to packages/Babylonian-Core.package/BPCallgraphPathBabylonianAssertion.class/README.md 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..9bd48cd6 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianAssertion.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "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..9254e5c1 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/^equals.st @@ -0,0 +1,4 @@ +as yet unclassified += 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/example..st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/example..st new file mode 100644 index 00000000..38c5d631 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/example..st @@ -0,0 +1,4 @@ +as yet unclassified +example: aBPExample + + example := aBPExample \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getIndex.st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/example.st similarity index 50% rename from packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getIndex.st rename to packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/example.st index fc86776a..2e625d5f 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getIndex.st +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/example.st @@ -1,4 +1,4 @@ as yet unclassified -getIndex +example - ^ listIndex \ No newline at end of file + ^ example \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getIndex.st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/hash.st similarity index 50% rename from packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getIndex.st rename to packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/hash.st index fc86776a..f093052b 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getIndex.st +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/hash.st @@ -1,4 +1,4 @@ as yet unclassified -getIndex +hash - ^ listIndex \ No newline at end of file + ^ 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..8b9a8b1e --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/icon.st @@ -0,0 +1,4 @@ +as yet unclassified +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..fce5f4b4 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.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/BPCallgraphPathBabylonianExample.class/instance/printOn..st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/printOn..st new file mode 100644 index 00000000..a5ace3ad --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/printOn..st @@ -0,0 +1,4 @@ +as yet unclassified +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..287eada9 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/methodProperties.json @@ -0,0 +1,11 @@ +{ + "class" : { + }, + "instance" : { + "=" : "cmfcmf 11/4/2020 14:08", + "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/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..9bd48cd6 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianProbe.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "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..a555acfb --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/^equals.st @@ -0,0 +1,4 @@ +as yet unclassified += 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/hash.st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/hash.st new file mode 100644 index 00000000..372d1125 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/hash.st @@ -0,0 +1,4 @@ +as yet unclassified +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..1e5bf7fd --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/icon.st @@ -0,0 +1,4 @@ +as yet unclassified +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..b2561372 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/id..st @@ -0,0 +1,4 @@ +as yet unclassified +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..f1bc2330 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/id.st @@ -0,0 +1,4 @@ +as yet unclassified +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..57217edb --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/methodReference..st @@ -0,0 +1,4 @@ +as yet unclassified +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..cc018046 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/methodReference.st @@ -0,0 +1,4 @@ +as yet unclassified +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..42951620 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/printOn.type..st @@ -0,0 +1,11 @@ +as yet unclassified +printOn: aStream type: aString + + aStream + nextPutAll: aString; + nextPutAll: ' '; + nextPutAll: id asString; + nextPutAll: ' in '; + nextPutAll: methodReference classSymbol; + nextPutAll: ' #'; + nextPutAll: methodReference selector \ 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..53babaa2 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/methodProperties.json @@ -0,0 +1,12 @@ +{ + "class" : { + }, + "instance" : { + "=" : "cmfcmf 11/4/2020 14:21", + "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 11/4/2020 14:39" } } 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..4918abaa --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/properties.json @@ -0,0 +1,15 @@ +{ + "category" : "Babylonian-Core-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "id", + "methodReference" ], + "name" : "BPCallgraphPathBabylonianTraceBased", + "pools" : [ + ], + "super" : "BPCallgraphPathBabylonian", + "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-UI.package/BPBrowserSidebar.class/instance/getVisualizationTypes.st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getVisualizationTypes.st index 2e002165..1e994f8f 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getVisualizationTypes.st +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getVisualizationTypes.st @@ -4,7 +4,5 @@ getVisualizationTypes ^ { 'callgraph' -> #callgraph. 'annotations' -> #annotations. - 'annotations with paths' -> #annotationsWithPaths. 'method set' -> #methodSet. - 'method set with paths' -> #methodSetWithPaths } \ 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 index 84581b1b..dfddab37 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/popout.st +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/popout.st @@ -5,7 +5,10 @@ popout builder := ToolBuilder default. instance := self copy. instance when: #browseMethod evaluate: [:methodReference | methodReference browse]. - instance breakDependents. + + 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'. 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..e305f2dd --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/postCopy.st @@ -0,0 +1,6 @@ +as yet unclassified +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/visualizationMorphs.st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/visualizationMorphs.st index 4730e20a..b53ae63c 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/visualizationMorphs.st +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/visualizationMorphs.st @@ -1,40 +1,26 @@ visualization visualizationMorphs - | morphs | + | content | - visualization := nil. - self selectedExample - ifNil: [morphs := {'No example selected'}] - ifNotNil: [ - morphs := self selectedVisualizationType caseOf: { - [#none] -> [{'No visualization selected'}]. - [#callgraph] -> [{(visualization := BPBrowserSidebarVisualizationCallgraph new) - example: self selectedExample; - when: #browseMethod evaluate: [:ref | self triggerEvent: #browseMethod with: ref]; - buildWith: ToolBuilder default}]. - [#annotations] -> [{(visualization := BPBrowserSidebarVisualizationAnnotations new) - example: self selectedExample; - when: #browseMethod evaluate: [:ref | self triggerEvent: #browseMethod with: ref]; - buildWith: ToolBuilder default}]. - [#annotationsWithPaths] -> [{(visualization := BPBrowserSidebarVisualizationAnnotationsWithPaths new) - example: self selectedExample; - when: #browseMethod evaluate: [:ref | self triggerEvent: #browseMethod with: ref]; - buildWith: ToolBuilder default}]. - [#methodSet] -> [{(visualization := BPBrowserSidebarVisualizationExecutedMethods new) - example: self selectedExample; - when: #browseMethod evaluate: [:ref | self triggerEvent: #browseMethod with: ref]; - buildWith: ToolBuilder default}]. - [#methodSetWithPaths] -> [{(visualization := BPBrowserSidebarVisualizationExecutedMethodsWithPaths new) - example: self selectedExample; - when: #browseMethod evaluate: [:ref | self triggerEvent: #browseMethod with: ref]; - buildWith: ToolBuilder default}]. - } otherwise: [{'Visualization is not yet supported.'}]]. + content := true caseOf: { + [self selectedExample isNil] -> [ visualization := nil. 'No example selected']. + [self selectedVisualizationType == #none] -> [visualization := nil. 'No visualization selected']. + [true] -> [ | class | + class := self selectedVisualizationType caseOf: { + [#callgraph] -> [BPBrowserSidebarVisualizationCallgraph]. + [#annotations] -> [BPBrowserSidebarVisualizationAnnotations]. + [#methodSet] -> [BPBrowserSidebarVisualizationExecutedMethods]. + }. + (visualization := class new) + example: self selectedExample; + when: #browseMethod evaluate: [:ref | self triggerEvent: #browseMethod with: ref]; + buildWith: ToolBuilder default]}. - ^ morphs - collect: [:each | each isString - ifFalse: [each] - ifTrue: [TextMorph new - contents: each; + ^ {content isString + ifTrue: [ + TextMorph new + contents: content; layoutFrame: (LayoutFrame fractions: (0@0 corner: 1@1)); - yourself]] \ No newline at end of file + 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 index ba8ddd6b..04c9caf9 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json @@ -13,13 +13,14 @@ "getExampleListLabels" : "cmfcmf 10/30/2020 15:39", "getVisualizationTypeIndex" : "cmfcmf 10/30/2020 14:02", "getVisualizationTypeLabels" : "cmfcmf 10/30/2020 14:09", - "getVisualizationTypes" : "cmfcmf 11/2/2020 20:34", + "getVisualizationTypes" : "cmfcmf 11/4/2020 15:02", "initialize" : "cmfcmf 10/30/2020 14:03", - "popout" : "cmfcmf 11/2/2020 11:49", + "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", "setExampleListIndex:" : "cmfcmf 10/30/2020 16:08", "setVisualizationTypeIndex:" : "cmfcmf 10/30/2020 14:10", "showExample:traceValue:" : "cmfcmf 10/30/2020 16:05", "showMethod:" : "cmfcmf 11/2/2020 14:34", - "visualizationMorphs" : "cmfcmf 11/2/2020 20:34" } } + "visualizationMorphs" : "cmfcmf 11/4/2020 15:30" } } 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/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/methodProperties.json index e103ceb3..374aaa91 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/methodProperties.json @@ -2,6 +2,7 @@ "class" : { }, "instance" : { + "browseMethod:" : "cmfcmf 11/4/2020 12:45", "buildWith:" : "cmfcmf 10/30/2020 14:30", "callgraph" : "cmfcmf 10/30/2020 14:39", "example" : "cmfcmf 10/30/2020 14:29", 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..36fe1c38 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/bottomEntries.st @@ -0,0 +1,13 @@ +list bottom +bottomEntries + + ^ self selectedTopEntry ifNil: [{}] ifNotNil: [:topEntry | + (topEntry isKindOf: BPCallgraphPathBabylonianTraceBased) ifFalse: [^ {}]. + cache at: topEntry ifAbsentPut: [| entries list | + list := OrderedCollection new. + entries := self callgraph select: [:each | (each isKindOf: BPCallgraphEntryBPProbeOrAssertion) and: [each id == topEntry id]]. + entries withIndexDo: [:entry :i | | attributes | + attributes := OrderedCollection with: TextEmphasis bold. + list addLast: (Text string: 'Hit ', i attributes: attributes). + list addAll: entry pathWithoutContextMovingRight]. + list]] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/buildWith..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/buildWith..st deleted file mode 100644 index 6ec916cd..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/buildWith..st +++ /dev/null @@ -1,19 +0,0 @@ -toolbuilder -buildWith: aBuilder - - | model | - model := BPCallgraphModel new. - model callgraph: self callgraph. - ^ aBuilder build: (aBuilder pluggableListSpec new - frame: (0@0 corner: 1@1); - autoDeselect: false; - clearFilterAutomatically: false; - filterableList: true; - model: self; - list: #getList; - icon: #getListIcon:; - doubleClick: #doubleClick; - getIndex: #getIndex; - setIndex: #setIndex:; - "keyPress: #annotationKeyPressed:;" - yourself) \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/doubleClick.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/doubleClick.st deleted file mode 100644 index 633f4a0b..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/doubleClick.st +++ /dev/null @@ -1,6 +0,0 @@ -as yet unclassified -doubleClick - - | entry | - entry := self getAnnotations at: self getIndex. - self triggerEvent: #browseMethod with: entry methodReference \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getAnnotations.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getAnnotations.st deleted file mode 100644 index 6379f23a..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getAnnotations.st +++ /dev/null @@ -1,4 +0,0 @@ -as yet unclassified -getAnnotations - - ^ self callgraph babylonianEntries \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getList.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getList.st deleted file mode 100644 index 1c931240..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getList.st +++ /dev/null @@ -1,4 +0,0 @@ -as yet unclassified -getList - - ^ self getAnnotations collect: [:each | each alternateLabel] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getListIcon..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getListIcon..st deleted file mode 100644 index 699d604c..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/getListIcon..st +++ /dev/null @@ -1,4 +0,0 @@ -as yet unclassified -getListIcon: aNumber - - ^ (self getAnnotations at: aNumber) iconForId \ 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 index 7ef6759d..eb5cb50b 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/highlightMethod..st +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/highlightMethod..st @@ -1,3 +1,7 @@ -as yet unclassified +actions highlightMethod: aMethodReference - \ No newline at end of file + + 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..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/highlightTraceValue..st index 4107cbb2..d67fdd2b 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/highlightTraceValue..st +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/highlightTraceValue..st @@ -1,6 +1,6 @@ -as yet unclassified +actions highlightTraceValue: aBPTraceValue - self getAnnotations withIndexDo: [:each :i | - ((each respondsTo: #traceValue) and: [each traceValue == aBPTraceValue]) ifTrue: [^ self setIndex: i]]. - self setIndex: 0 \ No newline at end of file + 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/initialize.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/initialize.st deleted file mode 100644 index 285acbfa..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/initialize.st +++ /dev/null @@ -1,6 +0,0 @@ -initialize-release -initialize - - super initialize. - - listIndex := 0 \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/keyPressed..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/keyPressed..st deleted file mode 100644 index a7e0ba6f..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/keyPressed..st +++ /dev/null @@ -1,5 +0,0 @@ -as yet unclassified -keyPressed: 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 getIndex) doBrowse] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/setIndex..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/setIndex..st deleted file mode 100644 index 7dc6948b..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/setIndex..st +++ /dev/null @@ -1,5 +0,0 @@ -as yet unclassified -setIndex: aNumber - - listIndex := aNumber. - self changed: #getIndex \ 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..9fd3ae27 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/topMenu.for..st @@ -0,0 +1,12 @@ +list top +topMenu: menu for: entry + + menu + add: 'browse' action: [self browseMethod: entry methodReference]; + 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 index 1cb71da5..c86aa7d2 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/methodProperties.json @@ -2,14 +2,8 @@ "class" : { }, "instance" : { - "buildWith:" : "cmfcmf 10/30/2020 14:44", - "doubleClick" : "cmfcmf 10/30/2020 14:48", - "getAnnotations" : "cmfcmf 10/30/2020 14:42", - "getIndex" : "cmfcmf 10/30/2020 14:41", - "getList" : "cmfcmf 10/30/2020 14:42", - "getListIcon:" : "cmfcmf 10/30/2020 14:44", - "highlightMethod:" : "cmfcmf 11/2/2020 14:09", - "highlightTraceValue:" : "cmfcmf 10/30/2020 16:14", - "initialize" : "cmfcmf 10/30/2020 14:41", - "keyPressed:" : "cmfcmf 10/30/2020 14:45", - "setIndex:" : "cmfcmf 10/30/2020 14:41" } } + "bottomEntries" : "cmfcmf 11/4/2020 15:04", + "highlightMethod:" : "cmfcmf 11/4/2020 15:46", + "highlightTraceValue:" : "cmfcmf 11/4/2020 14:45", + "topEntries" : "cmfcmf 11/4/2020 16:11", + "topMenu:for:" : "cmfcmf 11/4/2020 14:41" } } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/properties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/properties.json index 4cc1f6c6..c044106a 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/properties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/properties.json @@ -6,9 +6,9 @@ ], "commentStamp" : "", "instvars" : [ - "listIndex" ], + ], "name" : "BPBrowserSidebarVisualizationAnnotations", "pools" : [ ], - "super" : "BPBrowserSidebarVisualization", + "super" : "BPBrowserSidebarVisualizationExecutedMethods", "type" : "normal" } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/getAnnotations.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/getAnnotations.st deleted file mode 100644 index 42c5ee5e..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/getAnnotations.st +++ /dev/null @@ -1,19 +0,0 @@ -as yet unclassified -getAnnotations - - | list | - list := super getAnnotations copy. - - annotationIndex > 0 ifTrue: [| selectedEntry entries | - list addLast: '################################################################################'. - selectedEntry := super getAnnotations at: annotationIndex. - entries := self callgraph select: [:each | (each isKindOf: BPCallgraphEntryBPProbeOrAssertion) - and: [each id == selectedEntry id]]. - entries withIndexDo: [:entry :i | | attributes | - attributes := OrderedCollection with: TextEmphasis bold. - entry traceValue == selectedEntry traceValue - ifTrue: [attributes addLast: (TextColor color: Color red)]. - list addLast: (Text string: 'Hit ', i attributes: attributes). - list addAll: entry pathWithoutContextMovingRight]]. - - ^ list \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/getList.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/getList.st deleted file mode 100644 index 5af8a78c..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/getList.st +++ /dev/null @@ -1,9 +0,0 @@ -as yet unclassified -getList - - ^ self getAnnotations collect: [:each | (each isKindOf: BPCallgraphEntry) - ifTrue: [ | label | - label := (((each respondsTo: #alternateLabel) ifTrue: [each alternateLabel] ifFalse: [each label]) splitBy: String tab) first. - each textColor ifNotNil: [:color | label := Text string: label attribute: (TextColor color: color)]. - label] - ifFalse: [each]] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/getListIcon..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/getListIcon..st deleted file mode 100644 index 9d133359..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/getListIcon..st +++ /dev/null @@ -1,6 +0,0 @@ -as yet unclassified -getListIcon: aNumber - - | entry | - entry := self getAnnotations at: aNumber. - ^ (entry isKindOf: BPCallgraphEntryBPProbeOrAssertion) ifTrue: [entry iconForId] ifFalse: [ToolIcons blank] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/initialize.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/initialize.st deleted file mode 100644 index 470039ba..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/initialize.st +++ /dev/null @@ -1,6 +0,0 @@ -as yet unclassified -initialize - - super initialize. - - annotationIndex := 0 \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/setIndex..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/setIndex..st deleted file mode 100644 index 49223b3c..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/instance/setIndex..st +++ /dev/null @@ -1,7 +0,0 @@ -as yet unclassified -setIndex: aNumber - - super setIndex: aNumber. - (aNumber <= super getAnnotations size and: [aNumber > 1]) ifTrue: [ - annotationIndex := aNumber. - self changed: #getList]. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/methodProperties.json deleted file mode 100644 index 460a7225..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/methodProperties.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "class" : { - }, - "instance" : { - "getAnnotations" : "cmfcmf 11/2/2020 20:49", - "getList" : "cmfcmf 11/2/2020 20:44", - "getListIcon:" : "cmfcmf 11/2/2020 20:40", - "initialize" : "cmfcmf 11/2/2020 20:37", - "setIndex:" : "cmfcmf 11/2/2020 20:45" } } 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/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..64b9ac3f --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomLabels.st @@ -0,0 +1,18 @@ +priv toolbuilder (do not overwrite) +bottomLabels + + | columns | + columns := OrderedCollection new. + + self bottomEntries withIndexDo: [:each :rowIdx | + | label attributes | + label := self bottomLabelFor: each. + label isString ifTrue: [ + attributes := self bottomTextAttributesFor: each. + attributes ifNotEmpty: [label := Text string: label attributes: attributes]]. + columns do: [:column | column addLast: '']. + (label asStringOrText 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/buildWith..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/buildWith..st new file mode 100644 index 00000000..68f4c0c6 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/buildWith..st @@ -0,0 +1,40 @@ +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 pluggableMultiColumnListSpec 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:; + yourself)}; + yourself) \ 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/BPBrowserSidebarVisualizationExecutedMethods.class/instance/highlightTraceValue..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/highlightTraceValue..st similarity index 65% rename from packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/highlightTraceValue..st rename to packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/highlightTraceValue..st index 045090ba..7d7106c6 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/highlightTraceValue..st +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/highlightTraceValue..st @@ -1,4 +1,4 @@ -as yet unclassified +actions highlightTraceValue: aBPTraceValue \ 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/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/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..622c56fc --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topIndex..st @@ -0,0 +1,7 @@ +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] \ 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..657f062b --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topLabels.st @@ -0,0 +1,10 @@ +priv toolbuilder (do not overwrite) +topLabels + + ^ self topEntries collect: [:each | + | label attributes | + label := (self topLabelFor: each) asStringOrText. + label isString ifTrue: [ + attributes := self topTextAttributesFor: each. + 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/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/methodProperties.json new file mode 100644 index 00000000..412b6b4e --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/methodProperties.json @@ -0,0 +1,46 @@ +{ + "class" : { + }, + "instance" : { + "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/4/2020 14:05", + "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/4/2020 16:06", + "bottomMenu:" : "cmfcmf 11/4/2020 12:43", + "bottomMenu:for:" : "cmfcmf 11/4/2020 12:42", + "bottomTextAttributesFor:" : "cmfcmf 11/4/2020 12:38", + "buildWith:" : "cmfcmf 11/4/2020 16:18", + "highlightMethod:" : "cmfcmf 11/4/2020 12:49", + "highlightTraceValue:" : "cmfcmf 11/4/2020 12:49", + "initialize" : "cmfcmf 11/4/2020 12:48", + "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", + "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 11/4/2020 15:00", + "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/4/2020 13:15", + "topMenu:" : "cmfcmf 11/4/2020 12:43", + "topMenu:for:" : "cmfcmf 11/4/2020 12:42", + "topTextAttributesFor:" : "cmfcmf 11/4/2020 12:38" } } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/properties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/properties.json similarity index 53% rename from packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/properties.json rename to packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/properties.json index ce2b6d07..b1c29440 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotationsWithPaths.class/properties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/properties.json @@ -6,9 +6,11 @@ ], "commentStamp" : "", "instvars" : [ - "annotationIndex" ], - "name" : "BPBrowserSidebarVisualizationAnnotationsWithPaths", + "topIndex", + "bottomIndex", + "cache" ], + "name" : "BPBrowserSidebarVisualizationEntriesWithDetails", "pools" : [ ], - "super" : "BPBrowserSidebarVisualizationAnnotations", + "super" : "BPBrowserSidebarVisualization", "type" : "normal" } 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..dc938663 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomEntries.st @@ -0,0 +1,25 @@ +list bottom +bottomEntries + + ^ self selectedTopEntry ifNil: [{}] ifNotNil: [:topEntry | + cache at: topEntry ifAbsentPut: [| entries paths list | + list := OrderedCollection new. + entries := self callgraph select: [:each | each class == BPCallgraphEntryEnter and: [topEntry equalsClassSelectorBlockIdx: each]]. + + paths := (entries collect: [:each | each pathWithoutContextMovingRight collect: #asPathPart]) asSet asOrderedCollection. + paths withIndexDo: [:path :i | + list addLast: (Text string: 'Unique Invocation Path ', i attributes: {TextEmphasis bold . TextColor color: Color orange}). + list addAll: path]. + + entries withIndexDo: [:entry :i | | path | + list addLast: (Text string: 'Invocation ', i attribute: TextEmphasis bold). + path := entry pathWithoutContextMovingRight. + list addAll: path + "path overlappingPairsDo: [:a :b | + list add: a. + self callgraph do: [:each | (each isKindOf: BPCallgraphEntryCustomEvent) ifTrue: [list add: each]] between: a and: b]. + list add: path last." + "path do: [:each | + list add: each. + list addAll: (each children select: [:child | child isKindOf: BPCallgraphEntryCustomEvent])]."]. + list]] \ 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..19415445 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomLabelFor..st @@ -0,0 +1,4 @@ +list bottom +bottomLabelFor: entry + + ^ (entry isKindOf: BPCallgraphEntry) ifTrue: [entry label] ifFalse: [entry] \ 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..b82690b5 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomMenu.for..st @@ -0,0 +1,17 @@ +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 pathsIgnoringInvocationCountsBetween: ancestor andChildren: allInvocations. + paths explore]]. + + (entry respondsTo: #methodReference) ifTrue: [ + aMenuMorph + add: 'browse' + action: [self browseMethod: entry methodReference]] \ 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/buildWith..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/buildWith..st deleted file mode 100644 index 0bd84ff2..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/buildWith..st +++ /dev/null @@ -1,19 +0,0 @@ -toolbuilder -buildWith: aBuilder - - | model | - model := BPCallgraphModel new. - model callgraph: self callgraph. - ^ aBuilder build: (aBuilder pluggableListSpec new - frame: (0@0 corner: 1@1); - autoDeselect: false; - clearFilterAutomatically: false; - filterableList: true; - model: self; - list: #getList; - icon: #getListIcon:; - doubleClick: #doubleClick; - getIndex: #getIndex; - setIndex: #setIndex:; - menu: #getMenu:; - yourself) \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/doubleClick.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/doubleClick.st deleted file mode 100644 index 364f9027..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/doubleClick.st +++ /dev/null @@ -1,6 +0,0 @@ -as yet unclassified -doubleClick - - | entry | - entry := self getMethods at: self getIndex. - self triggerEvent: #browseMethod with: entry methodReference \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getList.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getList.st deleted file mode 100644 index bde0f825..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getList.st +++ /dev/null @@ -1,4 +0,0 @@ -as yet unclassified -getList - - ^ self getMethods collect: [:each | (each label splitBy: String tab) first] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getListIcon..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getListIcon..st deleted file mode 100644 index 3e532325..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getListIcon..st +++ /dev/null @@ -1,4 +0,0 @@ -as yet unclassified -getListIcon: aNumber - - ^ ToolIcons blank \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getMenu..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getMenu..st deleted file mode 100644 index 46dce6a0..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getMenu..st +++ /dev/null @@ -1,4 +0,0 @@ -toolbuilder -getMenu: shiftKeyState - - ^ nil \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getMethods.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getMethods.st deleted file mode 100644 index 993b4c96..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/getMethods.st +++ /dev/null @@ -1,12 +0,0 @@ -as yet unclassified -getMethods - - | tmp | - methods ifNotNil: [^ methods]. - - tmp := OrderedDictionary new. - (self callgraph do: [:each | (each class == BPCallgraphEntryEnter) ifTrue: [tmp at: {each getClass . each getSelector . each getBlockIdx} ifAbsentPut: [each]]]). - - methods := OrderedCollection new. - methods addAll: tmp values. - ^ methods \ 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 index 585ce170..93d21773 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/highlightMethod..st +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/highlightMethod..st @@ -1,5 +1,6 @@ -as yet unclassified +actions highlightMethod: aMethodReference - self getMethods - withIndexDo: [:each :i | (each getClass == aMethodReference actualClass and: [each getSelector == aMethodReference selector]) ifTrue: [^ self setIndex: i]] \ No newline at end of file + 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/initialize.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/initialize.st deleted file mode 100644 index 285acbfa..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/initialize.st +++ /dev/null @@ -1,6 +0,0 @@ -initialize-release -initialize - - super initialize. - - listIndex := 0 \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/setIndex..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/setIndex..st deleted file mode 100644 index 7dc6948b..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/setIndex..st +++ /dev/null @@ -1,5 +0,0 @@ -as yet unclassified -setIndex: aNumber - - listIndex := aNumber. - self changed: #getIndex \ 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..685d5ecf --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/topMenu.for..st @@ -0,0 +1,12 @@ +list top +topMenu: menu for: entry + + menu + add: 'browse' action: [self browseMethod: entry methodReference]; + 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 index c8ceeb08..03d6a44b 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/methodProperties.json @@ -2,14 +2,18 @@ "class" : { }, "instance" : { - "buildWith:" : "cmfcmf 11/3/2020 11:27", - "doubleClick" : "cmfcmf 11/2/2020 12:00", - "getIndex" : "cmfcmf 10/30/2020 14:41", - "getList" : "cmfcmf 11/2/2020 12:02", - "getListIcon:" : "cmfcmf 11/2/2020 11:59", - "getMenu:" : "cmfcmf 11/3/2020 11:29", - "getMethods" : "cmfcmf 11/2/2020 12:50", - "highlightMethod:" : "cmfcmf 11/2/2020 14:13", - "highlightTraceValue:" : "cmfcmf 11/2/2020 11:54", - "initialize" : "cmfcmf 10/30/2020 14:41", - "setIndex:" : "cmfcmf 10/30/2020 14:41" } } + "bottomDoubleClickFor:" : "cmfcmf 11/4/2020 13:40", + "bottomEntries" : "cmfcmf 11/4/2020 16:24", + "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/4/2020 16:03", + "bottomMenu:for:" : "cmfcmf 11/4/2020 13:52", + "bottomTextAttributesFor:" : "cmfcmf 11/4/2020 13:39", + "highlightMethod:" : "cmfcmf 11/4/2020 12:50", + "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/4/2020 13:50", + "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 index 2e568bff..afe51efc 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/properties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/properties.json @@ -6,10 +6,9 @@ ], "commentStamp" : "", "instvars" : [ - "listIndex", - "methods" ], + ], "name" : "BPBrowserSidebarVisualizationExecutedMethods", "pools" : [ ], - "super" : "BPBrowserSidebarVisualization", + "super" : "BPBrowserSidebarVisualizationEntriesWithDetails", "type" : "normal" } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/getList.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/getList.st deleted file mode 100644 index 68635889..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/getList.st +++ /dev/null @@ -1,14 +0,0 @@ -as yet unclassified -getList - - | methodSetSize | - methodSetSize := super getMethods size. - - ^ self getMethods withIndexCollect: [:each :i | (each isKindOf: BPCallgraphEntry) - ifTrue: [ | label | - i > methodSetSize - ifTrue: [label := (each label splitBy: String tab) joinSeparatedBy: ' '] - ifFalse: [label := (each label splitBy: String tab) first]. - each textColor ifNotNil: [:color | label := Text string: label attribute: (TextColor color: color)]. - label] - ifFalse: [each]] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/getMenu..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/getMenu..st deleted file mode 100644 index bee47ee3..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/getMenu..st +++ /dev/null @@ -1,19 +0,0 @@ -as yet unclassified -getMenu: shiftKeyState - - | method superMenu menu allInvocations | - superMenu := super getMenu: shiftKeyState. - - method := self getMethods at: self getIndex. - method class == BPCallgraphEntryEnter ifFalse: [^ superMenu]. - allInvocations := self callgraph select: [:each | each class == BPCallgraphEntryEnter and: [each equalsClassSelectorBlockIdx: method]]. - - menu := (superMenu ifNil: [MenuMorph new]) - add: 'find common ancestor of all invocations of this method' - action: [| ancestor paths | - ancestor := self callgraph commonAncestorOf: allInvocations ignoringInvocationCounts: true. - ancestor ifNil: [^ UIManager default inform: 'No common ancestor found']. - paths := self callgraph pathsIgnoringInvocationCountsBetween: ancestor andChildren: allInvocations. - paths explore]. - - ^ menu \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/getMethods.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/getMethods.st deleted file mode 100644 index d1c98635..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/getMethods.st +++ /dev/null @@ -1,30 +0,0 @@ -as yet unclassified -getMethods - - | list | - list := super getMethods copy. - - methodIndex > 0 ifTrue: [| selectedEntry entries | - list addLast: '################################################################################'. - selectedEntry := super getMethods at: methodIndex. - entries := self callgraph select: [:each | each class == BPCallgraphEntryEnter - and: [each getClass == selectedEntry getClass] - and: [each getSelector == selectedEntry getSelector] - and: [each getBlockIdx == selectedEntry getBlockIdx]]. - entries withIndexDo: [:entry :i | | path | - list addLast: (Text string: 'Invocation ', i attribute: TextEmphasis bold). - path := entry pathWithoutContextMovingRight. - "path overlappingPairsDo: [:a :b | - list add: a. - self callgraph do: [:each | (each isKindOf: BPCallgraphEntryCustomEvent) ifTrue: [list add: each]] between: a and: b]. - list add: path last." - - "path do: [:each | - list add: each. - list addAll: (each children select: [:child | child isKindOf: BPCallgraphEntryCustomEvent])]." - - list addAll: path. - - "i < entries size ifTrue: [list addLast: '------------------------------------------------------------']"]]. - - ^ list \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/initialize.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/initialize.st deleted file mode 100644 index 4f42bdb8..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/initialize.st +++ /dev/null @@ -1,6 +0,0 @@ -as yet unclassified -initialize - - super initialize. - - methodIndex := 0 \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/setIndex..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/setIndex..st deleted file mode 100644 index 783b4bd5..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/instance/setIndex..st +++ /dev/null @@ -1,8 +0,0 @@ -as yet unclassified -setIndex: aNumber - - super setIndex: aNumber. - - aNumber <= super getMethods size ifTrue: [ - methodIndex := aNumber. - self changed: #getList]. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/methodProperties.json deleted file mode 100644 index 5ebc669d..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/methodProperties.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "class" : { - }, - "instance" : { - "getList" : "cmfcmf 11/3/2020 11:17", - "getMenu:" : "cmfcmf 11/3/2020 12:14", - "getMethods" : "cmfcmf 11/2/2020 20:31", - "initialize" : "cmfcmf 11/2/2020 19:57", - "setIndex:" : "cmfcmf 11/2/2020 19:59" } } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/properties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/properties.json deleted file mode 100644 index eb0dd155..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethodsWithPaths.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "Babylonian-UI-Callgraph", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "", - "instvars" : [ - "methodIndex" ], - "name" : "BPBrowserSidebarVisualizationExecutedMethodsWithPaths", - "pools" : [ - ], - "super" : "BPBrowserSidebarVisualizationExecutedMethods", - "type" : "normal" } 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..661819d9 --- /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 pathsIgnoringInvocationCountsBetween: ancestor andChildren: allInvocations. + paths explore \ 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 index 7596a9bf..4a071e6c 100644 --- a/packages/Babylonian-UI.package/BPCallgraphModel.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/methodProperties.json @@ -6,6 +6,7 @@ "callgraph:" : "cmfcmf 10/27/2020 14:12", "childrenOf:" : "cmfcmf 10/22/2020 13:22", "doubleClick:" : "cmfcmf 10/30/2020 14:57", + "findCommonAncestorOfAllInvocations" : "cmfcmf 11/3/2020 14:00", "getSelectedEntry" : "cmfcmf 10/22/2020 14:29", "getSpec" : "cmfcmf 10/30/2020 14:57", "hasChildren:" : "cmfcmf 10/22/2020 13:22", From 8cc618d1c7daa1ff031d53eea32e91510f2fba15 Mon Sep 17 00:00:00 2001 From: Christian Flach Date: Thu, 5 Nov 2020 13:57:35 +0100 Subject: [PATCH 08/71] Further simplify, consolidate, and improve visualizations --- ...monAncestorOf.ignoringInvocationCounts..st | 8 ++- ...ingInvocationCountsBetween.andChildren..st | 6 +-- .../BPCallgraph.class/methodProperties.json | 4 +- .../instance/visualizationLabel.st | 4 ++ .../methodProperties.json | 3 +- .../methodProperties.json | 2 +- .../instance/textColor.st | 3 +- .../methodProperties.json | 2 +- .../instance/visualizationLabel.st | 4 ++ .../methodProperties.json | 3 +- .../sidebarShowExample.id.traceValue..st | 4 ++ .../sidebarShowExample.traceValue..st | 4 -- .../BPBrowser.class/methodProperties.json | 2 +- ...alue..st => showExample.id.traceValue..st} | 4 +- .../methodProperties.json | 2 +- ...ceValue..st => highlightTraceValue.id..st} | 4 +- .../methodProperties.json | 2 +- .../instance/bottomEntries.st | 13 ++--- .../instance/highlightTraceValue..st | 6 --- .../instance/highlightTraceValue.id..st | 10 ++++ ...eprocessBottomEntriesForAncestorSearch..st | 10 ++++ .../selectMatchingEntriesFromCallgraph..st | 4 ++ .../methodProperties.json | 6 ++- ...ceValue..st => highlightTraceValue.id..st} | 2 +- .../methodProperties.json | 2 +- .../instance/bottomLabels.st | 13 +++-- .../instance/bottomTextAttributesFor.row..st | 4 ++ .../instance/highlightTraceValue..st | 4 -- .../instance/highlightTraceValue.id..st | 4 ++ .../instance/topLabels.st | 4 +- .../instance/topTextAttributesFor.row..st | 4 ++ .../methodProperties.json | 10 ++-- .../instance/bottomEntries.st | 22 +------- .../instance/bottomLabelFor..st | 2 +- .../instance/bottomTextAttributesFor.row..st | 4 ++ .../instance/calculateBottomContent.st | 50 +++++++++++++++++++ ...eprocessBottomEntriesForAncestorSearch..st | 4 ++ .../selectMatchingEntriesFromCallgraph..st | 5 ++ .../methodProperties.json | 8 ++- .../properties.json | 2 +- .../instance/valueMorphFor.trace..st | 2 +- .../instance/viewCommonAncestorForTrace..st | 16 +++--- .../BPProbeMorph.class/methodProperties.json | 4 +- 43 files changed, 185 insertions(+), 91 deletions(-) create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/visualizationLabel.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/visualizationLabel.st create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/sidebarShowExample.id.traceValue..st delete mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/sidebarShowExample.traceValue..st rename packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/{showExample.traceValue..st => showExample.id.traceValue..st} (74%) rename packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/{highlightTraceValue..st => highlightTraceValue.id..st} (50%) delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/highlightTraceValue..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/highlightTraceValue.id..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/preprocessBottomEntriesForAncestorSearch..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/selectMatchingEntriesFromCallgraph..st rename packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/{highlightTraceValue..st => highlightTraceValue.id..st} (79%) create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomTextAttributesFor.row..st delete mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/highlightTraceValue..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/highlightTraceValue.id..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topTextAttributesFor.row..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomTextAttributesFor.row..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/calculateBottomContent.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/preprocessBottomEntriesForAncestorSearch..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/selectMatchingEntriesFromCallgraph..st diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st index 08169091..078bc5a5 100644 --- a/packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st @@ -3,8 +3,11 @@ commonAncestorOf: aCollection ignoringInvocationCounts: aBoolean | theAncestor possibleAncestors | aCollection ifEmpty: [^ nil]. + "aCollection size == 1 ifTrue: [| path | + path := aCollection first pathWithoutContextMovingRight allButLast. + ^ path ifEmpty: [nil] ifNotEmpty: [path last]]." - possibleAncestors := aCollection first pathWithoutContextMovingRight. + possibleAncestors := aCollection first pathWithoutContextMovingRight allButLast. aCollection allButFirst do: [:each | | path found | path := each pathWithoutContextMovingRight. @@ -20,5 +23,8 @@ commonAncestorOf: aCollection ignoringInvocationCounts: aBoolean found := true]]]. 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: [theAncestor asPathPart] ifFalse: [theAncestor] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/pathsIgnoringInvocationCountsBetween.andChildren..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/pathsIgnoringInvocationCountsBetween.andChildren..st index 62875c46..9856dd3e 100644 --- a/packages/Babylonian-Core.package/BPCallgraph.class/instance/pathsIgnoringInvocationCountsBetween.andChildren..st +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/pathsIgnoringInvocationCountsBetween.andChildren..st @@ -1,11 +1,9 @@ finding ancestors pathsIgnoringInvocationCountsBetween: ancestor andChildren: aCollection - | paths | - paths := (aCollection collect: [:each | | rootPath path ancestorIndex | + ^ (aCollection collect: [:each | | rootPath path ancestorIndex | rootPath := each pathWithoutContextMovingRight. ancestorIndex := rootPath findLast: [:entry | entry class == BPCallgraphEntryEnter and: [ancestor equalsClassSelectorBlockIdx: entry]]. self assert: ancestorIndex > 0. path := rootPath copyFrom: ancestorIndex to: rootPath size. - path collect: #asPathPart]) withoutDuplicates. - ^ paths keys \ No newline at end of file + path collect: #asPathPart]) withoutDuplicates \ 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 index 90dc9b53..b2744455 100644 --- a/packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json @@ -5,7 +5,7 @@ "addRoot:" : "cmfcmf 10/27/2020 14:10", "allInvocationsOf:" : "cmfcmf 11/3/2020 13:57", "babylonianEntries" : "cmfcmf 10/28/2020 11:01", - "commonAncestorOf:ignoringInvocationCounts:" : "cmfcmf 11/3/2020 14:48", + "commonAncestorOf:ignoringInvocationCounts:" : "cmfcmf 11/5/2020 12:17", "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", @@ -19,6 +19,6 @@ "do:between:and:" : "cmfcmf 11/2/2020 20:20", "do:entry:" : "cmfcmf 10/27/2020 14:48", "initialize" : "cmfcmf 10/27/2020 14:14", - "pathsIgnoringInvocationCountsBetween:andChildren:" : "cmfcmf 11/4/2020 15:52", + "pathsIgnoringInvocationCountsBetween:andChildren:" : "cmfcmf 11/5/2020 12:56", "roots" : "cmfcmf 10/27/2020 14:11", "select:" : "cmfcmf 10/28/2020 10:47" } } 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 index 8120e159..b09e3a12 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntry.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/methodProperties.json @@ -17,4 +17,5 @@ "pathWithoutContextMovingRight" : "cmfcmf 11/3/2020 13:50", "printOn:" : "cmfcmf 11/2/2020 17:33", "root" : "cmfcmf 10/27/2020 16:20", - "textColor" : "cmfcmf 10/23/2020 16:14" } } + "textColor" : "cmfcmf 10/23/2020 16:14", + "visualizationLabel" : "cmfcmf 11/5/2020 13:17" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/methodProperties.json index f5ddba94..360b41c9 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/methodProperties.json @@ -6,4 +6,4 @@ "doBrowse" : "cmfcmf 11/3/2020 12:54", "hash" : "cmfcmf 11/3/2020 12:41", "printOn:" : "cmfcmf 11/3/2020 12:57", - "textColor" : "cmfcmf 11/3/2020 12:52" } } + "textColor" : "cmfcmf 11/5/2020 11:49" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/instance/textColor.st b/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/instance/textColor.st index c2b2e9d6..a104e7f8 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/instance/textColor.st +++ b/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/instance/textColor.st @@ -1,4 +1,5 @@ accessing -textColor +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 index af6a90a2..788435b2 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/methodProperties.json @@ -6,4 +6,4 @@ "doBrowse" : "cmfcmf 11/3/2020 12:55", "hash" : "cmfcmf 11/3/2020 12:41", "printOn:" : "cmfcmf 11/3/2020 12:56", - "textColor" : "cmfcmf 11/3/2020 12:53" } } + "textColor" : "cmfcmf 11/5/2020 11:49" } } 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 index 57a89365..0f811c44 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathPart.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphPathPart.class/methodProperties.json @@ -6,4 +6,5 @@ "doBrowse" : "cmfcmf 11/3/2020 12:53", "hash" : "cmfcmf 11/3/2020 12:50", "icon" : "cmfcmf 11/3/2020 12:56", - "textColor" : "cmfcmf 11/3/2020 12:53" } } + "textColor" : "cmfcmf 11/3/2020 12:53", + "visualizationLabel" : "cmfcmf 11/5/2020 13:17" } } diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/sidebarShowExample.id.traceValue..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/sidebarShowExample.id.traceValue..st new file mode 100644 index 00000000..ecd7cacb --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.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/BPBrowser.class/instance/sidebarShowExample.traceValue..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/sidebarShowExample.traceValue..st deleted file mode 100644 index b32fe295..00000000 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/sidebarShowExample.traceValue..st +++ /dev/null @@ -1,4 +0,0 @@ -callgraph ui -sidebarShowExample: aBPExample traceValue: aBPTraceValue - - sidebar showExample: aBPExample traceValue: aBPTraceValue \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json index d7553b5f..f7827342 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json @@ -53,5 +53,5 @@ "removeSelectedAnnotationsSatisfying:" : "pre 7/26/2019 16:08", "saveMethodWithExamples" : "pre 11/11/2019 09:36", "saveMethodWithExamplesWith:" : "pre 8/6/2019 13:57", - "sidebarShowExample:traceValue:" : "cmfcmf 10/30/2020 16:01", + "sidebarShowExample:id:traceValue:" : "cmfcmf 11/5/2020 13:00", "sidebarShowMethod:" : "cmfcmf 11/2/2020 14:14" } } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/showExample.traceValue..st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/showExample.id.traceValue..st similarity index 74% rename from packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/showExample.traceValue..st rename to packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/showExample.id.traceValue..st index 14ebacbc..336808df 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/showExample.traceValue..st +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/showExample.id.traceValue..st @@ -1,7 +1,7 @@ as yet unclassified -showExample: aBPExample traceValue: aBPTraceValue +showExample: aBPExample id: aNumber traceValue: aBPTraceValue self setExampleListIndex: (self getExampleList indexOf: aBPExample). self selectedVisualizationType == #none ifTrue: [ self setVisualizationTypeIndex: 1]. - visualization ifNotNil: [visualization highlightTraceValue: aBPTraceValue] \ No newline at end of file + visualization ifNotNil: [visualization highlightTraceValue: aBPTraceValue id: aNumber] \ 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 index 04c9caf9..afd940cb 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json @@ -21,6 +21,6 @@ "selectedVisualizationType" : "cmfcmf 10/30/2020 14:14", "setExampleListIndex:" : "cmfcmf 10/30/2020 16:08", "setVisualizationTypeIndex:" : "cmfcmf 10/30/2020 14:10", - "showExample:traceValue:" : "cmfcmf 10/30/2020 16:05", + "showExample:id:traceValue:" : "cmfcmf 11/5/2020 13:01", "showMethod:" : "cmfcmf 11/2/2020 14:34", "visualizationMorphs" : "cmfcmf 11/4/2020 15:30" } } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/highlightTraceValue..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/highlightTraceValue.id..st similarity index 50% rename from packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/highlightTraceValue..st rename to packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/highlightTraceValue.id..st index d0851d8f..76cec14a 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/highlightTraceValue..st +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/highlightTraceValue.id..st @@ -1,4 +1,4 @@ as yet unclassified -highlightTraceValue: aBPTraceValue - +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 index 374aaa91..0ba420ea 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/methodProperties.json @@ -8,4 +8,4 @@ "example" : "cmfcmf 10/30/2020 14:29", "example:" : "cmfcmf 10/30/2020 14:28", "highlightMethod:" : "cmfcmf 11/2/2020 14:09", - "highlightTraceValue:" : "cmfcmf 10/30/2020 16:03" } } + "highlightTraceValue:id:" : "cmfcmf 11/5/2020 13:01" } } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/bottomEntries.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/bottomEntries.st index 36fe1c38..d9eb0ea4 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/bottomEntries.st +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/bottomEntries.st @@ -2,12 +2,7 @@ list bottom bottomEntries ^ self selectedTopEntry ifNil: [{}] ifNotNil: [:topEntry | - (topEntry isKindOf: BPCallgraphPathBabylonianTraceBased) ifFalse: [^ {}]. - cache at: topEntry ifAbsentPut: [| entries list | - list := OrderedCollection new. - entries := self callgraph select: [:each | (each isKindOf: BPCallgraphEntryBPProbeOrAssertion) and: [each id == topEntry id]]. - entries withIndexDo: [:entry :i | | attributes | - attributes := OrderedCollection with: TextEmphasis bold. - list addLast: (Text string: 'Hit ', i attributes: attributes). - list addAll: entry pathWithoutContextMovingRight]. - list]] \ No newline at end of file + cache at: topEntry ifAbsentPut: [ + (topEntry isKindOf: BPCallgraphPathBabylonianTraceBased) + ifFalse: [{}] + ifTrue: [self calculateBottomContent]]] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/highlightTraceValue..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/highlightTraceValue..st deleted file mode 100644 index d67fdd2b..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/highlightTraceValue..st +++ /dev/null @@ -1,6 +0,0 @@ -actions -highlightTraceValue: aBPTraceValue - - 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/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..35c75e6a --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/preprocessBottomEntriesForAncestorSearch..st @@ -0,0 +1,10 @@ +bottom content +preprocessBottomEntriesForAncestorSearch: entries + + ^ entries collect: [:entry | | parent | + parent := entry parent. + parent methodReference = entry methodReference + ifTrue: [ + "The probe/assertion's parent is the method/block the probe/assertion is defined in. Let's look for ancestors of that method/block instead of the probe, otherwise, the ancestor without context would always simply be the enclosing method/block, which doesn't really help. The user can easily see in which method they placed the probe/assertion." + entry parent] + ifFalse: [entry]] \ 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/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/methodProperties.json index c86aa7d2..9fd9c1b5 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/methodProperties.json @@ -2,8 +2,10 @@ "class" : { }, "instance" : { - "bottomEntries" : "cmfcmf 11/4/2020 15:04", + "bottomEntries" : "cmfcmf 11/5/2020 12:41", "highlightMethod:" : "cmfcmf 11/4/2020 15:46", - "highlightTraceValue:" : "cmfcmf 11/4/2020 14:45", + "highlightTraceValue:id:" : "cmfcmf 11/5/2020 13:05", + "preprocessBottomEntriesForAncestorSearch:" : "cmfcmf 11/5/2020 12:46", + "selectMatchingEntriesFromCallgraph:" : "cmfcmf 11/5/2020 12:39", "topEntries" : "cmfcmf 11/4/2020 16:11", "topMenu:for:" : "cmfcmf 11/4/2020 14:41" } } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/highlightTraceValue..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/highlightTraceValue.id..st similarity index 79% rename from packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/highlightTraceValue..st rename to packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/highlightTraceValue.id..st index 6ee4b14f..d221046b 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/highlightTraceValue..st +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/highlightTraceValue.id..st @@ -1,5 +1,5 @@ toolbuilder -highlightTraceValue: aBPTraceValue +highlightTraceValue: aBPTraceValue id: aNumber callgraph babylonianEntries detect: [:each | ((each respondsTo: #traceValue) and: [each traceValue == aBPTraceValue])] diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/methodProperties.json index 47c5bc40..66f11d5d 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/methodProperties.json @@ -4,4 +4,4 @@ "instance" : { "buildWith:" : "cmfcmf 10/30/2020 16:16", "highlightMethod:" : "cmfcmf 11/2/2020 14:27", - "highlightTraceValue:" : "cmfcmf 10/30/2020 16:17" } } + "highlightTraceValue:id:" : "cmfcmf 11/5/2020 13:01" } } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomLabels.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomLabels.st index 64b9ac3f..ef7a55a4 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomLabels.st +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomLabels.st @@ -6,12 +6,15 @@ bottomLabels self bottomEntries withIndexDo: [:each :rowIdx | | label attributes | - label := self bottomLabelFor: each. - label isString ifTrue: [ - attributes := self bottomTextAttributesFor: each. - attributes ifNotEmpty: [label := Text string: label attributes: 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 asStringOrText splitBy: String tab) withIndexDo: [:part :columnIdx | | column | + (label splitBy: String tab) withIndexDo: [:part :columnIdx | | column | column := columns at: columnIdx ifAbsentPut: [OrderedCollection new: rowIdx withAll: '']. column at: rowIdx put: part]]. 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/highlightTraceValue..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/highlightTraceValue..st deleted file mode 100644 index 7d7106c6..00000000 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/highlightTraceValue..st +++ /dev/null @@ -1,4 +0,0 @@ -actions -highlightTraceValue: aBPTraceValue - - \ 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/topLabels.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topLabels.st index 657f062b..f03b0365 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topLabels.st +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topLabels.st @@ -1,10 +1,10 @@ priv toolbuilder (do not overwrite) topLabels - ^ self topEntries collect: [:each | + ^ self topEntries withIndexCollect: [:each :rowIdx | | label attributes | label := (self topLabelFor: each) asStringOrText. label isString ifTrue: [ - attributes := self topTextAttributesFor: each. + 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/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 index 412b6b4e..20f72144 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/methodProperties.json @@ -16,13 +16,14 @@ "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/4/2020 16:06", + "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/4/2020 16:18", "highlightMethod:" : "cmfcmf 11/4/2020 12:49", - "highlightTraceValue:" : "cmfcmf 11/4/2020 12:49", + "highlightTraceValue:id:" : "cmfcmf 11/5/2020 13:01", "initialize" : "cmfcmf 11/4/2020 12:48", "selectedBottomEntry" : "cmfcmf 11/4/2020 13:08", "selectedTopEntry" : "cmfcmf 11/4/2020 13:08", @@ -40,7 +41,8 @@ "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/4/2020 13:15", + "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:" : "cmfcmf 11/4/2020 12:38", + "topTextAttributesFor:row:" : "cmfcmf 11/5/2020 13:18" } } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomEntries.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomEntries.st index dc938663..31857ef2 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomEntries.st +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomEntries.st @@ -2,24 +2,4 @@ list bottom bottomEntries ^ self selectedTopEntry ifNil: [{}] ifNotNil: [:topEntry | - cache at: topEntry ifAbsentPut: [| entries paths list | - list := OrderedCollection new. - entries := self callgraph select: [:each | each class == BPCallgraphEntryEnter and: [topEntry equalsClassSelectorBlockIdx: each]]. - - paths := (entries collect: [:each | each pathWithoutContextMovingRight collect: #asPathPart]) asSet asOrderedCollection. - paths withIndexDo: [:path :i | - list addLast: (Text string: 'Unique Invocation Path ', i attributes: {TextEmphasis bold . TextColor color: Color orange}). - list addAll: path]. - - entries withIndexDo: [:entry :i | | path | - list addLast: (Text string: 'Invocation ', i attribute: TextEmphasis bold). - path := entry pathWithoutContextMovingRight. - list addAll: path - "path overlappingPairsDo: [:a :b | - list add: a. - self callgraph do: [:each | (each isKindOf: BPCallgraphEntryCustomEvent) ifTrue: [list add: each]] between: a and: b]. - list add: path last." - "path do: [:each | - list add: each. - list addAll: (each children select: [:child | child isKindOf: BPCallgraphEntryCustomEvent])]."]. - list]] \ No newline at end of file + cache at: topEntry ifAbsentPut: [self calculateBottomContent]] \ 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 index 19415445..0608a9b5 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomLabelFor..st +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomLabelFor..st @@ -1,4 +1,4 @@ list bottom bottomLabelFor: entry - ^ (entry isKindOf: BPCallgraphEntry) ifTrue: [entry label] ifFalse: [entry] \ No newline at end of file + ^ entry visualizationLabel \ 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..6feb693e --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/calculateBottomContent.st @@ -0,0 +1,50 @@ +bottom content +calculateBottomContent + + | entries entriesForAncestorSearch paths list ancestor ancestorHighlightAttributes | + 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 (ignoring context)' 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 pathWithoutContextMovingRight collect: #asPathPart]) withoutDuplicates. + paths withIndexDo: [:path :i | + list addLast: ''. + list addLast: (Text string: 'Unique Invocation Path ', i, ' (ignoring context)' attributes: {TextEmphasis bold}). + path do: [:each | + list add: each. + each = ancestor ifTrue: [additionalBottomTextAttributes at: list size put: ancestorHighlightAttributes]]]. + + 2 timesRepeat: [list add: '']. + + "common ancestor with invocation counts" + ancestor := self callgraph commonAncestorOf: entriesForAncestorSearch ignoringInvocationCounts: false. + list add: (Text string: 'Common ancestor' 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 attribute: TextEmphasis bold). + entry pathWithoutContextMovingRight 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 \ 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/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/methodProperties.json index 03d6a44b..33e1dab9 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/methodProperties.json @@ -3,14 +3,18 @@ }, "instance" : { "bottomDoubleClickFor:" : "cmfcmf 11/4/2020 13:40", - "bottomEntries" : "cmfcmf 11/4/2020 16:24", + "bottomEntries" : "cmfcmf 11/5/2020 12:41", "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/4/2020 16:03", + "bottomLabelFor:" : "cmfcmf 11/5/2020 13:17", "bottomMenu:for:" : "cmfcmf 11/4/2020 13:52", "bottomTextAttributesFor:" : "cmfcmf 11/4/2020 13:39", + "bottomTextAttributesFor:row:" : "cmfcmf 11/5/2020 13:21", + "calculateBottomContent" : "cmfcmf 11/5/2020 13:23", "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", diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/properties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/properties.json index afe51efc..0086a87f 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/properties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/properties.json @@ -6,7 +6,7 @@ ], "commentStamp" : "", "instvars" : [ - ], + "additionalBottomTextAttributes" ], "name" : "BPBrowserSidebarVisualizationExecutedMethods", "pools" : [ ], diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valueMorphFor.trace..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valueMorphFor.trace..st index 4aa32910..cc5cd2dd 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valueMorphFor.trace..st +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valueMorphFor.trace..st @@ -9,5 +9,5 @@ valueMorphFor: traceValue trace: trace [1] -> [traceValue tracedValue explore]. [2] -> [traceValue tracedValue inspect]. [3] -> [traceValue tracedValue browse]. - [4] -> [self containingBrowser sidebarShowExample: trace example traceValue: traceValue]} otherwise: []]. + [4] -> [self containingBrowser sidebarShowExample: trace example id: self id traceValue: traceValue]} otherwise: []]. ^ morph \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/viewCommonAncestorForTrace..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/viewCommonAncestorForTrace..st index 6561dd3b..be786068 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/viewCommonAncestorForTrace..st +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/viewCommonAncestorForTrace..st @@ -1,11 +1,15 @@ private - ui viewCommonAncestorForTrace: aTrace - | ancestor callgraph | + | ancestor callgraph children paths | callgraph := aTrace example traceWithCallgraphUsingByteCodeTracer eventsForTree. - ancestor := callgraph commonAncestorOf: (callgraph select: [:each | - (each isKindOf: BPCallgraphEntryBPProbeOrAssertion) and: [each id == self id]]) ignoringInvocationCounts: false. + 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'] - ifNotNil: [self containingBrowser sidebarShowMethod: ancestor methodReference] \ No newline at end of file + ancestor ifNil: [^ UIManager default inform: 'Probe hits have no single common ancestor']. + self containingBrowser sidebarShowMethod: ancestor methodReference. + + paths := callgraph pathsIgnoringInvocationCountsBetween: ancestor andChildren: children. + paths explore. + \ 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 9a91b88c..f34489e4 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json @@ -28,9 +28,9 @@ "stepTime" : "pre 8/20/2020 17:35", "updateExpressionMorphIfNecessary" : "pre 9/22/2020 10:04", "updateFrom:" : "pre 10/12/2020 18:02", - "valueMorphFor:trace:" : "cmfcmf 10/30/2020 15:59", + "valueMorphFor:trace:" : "cmfcmf 11/5/2020 13:00", "valueTextFor:" : "pre 7/7/2020 16:43", "valuesMorphFor:" : "cmfcmf 10/30/2020 15:56", "valuesTextFor:" : "pre 8/17/2020 09:31", "viewCallgraphForTrace:" : "cmfcmf 10/28/2020 11:02", - "viewCommonAncestorForTrace:" : "cmfcmf 11/2/2020 21:15" } } + "viewCommonAncestorForTrace:" : "cmfcmf 11/3/2020 14:52" } } From ea755fc9d08a58de6effc7d518b7d5a891641af7 Mon Sep 17 00:00:00 2001 From: Christian Flach Date: Mon, 9 Nov 2020 11:03:31 +0100 Subject: [PATCH 09/71] Add support for background colors in multicolumn lists, add preference for showin return entries in callgraphs --- .../instance/visualizationBackgroundColor.st | 5 +++ .../methodProperties.json | 1 + .../instance/bottomEntries.st | 6 +-- .../methodProperties.json | 2 +- .../instance/bottomBackgroundColor..st | 4 ++ .../instance/bottomBackgroundColorFor..st | 4 ++ .../instance/buildWith..st | 3 +- .../instance/topBackgroundColor..st | 4 ++ .../instance/topBackgroundColorFor..st | 4 ++ .../methodProperties.json | 8 +++- .../instance/bottomBackgroundColor..st | 7 ++++ .../instance/bottomBackgroundColorFor..st | 5 +++ .../instance/bottomEntries.st | 2 +- .../instance/calculateBottomContent.st | 6 ++- .../methodProperties.json | 6 ++- .../properties.json | 2 +- .../properties.json | 2 +- .../class/showReturnNodes..st | 4 ++ .../class/showReturnNodes.st | 8 ++++ .../instance/childrenOf..st | 6 ++- .../instance/rootEntries.st | 5 ++- .../instance/withoutReturnNodes..st | 4 ++ .../methodProperties.json | 10 +++-- .../BPCallgraphModel.class/properties.json | 2 +- .../properties.json | 2 +- .../properties.json | 2 +- .../BPLazyListMorph.class/README.md | 0 .../instance/backgroundColorForRow.item..st | 7 ++++ .../instance/display.atRow.on..st | 16 ++++++++ .../methodProperties.json | 6 +++ .../BPLazyListMorph.class/properties.json | 14 +++++++ .../BPPluggableListMorph.class/README.md | 0 .../instance/listMorphClass.st | 4 ++ .../methodProperties.json | 5 +++ .../properties.json | 14 +++++++ .../README.md | 0 .../instance/backgroundColorForRow..st | 4 ++ .../instance/listMorphClass.st | 4 ++ .../setGetBackgroundColorSelector..st | 4 ++ .../instance/update..st | 5 +++ .../instance/updateBackgroundColors.st | 8 ++++ .../instance/updateList.st | 5 +++ .../methodProperties.json | 10 +++++ .../properties.json | 15 +++++++ .../README.md | 0 .../instance/backgroundColor..st | 4 ++ .../instance/backgroundColor.st | 4 ++ .../instance/buildWith..st | 4 ++ .../methodProperties.json | 7 ++++ .../properties.json | 14 +++++++ .../instance/buildBPCallgraph..st | 2 +- .../buildBPPluggableMultiColumnList..st | 41 +++++++++++++++++++ .../methodProperties.json | 3 +- .../bpPluggableMultiColumnListSpec.st | 4 ++ .../methodProperties.json | 5 +++ .../ToolBuilder.extension/properties.json | 2 + .../monticello.meta/categories.st | 1 + 57 files changed, 300 insertions(+), 26 deletions(-) create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/visualizationBackgroundColor.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomBackgroundColor..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/bottomBackgroundColorFor..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topBackgroundColor..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topBackgroundColorFor..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomBackgroundColor..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomBackgroundColorFor..st create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/class/showReturnNodes..st create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/class/showReturnNodes.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/withoutReturnNodes..st create mode 100644 packages/Babylonian-UI.package/BPLazyListMorph.class/README.md create mode 100644 packages/Babylonian-UI.package/BPLazyListMorph.class/instance/backgroundColorForRow.item..st create mode 100644 packages/Babylonian-UI.package/BPLazyListMorph.class/instance/display.atRow.on..st create mode 100644 packages/Babylonian-UI.package/BPLazyListMorph.class/methodProperties.json create mode 100644 packages/Babylonian-UI.package/BPLazyListMorph.class/properties.json create mode 100644 packages/Babylonian-UI.package/BPPluggableListMorph.class/README.md create mode 100644 packages/Babylonian-UI.package/BPPluggableListMorph.class/instance/listMorphClass.st create mode 100644 packages/Babylonian-UI.package/BPPluggableListMorph.class/methodProperties.json create mode 100644 packages/Babylonian-UI.package/BPPluggableListMorph.class/properties.json create mode 100644 packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/README.md create mode 100644 packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/instance/backgroundColorForRow..st create mode 100644 packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/instance/listMorphClass.st create mode 100644 packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/instance/setGetBackgroundColorSelector..st create mode 100644 packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/instance/update..st create mode 100644 packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/instance/updateBackgroundColors.st create mode 100644 packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/instance/updateList.st create mode 100644 packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/methodProperties.json create mode 100644 packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/properties.json create mode 100644 packages/Babylonian-UI.package/BPPluggableMultiColumnListSpec.class/README.md create mode 100644 packages/Babylonian-UI.package/BPPluggableMultiColumnListSpec.class/instance/backgroundColor..st create mode 100644 packages/Babylonian-UI.package/BPPluggableMultiColumnListSpec.class/instance/backgroundColor.st create mode 100644 packages/Babylonian-UI.package/BPPluggableMultiColumnListSpec.class/instance/buildWith..st create mode 100644 packages/Babylonian-UI.package/BPPluggableMultiColumnListSpec.class/methodProperties.json create mode 100644 packages/Babylonian-UI.package/BPPluggableMultiColumnListSpec.class/properties.json create mode 100644 packages/Babylonian-UI.package/MorphicToolBuilder.extension/instance/buildBPPluggableMultiColumnList..st create mode 100644 packages/Babylonian-UI.package/ToolBuilder.extension/instance/bpPluggableMultiColumnListSpec.st create mode 100644 packages/Babylonian-UI.package/ToolBuilder.extension/methodProperties.json create mode 100644 packages/Babylonian-UI.package/ToolBuilder.extension/properties.json 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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphPathPart.class/methodProperties.json index 0f811c44..c96f37c4 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathPart.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphPathPart.class/methodProperties.json @@ -7,4 +7,5 @@ "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-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/bottomEntries.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/bottomEntries.st index d9eb0ea4..4994a12e 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/bottomEntries.st +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/bottomEntries.st @@ -2,7 +2,7 @@ list bottom bottomEntries ^ self selectedTopEntry ifNil: [{}] ifNotNil: [:topEntry | - cache at: topEntry ifAbsentPut: [ + (cache at: topEntry ifAbsentPut: [ (topEntry isKindOf: BPCallgraphPathBabylonianTraceBased) - ifFalse: [{}] - ifTrue: [self calculateBottomContent]]] \ No newline at end of file + ifFalse: [{{} . 0}] + ifTrue: [self calculateBottomContent]]) first] \ 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 index 9fd9c1b5..e6701442 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/methodProperties.json @@ -2,7 +2,7 @@ "class" : { }, "instance" : { - "bottomEntries" : "cmfcmf 11/5/2020 12:41", + "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/5/2020 12:46", 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/buildWith..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/buildWith..st index 68f4c0c6..da64cb1c 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/buildWith..st +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/buildWith..st @@ -19,7 +19,7 @@ buildWith: aBuilder keyPress: #topKeyPress:; menu: #topMenu:; yourself). - (aBuilder pluggableMultiColumnListSpec new + (aBuilder bpPluggableMultiColumnListSpec new frame: (0@0.3 corner: 1@1); autoDeselect: false; clearFilterAutomatically: false; @@ -36,5 +36,6 @@ buildWith: aBuilder 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/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/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/methodProperties.json index 20f72144..4fc67b54 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/methodProperties.json @@ -2,12 +2,14 @@ "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/4/2020 14:05", + "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", @@ -21,7 +23,7 @@ "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/4/2020 16:18", + "buildWith:" : "cmfcmf 11/6/2020 15:47", "highlightMethod:" : "cmfcmf 11/4/2020 12:49", "highlightTraceValue:id:" : "cmfcmf 11/5/2020 13:01", "initialize" : "cmfcmf 11/4/2020 12:48", @@ -29,6 +31,8 @@ "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", 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/bottomEntries.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomEntries.st index 31857ef2..bf452055 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomEntries.st +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomEntries.st @@ -2,4 +2,4 @@ list bottom bottomEntries ^ self selectedTopEntry ifNil: [{}] ifNotNil: [:topEntry | - cache at: topEntry ifAbsentPut: [self calculateBottomContent]] \ No newline at end of file + (cache at: topEntry ifAbsentPut: [self calculateBottomContent]) first] \ 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 index 6feb693e..83cc5d7b 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/calculateBottomContent.st +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/calculateBottomContent.st @@ -1,7 +1,7 @@ bottom content calculateBottomContent - | entries entriesForAncestorSearch paths list ancestor ancestorHighlightAttributes | + | entries entriesForAncestorSearch paths list ancestor ancestorHighlightAttributes bottomFirstPartLength | additionalBottomTextAttributes := Dictionary new. ancestorHighlightAttributes := {TextColor color: (Color fromString: '#7FB40C') . "TextEmphasis bold"}. @@ -27,6 +27,8 @@ calculateBottomContent list add: each. each = ancestor ifTrue: [additionalBottomTextAttributes at: list size put: ancestorHighlightAttributes]]]. + bottomFirstPartLength := list size. + 2 timesRepeat: [list add: '']. "common ancestor with invocation counts" @@ -47,4 +49,4 @@ calculateBottomContent 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 \ No newline at end of file + ^ {list . bottomFirstPartLength} \ 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 index 33e1dab9..13fe6001 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/methodProperties.json @@ -2,8 +2,10 @@ "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/5/2020 12:41", + "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", @@ -11,7 +13,7 @@ "bottomMenu:for:" : "cmfcmf 11/4/2020 13:52", "bottomTextAttributesFor:" : "cmfcmf 11/4/2020 13:39", "bottomTextAttributesFor:row:" : "cmfcmf 11/5/2020 13:21", - "calculateBottomContent" : "cmfcmf 11/5/2020 13:23", + "calculateBottomContent" : "cmfcmf 11/6/2020 15:53", "highlightMethod:" : "cmfcmf 11/4/2020 12:50", "preprocessBottomEntriesForAncestorSearch:" : "cmfcmf 11/5/2020 12:37", "selectMatchingEntriesFromCallgraph:" : "cmfcmf 11/5/2020 12:38", diff --git a/packages/Babylonian-UI.package/BPCallgraphIndentingListItemMorph.class/properties.json b/packages/Babylonian-UI.package/BPCallgraphIndentingListItemMorph.class/properties.json index 96eda692..1e50f26f 100644 --- a/packages/Babylonian-UI.package/BPCallgraphIndentingListItemMorph.class/properties.json +++ b/packages/Babylonian-UI.package/BPCallgraphIndentingListItemMorph.class/properties.json @@ -1,5 +1,5 @@ { - "category" : "Babylonian-UI-Callgraph", + "category" : "Babylonian-UI-ToolBuilder", "classinstvars" : [ ], "classvars" : [ diff --git a/packages/Babylonian-UI.package/BPCallgraphListItemWrapper.class/properties.json b/packages/Babylonian-UI.package/BPCallgraphListItemWrapper.class/properties.json index 0b54e33e..505c33c1 100644 --- a/packages/Babylonian-UI.package/BPCallgraphListItemWrapper.class/properties.json +++ b/packages/Babylonian-UI.package/BPCallgraphListItemWrapper.class/properties.json @@ -1,5 +1,5 @@ { - "category" : "Babylonian-UI-Callgraph", + "category" : "Babylonian-UI-ToolBuilder", "classinstvars" : [ ], "classvars" : [ 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/childrenOf..st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/childrenOf..st index 222fd93c..6fc3bcb8 100644 --- a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/childrenOf..st +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/childrenOf..st @@ -1,4 +1,6 @@ as yet unclassified childrenOf: aBPCallgraphEntry - - ^ aBPCallgraphEntry children \ No newline at end of file + + ^ 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/rootEntries.st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/rootEntries.st index d94514fd..2abc70a6 100644 --- a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/rootEntries.st +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/rootEntries.st @@ -1,4 +1,7 @@ as yet unclassified rootEntries - ^ callgraph ifNotNil: #roots ifNil: [{}] \ No newline at end of file + | 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/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 index 4a071e6c..73dca67f 100644 --- a/packages/Babylonian-UI.package/BPCallgraphModel.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/methodProperties.json @@ -1,10 +1,11 @@ { "class" : { - }, + "showReturnNodes" : "cmfcmf 11/6/2020 14:26", + "showReturnNodes:" : "cmfcmf 11/6/2020 14:27" }, "instance" : { "callgraph" : "cmfcmf 10/28/2020 10:40", "callgraph:" : "cmfcmf 10/27/2020 14:12", - "childrenOf:" : "cmfcmf 10/22/2020 13:22", + "childrenOf:" : "cmfcmf 11/6/2020 14:29", "doubleClick:" : "cmfcmf 10/30/2020 14:57", "findCommonAncestorOfAllInvocations" : "cmfcmf 11/3/2020 14:00", "getSelectedEntry" : "cmfcmf 10/22/2020 14:29", @@ -14,7 +15,7 @@ "key:from:event:" : "cmfcmf 10/26/2020 13:03", "labelOf:" : "cmfcmf 10/22/2020 13:23", "menuOf:" : "cmfcmf 10/27/2020 16:14", - "rootEntries" : "cmfcmf 10/27/2020 14:13", + "rootEntries" : "cmfcmf 11/6/2020 14:28", "selectContextSenderChange" : "cmfcmf 10/27/2020 17:17", "selectCorrespondingBlockEnter" : "cmfcmf 11/2/2020 14:07", "selectCorrespondingBlockExit" : "cmfcmf 10/28/2020 12:25", @@ -30,4 +31,5 @@ "selectPrevBlockCallInSameContext" : "cmfcmf 11/2/2020 14:07", "selectPrevCustomEvent" : "cmfcmf 10/28/2020 11:01", "selectPrevMethodCall" : "cmfcmf 11/2/2020 14:02", - "setSelectedEntry:" : "cmfcmf 10/23/2020 15:38" } } + "setSelectedEntry:" : "cmfcmf 10/23/2020 15:38", + "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 index 048aaf6e..6b5e4647 100644 --- a/packages/Babylonian-UI.package/BPCallgraphModel.class/properties.json +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/properties.json @@ -3,7 +3,7 @@ "classinstvars" : [ ], "classvars" : [ - ], + "ShowReturnNodes" ], "commentStamp" : "", "instvars" : [ "callgraph", diff --git a/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/properties.json b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/properties.json index e976ba03..8bda3e96 100644 --- a/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/properties.json +++ b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/properties.json @@ -1,5 +1,5 @@ { - "category" : "Babylonian-UI-Callgraph", + "category" : "Babylonian-UI-ToolBuilder", "classinstvars" : [ ], "classvars" : [ diff --git a/packages/Babylonian-UI.package/BPCallgraphPluggableTreeSpec.class/properties.json b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeSpec.class/properties.json index f319190e..42558b09 100644 --- a/packages/Babylonian-UI.package/BPCallgraphPluggableTreeSpec.class/properties.json +++ b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeSpec.class/properties.json @@ -1,5 +1,5 @@ { - "category" : "Babylonian-UI-Callgraph", + "category" : "Babylonian-UI-ToolBuilder", "classinstvars" : [ ], "classvars" : [ 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/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..0c12da96 --- /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..f8499373 --- /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 11/9/2020 10:49", + "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/MorphicToolBuilder.extension/instance/buildBPCallgraph..st b/packages/Babylonian-UI.package/MorphicToolBuilder.extension/instance/buildBPCallgraph..st index 7c21db7d..c2011aa9 100644 --- a/packages/Babylonian-UI.package/MorphicToolBuilder.extension/instance/buildBPCallgraph..st +++ b/packages/Babylonian-UI.package/MorphicToolBuilder.extension/instance/buildBPCallgraph..st @@ -1,4 +1,4 @@ -*Babylonian-UI-Callgraph +*Babylonian-UI-ToolBuilder buildBPCallgraph: aSpec "largely copied from buildPluggableTree:" | widget | 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 index b1cedf7e..5e165602 100644 --- a/packages/Babylonian-UI.package/MorphicToolBuilder.extension/methodProperties.json +++ b/packages/Babylonian-UI.package/MorphicToolBuilder.extension/methodProperties.json @@ -2,4 +2,5 @@ "class" : { }, "instance" : { - "buildBPCallgraph:" : "cmfcmf 10/23/2020 17:28" } } + "buildBPCallgraph:" : "cmfcmf 10/23/2020 17:28", + "buildBPPluggableMultiColumnList:" : "cmfcmf 11/6/2020 15:46" } } 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 fe79427f..8998c27a 100644 --- a/packages/Babylonian-UI.package/monticello.meta/categories.st +++ b/packages/Babylonian-UI.package/monticello.meta/categories.st @@ -1,2 +1,3 @@ SystemOrganization addCategory: #'Babylonian-UI'! SystemOrganization addCategory: #'Babylonian-UI-Callgraph'! +SystemOrganization addCategory: #'Babylonian-UI-ToolBuilder'! From 5af8cb8e678e6295cc0ee3eef1f546cf20a4f31e Mon Sep 17 00:00:00 2001 From: Christian Flach Date: Tue, 10 Nov 2020 12:19:55 +0100 Subject: [PATCH 10/71] Generate callgraphs in background, add global registry for selecting callgraph entries --- ...monAncestorOf.ignoringInvocationCounts..st | 3 -- ...ldren..st => pathsBetween.andChildren..st} | 4 +-- .../BPCallgraph.class/methodProperties.json | 4 +-- .../instance/children.st | 2 +- .../BPCallgraphEntry.class/instance/menu..st | 4 +-- ...OrParentMethodBlockOfBPProbeOrAssertion.st | 4 +++ .../methodProperties.json | 5 +-- ...OrParentMethodBlockOfBPProbeOrAssertion.st | 4 +++ .../methodProperties.json | 1 + .../instance/menu..st | 2 +- .../methodProperties.json | 2 +- .../instance/menu..st | 2 +- .../methodProperties.json | 2 +- .../instance/menu..st | 2 +- .../methodProperties.json | 2 +- .../instance/menu..st | 2 +- .../methodProperties.json | 2 +- .../instance/menu..st | 2 +- .../methodProperties.json | 2 +- .../properties.json | 2 +- .../instance/equalsCallgraphEntry..st | 4 +++ .../methodProperties.json | 1 + .../instance/^equals.st | 2 +- .../instance/equalsCallgraphEntry..st | 4 +++ .../instance/example..st | 2 +- .../instance/example.st | 2 +- .../instance/hash.st | 2 +- .../instance/icon.st | 2 +- .../instance/methodReference.st | 2 +- .../instance/printOn..st | 2 +- .../methodProperties.json | 1 + .../instance/equalsCallgraphEntry..st | 4 +++ .../methodProperties.json | 1 + .../instance/^equals.st | 2 +- .../instance/enclosedSourceCode.st | 16 +++++++++ .../instance/hash.st | 2 +- .../instance/icon.st | 2 +- .../instance/id..st | 2 +- .../instance/id.st | 2 +- .../instance/methodReference..st | 2 +- .../instance/methodReference.st | 2 +- .../instance/printOn.type..st | 9 ++--- .../methodProperties.json | 3 +- .../properties.json | 3 +- .../instance/equalsCallgraphEntry..st | 5 +++ .../methodProperties.json | 1 + .../instance/equalsCallgraphEntry..st | 5 +++ .../methodProperties.json | 1 + .../instance/equalsCallgraphEntry..st | 4 +++ .../methodProperties.json | 1 + .../instance/equalsCallgraphEntry..st | 4 +++ .../methodProperties.json | 1 + .../class/alwaysGenerateCallgraph..st | 4 +++ .../class/alwaysGenerateCallgraph.st | 9 +++++ .../instance/currentCallgraph.st | 5 +++ ...atedExecuteWithCallgraphUsingSimulator.st} | 2 +- ...recatedTraceWithCallgraphUsingSimulator.st | 7 ++++ .../executeWithCallgraphusingSimulator.st | 13 -------- .../BPExample.class/instance/trace..st | 11 +++++++ .../BPExample.class/instance/trace.st | 4 +-- .../instance/traceAsyncNotifying..st | 4 --- .../traceAsyncNotifying.withCallgraph..st | 10 ++++++ .../instance/traceInBackground.st | 19 ++--------- .../traceInBackgroundWithCallgraph..st | 21 ++++++++++++ .../instance/traceWithCallgraph.st | 7 ---- .../traceWithCallgraphUsingByteCodeTracer.st | 9 ----- .../traceWithCallgraphUsingSimulator.st | 7 ---- .../BPExample.class/methodProperties.json | 18 +++++----- .../BPExample.class/properties.json | 2 +- .../instance/callgraph.st | 5 +++ .../instance/callgraphTracer..st | 5 +++ .../instance/callgraphTracer.st | 4 +++ .../instance/terminateTracingProcess.st | 5 +-- .../methodProperties.json | 5 ++- .../properties.json | 4 ++- .../README.md | 0 .../class/forExample..st | 4 +++ .../class/forExample.andCallgraph..st | 7 ++++ .../class/select.fromCallgraph.forExample..st | 9 +++++ .../class/selectedEntries.st | 4 +++ .../methodProperties.json | 8 +++++ .../properties.json | 14 ++++++++ .../BPTrace.class/instance/callgraph..st | 4 +++ .../BPTrace.class/instance/callgraph.st | 4 +++ .../BPTrace.class/instance/duration..st | 2 +- .../BPTrace.class/instance/duration.st | 2 +- .../BPTrace.class/instance/timing.st | 3 +- .../BPTrace.class/methodProperties.json | 4 ++- .../BPTrace.class/properties.json | 3 +- .../bpTraceAsyncForExample.notifying..st | 2 +- .../methodProperties.json | 2 +- .../class/value.during.inProcess..st | 15 +++++++++ .../methodProperties.json | 5 +++ .../DynamicVariable.extension/properties.json | 2 ++ .../instance/bottomBarText.st | 8 +++++ .../instance/buildButtonBarWith..st | 10 +++--- .../instance/buildWith..st | 2 +- .../instance/initialize.st | 5 +-- .../instance/openSelectionMenu.st | 33 +++++++++++++++++++ .../BPBrowserSidebar.class/instance/popout.st | 2 +- .../instance/postCopy.st | 2 +- .../instance/setExampleListIndex..st | 3 +- .../methodProperties.json | 8 +++-- .../instance/addEntryToGlobalSelection..st | 8 +++++ .../instance/callgraph.st | 6 ++-- .../methodProperties.json | 3 +- .../properties.json | 3 +- ...eprocessBottomEntriesForAncestorSearch..st | 8 +---- .../instance/topMenu.for..st | 9 ++++- .../methodProperties.json | 4 +-- .../instance/highlightTraceValue.id..st | 2 +- .../methodProperties.json | 2 +- .../instance/bottomMenu.for..st | 8 +++-- .../instance/topMenu.for..st | 11 +++++-- .../methodProperties.json | 4 +-- .../findCommonAncestorOfAllInvocations.st | 2 +- .../instance/menuOf..st | 8 ++++- .../methodProperties.json | 4 +-- .../instance/addCallgraphMorphs.st | 12 ++----- .../BPExampleMorph.class/instance/runOnce.st | 4 --- .../instance/viewCallgraph.st | 14 -------- .../instance/viewInSidebar.st | 4 +++ .../methodProperties.json | 5 ++- .../instance/newExampleLabelMorphFor..st | 18 +++++++--- .../instance/newLineMorphFor..st | 13 ++++++-- .../instance/valueMorphFor.trace..st | 5 +-- .../instance/viewCallgraphForTrace..st | 21 ------------ .../instance/viewCommonAncestorForTrace..st | 4 +-- .../BPProbeMorph.class/methodProperties.json | 9 +++-- 129 files changed, 452 insertions(+), 235 deletions(-) rename packages/Babylonian-Core.package/BPCallgraph.class/instance/{pathsIgnoringInvocationCountsBetween.andChildren..st => pathsBetween.andChildren..st} (69%) create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/selfOrParentMethodBlockOfBPProbeOrAssertion.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/selfOrParentMethodBlockOfBPProbeOrAssertion.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonianAssertion.class/instance/equalsCallgraphEntry..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/equalsCallgraphEntry..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonianProbe.class/instance/equalsCallgraphEntry..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/enclosedSourceCode.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/instance/equalsCallgraphEntry..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/instance/equalsCallgraphEntry..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/instance/equalsCallgraphEntry..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathPart.class/instance/equalsCallgraphEntry..st create mode 100644 packages/Babylonian-Core.package/BPExample.class/class/alwaysGenerateCallgraph..st create mode 100644 packages/Babylonian-Core.package/BPExample.class/class/alwaysGenerateCallgraph.st create mode 100644 packages/Babylonian-Core.package/BPExample.class/instance/currentCallgraph.st rename packages/Babylonian-Core.package/BPExample.class/instance/{executeWithCallgraph.st => deprecatedExecuteWithCallgraphUsingSimulator.st} (88%) create mode 100644 packages/Babylonian-Core.package/BPExample.class/instance/deprecatedTraceWithCallgraphUsingSimulator.st delete mode 100644 packages/Babylonian-Core.package/BPExample.class/instance/executeWithCallgraphusingSimulator.st create mode 100644 packages/Babylonian-Core.package/BPExample.class/instance/trace..st delete mode 100644 packages/Babylonian-Core.package/BPExample.class/instance/traceAsyncNotifying..st create mode 100644 packages/Babylonian-Core.package/BPExample.class/instance/traceAsyncNotifying.withCallgraph..st create mode 100644 packages/Babylonian-Core.package/BPExample.class/instance/traceInBackgroundWithCallgraph..st delete mode 100644 packages/Babylonian-Core.package/BPExample.class/instance/traceWithCallgraph.st delete mode 100644 packages/Babylonian-Core.package/BPExample.class/instance/traceWithCallgraphUsingByteCodeTracer.st delete mode 100644 packages/Babylonian-Core.package/BPExample.class/instance/traceWithCallgraphUsingSimulator.st create mode 100644 packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/callgraph.st create mode 100644 packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/callgraphTracer..st create mode 100644 packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/callgraphTracer.st create mode 100644 packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/README.md create mode 100644 packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/class/forExample..st create mode 100644 packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/class/forExample.andCallgraph..st create mode 100644 packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/class/select.fromCallgraph.forExample..st create mode 100644 packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/class/selectedEntries.st create mode 100644 packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/properties.json create mode 100644 packages/Babylonian-Core.package/BPTrace.class/instance/callgraph..st create mode 100644 packages/Babylonian-Core.package/BPTrace.class/instance/callgraph.st create mode 100644 packages/Babylonian-Core.package/DynamicVariable.extension/class/value.during.inProcess..st create mode 100644 packages/Babylonian-Core.package/DynamicVariable.extension/methodProperties.json create mode 100644 packages/Babylonian-Core.package/DynamicVariable.extension/properties.json create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/bottomBarText.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/openSelectionMenu.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/addEntryToGlobalSelection..st delete mode 100644 packages/Babylonian-UI.package/BPExampleMorph.class/instance/runOnce.st delete mode 100644 packages/Babylonian-UI.package/BPExampleMorph.class/instance/viewCallgraph.st create mode 100644 packages/Babylonian-UI.package/BPExampleMorph.class/instance/viewInSidebar.st delete mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/viewCallgraphForTrace..st diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st index 078bc5a5..ba914127 100644 --- a/packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st @@ -3,9 +3,6 @@ commonAncestorOf: aCollection ignoringInvocationCounts: aBoolean | theAncestor possibleAncestors | aCollection ifEmpty: [^ nil]. - "aCollection size == 1 ifTrue: [| path | - path := aCollection first pathWithoutContextMovingRight allButLast. - ^ path ifEmpty: [nil] ifNotEmpty: [path last]]." possibleAncestors := aCollection first pathWithoutContextMovingRight allButLast. diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/pathsIgnoringInvocationCountsBetween.andChildren..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/pathsBetween.andChildren..st similarity index 69% rename from packages/Babylonian-Core.package/BPCallgraph.class/instance/pathsIgnoringInvocationCountsBetween.andChildren..st rename to packages/Babylonian-Core.package/BPCallgraph.class/instance/pathsBetween.andChildren..st index 9856dd3e..9ab21df0 100644 --- a/packages/Babylonian-Core.package/BPCallgraph.class/instance/pathsIgnoringInvocationCountsBetween.andChildren..st +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/pathsBetween.andChildren..st @@ -1,9 +1,9 @@ finding ancestors -pathsIgnoringInvocationCountsBetween: ancestor andChildren: aCollection +pathsBetween: ancestor andChildren: aCollection ^ (aCollection collect: [:each | | rootPath path ancestorIndex | rootPath := each pathWithoutContextMovingRight. ancestorIndex := rootPath findLast: [:entry | entry class == BPCallgraphEntryEnter and: [ancestor equalsClassSelectorBlockIdx: entry]]. self assert: ancestorIndex > 0. path := rootPath copyFrom: ancestorIndex to: rootPath size. - path collect: #asPathPart]) withoutDuplicates \ No newline at end of file + (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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json index b2744455..98d5ecf2 100644 --- a/packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json @@ -5,7 +5,7 @@ "addRoot:" : "cmfcmf 10/27/2020 14:10", "allInvocationsOf:" : "cmfcmf 11/3/2020 13:57", "babylonianEntries" : "cmfcmf 10/28/2020 11:01", - "commonAncestorOf:ignoringInvocationCounts:" : "cmfcmf 11/5/2020 12:17", + "commonAncestorOf:ignoringInvocationCounts:" : "cmfcmf 11/10/2020 12:10", "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", @@ -19,6 +19,6 @@ "do:between:and:" : "cmfcmf 11/2/2020 20:20", "do:entry:" : "cmfcmf 10/27/2020 14:48", "initialize" : "cmfcmf 10/27/2020 14:14", - "pathsIgnoringInvocationCountsBetween:andChildren:" : "cmfcmf 11/5/2020 12:56", + "pathsBetween:andChildren:" : "cmfcmf 11/10/2020 10:52", "roots" : "cmfcmf 10/27/2020 14:11", "select:" : "cmfcmf 10/28/2020 10:47" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/children.st b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/children.st index c3ee145c..b5500d66 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/children.st +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/children.st @@ -1,4 +1,4 @@ as yet unclassified children - ^ children "reject: [:child | child isKindOf: BPCallgraphEntryExit]" \ No newline at end of file + ^ children \ 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 index d987579a..6db6d0c6 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/menu..st +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/menu..st @@ -1,4 +1,4 @@ as yet unclassified menu: aMenuMorph - - ^ aMenuMorph \ No newline at end of file + + \ 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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntry.class/methodProperties.json index b09e3a12..1c0ed899 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntry.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/methodProperties.json @@ -3,19 +3,20 @@ }, "instance" : { "addChild:" : "cmfcmf 10/27/2020 14:01", - "children" : "cmfcmf 10/26/2020 12:18", + "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", - "menu:" : "cmfcmf 10/27/2020 16:12", + "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", "pathWithoutContextMovingRight" : "cmfcmf 11/3/2020 13:50", "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/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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/methodProperties.json index d7b6f218..b0cb366b 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/methodProperties.json @@ -8,4 +8,5 @@ "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/BPCallgraphEntryContextExecutionContinuation.class/instance/menu..st b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/menu..st index dec65827..9d6afd52 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/menu..st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/menu..st @@ -2,4 +2,4 @@ as yet unclassified menu: aMenuMorph aMenuMorph add: 'go to context sender change' action: #selectContextSenderChange. - ^ aMenuMorph \ No newline at end of file + super menu: aMenuMorph. \ 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 index ca0e28dc..ce798e12 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/methodProperties.json @@ -7,5 +7,5 @@ "contextSenderChangedEntry:" : "cmfcmf 11/2/2020 17:15", "doBrowse" : "cmfcmf 10/23/2020 15:42", "label" : "cmfcmf 10/26/2020 12:09", - "menu:" : "cmfcmf 10/27/2020 17:17", + "menu:" : "cmfcmf 11/9/2020 16:43", "textColor" : "cmfcmf 11/3/2020 12:52" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/menu..st b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/menu..st index a412e7c1..801ac47b 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/menu..st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/menu..st @@ -3,4 +3,4 @@ menu: aMenuMorph aMenuMorph add: 'go to execution continuation' action: #selectExecutionContinuation. aMenuMorph add: 'go to context sender change' action: #selectContextSenderChange. - ^ aMenuMorph \ No newline at end of file + super menu: aMenuMorph. \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/methodProperties.json index 06bbb9df..ed2a3c68 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/methodProperties.json @@ -5,5 +5,5 @@ "doBrowse" : "cmfcmf 11/2/2020 17:31", "executionContinuationEntry" : "cmfcmf 11/2/2020 17:17", "label" : "cmfcmf 10/26/2020 12:09", - "menu:" : "cmfcmf 10/27/2020 17:17", + "menu:" : "cmfcmf 11/9/2020 16:43", "textColor" : "cmfcmf 11/3/2020 12:52" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/menu..st b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/menu..st index 6669af47..e21f53d2 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/menu..st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/menu..st @@ -2,4 +2,4 @@ as yet unclassified menu: aMenuMorph aMenuMorph add: 'go to execution continuation' action: #selectExecutionContinuation. - ^ aMenuMorph \ No newline at end of file + super menu: aMenuMorph. \ 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 index a2377f80..ca3a0a60 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/methodProperties.json @@ -8,5 +8,5 @@ "doBrowse" : "cmfcmf 10/23/2020 15:42", "executionContinuationEntry" : "cmfcmf 11/2/2020 17:13", "label" : "cmfcmf 11/3/2020 17:43", - "menu:" : "cmfcmf 10/27/2020 17:16", + "menu:" : "cmfcmf 11/9/2020 16:43", "textColor" : "cmfcmf 11/4/2020 13:18" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/menu..st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/menu..st index bd0f39f9..08bd1e93 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/menu..st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/menu..st @@ -20,4 +20,4 @@ menu: aMenuMorph aMenuMorph addLine. aMenuMorph add: 'find common ancestor of all invocations' action: #findCommonAncestorOfAllInvocations. - ^ aMenuMorph \ No newline at end of file + super menu: aMenuMorph \ 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 index 2c0bf836..b112358c 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/methodProperties.json @@ -14,6 +14,6 @@ "getSelector" : "cmfcmf 10/27/2020 16:48", "icon" : "cmfcmf 10/23/2020 16:27", "label" : "cmfcmf 10/26/2020 12:00", - "menu:" : "cmfcmf 11/3/2020 13:55", + "menu:" : "cmfcmf 11/9/2020 16:44", "methodReference" : "cmfcmf 10/30/2020 14:53", "textColor" : "cmfcmf 11/3/2020 12:53" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/menu..st b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/menu..st index c0beca72..ef17df5a 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/menu..st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/menu..st @@ -3,4 +3,4 @@ menu: aMenuMorph blockIndex > 1 ifTrue: [aMenuMorph add: 'find block enter' action: #selectCorrespondingBlockEnter]. aMenuMorph add: 'find method enter' action: #selectCorrespondingMethodEnter. - ^ aMenuMorph \ No newline at end of file + 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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/methodProperties.json index 54bcb82d..b3dc7b29 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/methodProperties.json @@ -5,5 +5,5 @@ "asPathPart" : "cmfcmf 11/3/2020 13:44", "class:selector:blockIdx:invocationCount:returns:" : "cmfcmf 10/22/2020 13:42", "label" : "cmfcmf 10/22/2020 14:17", - "menu:" : "cmfcmf 11/2/2020 13:59", + "menu:" : "cmfcmf 11/9/2020 16:45", "textColor" : "cmfcmf 10/23/2020 16:15" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonian.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphPathBabylonian.class/properties.json index 36d2a312..9698ad38 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathBabylonian.class/properties.json +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonian.class/properties.json @@ -10,5 +10,5 @@ "name" : "BPCallgraphPathBabylonian", "pools" : [ ], - "super" : "BPCallgraphPathPart", + "super" : "BPCallgraphPathCustomEvent", "type" : "normal" } 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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianAssertion.class/methodProperties.json index 9bd48cd6..aa507c65 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianAssertion.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianAssertion.class/methodProperties.json @@ -2,4 +2,5 @@ "class" : { }, "instance" : { + "equalsCallgraphEntry:" : "cmfcmf 11/10/2020 10:17", "printOn:" : "cmfcmf 11/4/2020 14:30" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/^equals.st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/^equals.st index 9254e5c1..9cd9be45 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/^equals.st +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/^equals.st @@ -1,4 +1,4 @@ -as yet unclassified +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 index 38c5d631..18392495 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/example..st +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/example..st @@ -1,4 +1,4 @@ -as yet unclassified +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 index 2e625d5f..5da5af96 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/example.st +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/example.st @@ -1,4 +1,4 @@ -as yet unclassified +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 index f093052b..1ead3527 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/hash.st +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/hash.st @@ -1,4 +1,4 @@ -as yet unclassified +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 index 8b9a8b1e..06385969 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/icon.st +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/icon.st @@ -1,4 +1,4 @@ -as yet unclassified +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 index fce5f4b4..82dcb929 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/methodReference.st +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/methodReference.st @@ -1,4 +1,4 @@ -as yet unclassified +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 index a5ace3ad..8a138f3c 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/printOn..st +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/instance/printOn..st @@ -1,4 +1,4 @@ -as yet unclassified +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 index 287eada9..f56b1eeb 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianExample.class/methodProperties.json @@ -3,6 +3,7 @@ }, "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", 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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianProbe.class/methodProperties.json index 9bd48cd6..b8c4a529 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianProbe.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianProbe.class/methodProperties.json @@ -2,4 +2,5 @@ "class" : { }, "instance" : { + "equalsCallgraphEntry:" : "cmfcmf 11/10/2020 10:18", "printOn:" : "cmfcmf 11/4/2020 14:30" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/^equals.st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/^equals.st index a555acfb..8593a540 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/^equals.st +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/^equals.st @@ -1,4 +1,4 @@ -as yet unclassified +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..4771b57f --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/enclosedSourceCode.st @@ -0,0 +1,16 @@ +as yet unclassified +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 index 372d1125..a6b9bf5e 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/hash.st +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/hash.st @@ -1,4 +1,4 @@ -as yet unclassified +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 index 1e5bf7fd..e41c56d4 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/icon.st +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/icon.st @@ -1,4 +1,4 @@ -as yet unclassified +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 index b2561372..3f4f338b 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/id..st +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/id..st @@ -1,4 +1,4 @@ -as yet unclassified +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 index f1bc2330..44798f6f 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/id.st +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/id.st @@ -1,4 +1,4 @@ -as yet unclassified +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 index 57217edb..3c15a5e5 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/methodReference..st +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/methodReference..st @@ -1,4 +1,4 @@ -as yet unclassified +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 index cc018046..bf32ce67 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/methodReference.st +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/methodReference.st @@ -1,4 +1,4 @@ -as yet unclassified +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 index 42951620..b0ca6320 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/printOn.type..st +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/printOn.type..st @@ -1,11 +1,12 @@ -as yet unclassified +printing printOn: aStream type: aString aStream nextPutAll: aString; - nextPutAll: ' '; - nextPutAll: id asString; nextPutAll: ' in '; nextPutAll: methodReference classSymbol; nextPutAll: ' #'; - nextPutAll: methodReference selector \ No newline at end of file + nextPutAll: methodReference selector; + nextPutAll: ' '; + "nextPutAll: id asString;" + nextPutAll: self enclosedSourceCode \ 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 index 53babaa2..06755e4b 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/methodProperties.json @@ -3,10 +3,11 @@ }, "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 11/4/2020 14:39" } } + "printOn:type:" : "cmfcmf 11/9/2020 11:55" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/properties.json index 4918abaa..ce7aaba2 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/properties.json +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/properties.json @@ -7,7 +7,8 @@ "commentStamp" : "", "instvars" : [ "id", - "methodReference" ], + "methodReference", + "enclosedSourceCode" ], "name" : "BPCallgraphPathBabylonianTraceBased", "pools" : [ ], 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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/methodProperties.json index 360b41c9..fb59b1a0 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphPathContextExecutionContinuation.class/methodProperties.json @@ -4,6 +4,7 @@ "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/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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/methodProperties.json index 788435b2..8463684c 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphPathContextSenderChanged.class/methodProperties.json @@ -4,6 +4,7 @@ "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/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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/methodProperties.json index 4b075f7e..587fd9fd 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphPathMethodExecution.class/methodProperties.json @@ -5,6 +5,7 @@ "=" : "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", 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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphPathPart.class/methodProperties.json index c96f37c4..fbdc2159 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathPart.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphPathPart.class/methodProperties.json @@ -4,6 +4,7 @@ "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", 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/currentCallgraph.st b/packages/Babylonian-Core.package/BPExample.class/instance/currentCallgraph.st new file mode 100644 index 00000000..7ebe2c31 --- /dev/null +++ b/packages/Babylonian-Core.package/BPExample.class/instance/currentCallgraph.st @@ -0,0 +1,5 @@ +tracing +currentCallgraph + + + ^ traceInformation callgraph \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExample.class/instance/executeWithCallgraph.st b/packages/Babylonian-Core.package/BPExample.class/instance/deprecatedExecuteWithCallgraphUsingSimulator.st similarity index 88% rename from packages/Babylonian-Core.package/BPExample.class/instance/executeWithCallgraph.st rename to packages/Babylonian-Core.package/BPExample.class/instance/deprecatedExecuteWithCallgraphUsingSimulator.st index 65c8fda0..7659636e 100644 --- a/packages/Babylonian-Core.package/BPExample.class/instance/executeWithCallgraph.st +++ b/packages/Babylonian-Core.package/BPExample.class/instance/deprecatedExecuteWithCallgraphUsingSimulator.st @@ -1,5 +1,5 @@ tracing -executeWithCallgraph +deprecatedExecuteWithCallgraphUsingSimulator | receiver arguments selector block graph trace | 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/executeWithCallgraphusingSimulator.st b/packages/Babylonian-Core.package/BPExample.class/instance/executeWithCallgraphusingSimulator.st deleted file mode 100644 index ba1f7a73..00000000 --- a/packages/Babylonian-Core.package/BPExample.class/instance/executeWithCallgraphusingSimulator.st +++ /dev/null @@ -1,13 +0,0 @@ -tracing -executeWithCallgraphusingSimulator - - | 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/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 f95eaefe..00000000 --- a/packages/Babylonian-Core.package/BPExample.class/instance/traceAsyncNotifying..st +++ /dev/null @@ -1,4 +0,0 @@ -tracing -traceAsyncNotifying: requestorBlock - - ^ [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..236b48d3 --- /dev/null +++ b/packages/Babylonian-Core.package/BPExample.class/instance/traceAsyncNotifying.withCallgraph..st @@ -0,0 +1,10 @@ +tracing +traceAsyncNotifying: requestorBlock withCallgraph: aSymbol + + aSymbol caseOf: { + [#none] -> [^ [self execute] bpTraceAsyncForExample: self notifying: requestorBlock]. + [#byteCode] -> [ | callgraphTracer | + callgraphTracer := BPByteCodeCallgraphTracer new. + callgraphTracer customEvent: #bpExample data: self. + BPByteCodeCallgraphTracer value: callgraphTracer during: [ + [self execute] bpTraceAsyncForExample: self notifying: [:tuple | requestorBlock value: {tuple 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 5dc87dd0..450d92b8 100644 --- a/packages/Babylonian-Core.package/BPExample.class/instance/traceInBackground.st +++ b/packages/Babylonian-Core.package/BPExample.class/instance/traceInBackground.st @@ -1,19 +1,4 @@ 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..e45427b8 --- /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. + 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/instance/traceWithCallgraph.st b/packages/Babylonian-Core.package/BPExample.class/instance/traceWithCallgraph.st deleted file mode 100644 index 5265c117..00000000 --- a/packages/Babylonian-Core.package/BPExample.class/instance/traceWithCallgraph.st +++ /dev/null @@ -1,7 +0,0 @@ -tracing -traceWithCallgraph - - | graph | - graph := self executeWithCallgraph. - traceInformation trace: graph trace. - ^ graph \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExample.class/instance/traceWithCallgraphUsingByteCodeTracer.st b/packages/Babylonian-Core.package/BPExample.class/instance/traceWithCallgraphUsingByteCodeTracer.st deleted file mode 100644 index 96671fb3..00000000 --- a/packages/Babylonian-Core.package/BPExample.class/instance/traceWithCallgraphUsingByteCodeTracer.st +++ /dev/null @@ -1,9 +0,0 @@ -tracing -traceWithCallgraphUsingByteCodeTracer - - | tracer | - tracer := BPByteCodeCallgraphTracer new. - BPByteCodeCallgraphTracer value: tracer during: [ - BPByteCodeCallgraphTracer customEvent: #bpExample data: self. - self trace]. - ^ tracer \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExample.class/instance/traceWithCallgraphUsingSimulator.st b/packages/Babylonian-Core.package/BPExample.class/instance/traceWithCallgraphUsingSimulator.st deleted file mode 100644 index fb9c5018..00000000 --- a/packages/Babylonian-Core.package/BPExample.class/instance/traceWithCallgraphUsingSimulator.st +++ /dev/null @@ -1,7 +0,0 @@ -tracing -traceWithCallgraphUsingSimulator - - | graph | - graph := self executeWithCallgraph. - traceInformation trace: graph trace. - ^ graph \ 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 a92a2ab2..83b39d50 100644 --- a/packages/Babylonian-Core.package/BPExample.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPExample.class/methodProperties.json @@ -1,5 +1,7 @@ { "class" : { + "alwaysGenerateCallgraph" : "cmfcmf 11/9/2020 14:53", + "alwaysGenerateCallgraph:" : "cmfcmf 11/9/2020 14:51", "bpExamplePragmaSelectors" : "pre 9/30/2020 10:08", "fromPragma:" : "pre 9/30/2020 10:20", "newFor:" : "pre 9/30/2020 11:08" }, @@ -12,14 +14,15 @@ "asPragma" : "pre 9/30/2020 10:48", "canBeUsedForDoIts" : "pre 10/6/2020 09:17", "color" : "pre 9/30/2020 09:50", + "currentCallgraph" : "cmfcmf 11/9/2020 15:27", "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:" : "pre 9/30/2020 09:50", "exampleReference" : "pre 9/30/2020 09:53", "execute" : "pre 9/30/2020 09:54", - "executeWithCallgraph" : "cmfcmf 9/23/2020 15:49", - "executeWithCallgraphusingSimulator" : "cmfcmf 10/23/2020 15:05", "hash" : "pre 9/30/2020 09:54", "initialize" : "pre 9/30/2020 09:55", "initializeFromMethod:" : "pre 9/30/2020 11:09", @@ -38,11 +41,10 @@ "receiverConstructor:" : "pre 5/17/2019 14:06", "resolveLiveSpecimen:" : "pre 7/10/2020 18:22", "toggleIsActive" : "pre 10/23/2020 10:16", - "trace" : "pre 9/30/2020 09:55", - "traceAsyncNotifying:" : "pre 9/30/2020 09:55", - "traceInBackground" : "pre 9/30/2020 09:55", + "trace" : "cmfcmf 11/9/2020 15:02", + "trace:" : "cmfcmf 11/9/2020 15:10", + "traceAsyncNotifying:withCallgraph:" : "cmfcmf 11/9/2020 15:18", + "traceInBackground" : "cmfcmf 11/10/2020 11:34", + "traceInBackgroundWithCallgraph:" : "cmfcmf 11/10/2020 11:34", "traceToHaltAt:" : "pre 9/30/2020 09:55", - "traceWithCallgraph" : "cmfcmf 9/23/2020 13:24", - "traceWithCallgraphUsingByteCodeTracer" : "cmfcmf 10/28/2020 12:30", - "traceWithCallgraphUsingSimulator" : "cmfcmf 10/23/2020 15:26", "uniqueIdentifier" : "pre 9/30/2020 09:55" } } diff --git a/packages/Babylonian-Core.package/BPExample.class/properties.json b/packages/Babylonian-Core.package/BPExample.class/properties.json index a6945483..10638cc9 100644 --- a/packages/Babylonian-Core.package/BPExample.class/properties.json +++ b/packages/Babylonian-Core.package/BPExample.class/properties.json @@ -3,7 +3,7 @@ "classinstvars" : [ ], "classvars" : [ - ], + "AlwaysGenerateCallgraph" ], "commentStamp" : "pre 8/20/2020 10:29", "instvars" : [ "isActive", 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..04ca7b0d --- /dev/null +++ b/packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/callgraph.st @@ -0,0 +1,5 @@ +as yet unclassified +callgraph + + callgraph ifNotNil: [^ callgraph]. + ^ callgraph := callgraphTracer eventsForTree \ 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 fdd3340c..448db14f 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: [:p | p 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] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExampleTraceInformation.class/methodProperties.json b/packages/Babylonian-Core.package/BPExampleTraceInformation.class/methodProperties.json index 1df1b99c..b74ca7d5 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" : "pre 8/20/2020 10:37", + "callgraph" : "cmfcmf 11/9/2020 15:23", + "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/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/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..23dde2a8 --- /dev/null +++ b/packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/methodProperties.json @@ -0,0 +1,8 @@ +{ + "class" : { + "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/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 index 47a88899..21a2b869 100644 --- a/packages/Babylonian-Core.package/BPTrace.class/instance/duration..st +++ b/packages/Babylonian-Core.package/BPTrace.class/instance/duration..st @@ -1,4 +1,4 @@ -as yet unclassified +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 index b0a70366..3a4b0471 100644 --- a/packages/Babylonian-Core.package/BPTrace.class/instance/duration.st +++ b/packages/Babylonian-Core.package/BPTrace.class/instance/duration.st @@ -1,4 +1,4 @@ -as yet unclassified +accessing duration ^ duration \ 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 index 54b68f26..6e544282 100644 --- a/packages/Babylonian-Core.package/BPTrace.class/instance/timing.st +++ b/packages/Babylonian-Core.package/BPTrace.class/instance/timing.st @@ -4,7 +4,6 @@ timing | list | list := OrderedCollection new. self probes keysAndValuesDo: [:probeId :values | - values do: [:value | - list addLast: {probeId. value}]]. + 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 15f6eced..5859f660 100644 --- a/packages/Babylonian-Core.package/BPTrace.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPTrace.class/methodProperties.json @@ -5,6 +5,8 @@ "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", @@ -25,7 +27,7 @@ "resultsForAssertionId:" : "pre 11/18/2019 12:55", "runsForBlockId:" : "pre 9/25/2020 17:08", "stackFrom:" : "pre 9/28/2020 10:33", - "timing" : "cmfcmf 9/17/2020 13:14", + "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", diff --git a/packages/Babylonian-Core.package/BPTrace.class/properties.json b/packages/Babylonian-Core.package/BPTrace.class/properties.json index f1c2da71..b688e740 100644 --- a/packages/Babylonian-Core.package/BPTrace.class/properties.json +++ b/packages/Babylonian-Core.package/BPTrace.class/properties.json @@ -14,7 +14,8 @@ "exampleExecutionProcess", "hasTraceCompleted", "blockRecord", - "duration" ], + "duration", + "callgraph" ], "name" : "BPTrace", "pools" : [ ], 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 22866bd6..e377cb4a 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:" : "pre 10/12/2020 11:17" } } 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-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 index 17fe8edc..0c118eb6 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildButtonBarWith..st +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildButtonBarWith..st @@ -1,4 +1,4 @@ -buttons +bottom bar buildButtonBarWith: aBuilder ^ aBuilder pluggablePanelSpec new @@ -15,10 +15,10 @@ buildButtonBarWith: aBuilder action: [visualization callgraph explore]; yourself. aBuilder pluggableButtonSpec new - frame: (0.5@0 extent: 0.25@1); - yourself. - aBuilder pluggableButtonSpec new - frame: (0.75@0 extent: 0.25@1); + 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/buildWith..st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildWith..st index 5599e0fc..d0b1039b 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildWith..st +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildWith..st @@ -1,4 +1,4 @@ -as yet unclassified +toolbuilder buildWith: aBuilder | visualizationTypeHeight buttonBarHeight | diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/initialize.st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/initialize.st index eee911c6..ab5165ba 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/initialize.st +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/initialize.st @@ -2,8 +2,9 @@ initialize-release initialize - super initialize. exampleListIndex := 0. - visualizationTypeIndex := 0 \ No newline at end of file + visualizationTypeIndex := 0. + + 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..92a05b02 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/openSelectionMenu.st @@ -0,0 +1,33 @@ +bottom bar +openSelectionMenu + + | selection selectedEntries ancestor callgraph continue | + 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]. + + selectedEntries := selectedEntries asOrderedCollection collect: #selfOrParentMethodBlockOfBPProbeOrAssertion. + + ancestor := callgraph + commonAncestorOf: selectedEntries + ignoringInvocationCounts: selection == 1. + 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] -> [self triggerEvent: #browseMethod with: ancestor methodReference]. + [2] -> [| paths sortedPathsByChild | + paths := callgraph 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-UI.package/BPBrowserSidebar.class/instance/popout.st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/popout.st index dfddab37..e73dcd0c 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/popout.st +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/popout.st @@ -1,4 +1,4 @@ -buttons +as yet unclassified popout | builder instance spec windowSpec | diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/postCopy.st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/postCopy.st index e305f2dd..669567d2 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/postCopy.st +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/postCopy.st @@ -1,4 +1,4 @@ -as yet unclassified +copying postCopy visualization := visualization copy. diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/setExampleListIndex..st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/setExampleListIndex..st index 81e2c706..5ba17241 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/setExampleListIndex..st +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/setExampleListIndex..st @@ -4,4 +4,5 @@ setExampleListIndex: aNumber aNumber == exampleListIndex ifTrue: [^ self]. exampleListIndex := aNumber. self changed: #getExampleListIndex. - self changed: #visualizationMorphs \ No newline at end of file + self changed: #visualizationMorphs. + self changed: #bottomBarText \ 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 index afd940cb..342d7b3b 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json @@ -2,7 +2,8 @@ "class" : { }, "instance" : { - "buildButtonBarWith:" : "cmfcmf 11/2/2020 21:02", + "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", @@ -14,12 +15,13 @@ "getVisualizationTypeIndex" : "cmfcmf 10/30/2020 14:02", "getVisualizationTypeLabels" : "cmfcmf 10/30/2020 14:09", "getVisualizationTypes" : "cmfcmf 11/4/2020 15:02", - "initialize" : "cmfcmf 10/30/2020 14:03", + "initialize" : "cmfcmf 11/9/2020 16:32", + "openSelectionMenu" : "cmfcmf 11/10/2020 12:19", "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", - "setExampleListIndex:" : "cmfcmf 10/30/2020 16:08", + "setExampleListIndex:" : "cmfcmf 11/9/2020 16:29", "setVisualizationTypeIndex:" : "cmfcmf 10/30/2020 14:10", "showExample:id:traceValue:" : "cmfcmf 11/5/2020 13:01", "showMethod:" : "cmfcmf 11/2/2020 14:34", 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/callgraph.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/callgraph.st index b747c7d7..ea307bc2 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/callgraph.st +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/callgraph.st @@ -1,6 +1,4 @@ as yet unclassified callgraph - - callgraph ifNotNil: [^ callgraph]. - callgraph := self example traceWithCallgraphUsingByteCodeTracer eventsForTree. - ^ callgraph \ No newline at end of file + + ^ self example currentCallgraph \ 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 index 0ba420ea..050ac6aa 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/methodProperties.json @@ -2,9 +2,10 @@ "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 10/30/2020 14:39", + "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", diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/properties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/properties.json index f57ef1f8..55dd2faa 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/properties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/properties.json @@ -6,8 +6,7 @@ ], "commentStamp" : "", "instvars" : [ - "example", - "callgraph" ], + "example" ], "name" : "BPBrowserSidebarVisualization", "pools" : [ ], diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/preprocessBottomEntriesForAncestorSearch..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/preprocessBottomEntriesForAncestorSearch..st index 35c75e6a..98516c8b 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/preprocessBottomEntriesForAncestorSearch..st +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/preprocessBottomEntriesForAncestorSearch..st @@ -1,10 +1,4 @@ bottom content preprocessBottomEntriesForAncestorSearch: entries - ^ entries collect: [:entry | | parent | - parent := entry parent. - parent methodReference = entry methodReference - ifTrue: [ - "The probe/assertion's parent is the method/block the probe/assertion is defined in. Let's look for ancestors of that method/block instead of the probe, otherwise, the ancestor without context would always simply be the enclosing method/block, which doesn't really help. The user can easily see in which method they placed the probe/assertion." - entry parent] - ifFalse: [entry]] \ No newline at end of file + ^ entries collect: #selfOrParentMethodBlockOfBPProbeOrAssertion \ 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 index 9fd3ae27..7b073417 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/topMenu.for..st +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/topMenu.for..st @@ -2,7 +2,14 @@ list top topMenu: menu for: entry menu - add: 'browse' action: [self browseMethod: entry methodReference]; + 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, diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/methodProperties.json index e6701442..6ce61b2f 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/methodProperties.json @@ -5,7 +5,7 @@ "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/5/2020 12:46", + "preprocessBottomEntriesForAncestorSearch:" : "cmfcmf 11/10/2020 12:18", "selectMatchingEntriesFromCallgraph:" : "cmfcmf 11/5/2020 12:39", "topEntries" : "cmfcmf 11/4/2020 16:11", - "topMenu:for:" : "cmfcmf 11/4/2020 14:41" } } + "topMenu:for:" : "cmfcmf 11/10/2020 10:16" } } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/highlightTraceValue.id..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/highlightTraceValue.id..st index d221046b..f68c2b38 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/highlightTraceValue.id..st +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/highlightTraceValue.id..st @@ -1,7 +1,7 @@ toolbuilder highlightTraceValue: aBPTraceValue id: aNumber - callgraph babylonianEntries detect: [:each | + 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/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/methodProperties.json index 66f11d5d..85f7cd30 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/methodProperties.json @@ -4,4 +4,4 @@ "instance" : { "buildWith:" : "cmfcmf 10/30/2020 16:16", "highlightMethod:" : "cmfcmf 11/2/2020 14:27", - "highlightTraceValue:id:" : "cmfcmf 11/5/2020 13:01" } } + "highlightTraceValue:id:" : "cmfcmf 11/9/2020 15:33" } } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomMenu.for..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomMenu.for..st index b82690b5..57c627a4 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomMenu.for..st +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/bottomMenu.for..st @@ -8,10 +8,14 @@ bottomMenu: aMenuMorph for: entry allInvocations := self callgraph allInvocationsOf: entry. ancestor := self callgraph commonAncestorOf: allInvocations ignoringInvocationCounts: true. ancestor ifNil: [^ UIManager default inform: 'No common ancestor found']. - paths := self callgraph pathsIgnoringInvocationCountsBetween: ancestor andChildren: allInvocations. + paths := self callgraph pathsBetween: ancestor andChildren: allInvocations. paths explore]]. (entry respondsTo: #methodReference) ifTrue: [ aMenuMorph add: 'browse' - action: [self browseMethod: entry methodReference]] \ No newline at end of file + 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/topMenu.for..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/topMenu.for..st index 685d5ecf..6536f0fe 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/topMenu.for..st +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/topMenu.for..st @@ -2,11 +2,18 @@ list top topMenu: menu for: entry menu - add: 'browse' action: [self browseMethod: entry methodReference]; + 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 + action: [self sortTopEntries: #getBlockIdx ascending]. \ 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 index 13fe6001..2ab0fdc0 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/methodProperties.json @@ -10,7 +10,7 @@ "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/4/2020 13:52", + "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 11/6/2020 15:53", @@ -21,5 +21,5 @@ "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/4/2020 13:50", + "topMenu:for:" : "cmfcmf 11/10/2020 10:09", "topTextAttributesFor:" : "cmfcmf 11/4/2020 13:24" } } diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/findCommonAncestorOfAllInvocations.st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/findCommonAncestorOfAllInvocations.st index 661819d9..30adb8cb 100644 --- a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/findCommonAncestorOfAllInvocations.st +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/findCommonAncestorOfAllInvocations.st @@ -7,5 +7,5 @@ findCommonAncestorOfAllInvocations allInvocations := callgraph allInvocationsOf: selected. ancestor := callgraph commonAncestorOf: allInvocations ignoringInvocationCounts: true. ancestor ifNil: [^ UIManager default inform: 'No common ancestor found']. - paths := callgraph pathsIgnoringInvocationCountsBetween: ancestor andChildren: allInvocations. + paths := callgraph pathsBetween: ancestor andChildren: allInvocations. paths explore \ 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 index 6bfdb029..42215b74 100644 --- a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/menuOf..st +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/menuOf..st @@ -3,4 +3,10 @@ menuOf: aMenuMorph | entry | entry := self getSelectedEntry. - ^ entry menu: aMenuMorph \ No newline at end of file + 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/methodProperties.json b/packages/Babylonian-UI.package/BPCallgraphModel.class/methodProperties.json index 73dca67f..0f75ff3e 100644 --- a/packages/Babylonian-UI.package/BPCallgraphModel.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/methodProperties.json @@ -7,14 +7,14 @@ "callgraph:" : "cmfcmf 10/27/2020 14:12", "childrenOf:" : "cmfcmf 11/6/2020 14:29", "doubleClick:" : "cmfcmf 10/30/2020 14:57", - "findCommonAncestorOfAllInvocations" : "cmfcmf 11/3/2020 14:00", + "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 10/26/2020 13:03", "labelOf:" : "cmfcmf 10/22/2020 13:23", - "menuOf:" : "cmfcmf 10/27/2020 16:14", + "menuOf:" : "cmfcmf 11/9/2020 16:48", "rootEntries" : "cmfcmf 11/6/2020 14:28", "selectContextSenderChange" : "cmfcmf 10/27/2020 17:17", "selectCorrespondingBlockEnter" : "cmfcmf 11/2/2020 14:07", diff --git a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/addCallgraphMorphs.st b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/addCallgraphMorphs.st index 17c18be4..4d8f542b 100644 --- a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/addCallgraphMorphs.st +++ b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/addCallgraphMorphs.st @@ -14,15 +14,7 @@ addCallgraphMorphs hResizing: #shrinkWrap; vResizing: #shrinkWrap; name: #contextTrace; - label: 'view callgraph'; + label: 'view in sidebar'; target: self; - actionSelector: #viewCallgraph - yourself). - self addMorphBack: (SimpleButtonMorph new - hResizing: #shrinkWrap; - vResizing: #shrinkWrap; - name: #contextTrace; - label: 'run once'; - target: self; - actionSelector: #runOnce + actionSelector: #viewInSidebar yourself). \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/runOnce.st b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/runOnce.st deleted file mode 100644 index 058a2e14..00000000 --- a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/runOnce.st +++ /dev/null @@ -1,4 +0,0 @@ -as yet unclassified -runOnce - - self example traceInBackground \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/viewCallgraph.st b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/viewCallgraph.st deleted file mode 100644 index ea1b07c4..00000000 --- a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/viewCallgraph.st +++ /dev/null @@ -1,14 +0,0 @@ -as yet unclassified -viewCallgraph - - | tracer explorer | - tracer := self example traceWithCallgraphUsingByteCodeTracer. - explorer := BPCallgraphExplorer open. - explorer loadFromCallgraphTracer: tracer. - - "| graph str | - - graph := self example traceWithCallgraphUsingSimulator. - str := graph eventsToString. - str toTmpFile. - graph explore." \ 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 876d3345..ae0ceda3 100644 --- a/packages/Babylonian-UI.package/BPExampleMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPExampleMorph.class/methodProperties.json @@ -5,7 +5,7 @@ "activateExampleButtonClicked" : "pre 10/23/2020 12:03", "addActivationButtonMorph" : "pre 9/30/2020 10:35", "addArgumentScriptMorphs" : "pre 8/25/2020 10:23", - "addCallgraphMorphs" : "cmfcmf 9/18/2020 11:09", + "addCallgraphMorphs" : "cmfcmf 11/10/2020 10:59", "addDeleteButtonMorph" : "pre 9/30/2020 10:35", "addExampleNameMorph" : "pre 10/6/2020 10:27", "addExampleSpecificMorphs" : "pre 9/30/2020 10:37", @@ -19,9 +19,8 @@ "isExample" : "pre 9/30/2020 10:34", "isExampleActive" : "pre 9/30/2020 10:34", "removeButtonClicked" : "pre 9/30/2020 10:35", - "runOnce" : "cmfcmf 9/18/2020 11:10", "selectLiveSpecimenThen:" : "pre 7/10/2020 18:24", "step" : "cmfcmf 10/30/2020 12:43", "textEmphasis" : "pre 9/30/2020 10:35", "updateMorphs" : "cmfcmf 10/30/2020 12:28", - "viewCallgraph" : "cmfcmf 10/27/2020 14:27" } } + "viewInSidebar" : "cmfcmf 11/10/2020 11:01" } } diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExampleLabelMorphFor..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExampleLabelMorphFor..st index 1eeadb81..83090058 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExampleLabelMorphFor..st +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExampleLabelMorphFor..st @@ -1,12 +1,20 @@ private - ui newExampleLabelMorphFor: aTrace - + | exampleLabel | exampleLabel := aTrace example exampleName asText. - exampleLabel addAttribute: (BPPluggableTextAttribute new evalBlock: [ - ToolSet - browse: aTrace example method methodClass - selector: aTrace example method selector asSymbol]). + exampleLabel addAttribute: (BPPluggableTextAttribute new evalBlock: [ | selection | + selection := MenuMorph + chooseFrom: {'browse example' . 'browse example in new window' . 'disable example' . 'view example in sidebar' . 'open callgraph in new window'} + lines: {3} + title: 'Select action'. + selection caseOf: { + [1] -> [self containingBrowser browseReference: aTrace example method methodReference]. + [2] -> ["indirect through methodReference to call browse on the CSLayeredMethod instead of the CompiledMethod (otherwise the browser will not be able to open correctly)" + aTrace example method methodReference browse]. + [3] -> [aTrace example isActive: false]. + [4] -> [self containingBrowser sidebarShowExample: aTrace example id: self id traceValue: nil]. + [5] -> [BPCallgraphExplorer open loadFromCallgraph: aTrace example currentCallgraph]} otherwise: []]). ^ (TextMorph new) contents: exampleLabel; color: aTrace example color; diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newLineMorphFor..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newLineMorphFor..st index 9fb01f08..dc263919 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newLineMorphFor..st +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newLineMorphFor..st @@ -36,9 +36,18 @@ newLineMorphFor: aTrace newLine addMorphBack: (SimpleButtonMorph new hResizing: #shrinkWrap; "vResizing: #shrinkWrap;" - label: 'view callgraph'; + label: 'select this'; target: self; - actionSelector: #viewCallgraphForTrace:; + actionSelector: #selectForAncestor:; + arguments: {aTrace}; + yourself). + + newLine addMorphBack: (SimpleButtonMorph new + hResizing: #shrinkWrap; + "vResizing: #shrinkWrap;" + label: 'get ancestors now'; + target: self; + actionSelector: #debugdonow:; arguments: {aTrace}; yourself). diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valueMorphFor.trace..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valueMorphFor.trace..st index cc5cd2dd..3b992801 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valueMorphFor.trace..st +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valueMorphFor.trace..st @@ -4,10 +4,11 @@ valueMorphFor: traceValue trace: trace | morph | morph := traceValue tracedValue bpProbeValueMorphIn: traceValue. morph on: #click send: #value to: [ | selection | - selection := MenuMorph chooseFrom: {'explore' . 'inspect' . 'browse' . 'view in callgraph'} lines: {3} title: 'Select action'. + selection := MenuMorph chooseFrom: {'explore' . 'inspect' . 'browse' . 'view in sidebar' . 'select in callgraph'} lines: {3} title: 'Select action'. selection caseOf: { [1] -> [traceValue tracedValue explore]. [2] -> [traceValue tracedValue inspect]. [3] -> [traceValue tracedValue browse]. - [4] -> [self containingBrowser sidebarShowExample: trace example id: self id traceValue: traceValue]} otherwise: []]. + [4] -> [self containingBrowser sidebarShowExample: trace example id: self id traceValue: traceValue]. + [5] -> [self error: 'not implemented']} otherwise: []]. ^ morph \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/viewCallgraphForTrace..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/viewCallgraphForTrace..st deleted file mode 100644 index 7e1a3432..00000000 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/viewCallgraphForTrace..st +++ /dev/null @@ -1,21 +0,0 @@ -private - ui -viewCallgraphForTrace: aTrace - - | values index callgraph explorer | - values := aTrace valuesForProbeId: self id. - index := UIManager default - chooseFrom: (values withIndexCollect: [:v :i | '#', i, ': ', (v tracedValue)]), {'at the top'} - values: (values withIndexCollect: [:v :i | i]), {0} - title: 'At which invocation do you want to open the callgraph?'. - index ifNil: [^ self]. - - callgraph := aTrace example traceWithCallgraphUsingByteCodeTracer eventsForTree. - explorer := BPCallgraphExplorer open. - explorer loadFromCallgraph: callgraph. - index > 0 ifTrue: [ | entry n | - n := 0. - entry := callgraph babylonianEntries detect: [:each | - ((each class == BPCallgraphEntryBPProbe) and: [each id == self id]) - ifTrue: [(n := n + 1) == index] - ifFalse: [false]]. - explorer selectEntry: entry] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/viewCommonAncestorForTrace..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/viewCommonAncestorForTrace..st index be786068..ee61145e 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/viewCommonAncestorForTrace..st +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/viewCommonAncestorForTrace..st @@ -2,7 +2,7 @@ private - ui viewCommonAncestorForTrace: aTrace | ancestor callgraph children paths | - callgraph := aTrace example traceWithCallgraphUsingByteCodeTracer eventsForTree. + 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. @@ -10,6 +10,6 @@ viewCommonAncestorForTrace: aTrace ancestor ifNil: [^ UIManager default inform: 'Probe hits have no single common ancestor']. self containingBrowser sidebarShowMethod: ancestor methodReference. - paths := callgraph pathsIgnoringInvocationCountsBetween: ancestor andChildren: children. + paths := callgraph pathsBetween: ancestor andChildren: children. paths explore. \ 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 f34489e4..28e63bc3 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json @@ -11,12 +11,12 @@ "initialize" : "cmfcmf 10/28/2020 13:02", "isProbe" : "pre 7/3/2019 11:11", "newAddExpressionMorph" : "pre 10/6/2020 11:53", - "newExampleLabelMorphFor:" : "pre 1/27/2020 18:23", + "newExampleLabelMorphFor:" : "cmfcmf 11/9/2020 16:57", "newExampleLineMorph" : "pre 11/18/2019 12:43", "newExploreButtonFor:" : "pre 8/21/2020 11:15", "newExpressionMorph" : "pre 10/8/2020 10:46", "newHaltButtonFor:" : "pre 9/29/2020 15:55", - "newLineMorphFor:" : "cmfcmf 11/2/2020 21:11", + "newLineMorphFor:" : "cmfcmf 11/9/2020 15:57", "newScrollPane" : "pre 10/12/2020 11:23", "newTracesMorph" : "pre 3/19/2020 14:06", "newWidgetsMorph" : "pre 9/22/2020 10:03", @@ -28,9 +28,8 @@ "stepTime" : "pre 8/20/2020 17:35", "updateExpressionMorphIfNecessary" : "pre 9/22/2020 10:04", "updateFrom:" : "pre 10/12/2020 18:02", - "valueMorphFor:trace:" : "cmfcmf 11/5/2020 13:00", + "valueMorphFor:trace:" : "cmfcmf 11/9/2020 16:53", "valueTextFor:" : "pre 7/7/2020 16:43", "valuesMorphFor:" : "cmfcmf 10/30/2020 15:56", "valuesTextFor:" : "pre 8/17/2020 09:31", - "viewCallgraphForTrace:" : "cmfcmf 10/28/2020 11:02", - "viewCommonAncestorForTrace:" : "cmfcmf 11/3/2020 14:52" } } + "viewCommonAncestorForTrace:" : "cmfcmf 11/10/2020 10:52" } } From 4ad2cf13af516ba6e915369d10beea709507399d Mon Sep 17 00:00:00 2001 From: Christian Flach Date: Sun, 6 Dec 2020 16:02:08 +0100 Subject: [PATCH 11/71] Moar trace visualization --- .../instance/initialize.st | 11 +------ .../instance/reset.st | 14 +++++++++ .../methodProperties.json | 3 +- ...monAncestorOf.ignoringInvocationCounts..st | 31 ++++++++++++------- ...ringInvocationCounts.browseMethodBlock..st | 20 ++++++++++++ .../BPCallgraph.class/methodProperties.json | 3 +- .../instance/currentCallgraph.st | 2 +- .../BPExample.class/methodProperties.json | 2 +- .../class/clear.st | 4 +++ .../methodProperties.json | 1 + .../instance/getExampleList.st | 4 +-- .../instance/openSelectionMenu.st | 22 +++---------- .../methodProperties.json | 4 +-- ...eprocessBottomEntriesForAncestorSearch..st | 1 + .../methodProperties.json | 2 +- .../BPMorphWithBottomBorder.class/README.md | 0 .../instance/bottomColor..st | 4 +++ .../instance/drawOn..st | 8 +++++ .../instance/initialize.st | 13 ++++++++ .../methodProperties.json | 7 +++++ .../properties.json | 14 +++++++++ .../instance/callgraphMenu.forTrace..st | 23 ++++++++++++++ .../instance/colorForTraceValue.inTrace..st | 15 +++++++++ .../instance/exploreButtonClickedFor..st | 14 +++++++-- .../BPProbeMorph.class/instance/initialize.st | 2 +- .../instance/newExampleLabelMorphFor..st | 25 ++++++++------- .../instance/newExploreButtonFor..st | 2 +- .../instance/newLineMorphFor..st | 27 ---------------- .../BPProbeMorph.class/instance/step.st | 6 +--- .../instance/valueMorphFor.trace..st | 17 ++++++++-- .../instance/viewCommonAncestorForTrace..st | 3 +- .../BPProbeMorph.class/methodProperties.json | 18 ++++++----- .../BPProbeMorph.class/properties.json | 3 +- 33 files changed, 214 insertions(+), 111 deletions(-) create mode 100644 packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/reset.st create mode 100644 packages/Babylonian-Core.package/BPCallgraph.class/instance/interactiveAncestorSearchFor.ignoringInvocationCounts.browseMethodBlock..st create mode 100644 packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/class/clear.st create mode 100644 packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/README.md create mode 100644 packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/instance/bottomColor..st create mode 100644 packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/instance/drawOn..st create mode 100644 packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/instance/initialize.st create mode 100644 packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/methodProperties.json create mode 100644 packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/properties.json create mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/callgraphMenu.forTrace..st create mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/colorForTraceValue.inTrace..st diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/initialize.st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/initialize.st index e0589a02..9d7c48cc 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/initialize.st +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/initialize.st @@ -4,14 +4,5 @@ initialize "BPByteCodeCallgraphTracer initialize" super initialize. - 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 + self reset \ 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/methodProperties.json b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json index b28076f6..df42e1ce 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json @@ -12,7 +12,8 @@ "eventsToString" : "cmfcmf 10/23/2020 16:42", "eventsToStringForTest" : "cmfcmf 10/7/2020 14:07", "exit:invocation:returns:" : "cmfcmf 10/20/2020 13:47", - "initialize" : "cmfcmf 10/20/2020 13:51", + "initialize" : "cmfcmf 12/5/2020 14:15", "instrumentedAncestorAndDepthOf:and:" : "cmfcmf 11/2/2020 19:20", "instrumentedDepthOf:below:" : "cmfcmf 10/7/2020 16:19", + "reset" : "cmfcmf 12/5/2020 14:15", "swapSenderOf:newSender:" : "cmfcmf 11/2/2020 19:29" } } diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st index ba914127..8d4fa1d2 100644 --- a/packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st @@ -6,22 +6,29 @@ commonAncestorOf: aCollection ignoringInvocationCounts: aBoolean possibleAncestors := aCollection first pathWithoutContextMovingRight allButLast. - aCollection allButFirst do: [:each | | path found | - path := each pathWithoutContextMovingRight. + aCollection allButFirst do: [:each | | found path | found := false. - path allButLast reverseDo: [:entry | | idx | - found ifFalse: [ - idx := possibleAncestors findFirst: [:ancestor | entry class == BPCallgraphEntryEnter - ifFalse: [false] - ifTrue: [aBoolean - ifFalse: [ancestor equalsClassSelectorBlockIdxInvocation: entry] - ifTrue: [ancestor equalsClassSelectorBlockIdx: entry]]]. - idx ~= 0 ifTrue: [possibleAncestors := possibleAncestors copyFrom: 1 to: idx. - found := true]]]. + path := each pathWithoutContextMovingRight 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 and: [true]) 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: [theAncestor asPathPart] ifFalse: [theAncestor] \ No newline at end of file + ^ aBoolean ifTrue: ["possibleAncestors explore. "theAncestor asPathPart] ifFalse: [theAncestor] \ 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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json index 98d5ecf2..6da49cd6 100644 --- a/packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json @@ -5,7 +5,7 @@ "addRoot:" : "cmfcmf 10/27/2020 14:10", "allInvocationsOf:" : "cmfcmf 11/3/2020 13:57", "babylonianEntries" : "cmfcmf 10/28/2020 11:01", - "commonAncestorOf:ignoringInvocationCounts:" : "cmfcmf 11/10/2020 12:10", + "commonAncestorOf:ignoringInvocationCounts:" : "cmfcmf 11/10/2020 15:20", "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", @@ -19,6 +19,7 @@ "do:between:and:" : "cmfcmf 11/2/2020 20:20", "do:entry:" : "cmfcmf 10/27/2020 14:48", "initialize" : "cmfcmf 10/27/2020 14:14", + "interactiveAncestorSearchFor:ignoringInvocationCounts:browseMethodBlock:" : "cmfcmf 11/10/2020 13:40", "pathsBetween:andChildren:" : "cmfcmf 11/10/2020 10:52", "roots" : "cmfcmf 10/27/2020 14:11", "select:" : "cmfcmf 10/28/2020 10:47" } } diff --git a/packages/Babylonian-Core.package/BPExample.class/instance/currentCallgraph.st b/packages/Babylonian-Core.package/BPExample.class/instance/currentCallgraph.st index 7ebe2c31..c2c1a8b4 100644 --- a/packages/Babylonian-Core.package/BPExample.class/instance/currentCallgraph.st +++ b/packages/Babylonian-Core.package/BPExample.class/instance/currentCallgraph.st @@ -1,5 +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/methodProperties.json b/packages/Babylonian-Core.package/BPExample.class/methodProperties.json index 83b39d50..ceb4927b 100644 --- a/packages/Babylonian-Core.package/BPExample.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPExample.class/methodProperties.json @@ -14,7 +14,7 @@ "asPragma" : "pre 9/30/2020 10:48", "canBeUsedForDoIts" : "pre 10/6/2020 09:17", "color" : "pre 9/30/2020 09:50", - "currentCallgraph" : "cmfcmf 11/9/2020 15:27", + "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", 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/methodProperties.json b/packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/methodProperties.json index 23dde2a8..b59b52ce 100644 --- a/packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPSelectedCallgraphEntries.class/methodProperties.json @@ -1,5 +1,6 @@ { "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", diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getExampleList.st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getExampleList.st index 278e042c..d198f82f 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getExampleList.st +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getExampleList.st @@ -1,6 +1,4 @@ example selection getExampleList - ^ "BPExample allSubInstances"BPActiveExamples value examples sorted: [:a :b | (a isActive and: [b isActive not]) - ifTrue: [true] - ifFalse: [a exampleName < b exampleName]] \ No newline at end of file + ^ "BPExample allSubInstances"BPActiveExamples value examples sorted: #uniqueIdentifier ascending \ 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 index 92a05b02..44674c09 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/openSelectionMenu.st +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/openSelectionMenu.st @@ -1,7 +1,7 @@ bottom bar openSelectionMenu - | selection selectedEntries ancestor callgraph continue | + | selection selectedEntries callgraph | selection := MenuMorph chooseFrom: {'find common ancestor (ignoring context)' . 'find common ancestor (with context)' . 'explore' . 'clear'} lines: {2} @@ -15,19 +15,7 @@ openSelectionMenu selection == 3 ifTrue: [^ selectedEntries explore]. selection == 4 ifTrue: [selectedEntries removeAll. ^ self changed: #bottomBarText]. - selectedEntries := selectedEntries asOrderedCollection collect: #selfOrParentMethodBlockOfBPProbeOrAssertion. - - ancestor := callgraph - commonAncestorOf: selectedEntries - ignoringInvocationCounts: selection == 1. - 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] -> [self triggerEvent: #browseMethod with: ancestor methodReference]. - [2] -> [| paths sortedPathsByChild | - paths := callgraph 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 + 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/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json index 342d7b3b..c178c6e6 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json @@ -9,14 +9,14 @@ "buildVisualizationWith:" : "cmfcmf 10/30/2020 14:08", "buildWith:" : "cmfcmf 11/2/2020 12:18", "exampleListDoubleClick" : "cmfcmf 10/30/2020 14:26", - "getExampleList" : "cmfcmf 10/30/2020 13:59", + "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" : "cmfcmf 11/4/2020 15:02", "initialize" : "cmfcmf 11/9/2020 16:32", - "openSelectionMenu" : "cmfcmf 11/10/2020 12:19", + "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", diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/preprocessBottomEntriesForAncestorSearch..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/preprocessBottomEntriesForAncestorSearch..st index 98516c8b..c21f5258 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/preprocessBottomEntriesForAncestorSearch..st +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/instance/preprocessBottomEntriesForAncestorSearch..st @@ -1,4 +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/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/methodProperties.json index 6ce61b2f..8821bf35 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationAnnotations.class/methodProperties.json @@ -5,7 +5,7 @@ "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:18", + "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/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..2294cedd --- /dev/null +++ b/packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/instance/bottomColor..st @@ -0,0 +1,4 @@ +as yet unclassified +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..7fe69264 --- /dev/null +++ b/packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/instance/drawOn..st @@ -0,0 +1,8 @@ +as yet unclassified +drawOn: aCanvas + + aCanvas + line: self innerBounds bottomLeft + to: self innerBounds bottomRight + width: 4 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..e1bb8d33 --- /dev/null +++ b/packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/instance/initialize.st @@ -0,0 +1,13 @@ +as yet unclassified +initialize + + + super initialize. + self + vResizing: #shrinkWrap; + hResizing: #shrinkWrap; + changeTableLayout; + listDirection: #leftToRight; + borderWidth: 4; + 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..b289df46 --- /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:" : "cmfcmf 11/10/2020 13:34", + "initialize" : "cmfcmf 11/10/2020 13:35" } } 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/BPProbeMorph.class/instance/callgraphMenu.forTrace..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/callgraphMenu.forTrace..st new file mode 100644 index 00000000..bcd2bf2b --- /dev/null +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/callgraphMenu.forTrace..st @@ -0,0 +1,23 @@ +private - ui +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/BPProbeMorph.class/instance/colorForTraceValue.inTrace..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/colorForTraceValue.inTrace..st new file mode 100644 index 00000000..c615552b --- /dev/null +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/colorForTraceValue.inTrace..st @@ -0,0 +1,15 @@ +private +colorForTraceValue: aBPTraceValue inTrace: aBPTrace + + ^ (colorCache at: aBPTrace ifAbsentPut: [| callgraph values path paths uniquePaths colors | + callgraph := aBPTrace example currentCallgraph. + values := aBPTrace valuesForProbeId: self id. + paths := values collect: [:value | | entry | + entry := callgraph detect: [:each | + (each isKindOf: BPCallgraphEntryBPProbeOrAssertion) and: [each traceValue == value]]. + path := entry pathWithoutContextMovingRight 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/BPProbeMorph.class/instance/exploreButtonClickedFor..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/exploreButtonClickedFor..st index 01c5ad20..3eb4a056 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/exploreButtonClickedFor..st +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/exploreButtonClickedFor..st @@ -1,4 +1,14 @@ actions -exploreButtonClickedFor: tracedValues +exploreButtonClickedFor: aBPTrace - (tracedValues collect: [:v | v tracedValue]) explore \ No newline at end of file + + | 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. + + self callgraphMenu: menu forTrace: aBPTrace. + menu popUpInWorld \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/initialize.st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/initialize.st index 880cde43..919d1dc5 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/initialize.st +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/initialize.st @@ -4,7 +4,7 @@ initialize | removeButton | super initialize. - blinkCounter := 0. + colorCache := Dictionary new. allTracesCompleted := false. diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExampleLabelMorphFor..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExampleLabelMorphFor..st index 83090058..bb60746b 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExampleLabelMorphFor..st +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExampleLabelMorphFor..st @@ -3,19 +3,20 @@ newExampleLabelMorphFor: aTrace | exampleLabel | exampleLabel := aTrace example exampleName asText. - exampleLabel addAttribute: (BPPluggableTextAttribute new evalBlock: [ | selection | - selection := MenuMorph - chooseFrom: {'browse example' . 'browse example in new window' . 'disable example' . 'view example in sidebar' . 'open callgraph in new window'} - lines: {3} - title: 'Select action'. - selection caseOf: { - [1] -> [self containingBrowser browseReference: aTrace example method methodReference]. - [2] -> ["indirect through methodReference to call browse on the CSLayeredMethod instead of the CompiledMethod (otherwise the browser will not be able to open correctly)" - aTrace example method methodReference browse]. - [3] -> [aTrace example isActive: false]. - [4] -> [self containingBrowser sidebarShowExample: aTrace example id: self id traceValue: nil]. - [5] -> [BPCallgraphExplorer open loadFromCallgraph: aTrace example currentCallgraph]} otherwise: []]). + exampleLabel addAttribute: (BPPluggableTextAttribute new evalBlock: [ + MenuMorph new + addTitle: 'example'; + add: 'browse example' action: [self containingBrowser browseReference: aTrace example 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)" + aTrace example method methodReference browse]; + add: 'disable example' action: [aTrace example isActive: false]; + addLine; + add: 'view example in sidebar' action: [self containingBrowser sidebarShowExample: aTrace example id: self id traceValue: nil]; + add: 'open callgraph in new window' action: [BPCallgraphExplorer open loadFromCallgraph: aTrace example currentCallgraph]; + popUpInWorld]). + ^ (TextMorph new) contents: exampleLabel; color: aTrace example color; + readOnly: true; yourself \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExploreButtonFor..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExploreButtonFor..st index a0742f05..d8fe225e 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExploreButtonFor..st +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExploreButtonFor..st @@ -10,6 +10,6 @@ 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. ^ exploreButton \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newLineMorphFor..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newLineMorphFor..st index dc263919..b3c8459f 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newLineMorphFor..st +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newLineMorphFor..st @@ -23,33 +23,6 @@ newLineMorphFor: aTrace scrollPane := self newScrollPane. newLine addMorphBack: scrollPane. - - newLine addMorphBack: (SimpleButtonMorph new - hResizing: #shrinkWrap; - "vResizing: #shrinkWrap;" - label: 'view common ancestor'; - target: self; - actionSelector: #viewCommonAncestorForTrace:; - arguments: {aTrace}; - yourself). - - newLine addMorphBack: (SimpleButtonMorph new - hResizing: #shrinkWrap; - "vResizing: #shrinkWrap;" - label: 'select this'; - target: self; - actionSelector: #selectForAncestor:; - arguments: {aTrace}; - yourself). - - newLine addMorphBack: (SimpleButtonMorph new - hResizing: #shrinkWrap; - "vResizing: #shrinkWrap;" - label: 'get ancestors now'; - target: self; - actionSelector: #debugdonow:; - arguments: {aTrace}; - yourself). ^ newLine \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/step.st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/step.st index 19f6f235..3f890f94 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/step.st +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/step.st @@ -10,8 +10,4 @@ step (newTraces notNil and: [newTraces notEmpty]) ifTrue: [ self updateFrom: newTraces] ifFalse: [self updateFrom: self emptyTraces]. - displayedTraces := newTraces]. - - blinkCounter > 0 ifTrue: [ - self color: (blinkCounter odd ifTrue: [Color palePeach slightlyLighter] ifFalse: [Color red]). - blinkCounter := blinkCounter - 1] \ No newline at end of file + displayedTraces := newTraces] \ 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 index 3b992801..1f6c3b6d 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valueMorphFor.trace..st +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valueMorphFor.trace..st @@ -1,7 +1,7 @@ private valueMorphFor: traceValue trace: trace - | morph | + | morph wrapperMorph | morph := traceValue tracedValue bpProbeValueMorphIn: traceValue. morph on: #click send: #value to: [ | selection | selection := MenuMorph chooseFrom: {'explore' . 'inspect' . 'browse' . 'view in sidebar' . 'select in callgraph'} lines: {3} title: 'Select action'. @@ -10,5 +10,16 @@ valueMorphFor: traceValue trace: trace [2] -> [traceValue tracedValue inspect]. [3] -> [traceValue tracedValue browse]. [4] -> [self containingBrowser sidebarShowExample: trace example id: self id traceValue: traceValue]. - [5] -> [self error: 'not implemented']} otherwise: []]. - ^ morph \ No newline at end of file + [5] -> [| entry callgraph | + callgraph := trace example currentCallgraph. + entry := callgraph babylonianEntries detect: [:each | (each respondsTo: #traceValue) and: [each traceValue == traceValue]]. + BPSelectedCallgraphEntries select: entry fromCallgraph: callgraph 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/viewCommonAncestorForTrace..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/viewCommonAncestorForTrace..st index ee61145e..18cec898 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/viewCommonAncestorForTrace..st +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/viewCommonAncestorForTrace..st @@ -11,5 +11,4 @@ viewCommonAncestorForTrace: aTrace self containingBrowser sidebarShowMethod: ancestor methodReference. paths := callgraph pathsBetween: ancestor andChildren: children. - paths explore. - \ No newline at end of file + paths explore \ 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 28e63bc3..18cf9e20 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json @@ -4,19 +4,21 @@ "instance" : { "annotation:" : "cmfcmf 10/13/2020 12:16", "blinkFor:" : "cmfcmf 10/28/2020 12:59", + "callgraphMenu:forTrace:" : "cmfcmf 11/10/2020 12:56", + "colorForTraceValue:inTrace:" : "cmfcmf 11/10/2020 14:28", "ensureLineMorphFor:" : "pre 8/21/2020 12:09", - "exploreButtonClickedFor:" : "pre 7/23/2019 09:16", + "exploreButtonClickedFor:" : "cmfcmf 11/10/2020 12:56", "haltButtonClickedFor:and:" : "pre 9/29/2020 16:12", "iconForValue:" : "pre 10/6/2020 09:21", - "initialize" : "cmfcmf 10/28/2020 13:02", + "initialize" : "cmfcmf 11/10/2020 13:48", "isProbe" : "pre 7/3/2019 11:11", "newAddExpressionMorph" : "pre 10/6/2020 11:53", - "newExampleLabelMorphFor:" : "cmfcmf 11/9/2020 16:57", + "newExampleLabelMorphFor:" : "cmfcmf 11/10/2020 14:09", "newExampleLineMorph" : "pre 11/18/2019 12:43", - "newExploreButtonFor:" : "pre 8/21/2020 11:15", + "newExploreButtonFor:" : "cmfcmf 11/10/2020 12:55", "newExpressionMorph" : "pre 10/8/2020 10:46", "newHaltButtonFor:" : "pre 9/29/2020 15:55", - "newLineMorphFor:" : "cmfcmf 11/9/2020 15:57", + "newLineMorphFor:" : "cmfcmf 11/10/2020 12:45", "newScrollPane" : "pre 10/12/2020 11:23", "newTracesMorph" : "pre 3/19/2020 14:06", "newWidgetsMorph" : "pre 9/22/2020 10:03", @@ -24,12 +26,12 @@ "relevantTracesOf:do:" : "pre 11/18/2019 12:47", "removeLinesWithoutCurrentTrace:" : "pre 8/20/2020 16:32", "setExpressionButtonClicked" : "pre 9/22/2020 10:05", - "step" : "cmfcmf 10/28/2020 13:01", + "step" : "cmfcmf 11/10/2020 13:48", "stepTime" : "pre 8/20/2020 17:35", "updateExpressionMorphIfNecessary" : "pre 9/22/2020 10:04", "updateFrom:" : "pre 10/12/2020 18:02", - "valueMorphFor:trace:" : "cmfcmf 11/9/2020 16:53", + "valueMorphFor:trace:" : "cmfcmf 11/10/2020 13:56", "valueTextFor:" : "pre 7/7/2020 16:43", "valuesMorphFor:" : "cmfcmf 10/30/2020 15:56", "valuesTextFor:" : "pre 8/17/2020 09:31", - "viewCommonAncestorForTrace:" : "cmfcmf 11/10/2020 10:52" } } + "viewCommonAncestorForTrace:" : "cmfcmf 11/10/2020 15:05" } } diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/properties.json b/packages/Babylonian-UI.package/BPProbeMorph.class/properties.json index a14e59b4..46e5e96d 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/properties.json +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/properties.json @@ -7,7 +7,8 @@ "commentStamp" : "", "instvars" : [ "expressionMorph", - "addExpressionMorph" ], + "addExpressionMorph", + "colorCache" ], "name" : "BPProbeMorph", "pools" : [ ], From 9714307dbe19050c286e9fe5f5159fa2dc9d1460 Mon Sep 17 00:00:00 2001 From: Christian Flach Date: Sun, 6 Dec 2020 16:08:40 +0100 Subject: [PATCH 12/71] Minor improvements to bytecode rewriting --- .../class/displayProgress.st | 5 +++++ .../class/for.do.displayingProgress..st | 6 ++++++ .../class/instrumentClass..st | 5 ++--- .../class/instrumentClassCategory..st | 5 ++--- .../class/instrumentationMode..st | 5 +++++ .../class/instrumentationMode.during..st | 7 +++++++ .../class/instrumentationMode.st | 2 +- .../class/privEnableTracingFor..st | 2 ++ .../class/uninstrumentClass..st | 5 ++--- .../class/uninstrumentClassCategory..st | 5 ++--- .../methodProperties.json | 16 ++++++++++------ .../BPByteCodeRewriter.class/properties.json | 2 +- .../instance/genNops..st | 1 + .../methodProperties.json | 2 +- .../testBlockTemporariesAgainAgain.st | 8 ++++++++ .../methodProperties.json | 1 + .../instance/testEdgeCases.st | 4 +++- .../methodProperties.json | 2 +- .../blockTemporariesAgainAgainTest.st | 19 +++++++++++++++++++ .../methodProperties.json | 1 + .../methodProperties.json | 2 +- 21 files changed, 81 insertions(+), 24 deletions(-) create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/displayProgress.st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/for.do.displayingProgress..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentationMode..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentationMode.during..st create mode 100644 packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testBlockTemporariesAgainAgain.st create mode 100644 packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/instance/blockTemporariesAgainAgainTest.st 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/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/instrumentClass..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClass..st index 2f3943a8..69eeaae0 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClass..st +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClass..st @@ -2,7 +2,6 @@ instrumentClass: aClass CSLayeredMethod pauseFlushingCachesDuring: [ - aClass selectors + self for: aClass selectors do: [:selector | self instrumentClass: aClass selector: selector] - displayingProgress: [:selector | 'Recompiling ', aClass, ' >> #', selector] - every: 100] \ No newline at end of file + displayingProgress: [:selector | 'Recompiling ', aClass, ' >> #', selector]] \ 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 index c1997f78..44f87600 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClassCategory..st +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClassCategory..st @@ -2,9 +2,8 @@ instrumentClassCategory: aSymbol CSLayeredMethod pauseFlushingCachesDuring: [ - (SystemOrganization classesIn: aSymbol) + self for: (SystemOrganization classesIn: aSymbol) do: [:class | self instrumentClass: class theNonMetaClass. self instrumentClass: class theMetaClass] - displayingProgress: [:selector | 'Recompiling ', aSymbol] - every: 100] \ No newline at end of file + displayingProgress: [:selector | 'Recompiling ', aSymbol]] \ 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 index ebae9f23..65fd9423 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentationMode.st +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentationMode.st @@ -1,4 +1,4 @@ 0 - setup instrumentationMode - ^ #slow \ No newline at end of file + ^ InstrumentationMode ifNil: [#slow] \ 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 index 44b3226e..cab08ed1 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/privEnableTracingFor..st +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/privEnableTracingFor..st @@ -54,6 +54,8 @@ privEnableTracingFor: method (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}. diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentClass..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentClass..st index 3e852e9d..68a99cb4 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentClass..st +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentClass..st @@ -2,7 +2,6 @@ uninstrumentClass: aClass CSLayeredMethod pauseFlushingCachesDuring: [ - aClass selectors + self for: aClass selectors do: [:selector | self uninstrumentClass: aClass selector: selector] - displayingProgress: [:selector | 'Recompiling ', aClass, ' >> #', selector] - every: 100] \ No newline at end of file + displayingProgress: [:selector | 'Recompiling ', aClass, ' >> #', selector]] \ 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 index fc128706..f2980de9 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentClassCategory..st +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentClassCategory..st @@ -2,9 +2,8 @@ uninstrumentClassCategory: aSymbol CSLayeredMethod pauseFlushingCachesDuring: [ - (SystemOrganization classesIn: aSymbol) + self for: (SystemOrganization classesIn: aSymbol) do: [:class | self uninstrumentClass: class theNonMetaClass. self uninstrumentClass: class theMetaClass] - displayingProgress: [:selector | 'Recompiling ', aSymbol] - every: 100] \ No newline at end of file + displayingProgress: [:selector | 'Recompiling ', aSymbol]] \ 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 index 6c0d8d67..da6376f1 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json @@ -9,37 +9,41 @@ "disableTracingForCompiledMethod:" : "cmfcmf 10/20/2020 14:22", "disableTracingForCompiledMethod:mode:" : "cmfcmf 10/26/2020 15:37", "disableTracingForCompiledMethod:mode:howToAddToMethodDictWhenSlow:" : "cmfcmf 10/27/2020 12:55", + "displayProgress" : "cmfcmf 12/1/2020 15:24", "enableTracingForClass:" : "cmfcmf 10/20/2020 14:32", "enableTracingForClass:selector:" : "cmfcmf 9/29/2020 16:59", "enableTracingForClassCategory:" : "cmfcmf 10/23/2020 13:04", "enableTracingForCompiledMethod:" : "cmfcmf 10/20/2020 14:27", "enableTracingForCompiledMethod:mode:" : "cmfcmf 10/26/2020 15:34", "enableTracingForCompiledMethod:mode:howToAddToMethodDictWhenSlow:" : "cmfcmf 10/27/2020 12:55", + "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", - "instrumentClass:" : "cmfcmf 10/20/2020 13:31", + "instrumentClass:" : "cmfcmf 12/1/2020 15:08", "instrumentClass:selector:" : "cmfcmf 10/24/2020 11:38", - "instrumentClassCategory:" : "cmfcmf 10/23/2020 13:03", + "instrumentClassCategory:" : "cmfcmf 12/1/2020 15:08", "instrumentCompiledMethod:" : "cmfcmf 10/20/2020 12:46", "instrumentContext" : "cmfcmf 10/8/2020 11:41", "instrumentString:" : "cmfcmf 10/26/2020 16:15", - "instrumentationMode" : "cmfcmf 10/20/2020 14:34", + "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 10/20/2020 14:04", - "privEnableTracingFor:" : "cmfcmf 10/26/2020 12:46", + "privEnableTracingFor:" : "cmfcmf 12/5/2020 19:44", "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:" : "cmfcmf 10/26/2020 10:53", "teardown" : "cmfcmf 10/7/2020 15:31", "uninstallWrapper:" : "cmfcmf 10/29/2020 13:06", - "uninstrumentClass:" : "cmfcmf 10/20/2020 13:31", + "uninstrumentClass:" : "cmfcmf 12/1/2020 15:10", "uninstrumentClass:selector:" : "cmfcmf 10/20/2020 12:44", - "uninstrumentClassCategory:" : "cmfcmf 10/23/2020 13:03", + "uninstrumentClassCategory:" : "cmfcmf 12/1/2020 15:10", "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 index 0182e60b..147358e1 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/properties.json +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/properties.json @@ -3,7 +3,7 @@ "classinstvars" : [ ], "classvars" : [ - ], + "InstrumentationMode" ], "commentStamp" : "", "instvars" : [ ], diff --git a/packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/genNops..st b/packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/genNops..st index 52a4ff2f..0981f08b 100644 --- a/packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/genNops..st +++ b/packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/genNops..st @@ -8,4 +8,5 @@ genNops: aNumber 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/methodProperties.json b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json index bc2292db..a04bf9ed 100644 --- a/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json @@ -2,4 +2,4 @@ "class" : { }, "instance" : { - "genNops:" : "cmfcmf 10/11/2020 11:12" } } + "genNops:" : "cmfcmf 11/27/2020 13:40" } } 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/methodProperties.json b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/methodProperties.json index c308e8dd..e33ce46f 100644 --- a/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/methodProperties.json +++ b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/methodProperties.json @@ -6,6 +6,7 @@ "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 10/26/2020 10:55", diff --git a/packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/instance/testEdgeCases.st b/packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/instance/testEdgeCases.st index b8e7bf3a..776db860 100644 --- a/packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/instance/testEdgeCases.st +++ b/packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/instance/testEdgeCases.st @@ -5,7 +5,9 @@ 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 + 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. diff --git a/packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/methodProperties.json b/packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/methodProperties.json index f54edced..3745e0f6 100644 --- a/packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/methodProperties.json +++ b/packages/Babylonian-Tests.package/BPByteCodeRewriterTest.class/methodProperties.json @@ -2,7 +2,7 @@ "class" : { }, "instance" : { - "testEdgeCases" : "cmfcmf 10/20/2020 12:06", + "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/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/methodProperties.json b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/methodProperties.json index 3731350d..169ef8ac 100644 --- a/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/methodProperties.json +++ b/packages/Babylonian-Tests.package/BPCallGraphByteCodeFixture.class/methodProperties.json @@ -5,6 +5,7 @@ "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", 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" } } From 6bb05d6488443cb0ce7aca5df40aaf5b9b59f324 Mon Sep 17 00:00:00 2001 From: Christian Flach Date: Sun, 6 Dec 2020 16:12:56 +0100 Subject: [PATCH 13/71] Add missing methods to git --- .../instance/additionalSize. (bpCallgraph).st | 53 +++++++++++++++++++ ...dditionalSizeBeforeBlock. (bpCallgraph).st | 6 +++ ...atedClosureValue.encoder. (bpCallgraph).st | 16 ++++++ ...FullClosureValue.encoder. (bpCallgraph).st | 4 ++ ...orEvaluatedValue.encoder. (bpCallgraph).st | 19 +++++++ ...emitCodeForValue.encoder. (bpCallgraph).st | 23 ++++++++ .../instance/isRootBlock. (bpCallgraph).st | 5 ++ .../litIndexBlockIdentifier. (bpCallgraph).st | 14 +++++ ...ForEvaluatedClosureValue. (bpCallgraph).st | 12 +++++ ...valuatedFullClosureValue. (bpCallgraph).st | 7 +++ ...izeCodeForEvaluatedValue. (bpCallgraph).st | 8 +++ .../sizeCodeForValue. (bpCallgraph).st | 21 ++++++++ .../BlockNode.extension/methodProperties.json | 16 ++++++ .../BlockNode.extension/properties.json | 2 + .../instance/generate.using. (bpCallgraph).st | 32 +++++++++++ ...memberNOPs.range.blockId. (bpCallgraph).st | 9 ++++ .../methodProperties.json | 6 +++ .../MethodNode.extension/properties.json | 2 + ...tionalReturnSize.returns. (bpCallgraph).st | 18 +++++++ ...mitCodeForReturn.encoder. (bpCallgraph).st | 11 ++++ .../emitNOPs.stack.n.type. (bpCallgraph).st | 15 ++++++ ...closingNonOptimizedBlock. (bpCallgraph).st | 15 ++++++ ...osingNonOptimizedBlockId. (bpCallgraph).st | 4 ++ .../invocationTempIndex. (bpCallgraph).st | 9 ++++ .../litIndexBlockIdentifier. (bpCallgraph).st | 7 +++ .../litIndexEnterInvocation. (bpCallgraph).st | 6 +++ .../litIndexExitInvocation. (bpCallgraph).st | 6 +++ .../litIndexInvocationCount. (bpCallgraph).st | 6 +++ .../litIndexTracerClass. (bpCallgraph).st | 6 +++ .../sizeCodeForReturn. (bpCallgraph).st | 7 +++ .../ParseNode.extension/methodProperties.json | 16 ++++++ .../ParseNode.extension/properties.json | 2 + ...mitCodeForReturn.encoder. (bpCallgraph).st | 22 ++++++++ .../sizeCodeForReturn. (bpCallgraph).st | 15 ++++++ .../methodProperties.json | 6 +++ .../VariableNode.extension/properties.json | 2 + 36 files changed, 428 insertions(+) create mode 100644 packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize. (bpCallgraph).st create mode 100644 packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock. (bpCallgraph).st create mode 100644 packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st create mode 100644 packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st create mode 100644 packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder. (bpCallgraph).st create mode 100644 packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder. (bpCallgraph).st create mode 100644 packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock. (bpCallgraph).st create mode 100644 packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st create mode 100644 packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue. (bpCallgraph).st create mode 100644 packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st create mode 100644 packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue. (bpCallgraph).st create mode 100644 packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue. (bpCallgraph).st create mode 100644 packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json create mode 100644 packages/Babylonian-Core.package/BlockNode.extension/properties.json create mode 100644 packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using. (bpCallgraph).st create mode 100644 packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId. (bpCallgraph).st create mode 100644 packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json create mode 100644 packages/Babylonian-Core.package/MethodNode.extension/properties.json create mode 100644 packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns. (bpCallgraph).st create mode 100644 packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st create mode 100644 packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type. (bpCallgraph).st create mode 100644 packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st create mode 100644 packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId. (bpCallgraph).st create mode 100644 packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex. (bpCallgraph).st create mode 100644 packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st create mode 100644 packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation. (bpCallgraph).st create mode 100644 packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation. (bpCallgraph).st create mode 100644 packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount. (bpCallgraph).st create mode 100644 packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass. (bpCallgraph).st create mode 100644 packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st create mode 100644 packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json create mode 100644 packages/Babylonian-Core.package/ParseNode.extension/properties.json create mode 100644 packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st create mode 100644 packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st create mode 100644 packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json create mode 100644 packages/Babylonian-Core.package/VariableNode.extension/properties.json diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize. (bpCallgraph).st new file mode 100644 index 00000000..04a1e7dd --- /dev/null +++ b/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize. (bpCallgraph).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. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock. (bpCallgraph).st new file mode 100644 index 00000000..fbb543a5 --- /dev/null +++ b/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock. (bpCallgraph).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. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st new file mode 100644 index 00000000..ac8e9ae3 --- /dev/null +++ b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).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. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st new file mode 100644 index 00000000..8c6d48b1 --- /dev/null +++ b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).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. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder. (bpCallgraph).st new file mode 100644 index 00000000..fcc18a78 --- /dev/null +++ b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder. (bpCallgraph).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. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder. (bpCallgraph).st new file mode 100644 index 00000000..91865fc6 --- /dev/null +++ b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder. (bpCallgraph).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. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock. (bpCallgraph).st new file mode 100644 index 00000000..ed50bea6 --- /dev/null +++ b/packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock. (bpCallgraph).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. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st new file mode 100644 index 00000000..5cf5860a --- /dev/null +++ b/packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).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. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue. (bpCallgraph).st new file mode 100644 index 00000000..333ddea6 --- /dev/null +++ b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue. (bpCallgraph).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. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st new file mode 100644 index 00000000..a9b234a8 --- /dev/null +++ b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).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. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue. (bpCallgraph).st new file mode 100644 index 00000000..05b1b474 --- /dev/null +++ b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue. (bpCallgraph).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. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue. (bpCallgraph).st new file mode 100644 index 00000000..2162a098 --- /dev/null +++ b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue. (bpCallgraph).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..4d241b6d --- /dev/null +++ b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json @@ -0,0 +1,16 @@ +{ + "class" : { + }, + "instance" : { + "additionalSize: (bpCallgraph)" : "cmfcmf 12/5/2020 20:34", + "additionalSizeBeforeBlock: (bpCallgraph)" : "cmfcmf 10/10/2020 15:06", + "emitCodeForEvaluatedClosureValue:encoder: (bpCallgraph)" : "cmfcmf 10/26/2020 11:22", + "emitCodeForEvaluatedFullClosureValue:encoder: (bpCallgraph)" : "cmfcmf 10/9/2020 14:19", + "emitCodeForEvaluatedValue:encoder: (bpCallgraph)" : "cmfcmf 10/26/2020 11:23", + "emitCodeForValue:encoder: (bpCallgraph)" : "cmfcmf 10/12/2020 14:59", + "isRootBlock: (bpCallgraph)" : "cmfcmf 10/9/2020 15:42", + "litIndexBlockIdentifier: (bpCallgraph)" : "cmfcmf 10/19/2020 12:51", + "sizeCodeForEvaluatedClosureValue: (bpCallgraph)" : "cmfcmf 10/19/2020 12:58", + "sizeCodeForEvaluatedFullClosureValue: (bpCallgraph)" : "cmfcmf 10/9/2020 13:41", + "sizeCodeForEvaluatedValue: (bpCallgraph)" : "cmfcmf 10/15/2020 21:37", + "sizeCodeForValue: (bpCallgraph)" : "cmfcmf 10/10/2020 15:06" } } 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/MethodNode.extension/instance/generate.using. (bpCallgraph).st b/packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using. (bpCallgraph).st new file mode 100644 index 00000000..daf2bc47 --- /dev/null +++ b/packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using. (bpCallgraph).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. (bpCallgraph).st b/packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId. (bpCallgraph).st new file mode 100644 index 00000000..04671c64 --- /dev/null +++ b/packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId. (bpCallgraph).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..f0efbf04 --- /dev/null +++ b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json @@ -0,0 +1,6 @@ +{ + "class" : { + }, + "instance" : { + "generate:using: (bpCallgraph)" : "cmfcmf 12/5/2020 20:35", + "rememberNOPs:range:blockId: (bpCallgraph)" : "cmfcmf 10/19/2020 13:05" } } 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/ParseNode.extension/instance/additionalReturnSize.returns. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns. (bpCallgraph).st new file mode 100644 index 00000000..94f60496 --- /dev/null +++ b/packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns. (bpCallgraph).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. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st new file mode 100644 index 00000000..25dc80b9 --- /dev/null +++ b/packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).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. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type. (bpCallgraph).st new file mode 100644 index 00000000..1e3d451e --- /dev/null +++ b/packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type. (bpCallgraph).st @@ -0,0 +1,15 @@ +*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. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st new file mode 100644 index 00000000..2a4b9b74 --- /dev/null +++ b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st @@ -0,0 +1,15 @@ +*Babylonian-Core-Callgraph-ByteCode +findEnclosingNonOptimizedBlock: encoder + + + | node | + self class == VariableNode + ifTrue: [| ctx | + "ugly hack for VariableNodes. VariableNodes like self, super, ..., all use the same instance! See VariableNode class >> #initialize (NodeNil, NodeTrue, ...). We need to manually find its parent node by traversing the context. Watchout: Encoders also inherit from ParseNode!" + ctx := thisContext. + [node isNil] whileTrue: [ + ctx := ctx sender. + ((ctx receiver isKindOf: ParseNode) and: [(ctx receiver isKindOf: VariableNode) 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. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId. (bpCallgraph).st new file mode 100644 index 00000000..aa9adfa6 --- /dev/null +++ b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId. (bpCallgraph).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. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex. (bpCallgraph).st new file mode 100644 index 00000000..de31d886 --- /dev/null +++ b/packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex. (bpCallgraph).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. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st new file mode 100644 index 00000000..b33ce023 --- /dev/null +++ b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).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. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation. (bpCallgraph).st new file mode 100644 index 00000000..d295cef5 --- /dev/null +++ b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation. (bpCallgraph).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. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation. (bpCallgraph).st new file mode 100644 index 00000000..fd18318c --- /dev/null +++ b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation. (bpCallgraph).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. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount. (bpCallgraph).st new file mode 100644 index 00000000..0f3c4918 --- /dev/null +++ b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount. (bpCallgraph).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. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass. (bpCallgraph).st new file mode 100644 index 00000000..7b3e6076 --- /dev/null +++ b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass. (bpCallgraph).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. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st new file mode 100644 index 00000000..d972f51f --- /dev/null +++ b/packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn. (bpCallgraph).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..a81af5c4 --- /dev/null +++ b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json @@ -0,0 +1,16 @@ +{ + "class" : { + }, + "instance" : { + "additionalReturnSize:returns: (bpCallgraph)" : "cmfcmf 10/19/2020 13:11", + "emitCodeForReturn:encoder: (bpCallgraph)" : "cmfcmf 10/19/2020 13:00", + "emitNOPs:stack:n:type: (bpCallgraph)" : "cmfcmf 10/19/2020 13:04", + "findEnclosingNonOptimizedBlock: (bpCallgraph)" : "cmfcmf 10/20/2020 12:36", + "findEnclosingNonOptimizedBlockId: (bpCallgraph)" : "cmfcmf 10/12/2020 19:54", + "invocationTempIndex: (bpCallgraph)" : "cmfcmf 12/5/2020 20:36", + "litIndexBlockIdentifier: (bpCallgraph)" : "cmfcmf 10/11/2020 14:17", + "litIndexEnterInvocation: (bpCallgraph)" : "cmfcmf 10/9/2020 14:45", + "litIndexExitInvocation: (bpCallgraph)" : "cmfcmf 10/19/2020 13:07", + "litIndexInvocationCount: (bpCallgraph)" : "cmfcmf 10/11/2020 11:46", + "litIndexTracerClass: (bpCallgraph)" : "cmfcmf 10/9/2020 14:45", + "sizeCodeForReturn: (bpCallgraph)" : "cmfcmf 10/19/2020 12:59" } } 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/VariableNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st new file mode 100644 index 00000000..cf47e394 --- /dev/null +++ b/packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).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. (bpCallgraph).st b/packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st new file mode 100644 index 00000000..3a375bb0 --- /dev/null +++ b/packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn. (bpCallgraph).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..100f9a6f --- /dev/null +++ b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json @@ -0,0 +1,6 @@ +{ + "class" : { + }, + "instance" : { + "emitCodeForReturn:encoder: (bpCallgraph)" : "cmfcmf 10/19/2020 13:01", + "sizeCodeForReturn: (bpCallgraph)" : "cmfcmf 10/19/2020 12:59" } } 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" } From be02eb3507cc03671fe199ce8419f93cc8356cbd Mon Sep 17 00:00:00 2001 From: Christian Flach Date: Mon, 7 Dec 2020 21:13:46 +0100 Subject: [PATCH 14/71] Refactor tracer to use a custom instance variable on Process. This is about 5 times faster :) --- .../BPByteCodeCallgraphTracer.class/class/value.during..st | 4 ++++ .../class/value.during.inProcess..st | 7 +++++++ .../BPByteCodeCallgraphTracer.class/class/value.st | 4 ++++ .../BPByteCodeCallgraphTracer.class/methodProperties.json | 5 ++++- .../BPByteCodeCallgraphTracer.class/properties.json | 2 +- 5 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/value.during..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/value.during.inProcess..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/value.st 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/methodProperties.json b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json index df42e1ce..b73f8504 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json @@ -3,7 +3,10 @@ "customEvent:data:" : "cmfcmf 10/23/2020 14:56", "enter:invocation:" : "cmfcmf 10/20/2020 12:18", "exit:invocation:returns:" : "cmfcmf 10/19/2020 12:50", - "swapSenderOf:newSender:" : "cmfcmf 11/2/2020 19:06" }, + "swapSenderOf:newSender:" : "cmfcmf 11/2/2020 19:06", + "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" : { "customEvent:data:" : "cmfcmf 10/23/2020 14:56", "enter:invocation:" : "cmfcmf 10/20/2020 13:44", diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/properties.json b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/properties.json index 9c36ee40..cbb3468b 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/properties.json +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/properties.json @@ -11,5 +11,5 @@ "name" : "BPByteCodeCallgraphTracer", "pools" : [ ], - "super" : "DynamicVariable", + "super" : "Object", "type" : "normal" } From ef418fd6f7a54d757a3cc6161aa7eca1b78e1e84 Mon Sep 17 00:00:00 2001 From: Christian Flach Date: Sat, 2 Jan 2021 16:11:11 +0100 Subject: [PATCH 15/71] Minor fixes, latex export for callgraphs --- .../instance/eventsForTree.st | 23 +++++++++------- .../instance/eventsToString.st | 5 ++-- .../instrumentedAncestorAndDepthOf.and..st | 27 +++++++++++++++---- .../instance/swapSenderOf.newSender..st | 8 +++--- .../methodProperties.json | 10 +++---- ...monAncestorOf.ignoringInvocationCounts..st | 2 +- .../BPCallgraph.class/instance/forLatex.st | 15 +++++++++++ .../BPCallgraph.class/methodProperties.json | 3 ++- .../instance/latexAttributes.st | 4 +++ .../instance/latexLabel.st | 4 +++ .../instance/printForLatexOn..st | 15 +++++++++++ .../methodProperties.json | 3 +++ .../instance/latexAttributes.st | 4 +++ .../methodProperties.json | 1 + .../instance/latexAttributes.st | 4 +++ .../instance/latexLabel.st | 6 +++++ .../methodProperties.json | 2 ++ ...tiveTracing.executionContinuationEntry..st | 4 +-- ...acing.executionContinuationEntry.debug..st | 9 ------- .../instance/label.st | 2 +- .../instance/latexAttributes.st | 4 +++ .../methodProperties.json | 6 ++--- .../properties.json | 3 +-- .../instance/latexLabel.st | 16 +++++++++++ .../methodProperties.json | 1 + .../instance/latexAttributes.st | 4 +++ .../instance/latexLabel.st | 4 +++ .../methodProperties.json | 4 ++- .../instance/enclosedSourceCode.st | 2 +- .../instance/printOn.type..st | 2 +- .../removeLineBreaksFromSourceCode..st | 4 +++ .../methodProperties.json | 3 ++- .../instance/testGenerator.st | 2 +- .../methodProperties.json | 2 +- .../instance/getVisualizationTypes.st | 4 +-- .../methodProperties.json | 2 +- .../instance/calculateBottomContent.st | 8 +++--- .../methodProperties.json | 2 +- 38 files changed, 166 insertions(+), 58 deletions(-) create mode 100644 packages/Babylonian-Core.package/BPCallgraph.class/instance/forLatex.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/latexAttributes.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/latexLabel.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/printForLatexOn..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/instance/latexAttributes.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/latexAttributes.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/latexLabel.st delete mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/depthDelta.inChain.hasActiveTracing.executionContinuationEntry.debug..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/latexAttributes.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/latexLabel.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/latexAttributes.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/latexLabel.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/removeLineBreaksFromSourceCode..st diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsForTree.st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsForTree.st index 0d3f88bc..baddef49 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsForTree.st +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsForTree.st @@ -1,7 +1,7 @@ post processing eventsForTree - | callgraph depth depthAfterExit depthMap printContinuesHere eventStream treeCache addToTree prevDepth overwriteDepth executionContinuationEntry | + | callgraph depth depthAfterExit depthMap printContinuesHere eventStream treeCache addToTree prevDepth overwriteDepth executionContinuation | depth := 0. depthAfterExit := nil. @@ -15,8 +15,9 @@ eventsForTree addToTree := [:entry | | theDepth | theDepth := overwriteDepth >= 0 ifTrue: [overwriteDepth] ifFalse: [depth]. theDepth > (prevDepth + 1) ifTrue: [ - "context moved to the right -> we need to add new tree nodes to correctly display the context change" - (theDepth - 1 - executionContinuationEntry second) to: theDepth - 1 do: [:i | + "context jumped to the right by more than 1 step, therefore we need to add + new tree nodes (->) to correctly mount the following nodes" + (theDepth - 1 - executionContinuation second) to: theDepth - 1 do: [:i | overwriteDepth := i. addToTree value: BPCallgraphEntryContextJumpHelper new]. overwriteDepth := -1]. @@ -28,8 +29,8 @@ eventsForTree prevDepth := theDepth]. printContinuesHere := [| entry | - addToTree value: executionContinuationEntry first. - executionContinuationEntry := nil]. + addToTree value: executionContinuation first. + executionContinuation := nil]. eventStream := self eventStream. [eventStream atEnd] whileFalse: [| entry | eventStream next caseOf: { @@ -71,7 +72,7 @@ eventsForTree depth := depthAfterExit. depthAfterExit := nil. printContinuesHere value]]. - [#contextSenderChanged] -> [ | depthDelta inChainOrNumMoveRight inChain hasActiveTracing | + [#contextSenderChanged] -> [ | depthDelta inChainOrNumMoveRight inChain hasActiveTracing executionContinuationEntry | depthDelta := eventStream next. inChainOrNumMoveRight := eventStream next. inChain := inChainOrNumMoveRight == true. @@ -86,10 +87,14 @@ eventsForTree ifFalse: [depth := depth + depthDelta]. self assert: depth >= 0. - executionContinuationEntry := {BPCallgraphEntryContextExecutionContinuation new. inChainOrNumMoveRight}. + executionContinuationEntry := BPCallgraphEntryContextExecutionContinuation new. + executionContinuation := {executionContinuationEntry . inChainOrNumMoveRight}. entry := BPCallgraphEntryContextSenderChanged new. - entry depthDelta: depthDelta inChain: inChain hasActiveTracing: hasActiveTracing executionContinuationEntry: executionContinuationEntry first - debug: inChainOrNumMoveRight. + entry + depthDelta: depthDelta + inChain: inChain + hasActiveTracing: hasActiveTracing + executionContinuationEntry: executionContinuationEntry. addToTree value: entry. hasActiveTracing ifFalse: [printContinuesHere value]]]. diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsToString.st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsToString.st index 3f5e2d72..facc5b3d 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsToString.st +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsToString.st @@ -90,9 +90,10 @@ eventsToString "1 to: depth do: [:i | aStream space]. aStream nextPutAll: data; cr"]. - [#contextSenderChanged] -> [ | depthDelta inChain hasActiveTracing | + [#contextSenderChanged] -> [ | depthDelta inChain inChainOrNumMoveRight hasActiveTracing | depthDelta := eventStream next. - inChain := 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." diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/instrumentedAncestorAndDepthOf.and..st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/instrumentedAncestorAndDepthOf.and..st index 2eb6a1cf..8a78a9c7 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/instrumentedAncestorAndDepthOf.and..st +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/instrumentedAncestorAndDepthOf.and..st @@ -1,6 +1,19 @@ private instrumentedAncestorAndDepthOf: aContext and: anotherContext + " + 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. + " | a b seenA seenB | seenA := OrderedCollection new. @@ -8,12 +21,16 @@ instrumentedAncestorAndDepthOf: aContext and: anotherContext a := aContext. b := anotherContext. - + [| idx depth | - [[a notNil and: [(BPByteCodeRewriter hasActiveTracing: a method) not]] whileTrue: [a := a sender]] value. - [[b notNil and: [(BPByteCodeRewriter hasActiveTracing: b method) not]] whileTrue: [b := b sender]] value. + [a notNil and: [(BPByteCodeRewriter hasActiveTracing: a method) not]] whileTrue: [a := a sender]. + [b notNil and: [(BPByteCodeRewriter hasActiveTracing: b method) not]] whileTrue: [b := b sender]. - (a isNil and: [b isNil]) ifTrue: [self error: 'context have no common ancestor - this should never happen.']. + (a isNil and: [b isNil]) ifTrue: [ + depth := seenB size - seenA size. + ^ depth <= 0 + ifTrue: [{Float negativeInfinity "unused" . depth}] + ifFalse: [{seenB size . depth}]]. self flag: #todo. "Verify that the first return value is correct." a ifNotNil: [seenA addLast: a]. b ifNotNil: [seenB addLast: b]. @@ -25,7 +42,7 @@ instrumentedAncestorAndDepthOf: aContext and: anotherContext b ifNotNil: [(idx := seenA indexOf: b) > 0 ifTrue: ["jump right" depth := seenB size - idx. self assert: depth > 0. - ^ {idx - 1 . depth}]]. + ^ {idx "- 1" . depth}]]. self flag: #todo. "Verify that the first return value is correct." a ifNotNil: [a := a sender]. b ifNotNil: [b := b sender]. diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/swapSenderOf.newSender..st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/swapSenderOf.newSender..st index 0d28ab8a..06c6b06c 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/swapSenderOf.newSender..st +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/swapSenderOf.newSender..st @@ -12,7 +12,7 @@ swapSenderOf: context newSender: newSenderContext depth := self instrumentedDepthOf: context below: newSenderContext. events nextPut: #contextSenderChanged. events nextPut: -1 * depth. - events nextPut: true. + events nextPut: true. "in-stack" events nextPut: hasActiveTracing. ^ self]. @@ -21,7 +21,7 @@ swapSenderOf: context newSender: newSenderContext depth := self instrumentedDepthOf: newSenderContext below: context. events nextPut: #contextSenderChanged. events nextPut: depth. - events nextPut: true. + events nextPut: true. "in-stack" events nextPut: hasActiveTracing. ^ self]. @@ -37,7 +37,7 @@ swapSenderOf: context newSender: newSenderContext self assert: (depth <= 0 or: [tmp first >= 0]). events nextPut: #contextSenderChanged. - events nextPut: depth. - events nextPut: tmp first. + 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 index b73f8504..96870950 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json @@ -3,7 +3,7 @@ "customEvent:data:" : "cmfcmf 10/23/2020 14:56", "enter:invocation:" : "cmfcmf 10/20/2020 12:18", "exit:invocation:returns:" : "cmfcmf 10/19/2020 12:50", - "swapSenderOf:newSender:" : "cmfcmf 11/2/2020 19:06", + "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" }, @@ -11,12 +11,12 @@ "customEvent:data:" : "cmfcmf 10/23/2020 14:56", "enter:invocation:" : "cmfcmf 10/20/2020 13:44", "eventStream" : "cmfcmf 10/20/2020 13:49", - "eventsForTree" : "cmfcmf 11/2/2020 19:27", - "eventsToString" : "cmfcmf 10/23/2020 16:42", + "eventsForTree" : "cmfcmf 1/2/2021 14:05", + "eventsToString" : "cmfcmf 1/2/2021 14:27", "eventsToStringForTest" : "cmfcmf 10/7/2020 14:07", "exit:invocation:returns:" : "cmfcmf 10/20/2020 13:47", "initialize" : "cmfcmf 12/5/2020 14:15", - "instrumentedAncestorAndDepthOf:and:" : "cmfcmf 11/2/2020 19:20", + "instrumentedAncestorAndDepthOf:and:" : "cmfcmf 1/2/2021 14:48", "instrumentedDepthOf:below:" : "cmfcmf 10/7/2020 16:19", "reset" : "cmfcmf 12/5/2020 14:15", - "swapSenderOf:newSender:" : "cmfcmf 11/2/2020 19:29" } } + "swapSenderOf:newSender:" : "cmfcmf 1/2/2021 14:07" } } diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st index 8d4fa1d2..a0acbe96 100644 --- a/packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st @@ -20,7 +20,7 @@ commonAncestorOf: aCollection ignoringInvocationCounts: aBoolean ancestorIdx ~= 0 ifTrue: [ possibleAncestors := possibleAncestors copyFrom: 1 to: ancestorIdx. found := true. - (aBoolean and: [true]) ifTrue: [| remainingPath | + aBoolean ifTrue: [| remainingPath | remainingPath := path allButFirst: i. possibleAncestors allButLast do: [:possibleAncestor | (remainingPath findFirst: [:remainingEntry | remainingEntry equalsClassSelectorBlockIdx: possibleAncestor]) == 0 ifTrue: [ 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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json index 6da49cd6..dc0bf150 100644 --- a/packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json @@ -5,7 +5,7 @@ "addRoot:" : "cmfcmf 10/27/2020 14:10", "allInvocationsOf:" : "cmfcmf 11/3/2020 13:57", "babylonianEntries" : "cmfcmf 10/28/2020 11:01", - "commonAncestorOf:ignoringInvocationCounts:" : "cmfcmf 11/10/2020 15:20", + "commonAncestorOf:ignoringInvocationCounts:" : "cmfcmf 12/31/2020 21:42", "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", @@ -18,6 +18,7 @@ "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 11/10/2020 10:52", 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/printForLatexOn..st b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/printForLatexOn..st new file mode 100644 index 00000000..f64924bf --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/printForLatexOn..st @@ -0,0 +1,15 @@ +as yet unclassified +printForLatexOn: aStream + + aStream + nextPutAll: '['; + nextPutAll: self latexLabel; + nextPutAll: ','; + nextPutAll: self latexAttributes; + cr. + + self children do: [:child | child printForLatexOn: aStream]. + + aStream + nextPutAll: ']'; + cr \ 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 index 1c0ed899..3ed6a52f 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntry.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/methodProperties.json @@ -10,11 +10,14 @@ "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", "pathWithoutContextMovingRight" : "cmfcmf 11/3/2020 13:50", + "printForLatexOn:" : "cmfcmf 1/2/2021 15:51", "printOn:" : "cmfcmf 11/2/2020 17:33", "root" : "cmfcmf 10/27/2020 16:20", "selfOrParentMethodBlockOfBPProbeOrAssertion" : "cmfcmf 11/10/2020 12:17", 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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/methodProperties.json index ce798e12..cc114bcd 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextExecutionContinuation.class/methodProperties.json @@ -7,5 +7,6 @@ "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/BPCallgraphEntryContextJumpHelper.class/instance/latexAttributes.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/latexAttributes.st new file mode 100644 index 00000000..3df702bb --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.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/BPCallgraphEntryContextJumpHelper.class/instance/latexLabel.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/latexLabel.st new file mode 100644 index 00000000..9b6f7d68 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/latexLabel.st @@ -0,0 +1,6 @@ +as yet unclassified +latexLabel + + + + ^ '$\rightarrow$' \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/methodProperties.json index ed2a3c68..73399b14 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/methodProperties.json @@ -5,5 +5,7 @@ "doBrowse" : "cmfcmf 11/2/2020 17:31", "executionContinuationEntry" : "cmfcmf 11/2/2020 17:17", "label" : "cmfcmf 10/26/2020 12:09", + "latexAttributes" : "cmfcmf 1/2/2021 15:47", + "latexLabel" : "cmfcmf 1/2/2021 15:50", "menu:" : "cmfcmf 11/9/2020 16:43", "textColor" : "cmfcmf 11/3/2020 12:52" } } 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 index bda7d8b7..eff2ae98 100644 --- 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 @@ -4,5 +4,5 @@ depthDelta: theDepthDelta inChain: isInChain hasActiveTracing: tracing execution depthDelta := theDepthDelta. inChain := isInChain. hasActiveTracing := tracing. - entry contextSenderChangedEntry: self. - executionContinuationEntry := entry \ No newline at end of file + executionContinuationEntry := entry. + entry contextSenderChangedEntry: self \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/depthDelta.inChain.hasActiveTracing.executionContinuationEntry.debug..st b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/depthDelta.inChain.hasActiveTracing.executionContinuationEntry.debug..st deleted file mode 100644 index 36becc91..00000000 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/depthDelta.inChain.hasActiveTracing.executionContinuationEntry.debug..st +++ /dev/null @@ -1,9 +0,0 @@ -as yet unclassified -depthDelta: theDepthDelta inChain: isInChain hasActiveTracing: tracing executionContinuationEntry: entry debug: debug - - depthDelta := theDepthDelta. - inChain := isInChain. - hasActiveTracing := tracing. - entry contextSenderChangedEntry: self. - executionContinuationEntry := entry. - tmpdebug := debug \ 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 index 4cb7a888..7fe89ef8 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/label.st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/label.st @@ -1,4 +1,4 @@ as yet unclassified label - ^ 'Context sender changed' \ No newline at end of file + ^ 'Context sender changed', String tab \ 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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/methodProperties.json index ca3a0a60..2332414b 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/methodProperties.json @@ -3,10 +3,10 @@ "textColor" : "cmfcmf 11/4/2020 13:17" }, "instance" : { "asPathPart" : "cmfcmf 11/3/2020 13:44", - "depthDelta:inChain:hasActiveTracing:executionContinuationEntry:" : "cmfcmf 11/2/2020 17:14", - "depthDelta:inChain:hasActiveTracing:executionContinuationEntry:debug:" : "cmfcmf 11/2/2020 18:54", + "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 11/3/2020 17:43", + "label" : "cmfcmf 1/2/2021 14:32", + "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 index ffa3ee07..c9ff2f43 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/properties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/properties.json @@ -9,8 +9,7 @@ "depthDelta", "inChain", "hasActiveTracing", - "executionContinuationEntry", - "tmpdebug" ], + "executionContinuationEntry" ], "name" : "BPCallgraphEntryContextSenderChanged", "pools" : [ ], 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..b371ff40 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/latexLabel.st @@ -0,0 +1,16 @@ +as yet unclassified +latexLabel + + ^ String streamContents: [:s | + s + nextPutAll: '\lstinline{'; + nextPutAll: class asString; + nextPutAll: '} \\ \lstinline{'; + nextPutAll: '#'; + 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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/methodProperties.json index b112358c..8fe8653b 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/methodProperties.json @@ -14,6 +14,7 @@ "getSelector" : "cmfcmf 10/27/2020 16:48", "icon" : "cmfcmf 10/23/2020 16:27", "label" : "cmfcmf 10/26/2020 12:00", + "latexLabel" : "cmfcmf 1/2/2021 15:55", "menu:" : "cmfcmf 11/9/2020 16:44", "methodReference" : "cmfcmf 10/30/2020 14:53", "textColor" : "cmfcmf 11/3/2020 12:53" } } 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..0a20d269 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/latexAttributes.st @@ -0,0 +1,4 @@ +as yet unclassified +latexAttributes + + ^ 'return' \ 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..f7c88199 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/latexLabel.st @@ -0,0 +1,4 @@ +as yet unclassified +latexLabel + + ^ super latexLabel \ 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 index b3dc7b29..25c7ea05 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/methodProperties.json @@ -4,6 +4,8 @@ "instance" : { "asPathPart" : "cmfcmf 11/3/2020 13:44", "class:selector:blockIdx:invocationCount:returns:" : "cmfcmf 10/22/2020 13:42", - "label" : "cmfcmf 10/22/2020 14:17", + "label" : "cmfcmf 1/2/2021 14:48", + "latexAttributes" : "cmfcmf 1/2/2021 15:46", + "latexLabel" : "cmfcmf 1/2/2021 15:56", "menu:" : "cmfcmf 11/9/2020 16:45", "textColor" : "cmfcmf 10/23/2020 16:15" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/enclosedSourceCode.st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/enclosedSourceCode.st index 4771b57f..4ece19a9 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/enclosedSourceCode.st +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/enclosedSourceCode.st @@ -1,4 +1,4 @@ -as yet unclassified +accessing enclosedSourceCode "(self compiledMethod partialMethodFor: #bpInstrumented) decompileWithTemps nodesDo: [:node | diff --git a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/printOn.type..st b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/printOn.type..st index b0ca6320..ff345712 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/printOn.type..st +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/instance/printOn.type..st @@ -9,4 +9,4 @@ printOn: aStream type: aString nextPutAll: methodReference selector; nextPutAll: ' '; "nextPutAll: id asString;" - nextPutAll: self enclosedSourceCode \ No newline at end of file + 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 index 06755e4b..833b715e 100644 --- a/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphPathBabylonianTraceBased.class/methodProperties.json @@ -10,4 +10,5 @@ "id:" : "cmfcmf 11/4/2020 14:20", "methodReference" : "cmfcmf 11/4/2020 14:28", "methodReference:" : "cmfcmf 11/4/2020 14:28", - "printOn:type:" : "cmfcmf 11/9/2020 11:55" } } + "printOn:type:" : "cmfcmf 12/31/2020 21:24", + "removeLineBreaksFromSourceCode:" : "cmfcmf 12/31/2020 21:23" } } diff --git a/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testGenerator.st b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testGenerator.st index bea47491..7b17e774 100644 --- a/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testGenerator.st +++ b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/instance/testGenerator.st @@ -10,7 +10,7 @@ testGenerator enableTracingForClass: Generator class. self assertBlock: [| generator | - generator := Generator on: [:g | {2 . 3} do: [:prime | g yield: prime]]. + 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 diff --git a/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/methodProperties.json b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/methodProperties.json index e33ce46f..02381503 100644 --- a/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/methodProperties.json +++ b/packages/Babylonian-Tests.package/BPByteCodeCallgraphTracerTest.class/methodProperties.json @@ -9,7 +9,7 @@ "testBlockTemporariesAgainAgain" : "cmfcmf 12/5/2020 19:47", "testCascade" : "cmfcmf 10/12/2020 14:03", "testException" : "cmfcmf 10/26/2020 10:53", - "testGenerator" : "cmfcmf 10/26/2020 10:55", + "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", diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getVisualizationTypes.st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getVisualizationTypes.st index 1e994f8f..da816978 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getVisualizationTypes.st +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getVisualizationTypes.st @@ -3,6 +3,6 @@ getVisualizationTypes ^ { 'callgraph' -> #callgraph. - 'annotations' -> #annotations. - 'method set' -> #methodSet. + 'annotation set'-> #annotations. + 'procedure set' -> #methodSet. } \ 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 index c178c6e6..64c4c4ee 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json @@ -14,7 +14,7 @@ "getExampleListLabels" : "cmfcmf 10/30/2020 15:39", "getVisualizationTypeIndex" : "cmfcmf 10/30/2020 14:02", "getVisualizationTypeLabels" : "cmfcmf 10/30/2020 14:09", - "getVisualizationTypes" : "cmfcmf 11/4/2020 15:02", + "getVisualizationTypes" : "cmfcmf 12/31/2020 21:27", "initialize" : "cmfcmf 11/9/2020 16:32", "openSelectionMenu" : "cmfcmf 11/10/2020 12:37", "popout" : "cmfcmf 11/4/2020 15:45", diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/calculateBottomContent.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/calculateBottomContent.st index 83cc5d7b..f5214a22 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/calculateBottomContent.st +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/calculateBottomContent.st @@ -11,7 +11,7 @@ calculateBottomContent "common ancestor that ignores invocation counts" ancestor := self callgraph commonAncestorOf: entriesForAncestorSearch ignoringInvocationCounts: true. - list add: (Text string: 'Common ancestor (ignoring context)' attributes: {TextEmphasis bold}). + list add: (Text string: 'Common ancestor (context-insensitive)' attributes: {TextEmphasis bold}). ancestor ifNotNil: [ list add: ancestor. @@ -22,7 +22,7 @@ calculateBottomContent paths := (entries collect: [:each | each pathWithoutContextMovingRight collect: #asPathPart]) withoutDuplicates. paths withIndexDo: [:path :i | list addLast: ''. - list addLast: (Text string: 'Unique Invocation Path ', i, ' (ignoring context)' attributes: {TextEmphasis bold}). + 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]]]. @@ -33,7 +33,7 @@ calculateBottomContent "common ancestor with invocation counts" ancestor := self callgraph commonAncestorOf: entriesForAncestorSearch ignoringInvocationCounts: false. - list add: (Text string: 'Common ancestor' attributes: {TextEmphasis bold}). + list add: (Text string: 'Common ancestor (context-sensitive)' attributes: {TextEmphasis bold}). ancestor ifNotNil: [ list add: ancestor. @@ -43,7 +43,7 @@ calculateBottomContent "all invocations with invocation counts" entries withIndexDo: [:entry :i | list addLast: ''. - list addLast: (Text string: 'Invocation ', i attribute: TextEmphasis bold). + list addLast: (Text string: 'Invocation ', i, ' (context-sensitive)' attribute: TextEmphasis bold). entry pathWithoutContextMovingRight do: [:each | list add: each. self flag: #todo. "What if the ancestor is not a BPCallgraphEntryEnter?" diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/methodProperties.json index 2ab0fdc0..f60fb3ad 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/methodProperties.json @@ -13,7 +13,7 @@ "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 11/6/2020 15:53", + "calculateBottomContent" : "cmfcmf 12/31/2020 21:16", "highlightMethod:" : "cmfcmf 11/4/2020 12:50", "preprocessBottomEntriesForAncestorSearch:" : "cmfcmf 11/5/2020 12:37", "selectMatchingEntriesFromCallgraph:" : "cmfcmf 11/5/2020 12:38", From 1b8bf18405d7b1ce6638ad3a63f8f3e00a8e9976 Mon Sep 17 00:00:00 2001 From: Christian Flach Date: Sun, 3 Jan 2021 22:05:02 +0100 Subject: [PATCH 16/71] Minor fixes --- ...thod.mode.howToAddToMethodDictWhenSlow..st | 7 +- ...thod.mode.howToAddToMethodDictWhenSlow..st | 7 +- .../class/instrumentAll..st | 11 ++ .../class/instrumentAll.st | 8 + .../class/instrumentClass..st | 7 +- .../class/instrumentClassCategory..st | 11 +- .../class/privDisableTracingFor..st | 41 +++-- .../class/privEnableTracingFor..st | 144 +++++++++--------- .../class/uninstrumentAll..st | 11 ++ .../class/uninstrumentAll.st | 8 + .../class/uninstrumentClass..st | 7 +- .../class/uninstrumentClassCategory..st | 11 +- .../methodProperties.json | 22 +-- .../instance/latexAttributes.st | 6 +- .../instance/latexLabel.st | 17 ++- .../methodProperties.json | 4 +- 16 files changed, 191 insertions(+), 131 deletions(-) create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentAll..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentAll.st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentAll..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentAll.st 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 index 474e9a8b..251f2120 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForCompiledMethod.mode.howToAddToMethodDictWhenSlow..st +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForCompiledMethod.mode.howToAddToMethodDictWhenSlow..st @@ -16,6 +16,7 @@ disableTracingForCompiledMethod: oldMethod mode: aSymbol howToAddToMethodDictWhe aSymbol == #slow ifTrue: [ oldMethod isInstalled ifTrue: [ - aBlock value: newMethod. - oldMethod selector flushCache] - ifFalse: [oldMethod becomeForward: newMethod]] \ No newline at end of file + 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/enableTracingForCompiledMethod.mode.howToAddToMethodDictWhenSlow..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForCompiledMethod.mode.howToAddToMethodDictWhenSlow..st index 5620dbcd..26719515 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForCompiledMethod.mode.howToAddToMethodDictWhenSlow..st +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForCompiledMethod.mode.howToAddToMethodDictWhenSlow..st @@ -20,6 +20,7 @@ enableTracingForCompiledMethod: oldMethod mode: aSymbol howToAddToMethodDictWhen aSymbol == #slow ifTrue: [ oldMethod isInstalled ifTrue: [ - aBlock value: newMethod. - oldMethod selector flushCache] - ifFalse: [oldMethod becomeForward: newMethod]] \ No newline at end of file + 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/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 index 69eeaae0..89b31aee 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClass..st +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClass..st @@ -2,6 +2,7 @@ instrumentClass: aClass CSLayeredMethod pauseFlushingCachesDuring: [ - self for: aClass selectors - do: [:selector | self instrumentClass: aClass selector: selector] - displayingProgress: [:selector | 'Recompiling ', aClass, ' >> #', selector]] \ No newline at end of file + 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/instrumentClassCategory..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClassCategory..st index 44f87600..92a43148 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClassCategory..st +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClassCategory..st @@ -2,8 +2,9 @@ instrumentClassCategory: aSymbol CSLayeredMethod pauseFlushingCachesDuring: [ - 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 + 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/privDisableTracingFor..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/privDisableTracingFor..st index b85322e3..ded0d416 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/privDisableTracingFor..st +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/privDisableTracingFor..st @@ -6,25 +6,24 @@ privDisableTracingFor: 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)] valueUnpreemptively - \ No newline at end of file + 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 index cab08ed1..5884c433 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/privEnableTracingFor..st +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/privEnableTracingFor..st @@ -1,7 +1,7 @@ 2 - enable tracing privEnableTracingFor: method - | config tempIdxMap nextBlockIdx encoder litTracerIdx litInvocationCountIdx litEnterIdx litExitIdx blockIdentifierLiterals parentBlockMap blockExtents | + | config tempIdxMap nextBlockIdx encoder litTracerIdx litInvocationCountIdx litEnterIdx litExitIdx blockIdentifierLiterals parentBlockMap blockExtents nopPositions | encoder := method encoderClass new streamToMethod: method; @@ -45,81 +45,79 @@ privEnableTracingFor: method parentBlockMap at: current key put: wrappingBlock key. ]. - [ | nopPositions | - 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. + 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]]. - "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]. + (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. - self assert: encoder methodStreamPosition == interval stop]. - - "self rewriteHeaderOf: newMethod numTemps: newMethod numTemps + 1" + 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" - ] valueUnpreemptively. config state: #active. self assert: (self hasActiveTracing: method). \ 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 index 68a99cb4..8d991499 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentClass..st +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentClass..st @@ -2,6 +2,7 @@ uninstrumentClass: aClass CSLayeredMethod pauseFlushingCachesDuring: [ - self for: aClass selectors - do: [:selector | self uninstrumentClass: aClass selector: selector] - displayingProgress: [:selector | 'Recompiling ', aClass, ' >> #', selector]] \ No newline at end of file + 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/uninstrumentClassCategory..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentClassCategory..st index f2980de9..6f2037a5 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentClassCategory..st +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentClassCategory..st @@ -2,8 +2,9 @@ uninstrumentClassCategory: aSymbol CSLayeredMethod pauseFlushingCachesDuring: [ - 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 + 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/methodProperties.json b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json index da6376f1..0e6b0cd7 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json @@ -8,23 +8,25 @@ "disableTracingForClassCategory:" : "cmfcmf 10/23/2020 13:04", "disableTracingForCompiledMethod:" : "cmfcmf 10/20/2020 14:22", "disableTracingForCompiledMethod:mode:" : "cmfcmf 10/26/2020 15:37", - "disableTracingForCompiledMethod:mode:howToAddToMethodDictWhenSlow:" : "cmfcmf 10/27/2020 12:55", + "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:" : "cmfcmf 10/23/2020 13:04", "enableTracingForCompiledMethod:" : "cmfcmf 10/20/2020 14:27", "enableTracingForCompiledMethod:mode:" : "cmfcmf 10/26/2020 15:34", - "enableTracingForCompiledMethod:mode:howToAddToMethodDictWhenSlow:" : "cmfcmf 10/27/2020 12:55", + "enableTracingForCompiledMethod:mode:howToAddToMethodDictWhenSlow:" : "cmfcmf 12/15/2020 17:22", "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", - "instrumentClass:" : "cmfcmf 12/1/2020 15:08", + "instrumentAll" : "cmfcmf 12/10/2020 12:42", + "instrumentAll:" : "cmfcmf 12/10/2020 12:39", + "instrumentClass:" : "cmfcmf 12/10/2020 12:02", "instrumentClass:selector:" : "cmfcmf 10/24/2020 11:38", - "instrumentClassCategory:" : "cmfcmf 12/1/2020 15:08", + "instrumentClassCategory:" : "cmfcmf 12/10/2020 12:02", "instrumentCompiledMethod:" : "cmfcmf 10/20/2020 12:46", "instrumentContext" : "cmfcmf 10/8/2020 11:41", "instrumentString:" : "cmfcmf 10/26/2020 16:15", @@ -33,17 +35,19 @@ "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 10/20/2020 14:04", - "privEnableTracingFor:" : "cmfcmf 12/5/2020 19:44", + "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:" : "cmfcmf 10/26/2020 10:53", "teardown" : "cmfcmf 10/7/2020 15:31", "uninstallWrapper:" : "cmfcmf 10/29/2020 13:06", - "uninstrumentClass:" : "cmfcmf 12/1/2020 15:10", - "uninstrumentClass:selector:" : "cmfcmf 10/20/2020 12:44", - "uninstrumentClassCategory:" : "cmfcmf 12/1/2020 15:10", + "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:" : "cmfcmf 12/10/2020 12:02", "uninstrumentCompiledMethod:" : "cmfcmf 10/20/2020 12:45", "uninstrumentContext" : "cmfcmf 10/29/2020 13:06" }, "instance" : { diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/latexAttributes.st b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/latexAttributes.st index 0a20d269..c702fa7c 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/latexAttributes.st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/latexAttributes.st @@ -1,4 +1,6 @@ as yet unclassified -latexAttributes +latexAttributes + - ^ 'return' \ No newline at end of file + + ^ '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 index f7c88199..6b2414ff 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/latexLabel.st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/latexLabel.st @@ -1,4 +1,17 @@ as yet unclassified latexLabel - - ^ super latexLabel \ No newline at end of file + + ^ String streamContents: [:s | + s + nextPutAll: '\lstinline{'; + nextPutAll: (isExplicitReturn ifTrue: ['^ '] ifFalse: ['_ ']); + nextPutAll: class asString; + nextPutAll: '} \\ \lstinline{'; + nextPutAll: '#'; + 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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/methodProperties.json index 25c7ea05..37d1b2b8 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/methodProperties.json @@ -5,7 +5,7 @@ "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 15:46", - "latexLabel" : "cmfcmf 1/2/2021 15:56", + "latexAttributes" : "cmfcmf 1/2/2021 16:18", + "latexLabel" : "cmfcmf 1/2/2021 16:19", "menu:" : "cmfcmf 11/9/2020 16:45", "textColor" : "cmfcmf 10/23/2020 16:15" } } From cc1ce8ff02a7d512fce2818303ad0077990de770 Mon Sep 17 00:00:00 2001 From: Christian Flach Date: Sun, 3 Jan 2021 22:32:29 +0100 Subject: [PATCH 17/71] Fix a recursion bug that ate all my RAM :(( --- .../instance/eventsForTree.st | 1 + .../instrumentedAncestorAndDepthOf.and..st | 9 ++++--- .../methodProperties.json | 4 ++-- ...e. (bpCallgraph).st => additionalSize..st} | 0 ...raph).st => additionalSizeBeforeBlock..st} | 0 ...tCodeForEvaluatedClosureValue.encoder..st} | 0 ...eForEvaluatedFullClosureValue.encoder..st} | 0 ... => emitCodeForEvaluatedValue.encoder..st} | 0 ...graph).st => emitCodeForValue.encoder..st} | 0 ...lock. (bpCallgraph).st => isRootBlock..st} | 0 ...lgraph).st => litIndexBlockIdentifier..st} | 0 ...t => sizeCodeForEvaluatedClosureValue..st} | 0 ... sizeCodeForEvaluatedFullClosureValue..st} | 0 ...raph).st => sizeCodeForEvaluatedValue..st} | 0 ... (bpCallgraph).st => sizeCodeForValue..st} | 0 .../BlockNode.extension/methodProperties.json | 24 +++++++++---------- ...g. (bpCallgraph).st => generate.using..st} | 0 ...aph).st => rememberNOPs.range.blockId..st} | 0 .../methodProperties.json | 4 ++-- ...h).st => additionalReturnSize.returns..st} | 0 ...raph).st => emitCodeForReturn.encoder..st} | 0 ...allgraph).st => emitNOPs.stack.n.type..st} | 0 ....st => findEnclosingNonOptimizedBlock..st} | 0 ...t => findEnclosingNonOptimizedBlockId..st} | 0 ...pCallgraph).st => invocationTempIndex..st} | 0 ...lgraph).st => litIndexBlockIdentifier..st} | 0 ...lgraph).st => litIndexEnterInvocation..st} | 0 ...llgraph).st => litIndexExitInvocation..st} | 0 ...lgraph).st => litIndexInvocationCount..st} | 0 ...pCallgraph).st => litIndexTracerClass..st} | 0 ...(bpCallgraph).st => sizeCodeForReturn..st} | 0 .../ParseNode.extension/methodProperties.json | 24 +++++++++---------- ...raph).st => emitCodeForReturn.encoder..st} | 0 ...(bpCallgraph).st => sizeCodeForReturn..st} | 0 .../methodProperties.json | 4 ++-- 35 files changed, 37 insertions(+), 33 deletions(-) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{additionalSize. (bpCallgraph).st => additionalSize..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{additionalSizeBeforeBlock. (bpCallgraph).st => additionalSizeBeforeBlock..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st => emitCodeForEvaluatedClosureValue.encoder..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st => emitCodeForEvaluatedFullClosureValue.encoder..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedValue.encoder. (bpCallgraph).st => emitCodeForEvaluatedValue.encoder..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForValue.encoder. (bpCallgraph).st => emitCodeForValue.encoder..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{isRootBlock. (bpCallgraph).st => isRootBlock..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{litIndexBlockIdentifier. (bpCallgraph).st => litIndexBlockIdentifier..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedClosureValue. (bpCallgraph).st => sizeCodeForEvaluatedClosureValue..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st => sizeCodeForEvaluatedFullClosureValue..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedValue. (bpCallgraph).st => sizeCodeForEvaluatedValue..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForValue. (bpCallgraph).st => sizeCodeForValue..st} (100%) rename packages/Babylonian-Core.package/MethodNode.extension/instance/{generate.using. (bpCallgraph).st => generate.using..st} (100%) rename packages/Babylonian-Core.package/MethodNode.extension/instance/{rememberNOPs.range.blockId. (bpCallgraph).st => rememberNOPs.range.blockId..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{additionalReturnSize.returns. (bpCallgraph).st => additionalReturnSize.returns..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{emitCodeForReturn.encoder. (bpCallgraph).st => emitCodeForReturn.encoder..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{emitNOPs.stack.n.type. (bpCallgraph).st => emitNOPs.stack.n.type..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{findEnclosingNonOptimizedBlock. (bpCallgraph).st => findEnclosingNonOptimizedBlock..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{findEnclosingNonOptimizedBlockId. (bpCallgraph).st => findEnclosingNonOptimizedBlockId..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{invocationTempIndex. (bpCallgraph).st => invocationTempIndex..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexBlockIdentifier. (bpCallgraph).st => litIndexBlockIdentifier..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexEnterInvocation. (bpCallgraph).st => litIndexEnterInvocation..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexExitInvocation. (bpCallgraph).st => litIndexExitInvocation..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexInvocationCount. (bpCallgraph).st => litIndexInvocationCount..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexTracerClass. (bpCallgraph).st => litIndexTracerClass..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{sizeCodeForReturn. (bpCallgraph).st => sizeCodeForReturn..st} (100%) rename packages/Babylonian-Core.package/VariableNode.extension/instance/{emitCodeForReturn.encoder. (bpCallgraph).st => emitCodeForReturn.encoder..st} (100%) rename packages/Babylonian-Core.package/VariableNode.extension/instance/{sizeCodeForReturn. (bpCallgraph).st => sizeCodeForReturn..st} (100%) diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsForTree.st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsForTree.st index baddef49..d5361cd3 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsForTree.st +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsForTree.st @@ -17,6 +17,7 @@ eventsForTree 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 - 1 - executionContinuation second >= 0. (theDepth - 1 - executionContinuation second) to: theDepth - 1 do: [:i | overwriteDepth := i. addToTree value: BPCallgraphEntryContextJumpHelper new]. diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/instrumentedAncestorAndDepthOf.and..st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/instrumentedAncestorAndDepthOf.and..st index 8a78a9c7..92d04e30 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/instrumentedAncestorAndDepthOf.and..st +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/instrumentedAncestorAndDepthOf.and..st @@ -15,10 +15,13 @@ instrumentedAncestorAndDepthOf: aContext and: anotherContext 2. " - | a b seenA seenB | + | a b seenA seenB hasActiveTracing | seenA := OrderedCollection new. seenB := OrderedCollection new. + + hasActiveTracing := BPByteCodeRewriter hasActiveTracing: aContext method. + a := aContext. b := anotherContext. @@ -30,10 +33,10 @@ instrumentedAncestorAndDepthOf: aContext and: anotherContext depth := seenB size - seenA size. ^ depth <= 0 ifTrue: [{Float negativeInfinity "unused" . depth}] - ifFalse: [{seenB size . depth}]]. self flag: #todo. "Verify that the first return value is correct." + ifFalse: [{seenB size - (hasActiveTracing ifTrue: [1] ifFalse: [0]) . depth}]]. self flag: #todo. "Verify that the first return value is correct." a ifNotNil: [seenA addLast: a]. - b ifNotNil: [seenB addLast: b]. + b ifNotNil: [seenB addLast: b]. a ifNotNil: [(idx := seenB indexOf: a) > 0 ifTrue: ["jump left" depth := idx - seenA size. diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json index 96870950..d48b408d 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json @@ -11,12 +11,12 @@ "customEvent:data:" : "cmfcmf 10/23/2020 14:56", "enter:invocation:" : "cmfcmf 10/20/2020 13:44", "eventStream" : "cmfcmf 10/20/2020 13:49", - "eventsForTree" : "cmfcmf 1/2/2021 14:05", + "eventsForTree" : "cmfcmf 1/3/2021 22:23", "eventsToString" : "cmfcmf 1/2/2021 14:27", "eventsToStringForTest" : "cmfcmf 10/7/2020 14:07", "exit:invocation:returns:" : "cmfcmf 10/20/2020 13:47", "initialize" : "cmfcmf 12/5/2020 14:15", - "instrumentedAncestorAndDepthOf:and:" : "cmfcmf 1/2/2021 14:48", + "instrumentedAncestorAndDepthOf:and:" : "cmfcmf 1/3/2021 22:32", "instrumentedDepthOf:below:" : "cmfcmf 10/7/2020 16:19", "reset" : "cmfcmf 12/5/2020 14:15", "swapSenderOf:newSender:" : "cmfcmf 1/2/2021 14:07" } } diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json index 4d241b6d..19245eb6 100644 --- a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalSize: (bpCallgraph)" : "cmfcmf 12/5/2020 20:34", - "additionalSizeBeforeBlock: (bpCallgraph)" : "cmfcmf 10/10/2020 15:06", - "emitCodeForEvaluatedClosureValue:encoder: (bpCallgraph)" : "cmfcmf 10/26/2020 11:22", - "emitCodeForEvaluatedFullClosureValue:encoder: (bpCallgraph)" : "cmfcmf 10/9/2020 14:19", - "emitCodeForEvaluatedValue:encoder: (bpCallgraph)" : "cmfcmf 10/26/2020 11:23", - "emitCodeForValue:encoder: (bpCallgraph)" : "cmfcmf 10/12/2020 14:59", - "isRootBlock: (bpCallgraph)" : "cmfcmf 10/9/2020 15:42", - "litIndexBlockIdentifier: (bpCallgraph)" : "cmfcmf 10/19/2020 12:51", - "sizeCodeForEvaluatedClosureValue: (bpCallgraph)" : "cmfcmf 10/19/2020 12:58", - "sizeCodeForEvaluatedFullClosureValue: (bpCallgraph)" : "cmfcmf 10/9/2020 13:41", - "sizeCodeForEvaluatedValue: (bpCallgraph)" : "cmfcmf 10/15/2020 21:37", - "sizeCodeForValue: (bpCallgraph)" : "cmfcmf 10/10/2020 15:06" } } + "additionalSize:" : " 1/3/2021 22:31:23", + "additionalSizeBeforeBlock:" : " 1/3/2021 22:31:23", + "emitCodeForEvaluatedClosureValue:encoder:" : " 1/3/2021 22:31:23", + "emitCodeForEvaluatedFullClosureValue:encoder:" : " 1/3/2021 22:31:23", + "emitCodeForEvaluatedValue:encoder:" : " 1/3/2021 22:31:23", + "emitCodeForValue:encoder:" : " 1/3/2021 22:31:23", + "isRootBlock:" : " 1/3/2021 22:31:23", + "litIndexBlockIdentifier:" : " 1/3/2021 22:31:23", + "sizeCodeForEvaluatedClosureValue:" : " 1/3/2021 22:31:23", + "sizeCodeForEvaluatedFullClosureValue:" : " 1/3/2021 22:31:23", + "sizeCodeForEvaluatedValue:" : " 1/3/2021 22:31:23", + "sizeCodeForValue:" : " 1/3/2021 22:31:23" } } diff --git a/packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using. (bpCallgraph).st b/packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using..st similarity index 100% rename from packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using. (bpCallgraph).st rename to packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using..st diff --git a/packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId. (bpCallgraph).st b/packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId..st similarity index 100% rename from packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId. (bpCallgraph).st rename to packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId..st diff --git a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json index f0efbf04..19611b88 100644 --- a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "generate:using: (bpCallgraph)" : "cmfcmf 12/5/2020 20:35", - "rememberNOPs:range:blockId: (bpCallgraph)" : "cmfcmf 10/19/2020 13:05" } } + "generate:using:" : " 1/3/2021 22:31:23", + "rememberNOPs:range:blockId:" : " 1/3/2021 22:31:23" } } diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json index a81af5c4..df99a461 100644 --- a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalReturnSize:returns: (bpCallgraph)" : "cmfcmf 10/19/2020 13:11", - "emitCodeForReturn:encoder: (bpCallgraph)" : "cmfcmf 10/19/2020 13:00", - "emitNOPs:stack:n:type: (bpCallgraph)" : "cmfcmf 10/19/2020 13:04", - "findEnclosingNonOptimizedBlock: (bpCallgraph)" : "cmfcmf 10/20/2020 12:36", - "findEnclosingNonOptimizedBlockId: (bpCallgraph)" : "cmfcmf 10/12/2020 19:54", - "invocationTempIndex: (bpCallgraph)" : "cmfcmf 12/5/2020 20:36", - "litIndexBlockIdentifier: (bpCallgraph)" : "cmfcmf 10/11/2020 14:17", - "litIndexEnterInvocation: (bpCallgraph)" : "cmfcmf 10/9/2020 14:45", - "litIndexExitInvocation: (bpCallgraph)" : "cmfcmf 10/19/2020 13:07", - "litIndexInvocationCount: (bpCallgraph)" : "cmfcmf 10/11/2020 11:46", - "litIndexTracerClass: (bpCallgraph)" : "cmfcmf 10/9/2020 14:45", - "sizeCodeForReturn: (bpCallgraph)" : "cmfcmf 10/19/2020 12:59" } } + "additionalReturnSize:returns:" : " 1/3/2021 22:31:23", + "emitCodeForReturn:encoder:" : " 1/3/2021 22:31:23", + "emitNOPs:stack:n:type:" : " 1/3/2021 22:31:23", + "findEnclosingNonOptimizedBlock:" : " 1/3/2021 22:31:23", + "findEnclosingNonOptimizedBlockId:" : " 1/3/2021 22:31:23", + "invocationTempIndex:" : " 1/3/2021 22:31:23", + "litIndexBlockIdentifier:" : " 1/3/2021 22:31:23", + "litIndexEnterInvocation:" : " 1/3/2021 22:31:23", + "litIndexExitInvocation:" : " 1/3/2021 22:31:23", + "litIndexInvocationCount:" : " 1/3/2021 22:31:23", + "litIndexTracerClass:" : " 1/3/2021 22:31:23", + "sizeCodeForReturn:" : " 1/3/2021 22:31:23" } } diff --git a/packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder..st diff --git a/packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st b/packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn..st similarity index 100% rename from packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st rename to packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn..st diff --git a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json index 100f9a6f..167803f4 100644 --- a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "emitCodeForReturn:encoder: (bpCallgraph)" : "cmfcmf 10/19/2020 13:01", - "sizeCodeForReturn: (bpCallgraph)" : "cmfcmf 10/19/2020 12:59" } } + "emitCodeForReturn:encoder:" : " 1/3/2021 22:31:23", + "sizeCodeForReturn:" : " 1/3/2021 22:31:23" } } From 4a804e579b79b8cd470682b7bc2e1591aa1285ac Mon Sep 17 00:00:00 2001 From: Christian Flach Date: Sun, 3 Jan 2021 22:35:43 +0100 Subject: [PATCH 18/71] ARGH??? --- ...e..st => additionalSize. (bpCallgraph).st} | 0 ...ditionalSizeBeforeBlock. (bpCallgraph).st} | 0 ...tedClosureValue.encoder. (bpCallgraph).st} | 0 ...ullClosureValue.encoder. (bpCallgraph).st} | 0 ...rEvaluatedValue.encoder. (bpCallgraph).st} | 0 ...mitCodeForValue.encoder. (bpCallgraph).st} | 0 ...lock..st => isRootBlock. (bpCallgraph).st} | 0 ...litIndexBlockIdentifier. (bpCallgraph).st} | 0 ...orEvaluatedClosureValue. (bpCallgraph).st} | 0 ...aluatedFullClosureValue. (bpCallgraph).st} | 0 ...zeCodeForEvaluatedValue. (bpCallgraph).st} | 0 ....st => sizeCodeForValue. (bpCallgraph).st} | 0 .../BlockNode.extension/methodProperties.json | 24 +++++++++---------- ...g..st => generate.using. (bpCallgraph).st} | 0 ...emberNOPs.range.blockId. (bpCallgraph).st} | 0 .../methodProperties.json | 4 ++-- ...ionalReturnSize.returns. (bpCallgraph).st} | 0 ...itCodeForReturn.encoder. (bpCallgraph).st} | 0 ...> emitNOPs.stack.n.type. (bpCallgraph).st} | 0 ...losingNonOptimizedBlock. (bpCallgraph).st} | 0 ...singNonOptimizedBlockId. (bpCallgraph).st} | 0 ... => invocationTempIndex. (bpCallgraph).st} | 0 ...litIndexBlockIdentifier. (bpCallgraph).st} | 0 ...litIndexEnterInvocation. (bpCallgraph).st} | 0 ... litIndexExitInvocation. (bpCallgraph).st} | 0 ...litIndexInvocationCount. (bpCallgraph).st} | 0 ... => litIndexTracerClass. (bpCallgraph).st} | 0 ...st => sizeCodeForReturn. (bpCallgraph).st} | 0 .../ParseNode.extension/methodProperties.json | 24 +++++++++---------- ...itCodeForReturn.encoder. (bpCallgraph).st} | 0 ...st => sizeCodeForReturn. (bpCallgraph).st} | 0 .../methodProperties.json | 4 ++-- 32 files changed, 28 insertions(+), 28 deletions(-) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{additionalSize..st => additionalSize. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{additionalSizeBeforeBlock..st => additionalSizeBeforeBlock. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedClosureValue.encoder..st => emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedFullClosureValue.encoder..st => emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedValue.encoder..st => emitCodeForEvaluatedValue.encoder. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForValue.encoder..st => emitCodeForValue.encoder. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{isRootBlock..st => isRootBlock. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{litIndexBlockIdentifier..st => litIndexBlockIdentifier. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedClosureValue..st => sizeCodeForEvaluatedClosureValue. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedFullClosureValue..st => sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedValue..st => sizeCodeForEvaluatedValue. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForValue..st => sizeCodeForValue. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/MethodNode.extension/instance/{generate.using..st => generate.using. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/MethodNode.extension/instance/{rememberNOPs.range.blockId..st => rememberNOPs.range.blockId. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{additionalReturnSize.returns..st => additionalReturnSize.returns. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{emitCodeForReturn.encoder..st => emitCodeForReturn.encoder. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{emitNOPs.stack.n.type..st => emitNOPs.stack.n.type. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{findEnclosingNonOptimizedBlock..st => findEnclosingNonOptimizedBlock. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{findEnclosingNonOptimizedBlockId..st => findEnclosingNonOptimizedBlockId. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{invocationTempIndex..st => invocationTempIndex. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexBlockIdentifier..st => litIndexBlockIdentifier. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexEnterInvocation..st => litIndexEnterInvocation. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexExitInvocation..st => litIndexExitInvocation. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexInvocationCount..st => litIndexInvocationCount. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexTracerClass..st => litIndexTracerClass. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{sizeCodeForReturn..st => sizeCodeForReturn. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/VariableNode.extension/instance/{emitCodeForReturn.encoder..st => emitCodeForReturn.encoder. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/VariableNode.extension/instance/{sizeCodeForReturn..st => sizeCodeForReturn. (bpCallgraph).st} (100%) diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json index 19245eb6..4d241b6d 100644 --- a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalSize:" : " 1/3/2021 22:31:23", - "additionalSizeBeforeBlock:" : " 1/3/2021 22:31:23", - "emitCodeForEvaluatedClosureValue:encoder:" : " 1/3/2021 22:31:23", - "emitCodeForEvaluatedFullClosureValue:encoder:" : " 1/3/2021 22:31:23", - "emitCodeForEvaluatedValue:encoder:" : " 1/3/2021 22:31:23", - "emitCodeForValue:encoder:" : " 1/3/2021 22:31:23", - "isRootBlock:" : " 1/3/2021 22:31:23", - "litIndexBlockIdentifier:" : " 1/3/2021 22:31:23", - "sizeCodeForEvaluatedClosureValue:" : " 1/3/2021 22:31:23", - "sizeCodeForEvaluatedFullClosureValue:" : " 1/3/2021 22:31:23", - "sizeCodeForEvaluatedValue:" : " 1/3/2021 22:31:23", - "sizeCodeForValue:" : " 1/3/2021 22:31:23" } } + "additionalSize: (bpCallgraph)" : "cmfcmf 12/5/2020 20:34", + "additionalSizeBeforeBlock: (bpCallgraph)" : "cmfcmf 10/10/2020 15:06", + "emitCodeForEvaluatedClosureValue:encoder: (bpCallgraph)" : "cmfcmf 10/26/2020 11:22", + "emitCodeForEvaluatedFullClosureValue:encoder: (bpCallgraph)" : "cmfcmf 10/9/2020 14:19", + "emitCodeForEvaluatedValue:encoder: (bpCallgraph)" : "cmfcmf 10/26/2020 11:23", + "emitCodeForValue:encoder: (bpCallgraph)" : "cmfcmf 10/12/2020 14:59", + "isRootBlock: (bpCallgraph)" : "cmfcmf 10/9/2020 15:42", + "litIndexBlockIdentifier: (bpCallgraph)" : "cmfcmf 10/19/2020 12:51", + "sizeCodeForEvaluatedClosureValue: (bpCallgraph)" : "cmfcmf 10/19/2020 12:58", + "sizeCodeForEvaluatedFullClosureValue: (bpCallgraph)" : "cmfcmf 10/9/2020 13:41", + "sizeCodeForEvaluatedValue: (bpCallgraph)" : "cmfcmf 10/15/2020 21:37", + "sizeCodeForValue: (bpCallgraph)" : "cmfcmf 10/10/2020 15:06" } } diff --git a/packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using..st b/packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using..st rename to packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using. (bpCallgraph).st 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. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId..st rename to packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json index 19611b88..f0efbf04 100644 --- a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "generate:using:" : " 1/3/2021 22:31:23", - "rememberNOPs:range:blockId:" : " 1/3/2021 22:31:23" } } + "generate:using: (bpCallgraph)" : "cmfcmf 12/5/2020 20:35", + "rememberNOPs:range:blockId: (bpCallgraph)" : "cmfcmf 10/19/2020 13:05" } } diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st 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. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json index df99a461..a81af5c4 100644 --- a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalReturnSize:returns:" : " 1/3/2021 22:31:23", - "emitCodeForReturn:encoder:" : " 1/3/2021 22:31:23", - "emitNOPs:stack:n:type:" : " 1/3/2021 22:31:23", - "findEnclosingNonOptimizedBlock:" : " 1/3/2021 22:31:23", - "findEnclosingNonOptimizedBlockId:" : " 1/3/2021 22:31:23", - "invocationTempIndex:" : " 1/3/2021 22:31:23", - "litIndexBlockIdentifier:" : " 1/3/2021 22:31:23", - "litIndexEnterInvocation:" : " 1/3/2021 22:31:23", - "litIndexExitInvocation:" : " 1/3/2021 22:31:23", - "litIndexInvocationCount:" : " 1/3/2021 22:31:23", - "litIndexTracerClass:" : " 1/3/2021 22:31:23", - "sizeCodeForReturn:" : " 1/3/2021 22:31:23" } } + "additionalReturnSize:returns: (bpCallgraph)" : "cmfcmf 10/19/2020 13:11", + "emitCodeForReturn:encoder: (bpCallgraph)" : "cmfcmf 10/19/2020 13:00", + "emitNOPs:stack:n:type: (bpCallgraph)" : "cmfcmf 10/19/2020 13:04", + "findEnclosingNonOptimizedBlock: (bpCallgraph)" : "cmfcmf 10/20/2020 12:36", + "findEnclosingNonOptimizedBlockId: (bpCallgraph)" : "cmfcmf 10/12/2020 19:54", + "invocationTempIndex: (bpCallgraph)" : "cmfcmf 12/5/2020 20:36", + "litIndexBlockIdentifier: (bpCallgraph)" : "cmfcmf 10/11/2020 14:17", + "litIndexEnterInvocation: (bpCallgraph)" : "cmfcmf 10/9/2020 14:45", + "litIndexExitInvocation: (bpCallgraph)" : "cmfcmf 10/19/2020 13:07", + "litIndexInvocationCount: (bpCallgraph)" : "cmfcmf 10/11/2020 11:46", + "litIndexTracerClass: (bpCallgraph)" : "cmfcmf 10/9/2020 14:45", + "sizeCodeForReturn: (bpCallgraph)" : "cmfcmf 10/19/2020 12:59" } } diff --git a/packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder..st b/packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder..st rename to packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn..st b/packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn..st rename to packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json index 167803f4..100f9a6f 100644 --- a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "emitCodeForReturn:encoder:" : " 1/3/2021 22:31:23", - "sizeCodeForReturn:" : " 1/3/2021 22:31:23" } } + "emitCodeForReturn:encoder: (bpCallgraph)" : "cmfcmf 10/19/2020 13:01", + "sizeCodeForReturn: (bpCallgraph)" : "cmfcmf 10/19/2020 12:59" } } From 9e2f996862020e822def47e097c65a7e3cb95e89 Mon Sep 17 00:00:00 2001 From: Christian Flach Date: Tue, 5 Jan 2021 18:55:18 +0100 Subject: [PATCH 19/71] Fix ByteCode Rewriting when the last statement is a TempVariableNode, minor other fixes --- .../class/instrumentClass.selector..st | 7 +++++-- .../methodProperties.json | 2 +- .../BPCallgraphEntry.class/instance/asPathPart.st | 4 ++++ .../instance/printForLatexOn..st | 4 +++- .../BPCallgraphEntry.class/methodProperties.json | 3 ++- .../instance/label.st | 2 +- .../methodProperties.json | 2 +- .../instance/equalsClassSelector..st | 1 - .../instance/equalsClassSelectorBlockIdx..st | 3 +-- .../equalsClassSelectorBlockIdxInvocation..st | 1 - .../instance/latexLabel.st | 1 - .../BPCallgraphEntryEnter.class/instance/menu..st | 1 + .../methodProperties.json | 10 +++++----- .../instance/latexLabel.st | 3 +-- .../BPCallgraphEntryExit.class/instance/menu..st | 2 +- .../methodProperties.json | 4 ++-- .../Context.extension/instance/invocationCount.st | 7 +++++++ .../Context.extension/methodProperties.json | 5 +++++ .../Context.extension/properties.json | 2 ++ .../emitNOPs.stack.n.type. (bpCallgraph).st | 1 + ...ndEnclosingNonOptimizedBlock. (bpCallgraph).st | 15 +++++++++++---- .../ParseNode.extension/methodProperties.json | 4 ++-- .../instance/selectChildMethodCalls.st | 11 +++++++++++ .../instance/selectOriginalCall.st | 8 ++++++++ .../BPCallgraphModel.class/methodProperties.json | 2 ++ 25 files changed, 77 insertions(+), 28 deletions(-) create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/asPathPart.st create mode 100644 packages/Babylonian-Core.package/Context.extension/instance/invocationCount.st create mode 100644 packages/Babylonian-Core.package/Context.extension/methodProperties.json create mode 100644 packages/Babylonian-Core.package/Context.extension/properties.json create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectChildMethodCalls.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectOriginalCall.st diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClass.selector..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClass.selector..st index 7f3d9041..91505dd9 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClass.selector..st +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClass.selector..st @@ -8,6 +8,9 @@ instrumentClass: aClass selector: aSymbol (self shouldNeverInstrument: aClass selector: aSymbol) ifTrue: [ "UIManager default inform: 'Skipping instrumentation of ', aClass, ' >> #', aSymbol." ^ self]. - - #bpCallgraph withLayerDo: [aClass recompile: aSymbol]. + + [#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/methodProperties.json b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json index 0e6b0cd7..d3a29bc0 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json @@ -25,7 +25,7 @@ "instrumentAll" : "cmfcmf 12/10/2020 12:42", "instrumentAll:" : "cmfcmf 12/10/2020 12:39", "instrumentClass:" : "cmfcmf 12/10/2020 12:02", - "instrumentClass:selector:" : "cmfcmf 10/24/2020 11:38", + "instrumentClass:selector:" : "cmfcmf 1/4/2021 18:51", "instrumentClassCategory:" : "cmfcmf 12/10/2020 12:02", "instrumentCompiledMethod:" : "cmfcmf 10/20/2020 12:46", "instrumentContext" : "cmfcmf 10/8/2020 11:41", 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/printForLatexOn..st b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/printForLatexOn..st index f64924bf..fb792d5a 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/printForLatexOn..st +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/printForLatexOn..st @@ -1,7 +1,8 @@ as yet unclassified printForLatexOn: aStream - aStream + aStream + nextPutAll: (String new: self path size withAll: Character tab); nextPutAll: '['; nextPutAll: self latexLabel; nextPutAll: ','; @@ -11,5 +12,6 @@ printForLatexOn: aStream 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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntry.class/methodProperties.json index 3ed6a52f..22ea5a79 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntry.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/methodProperties.json @@ -3,6 +3,7 @@ }, "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", @@ -17,7 +18,7 @@ "parent:" : "cmfcmf 10/27/2020 14:01", "path" : "cmfcmf 10/27/2020 16:31", "pathWithoutContextMovingRight" : "cmfcmf 11/3/2020 13:50", - "printForLatexOn:" : "cmfcmf 1/2/2021 15:51", + "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", diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/label.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/label.st index 7fe89ef8..767deb0e 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/label.st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/instance/label.st @@ -1,4 +1,4 @@ as yet unclassified label - ^ 'Context sender changed', String tab \ No newline at end of file + ^ 'Context sender changed', String tab, inChain asString \ 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 index 2332414b..f9dc4e1d 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryContextSenderChanged.class/methodProperties.json @@ -6,7 +6,7 @@ "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/2/2021 14:32", + "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/BPCallgraphEntryEnter.class/instance/equalsClassSelector..st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/equalsClassSelector..st index d1895c9f..a8cc73b6 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/equalsClassSelector..st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/equalsClassSelector..st @@ -1,5 +1,4 @@ comparing equalsClassSelector: aBPCallgraphEntryEnter - self assert: aBPCallgraphEntryEnter class == self class. ^ (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 index 57b95039..d9609abf 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/equalsClassSelectorBlockIdx..st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/equalsClassSelectorBlockIdx..st @@ -1,5 +1,4 @@ comparing equalsClassSelectorBlockIdx: aBPCallgraphEntryEnter - - self assert: aBPCallgraphEntryEnter class == self class. + ^ (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 index 39775fa9..da5258dd 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/equalsClassSelectorBlockIdxInvocation..st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/equalsClassSelectorBlockIdxInvocation..st @@ -1,5 +1,4 @@ comparing equalsClassSelectorBlockIdxInvocation: aBPCallgraphEntryEnter - self assert: aBPCallgraphEntryEnter class == self class. ^ (self equalsClassSelectorBlockIdx: aBPCallgraphEntryEnter) and: [invocationCount == aBPCallgraphEntryEnter getInvocationCount] \ 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 index b371ff40..75b37f1b 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/latexLabel.st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/latexLabel.st @@ -6,7 +6,6 @@ latexLabel nextPutAll: '\lstinline{'; nextPutAll: class asString; nextPutAll: '} \\ \lstinline{'; - nextPutAll: '#'; nextPutAll: selector. blockIndex > 1 ifTrue: [ s diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/menu..st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/menu..st index 08bd1e93..aaf8abf1 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/menu..st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/menu..st @@ -19,5 +19,6 @@ menu: aMenuMorph 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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/methodProperties.json index 8fe8653b..c2b1892b 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/methodProperties.json @@ -5,16 +5,16 @@ "asPathPart" : "cmfcmf 11/3/2020 13:44", "class:selector:blockIdx:invocationCount:" : "cmfcmf 10/28/2020 13:45", "doBrowse" : "cmfcmf 10/30/2020 14:53", - "equalsClassSelector:" : "cmfcmf 11/3/2020 11:24", - "equalsClassSelectorBlockIdx:" : "cmfcmf 11/3/2020 11:24", - "equalsClassSelectorBlockIdxInvocation:" : "cmfcmf 11/3/2020 11:25", + "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" : "cmfcmf 10/23/2020 16:27", "label" : "cmfcmf 10/26/2020 12:00", - "latexLabel" : "cmfcmf 1/2/2021 15:55", - "menu:" : "cmfcmf 11/9/2020 16:44", + "latexLabel" : "cmfcmf 1/4/2021 13:56", + "menu:" : "cmfcmf 1/4/2021 20:50", "methodReference" : "cmfcmf 10/30/2020 14:53", "textColor" : "cmfcmf 11/3/2020 12:53" } } diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/latexLabel.st b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/latexLabel.st index 6b2414ff..7056e0f8 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/latexLabel.st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/latexLabel.st @@ -1,13 +1,12 @@ as yet unclassified latexLabel - + ^ String streamContents: [:s | s nextPutAll: '\lstinline{'; nextPutAll: (isExplicitReturn ifTrue: ['^ '] ifFalse: ['_ ']); nextPutAll: class asString; nextPutAll: '} \\ \lstinline{'; - nextPutAll: '#'; nextPutAll: selector. blockIndex > 1 ifTrue: [ s diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/menu..st b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/menu..st index ef17df5a..8951e56e 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/menu..st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/instance/menu..st @@ -3,4 +3,4 @@ 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 + 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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/methodProperties.json index 37d1b2b8..edb6bb8b 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryExit.class/methodProperties.json @@ -6,6 +6,6 @@ "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/2/2021 16:19", - "menu:" : "cmfcmf 11/9/2020 16:45", + "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/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/ParseNode.extension/instance/emitNOPs.stack.n.type. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type. (bpCallgraph).st index 1e3d451e..2b59b34b 100644 --- a/packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type. (bpCallgraph).st +++ b/packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type. (bpCallgraph).st @@ -1,5 +1,6 @@ *Babylonian-Core-Callgraph-ByteCode emitNOPs: encoder stack: stack n: aNumber type: aSymbol + | start | true caseOf: { diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st index 2a4b9b74..83194743 100644 --- a/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st +++ b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st @@ -1,15 +1,22 @@ *Babylonian-Core-Callgraph-ByteCode findEnclosingNonOptimizedBlock: encoder - + | node | - self class == VariableNode + (self class == VariableNode or: [self class == TempVariableNode]) ifTrue: [| ctx | - "ugly hack for VariableNodes. VariableNodes like self, super, ..., all use the same instance! See VariableNode class >> #initialize (NodeNil, NodeTrue, ...). We need to manually find its parent node by traversing the context. Watchout: Encoders also inherit from ParseNode!" + "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: Encoder) not]) ifTrue: [ + ((ctx receiver isKindOf: ParseNode) + and: [(ctx receiver isKindOf: VariableNode) not] + and: [(ctx receiver isKindOf: TempVariableNode) 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/methodProperties.json b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json index a81af5c4..01a2d7ba 100644 --- a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json @@ -4,8 +4,8 @@ "instance" : { "additionalReturnSize:returns: (bpCallgraph)" : "cmfcmf 10/19/2020 13:11", "emitCodeForReturn:encoder: (bpCallgraph)" : "cmfcmf 10/19/2020 13:00", - "emitNOPs:stack:n:type: (bpCallgraph)" : "cmfcmf 10/19/2020 13:04", - "findEnclosingNonOptimizedBlock: (bpCallgraph)" : "cmfcmf 10/20/2020 12:36", + "emitNOPs:stack:n:type: (bpCallgraph)" : "cmfcmf 1/5/2021 18:51", + "findEnclosingNonOptimizedBlock: (bpCallgraph)" : "cmfcmf 1/5/2021 18:49", "findEnclosingNonOptimizedBlockId: (bpCallgraph)" : "cmfcmf 10/12/2020 19:54", "invocationTempIndex: (bpCallgraph)" : "cmfcmf 12/5/2020 20:36", "litIndexBlockIdentifier: (bpCallgraph)" : "cmfcmf 10/11/2020 14:17", 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/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/methodProperties.json b/packages/Babylonian-UI.package/BPCallgraphModel.class/methodProperties.json index 0f75ff3e..54c0ec0a 100644 --- a/packages/Babylonian-UI.package/BPCallgraphModel.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/methodProperties.json @@ -16,6 +16,7 @@ "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", @@ -27,6 +28,7 @@ "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", From f18101df7ce31081e3250a18137272797a3ff5d6 Mon Sep 17 00:00:00 2001 From: Christian Flach Date: Tue, 5 Jan 2021 21:21:25 +0100 Subject: [PATCH 20/71] Move code that is not part of the example out of the block being traced. --- .../instance/traceAsyncNotifying.withCallgraph..st | 5 +++-- .../BPExample.class/methodProperties.json | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/Babylonian-Core.package/BPExample.class/instance/traceAsyncNotifying.withCallgraph..st b/packages/Babylonian-Core.package/BPExample.class/instance/traceAsyncNotifying.withCallgraph..st index 236b48d3..f87f5695 100644 --- a/packages/Babylonian-Core.package/BPExample.class/instance/traceAsyncNotifying.withCallgraph..st +++ b/packages/Babylonian-Core.package/BPExample.class/instance/traceAsyncNotifying.withCallgraph..st @@ -3,8 +3,9 @@ traceAsyncNotifying: requestorBlock withCallgraph: aSymbol aSymbol caseOf: { [#none] -> [^ [self execute] bpTraceAsyncForExample: self notifying: requestorBlock]. - [#byteCode] -> [ | callgraphTracer | + [#byteCode] -> [ | callgraphTracer result | callgraphTracer := BPByteCodeCallgraphTracer new. callgraphTracer customEvent: #bpExample data: self. BPByteCodeCallgraphTracer value: callgraphTracer during: [ - [self execute] bpTraceAsyncForExample: self notifying: [:tuple | requestorBlock value: {tuple first . callgraphTracer}]]]} \ No newline at end of file + [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/methodProperties.json b/packages/Babylonian-Core.package/BPExample.class/methodProperties.json index ceb4927b..892d10fe 100644 --- a/packages/Babylonian-Core.package/BPExample.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPExample.class/methodProperties.json @@ -43,7 +43,7 @@ "toggleIsActive" : "pre 10/23/2020 10:16", "trace" : "cmfcmf 11/9/2020 15:02", "trace:" : "cmfcmf 11/9/2020 15:10", - "traceAsyncNotifying:withCallgraph:" : "cmfcmf 11/9/2020 15:18", + "traceAsyncNotifying:withCallgraph:" : "cmfcmf 1/5/2021 21:20", "traceInBackground" : "cmfcmf 11/10/2020 11:34", "traceInBackgroundWithCallgraph:" : "cmfcmf 11/10/2020 11:34", "traceToHaltAt:" : "pre 9/30/2020 09:55", From 244bd0a18e21d8245a80fa58f523c66256fdfec7 Mon Sep 17 00:00:00 2001 From: Christian Flach Date: Fri, 8 Jan 2021 16:30:46 +0100 Subject: [PATCH 21/71] Greatly improve handling of out-of-stack context jumps --- .../instance/blockIdxFromContext..st | 11 ++++ .../instance/eventsForTree.st | 10 ++-- .../instrumentedAncestorAndDepthOf.and..st | 50 +++++++------------ .../instance/jumpHelperFor..st | 11 ++++ .../instance/numEqualElementsOf.and..st | 7 +++ .../instance/stackWithActiveTracingOf..st | 10 ++++ .../instance/swapSenderOf.newSender..st | 4 +- .../methodProperties.json | 16 +++--- ...monAncestorOf.ignoringInvocationCounts..st | 4 +- .../instance/pathsBetween.andChildren..st | 2 +- .../BPCallgraph.class/methodProperties.json | 6 +-- .../pathWithResolvedOutOfStackJumps..st | 14 ++++++ .../instance/pathWithoutContextMovingRight.st | 2 +- .../methodProperties.json | 3 +- .../instance/label.st | 4 -- .../instance/latexLabel.st | 6 --- .../README.md | 0 .../class/textColor.st | 0 .../instance/doBrowse.st | 0 .../instance/executionContinuationEntry.st | 0 .../instance/label.st | 4 ++ .../instance/latexAttributes.st | 0 .../instance/latexLabel.st | 5 ++ .../instance/menu..st | 1 + .../instance/textColor.st | 0 .../methodProperties.json | 6 +-- .../properties.json | 4 +- .../instance/topIndex..st | 3 +- .../methodProperties.json | 2 +- .../instance/calculateBottomContent.st | 4 +- .../methodProperties.json | 2 +- .../instance/key.from.event..st | 2 +- .../instance/selectCorrespondingMethodExit.st | 2 +- .../methodProperties.json | 4 +- .../instance/update..st | 2 +- .../methodProperties.json | 2 +- .../instance/colorForTraceValue.inTrace..st | 2 +- .../BPProbeMorph.class/methodProperties.json | 2 +- 38 files changed, 127 insertions(+), 80 deletions(-) create mode 100644 packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/blockIdxFromContext..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/jumpHelperFor..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/numEqualElementsOf.and..st create mode 100644 packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/stackWithActiveTracingOf..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/pathWithResolvedOutOfStackJumps..st delete mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/label.st delete mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/latexLabel.st rename packages/Babylonian-Core.package/{BPCallgraphEntryContextJumpHelper.class => BPCallgraphEntryReenter.class}/README.md (100%) rename packages/Babylonian-Core.package/{BPCallgraphEntryContextJumpHelper.class => BPCallgraphEntryReenter.class}/class/textColor.st (100%) rename packages/Babylonian-Core.package/{BPCallgraphEntryContextJumpHelper.class => BPCallgraphEntryReenter.class}/instance/doBrowse.st (100%) rename packages/Babylonian-Core.package/{BPCallgraphEntryContextJumpHelper.class => BPCallgraphEntryReenter.class}/instance/executionContinuationEntry.st (100%) create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/label.st rename packages/Babylonian-Core.package/{BPCallgraphEntryContextJumpHelper.class => BPCallgraphEntryReenter.class}/instance/latexAttributes.st (100%) create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/latexLabel.st rename packages/Babylonian-Core.package/{BPCallgraphEntryContextJumpHelper.class => BPCallgraphEntryReenter.class}/instance/menu..st (77%) rename packages/Babylonian-Core.package/{BPCallgraphEntryContextJumpHelper.class => BPCallgraphEntryReenter.class}/instance/textColor.st (100%) rename packages/Babylonian-Core.package/{BPCallgraphEntryContextJumpHelper.class => BPCallgraphEntryReenter.class}/methodProperties.json (69%) rename packages/Babylonian-Core.package/{BPCallgraphEntryContextJumpHelper.class => BPCallgraphEntryReenter.class}/properties.json (69%) 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/eventsForTree.st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsForTree.st index d5361cd3..bceef316 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsForTree.st +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsForTree.st @@ -17,10 +17,14 @@ eventsForTree 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 - 1 - executionContinuation second >= 0. - (theDepth - 1 - executionContinuation second) to: theDepth - 1 do: [:i | + 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]. + addToTree value: BPCallgraphEntryContextJumpHelper new]." overwriteDepth := -1]. theDepth == 0 diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/instrumentedAncestorAndDepthOf.and..st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/instrumentedAncestorAndDepthOf.and..st index 92d04e30..d4b17090 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/instrumentedAncestorAndDepthOf.and..st +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/instrumentedAncestorAndDepthOf.and..st @@ -1,5 +1,5 @@ private -instrumentedAncestorAndDepthOf: aContext and: anotherContext +instrumentedAncestorAndDepthOf: aContext and: newSenderContext " I calculate two things: @@ -15,38 +15,22 @@ instrumentedAncestorAndDepthOf: aContext and: anotherContext 2. " - | a b seenA seenB hasActiveTracing | - seenA := OrderedCollection new. - seenB := OrderedCollection new. + | 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]." - hasActiveTracing := BPByteCodeRewriter hasActiveTracing: aContext method. + numSharedStackFrames := self numEqualElementsOf: oldStack and: newStack. - a := aContext. - b := anotherContext. - - [| idx depth | - [a notNil and: [(BPByteCodeRewriter hasActiveTracing: a method) not]] whileTrue: [a := a sender]. - [b notNil and: [(BPByteCodeRewriter hasActiveTracing: b method) not]] whileTrue: [b := b sender]. - - (a isNil and: [b isNil]) ifTrue: [ - depth := seenB size - seenA size. - ^ depth <= 0 - ifTrue: [{Float negativeInfinity "unused" . depth}] - ifFalse: [{seenB size - (hasActiveTracing ifTrue: [1] ifFalse: [0]) . depth}]]. self flag: #todo. "Verify that the first return value is correct." - - a ifNotNil: [seenA addLast: a]. - b ifNotNil: [seenB addLast: b]. - - a ifNotNil: [(idx := seenB indexOf: a) > 0 ifTrue: ["jump left" - depth := idx - seenA size. - self assert: depth <= 0. - ^ {Float negativeInfinity "unused" . depth}]]. - b ifNotNil: [(idx := seenA indexOf: b) > 0 ifTrue: ["jump right" - depth := seenB size - idx. - self assert: depth > 0. - ^ {idx "- 1" . depth}]]. self flag: #todo. "Verify that the first return value is correct." - - a ifNotNil: [a := a sender]. - b ifNotNil: [b := b sender]. - ] repeat. \ No newline at end of file + 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/jumpHelperFor..st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/jumpHelperFor..st new file mode 100644 index 00000000..8ace5bf8 --- /dev/null +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/jumpHelperFor..st @@ -0,0 +1,11 @@ +private +jumpHelperFor: aContext + + | helper | + helper := BPCallgraphEntryContextJumpHelper 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/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 index 06c6b06c..2fd7cb00 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/swapSenderOf.newSender..st +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/swapSenderOf.newSender..st @@ -3,7 +3,7 @@ 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]. + ("thisContext hasSender: context"thisContext sender sender sender sender sender sender sender sender sender == context) ifFalse: [^ self]. hasActiveTracing := BPByteCodeRewriter hasActiveTracing: context method. @@ -34,7 +34,7 @@ swapSenderOf: context newSender: newSenderContext "new code" tmp := self instrumentedAncestorAndDepthOf: context and: newSenderContext. self assert: depth == tmp second. - self assert: (depth <= 0 or: [tmp first >= 0]). + self assert: (depth <= 0 or: [tmp first notNil]). events nextPut: #contextSenderChanged. events nextPut: tmp second. "depth" diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json index d48b408d..90fda8f8 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json @@ -1,22 +1,26 @@ { "class" : { - "customEvent:data:" : "cmfcmf 10/23/2020 14:56", - "enter:invocation:" : "cmfcmf 10/20/2020 12:18", - "exit:invocation:returns:" : "cmfcmf 10/19/2020 12:50", + "customEvent:data:" : "cmfcmf 12/31/2020 19:11", + "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:" : "cmfcmf 10/20/2020 13:44", "eventStream" : "cmfcmf 10/20/2020 13:49", - "eventsForTree" : "cmfcmf 1/3/2021 22:23", + "eventsForTree" : "cmfcmf 1/4/2021 13:11", "eventsToString" : "cmfcmf 1/2/2021 14:27", "eventsToStringForTest" : "cmfcmf 10/7/2020 14:07", "exit:invocation:returns:" : "cmfcmf 10/20/2020 13:47", "initialize" : "cmfcmf 12/5/2020 14:15", - "instrumentedAncestorAndDepthOf:and:" : "cmfcmf 1/3/2021 22:32", + "instrumentedAncestorAndDepthOf:and:" : "cmfcmf 1/4/2021 13:11", "instrumentedDepthOf:below:" : "cmfcmf 10/7/2020 16:19", + "jumpHelperFor:" : "cmfcmf 1/4/2021 15:30", + "numEqualElementsOf:and:" : "cmfcmf 1/4/2021 13:00", "reset" : "cmfcmf 12/5/2020 14:15", - "swapSenderOf:newSender:" : "cmfcmf 1/2/2021 14:07" } } + "stackWithActiveTracingOf:" : "cmfcmf 1/4/2021 12:51", + "swapSenderOf:newSender:" : "cmfcmf 1/4/2021 12:07" } } diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st index a0acbe96..1256f73b 100644 --- a/packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/commonAncestorOf.ignoringInvocationCounts..st @@ -4,11 +4,11 @@ commonAncestorOf: aCollection ignoringInvocationCounts: aBoolean | theAncestor possibleAncestors | aCollection ifEmpty: [^ nil]. - possibleAncestors := aCollection first pathWithoutContextMovingRight allButLast. + possibleAncestors := (aCollection first pathWithResolvedOutOfStackJumps: self) allButLast. aCollection allButFirst do: [:each | | found path | found := false. - path := each pathWithoutContextMovingRight allButLast reversed. + path := (each pathWithResolvedOutOfStackJumps: self) allButLast reversed. path withIndexDo: [:entry :i | | ancestorIdx | found ifFalse: [ diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/pathsBetween.andChildren..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/pathsBetween.andChildren..st index 9ab21df0..261036e3 100644 --- a/packages/Babylonian-Core.package/BPCallgraph.class/instance/pathsBetween.andChildren..st +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/pathsBetween.andChildren..st @@ -2,7 +2,7 @@ finding ancestors pathsBetween: ancestor andChildren: aCollection ^ (aCollection collect: [:each | | rootPath path ancestorIndex | - rootPath := each pathWithoutContextMovingRight. + 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. diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json index dc0bf150..1535f620 100644 --- a/packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json @@ -5,11 +5,11 @@ "addRoot:" : "cmfcmf 10/27/2020 14:10", "allInvocationsOf:" : "cmfcmf 11/3/2020 13:57", "babylonianEntries" : "cmfcmf 10/28/2020 11:01", - "commonAncestorOf:ignoringInvocationCounts:" : "cmfcmf 12/31/2020 21:42", + "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 10/27/2020 16:37", + "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", @@ -21,6 +21,6 @@ "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 11/10/2020 10:52", + "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/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 index f93158b6..b1781707 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/pathWithoutContextMovingRight.st +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/instance/pathWithoutContextMovingRight.st @@ -5,7 +5,7 @@ pathWithoutContextMovingRight path := OrderedCollection new. entry := self. [entry notNil] whileTrue: [ - entry class == BPCallgraphEntryContextJumpHelper ifTrue: [| target | + entry class == BPCallgraphEntryReenter ifTrue: [| target | target := entry executionContinuationEntry. path addFirst: target. entry := target contextSenderChangedEntry]. diff --git a/packages/Babylonian-Core.package/BPCallgraphEntry.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntry.class/methodProperties.json index 22ea5a79..94cf5c25 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntry.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntry.class/methodProperties.json @@ -17,7 +17,8 @@ "parent" : "cmfcmf 10/27/2020 14:10", "parent:" : "cmfcmf 10/27/2020 14:01", "path" : "cmfcmf 10/27/2020 16:31", - "pathWithoutContextMovingRight" : "cmfcmf 11/3/2020 13:50", + "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", diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/label.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/label.st deleted file mode 100644 index 294c51b6..00000000 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/label.st +++ /dev/null @@ -1,4 +0,0 @@ -as yet unclassified -label - - ^ '-> Context moving right', String tab \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/latexLabel.st b/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/latexLabel.st deleted file mode 100644 index 9b6f7d68..00000000 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/latexLabel.st +++ /dev/null @@ -1,6 +0,0 @@ -as yet unclassified -latexLabel - - - - ^ '$\rightarrow$' \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/README.md b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/README.md similarity index 100% rename from packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/README.md rename to packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/README.md diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/class/textColor.st b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/class/textColor.st similarity index 100% rename from packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/class/textColor.st rename to packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/class/textColor.st diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/doBrowse.st b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/doBrowse.st similarity index 100% rename from packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/doBrowse.st rename to packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/doBrowse.st diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/executionContinuationEntry.st b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/executionContinuationEntry.st similarity index 100% rename from packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/executionContinuationEntry.st rename to packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/executionContinuationEntry.st 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/BPCallgraphEntryContextJumpHelper.class/instance/latexAttributes.st b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/latexAttributes.st similarity index 100% rename from packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/latexAttributes.st rename to packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/latexAttributes.st 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/BPCallgraphEntryContextJumpHelper.class/instance/menu..st b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/menu..st similarity index 77% rename from packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/menu..st rename to packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/menu..st index 801ac47b..e14155be 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/menu..st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/menu..st @@ -1,6 +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/BPCallgraphEntryContextJumpHelper.class/instance/textColor.st b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/textColor.st similarity index 100% rename from packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/instance/textColor.st rename to packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/instance/textColor.st diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/methodProperties.json similarity index 69% rename from packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/methodProperties.json rename to packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/methodProperties.json index 73399b14..3cf90577 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/methodProperties.json @@ -4,8 +4,8 @@ "instance" : { "doBrowse" : "cmfcmf 11/2/2020 17:31", "executionContinuationEntry" : "cmfcmf 11/2/2020 17:17", - "label" : "cmfcmf 10/26/2020 12:09", + "label" : "cmfcmf 1/4/2021 15:26", "latexAttributes" : "cmfcmf 1/2/2021 15:47", - "latexLabel" : "cmfcmf 1/2/2021 15:50", - "menu:" : "cmfcmf 11/9/2020 16:43", + "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/BPCallgraphEntryContextJumpHelper.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/properties.json similarity index 69% rename from packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/properties.json rename to packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/properties.json index a30f64ab..b699e961 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryContextJumpHelper.class/properties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryReenter.class/properties.json @@ -7,8 +7,8 @@ "commentStamp" : "", "instvars" : [ ], - "name" : "BPCallgraphEntryContextJumpHelper", + "name" : "BPCallgraphEntryReenter", "pools" : [ ], - "super" : "BPCallgraphEntry", + "super" : "BPCallgraphEntryEnter", "type" : "normal" } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topIndex..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topIndex..st index 622c56fc..70fdfe3b 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topIndex..st +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/topIndex..st @@ -4,4 +4,5 @@ topIndex: aNumber (aNumber == 0 or: [self topCanSelect: (self topEntries at: aNumber)]) ifTrue: [ topIndex := aNumber. self changed: #topIndex. - self changed: #bottomLabels] \ No newline at end of file + self changed: #bottomLabels. + self changed: #bottomBackgroundColor:] \ 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 index 4fc67b54..06981ed1 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/methodProperties.json @@ -41,7 +41,7 @@ "topIcon:" : "cmfcmf 11/4/2020 14:05", "topIconFor:" : "cmfcmf 11/4/2020 12:38", "topIndex" : "cmfcmf 11/4/2020 12:24", - "topIndex:" : "cmfcmf 11/4/2020 15:00", + "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", diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/calculateBottomContent.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/calculateBottomContent.st index f5214a22..c6c8a905 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/calculateBottomContent.st +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/instance/calculateBottomContent.st @@ -19,7 +19,7 @@ calculateBottomContent ifNil: [list add: '--- not found ---']. "unique invocation paths that ignore invocation counts" - paths := (entries collect: [:each | each pathWithoutContextMovingRight collect: #asPathPart]) withoutDuplicates. + 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}). @@ -44,7 +44,7 @@ calculateBottomContent entries withIndexDo: [:entry :i | list addLast: ''. list addLast: (Text string: 'Invocation ', i, ' (context-sensitive)' attribute: TextEmphasis bold). - entry pathWithoutContextMovingRight do: [:each | + (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]) diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/methodProperties.json index f60fb3ad..32058cd4 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationExecutedMethods.class/methodProperties.json @@ -13,7 +13,7 @@ "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 12/31/2020 21:16", + "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", 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 index 019f0515..54373137 100644 --- a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/key.from.event..st +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/key.from.event..st @@ -3,6 +3,6 @@ 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.']. + 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/selectCorrespondingMethodExit.st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectCorrespondingMethodExit.st index 3b6ba64c..7f950c20 100644 --- a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectCorrespondingMethodExit.st +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/selectCorrespondingMethodExit.st @@ -3,7 +3,7 @@ selectCorrespondingMethodExit | entry | entry := self getSelectedEntry. - self assert: (entry class == BPCallgraphEntryEnter). + self assert: (entry class == BPCallgraphEntryEnter or: [entry class == BPCallgraphEntryContextJumpHelper]) . callgraph detect: [:each | (each class == BPCallgraphEntryExit) diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/methodProperties.json b/packages/Babylonian-UI.package/BPCallgraphModel.class/methodProperties.json index 54c0ec0a..ab84f29d 100644 --- a/packages/Babylonian-UI.package/BPCallgraphModel.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/methodProperties.json @@ -12,7 +12,7 @@ "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 10/26/2020 13:03", + "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", @@ -21,7 +21,7 @@ "selectCorrespondingBlockEnter" : "cmfcmf 11/2/2020 14:07", "selectCorrespondingBlockExit" : "cmfcmf 10/28/2020 12:25", "selectCorrespondingMethodEnter" : "cmfcmf 10/27/2020 17:15", - "selectCorrespondingMethodExit" : "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", diff --git a/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/instance/update..st b/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/instance/update..st index 0c12da96..f8f58184 100644 --- a/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/instance/update..st +++ b/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/instance/update..st @@ -1,5 +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/methodProperties.json b/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/methodProperties.json index f8499373..82690f3e 100644 --- a/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPPluggableMultiColumnListMorph.class/methodProperties.json @@ -5,6 +5,6 @@ "backgroundColorForRow:" : "cmfcmf 11/9/2020 10:57", "listMorphClass" : "cmfcmf 11/6/2020 15:20", "setGetBackgroundColorSelector:" : "cmfcmf 11/6/2020 15:46", - "update:" : "cmfcmf 11/9/2020 10:49", + "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/BPProbeMorph.class/instance/colorForTraceValue.inTrace..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/colorForTraceValue.inTrace..st index c615552b..c9393c4c 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/colorForTraceValue.inTrace..st +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/colorForTraceValue.inTrace..st @@ -7,7 +7,7 @@ colorForTraceValue: aBPTraceValue inTrace: aBPTrace paths := values collect: [:value | | entry | entry := callgraph detect: [:each | (each isKindOf: BPCallgraphEntryBPProbeOrAssertion) and: [each traceValue == value]]. - path := entry pathWithoutContextMovingRight allButLast collect: #asPathPart. + 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)". diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json index 18cf9e20..15644a2a 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json @@ -5,7 +5,7 @@ "annotation:" : "cmfcmf 10/13/2020 12:16", "blinkFor:" : "cmfcmf 10/28/2020 12:59", "callgraphMenu:forTrace:" : "cmfcmf 11/10/2020 12:56", - "colorForTraceValue:inTrace:" : "cmfcmf 11/10/2020 14:28", + "colorForTraceValue:inTrace:" : "cmfcmf 1/4/2021 13:28", "ensureLineMorphFor:" : "pre 8/21/2020 12:09", "exploreButtonClickedFor:" : "cmfcmf 11/10/2020 12:56", "haltButtonClickedFor:and:" : "pre 9/29/2020 16:12", From 714d331ba4a375b6306a9e54e1128111eb3802da Mon Sep 17 00:00:00 2001 From: Christian Flach Date: Wed, 13 Jan 2021 11:44:28 +0100 Subject: [PATCH 22/71] Remove hard dependency on ReentrantSimulator --- .../BPCallgrapher.class/instance/executeSimulated..st | 4 ++-- .../BPCallgrapher.class/methodProperties.json | 2 +- .../BPTracer.class/instance/wrapUserCode..st | 6 ++++-- .../BPTracer.class/methodProperties.json | 2 +- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/Babylonian-Core.package/BPCallgrapher.class/instance/executeSimulated..st b/packages/Babylonian-Core.package/BPCallgrapher.class/instance/executeSimulated..st index 513fefb4..b175a8e8 100644 --- a/packages/Babylonian-Core.package/BPCallgrapher.class/instance/executeSimulated..st +++ b/packages/Babylonian-Core.package/BPCallgrapher.class/instance/executeSimulated..st @@ -7,8 +7,8 @@ executeSimulated: aBlock events := OrderedCollection new: 100000. prev := aBlock. - simulator := RSSimulator new. - simulator config: RSSimulatorConfiguration babylonian. + simulator := (Smalltalk at: #RSSimulator) new. + simulator config: (Smalltalk at: #RSSimulatorConfiguration) babylonian. result := simulator simulate: aBlock withRecorder: [:event :data | event caseOf: { [#step] -> [ | current depth | diff --git a/packages/Babylonian-Core.package/BPCallgrapher.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgrapher.class/methodProperties.json index 13820538..ab1988ca 100644 --- a/packages/Babylonian-Core.package/BPCallgrapher.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgrapher.class/methodProperties.json @@ -2,4 +2,4 @@ "class" : { }, "instance" : { - "executeSimulated:" : "cmfcmf 10/27/2020 14:03" } } + "executeSimulated:" : "cmfcmf 1/13/2021 11:44" } } diff --git a/packages/Babylonian-Core.package/BPTracer.class/instance/wrapUserCode..st b/packages/Babylonian-Core.package/BPTracer.class/instance/wrapUserCode..st index ddab34bd..d18c5e63 100644 --- a/packages/Babylonian-Core.package/BPTracer.class/instance/wrapUserCode..st +++ b/packages/Babylonian-Core.package/BPTracer.class/instance/wrapUserCode..st @@ -1,4 +1,6 @@ callgraph wrapUserCode: aBlock - - ^ [RSSimulator simulateIfNeeded: aBlock additionalDepth: 0] \ No newline at end of file + + ^ 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 d7baf635..2137218f 100644 --- a/packages/Babylonian-Core.package/BPTracer.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPTracer.class/methodProperties.json @@ -20,4 +20,4 @@ "traceBlock:forProbe:" : "cmfcmf 9/22/2020 18:04", "traceError:" : "pre 10/12/2020 11:16", "traceException:" : "pre 8/17/2020 10:15", - "wrapUserCode:" : "cmfcmf 10/4/2020 15:13" } } + "wrapUserCode:" : "cmfcmf 1/13/2021 11:43" } } From dcc4c488d86876ee33a21422701d93825eb78821 Mon Sep 17 00:00:00 2001 From: Christian Flach Date: Thu, 14 Jan 2021 10:28:52 +0100 Subject: [PATCH 23/71] Remove extension method from RSSimulatorConfiguration --- .../BPCallgrapher.class/instance/executeSimulated..st | 11 +++++++++-- .../BPCallgrapher.class/methodProperties.json | 2 +- .../class/babylonian.st | 11 ----------- .../methodProperties.json | 5 ----- .../properties.json | 2 -- 5 files changed, 10 insertions(+), 21 deletions(-) delete mode 100644 packages/Babylonian-Core.package/RSSimulatorConfiguration.extension/class/babylonian.st delete mode 100644 packages/Babylonian-Core.package/RSSimulatorConfiguration.extension/methodProperties.json delete mode 100644 packages/Babylonian-Core.package/RSSimulatorConfiguration.extension/properties.json diff --git a/packages/Babylonian-Core.package/BPCallgrapher.class/instance/executeSimulated..st b/packages/Babylonian-Core.package/BPCallgrapher.class/instance/executeSimulated..st index b175a8e8..b17990c0 100644 --- a/packages/Babylonian-Core.package/BPCallgrapher.class/instance/executeSimulated..st +++ b/packages/Babylonian-Core.package/BPCallgrapher.class/instance/executeSimulated..st @@ -2,13 +2,20 @@ public executeSimulated: aBlock "based on Context >> #trace:on" - | prev result events simulator | + | 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: (Smalltalk at: #RSSimulatorConfiguration) babylonian. + simulator config: config. result := simulator simulate: aBlock withRecorder: [:event :data | event caseOf: { [#step] -> [ | current depth | diff --git a/packages/Babylonian-Core.package/BPCallgrapher.class/methodProperties.json b/packages/Babylonian-Core.package/BPCallgrapher.class/methodProperties.json index ab1988ca..42545bf7 100644 --- a/packages/Babylonian-Core.package/BPCallgrapher.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgrapher.class/methodProperties.json @@ -2,4 +2,4 @@ "class" : { }, "instance" : { - "executeSimulated:" : "cmfcmf 1/13/2021 11:44" } } + "executeSimulated:" : "cmfcmf 1/14/2021 10:28" } } diff --git a/packages/Babylonian-Core.package/RSSimulatorConfiguration.extension/class/babylonian.st b/packages/Babylonian-Core.package/RSSimulatorConfiguration.extension/class/babylonian.st deleted file mode 100644 index 2167a525..00000000 --- a/packages/Babylonian-Core.package/RSSimulatorConfiguration.extension/class/babylonian.st +++ /dev/null @@ -1,11 +0,0 @@ -*Babylonian-Core-Callgraph -babylonian - - - | config | - config := self "empty" default. - config quickSelectors addAll: ((Object methodsInCategory: #'*Babylonian-Core') collect: [:symbol | symbol -> #yesNotWrapped]). - config quickClasses addAll: { - BPByteCodeCallgraphTracer -> #yesNotWrapped. - BPByteCodeCallgraphTracer class -> #yesNotWrapped}. - ^ config \ No newline at end of file diff --git a/packages/Babylonian-Core.package/RSSimulatorConfiguration.extension/methodProperties.json b/packages/Babylonian-Core.package/RSSimulatorConfiguration.extension/methodProperties.json deleted file mode 100644 index 87a92740..00000000 --- a/packages/Babylonian-Core.package/RSSimulatorConfiguration.extension/methodProperties.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "class" : { - "babylonian" : "cmfcmf 10/20/2020 16:31" }, - "instance" : { - } } diff --git a/packages/Babylonian-Core.package/RSSimulatorConfiguration.extension/properties.json b/packages/Babylonian-Core.package/RSSimulatorConfiguration.extension/properties.json deleted file mode 100644 index f81ffd27..00000000 --- a/packages/Babylonian-Core.package/RSSimulatorConfiguration.extension/properties.json +++ /dev/null @@ -1,2 +0,0 @@ -{ - "name" : "RSSimulatorConfiguration" } From 11ca4451c36a887a6bc69eda6f39bf250e658863 Mon Sep 17 00:00:00 2001 From: Patrick R Date: Thu, 14 Jan 2021 12:51:42 +0100 Subject: [PATCH 24/71] Adds method wrappers as a dependency --- .../instance/baseline..st | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/BaselineOfBabylonianProgramming.package/BaselineOfBabylonianProgramming.class/instance/baseline..st b/packages/BaselineOfBabylonianProgramming.package/BaselineOfBabylonianProgramming.class/instance/baseline..st index a1975679..c4a3195d 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: + [ sepc 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 From 9949b2ab86e6a0f55566a9e6033a5a05f47705f7 Mon Sep 17 00:00:00 2001 From: Patrick R Date: Thu, 14 Jan 2021 12:59:03 +0100 Subject: [PATCH 25/71] Fixes a typo in the baseline --- .../BaselineOfBabylonianProgramming.class/instance/baseline..st | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/BaselineOfBabylonianProgramming.package/BaselineOfBabylonianProgramming.class/instance/baseline..st b/packages/BaselineOfBabylonianProgramming.package/BaselineOfBabylonianProgramming.class/instance/baseline..st index c4a3195d..d14929b0 100644 --- a/packages/BaselineOfBabylonianProgramming.package/BaselineOfBabylonianProgramming.class/instance/baseline..st +++ b/packages/BaselineOfBabylonianProgramming.package/BaselineOfBabylonianProgramming.class/instance/baseline..st @@ -15,7 +15,7 @@ baseline: spec package: 'ContextS2-Core' with: [ spec repository: 'http://www.hpi.uni-potsdam.de/hirschfeld/squeaksource/ContextSTrunk' ]; baseline: 'MethodWrappers' with: - [ sepc repository: 'github://hpi-swa/MethodWrappers:master/packages' ]; + [ spec repository: 'github://hpi-swa/MethodWrappers:master/packages' ]; package: 'Babylonian-Core' with: [spec requires: #('Babylonian-Compiler' 'ContextS2-Core' 'MethodWrappers')]; package: 'Babylonian-Compiler' with: [ spec From 7acc79bfd24cb86162fcf6a922f585de5a5cbdce Mon Sep 17 00:00:00 2001 From: Patrick R Date: Thu, 14 Jan 2021 13:35:47 +0100 Subject: [PATCH 26/71] Adds preamble and postremove scripts for installing the tracer variable --- .../BPExample.class/methodProperties.json | 1 + .../BlockNode.extension/methodProperties.json | 24 +++++++++---------- .../methodProperties.json | 4 ++-- .../ParseNode.extension/methodProperties.json | 24 +++++++++---------- .../methodProperties.json | 4 ++-- .../monticello.meta/postscriptOfRemoval.st | 5 ++++ .../monticello.meta/preamble.st | 6 +++++ 7 files changed, 40 insertions(+), 28 deletions(-) create mode 100644 packages/Babylonian-Core.package/monticello.meta/postscriptOfRemoval.st create mode 100644 packages/Babylonian-Core.package/monticello.meta/preamble.st diff --git a/packages/Babylonian-Core.package/BPExample.class/methodProperties.json b/packages/Babylonian-Core.package/BPExample.class/methodProperties.json index d028bf05..5d43b9da 100644 --- a/packages/Babylonian-Core.package/BPExample.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPExample.class/methodProperties.json @@ -46,4 +46,5 @@ "traceInBackground" : "cmfcmf 11/10/2020 11:34", "traceInBackgroundWithCallgraph:" : "cmfcmf 11/10/2020 11:34", "traceToHaltAt:" : "pre 9/30/2020 09:55", + "tracingIsStillRunning" : " 1/14/2021 13:34:20", "uniqueIdentifier" : "pre 9/30/2020 09:55" } } diff --git a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json index 4d241b6d..27e12e71 100644 --- a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalSize: (bpCallgraph)" : "cmfcmf 12/5/2020 20:34", - "additionalSizeBeforeBlock: (bpCallgraph)" : "cmfcmf 10/10/2020 15:06", - "emitCodeForEvaluatedClosureValue:encoder: (bpCallgraph)" : "cmfcmf 10/26/2020 11:22", - "emitCodeForEvaluatedFullClosureValue:encoder: (bpCallgraph)" : "cmfcmf 10/9/2020 14:19", - "emitCodeForEvaluatedValue:encoder: (bpCallgraph)" : "cmfcmf 10/26/2020 11:23", - "emitCodeForValue:encoder: (bpCallgraph)" : "cmfcmf 10/12/2020 14:59", - "isRootBlock: (bpCallgraph)" : "cmfcmf 10/9/2020 15:42", - "litIndexBlockIdentifier: (bpCallgraph)" : "cmfcmf 10/19/2020 12:51", - "sizeCodeForEvaluatedClosureValue: (bpCallgraph)" : "cmfcmf 10/19/2020 12:58", - "sizeCodeForEvaluatedFullClosureValue: (bpCallgraph)" : "cmfcmf 10/9/2020 13:41", - "sizeCodeForEvaluatedValue: (bpCallgraph)" : "cmfcmf 10/15/2020 21:37", - "sizeCodeForValue: (bpCallgraph)" : "cmfcmf 10/10/2020 15:06" } } + "additionalSize: (bpCallgraph)" : " 1/14/2021 13:34:20", + "additionalSizeBeforeBlock: (bpCallgraph)" : " 1/14/2021 13:34:20", + "emitCodeForEvaluatedClosureValue:encoder: (bpCallgraph)" : " 1/14/2021 13:34:20", + "emitCodeForEvaluatedFullClosureValue:encoder: (bpCallgraph)" : " 1/14/2021 13:34:20", + "emitCodeForEvaluatedValue:encoder: (bpCallgraph)" : " 1/14/2021 13:34:20", + "emitCodeForValue:encoder: (bpCallgraph)" : " 1/14/2021 13:34:20", + "isRootBlock: (bpCallgraph)" : " 1/14/2021 13:34:20", + "litIndexBlockIdentifier: (bpCallgraph)" : " 1/14/2021 13:34:20", + "sizeCodeForEvaluatedClosureValue: (bpCallgraph)" : " 1/14/2021 13:34:20", + "sizeCodeForEvaluatedFullClosureValue: (bpCallgraph)" : " 1/14/2021 13:34:20", + "sizeCodeForEvaluatedValue: (bpCallgraph)" : " 1/14/2021 13:34:20", + "sizeCodeForValue: (bpCallgraph)" : " 1/14/2021 13:34:20" } } diff --git a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json index f0efbf04..e53d989f 100644 --- a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "generate:using: (bpCallgraph)" : "cmfcmf 12/5/2020 20:35", - "rememberNOPs:range:blockId: (bpCallgraph)" : "cmfcmf 10/19/2020 13:05" } } + "generate:using: (bpCallgraph)" : " 1/14/2021 13:34:20", + "rememberNOPs:range:blockId: (bpCallgraph)" : " 1/14/2021 13:34:20" } } diff --git a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json index 01a2d7ba..f8949c06 100644 --- a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalReturnSize:returns: (bpCallgraph)" : "cmfcmf 10/19/2020 13:11", - "emitCodeForReturn:encoder: (bpCallgraph)" : "cmfcmf 10/19/2020 13:00", - "emitNOPs:stack:n:type: (bpCallgraph)" : "cmfcmf 1/5/2021 18:51", - "findEnclosingNonOptimizedBlock: (bpCallgraph)" : "cmfcmf 1/5/2021 18:49", - "findEnclosingNonOptimizedBlockId: (bpCallgraph)" : "cmfcmf 10/12/2020 19:54", - "invocationTempIndex: (bpCallgraph)" : "cmfcmf 12/5/2020 20:36", - "litIndexBlockIdentifier: (bpCallgraph)" : "cmfcmf 10/11/2020 14:17", - "litIndexEnterInvocation: (bpCallgraph)" : "cmfcmf 10/9/2020 14:45", - "litIndexExitInvocation: (bpCallgraph)" : "cmfcmf 10/19/2020 13:07", - "litIndexInvocationCount: (bpCallgraph)" : "cmfcmf 10/11/2020 11:46", - "litIndexTracerClass: (bpCallgraph)" : "cmfcmf 10/9/2020 14:45", - "sizeCodeForReturn: (bpCallgraph)" : "cmfcmf 10/19/2020 12:59" } } + "additionalReturnSize:returns: (bpCallgraph)" : " 1/14/2021 13:34:20", + "emitCodeForReturn:encoder: (bpCallgraph)" : " 1/14/2021 13:34:20", + "emitNOPs:stack:n:type: (bpCallgraph)" : " 1/14/2021 13:34:20", + "findEnclosingNonOptimizedBlock: (bpCallgraph)" : " 1/14/2021 13:34:20", + "findEnclosingNonOptimizedBlockId: (bpCallgraph)" : " 1/14/2021 13:34:20", + "invocationTempIndex: (bpCallgraph)" : " 1/14/2021 13:34:20", + "litIndexBlockIdentifier: (bpCallgraph)" : " 1/14/2021 13:34:20", + "litIndexEnterInvocation: (bpCallgraph)" : " 1/14/2021 13:34:20", + "litIndexExitInvocation: (bpCallgraph)" : " 1/14/2021 13:34:20", + "litIndexInvocationCount: (bpCallgraph)" : " 1/14/2021 13:34:20", + "litIndexTracerClass: (bpCallgraph)" : " 1/14/2021 13:34:20", + "sizeCodeForReturn: (bpCallgraph)" : " 1/14/2021 13:34:20" } } diff --git a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json index 100f9a6f..caa8d5f1 100644 --- a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "emitCodeForReturn:encoder: (bpCallgraph)" : "cmfcmf 10/19/2020 13:01", - "sizeCodeForReturn: (bpCallgraph)" : "cmfcmf 10/19/2020 12:59" } } + "emitCodeForReturn:encoder: (bpCallgraph)" : " 1/14/2021 13:34:20", + "sizeCodeForReturn: (bpCallgraph)" : " 1/14/2021 13:34:20" } } 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..cc2cb709 --- /dev/null +++ b/packages/Babylonian-Core.package/monticello.meta/postscriptOfRemoval.st @@ -0,0 +1,5 @@ +(PackageInfo named: 'Babylonian-Core') postscriptOfRemoval: '"below, add code to clean up after the unloading of this package" +[(Process respondsTo: #removeInstVarName:) + ifTrue: [Process removeInstVarName: ''tracer''] + ifFalse: [Process removeInstVarNamed: ''tracer'']] 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..845f46b1 --- /dev/null +++ b/packages/Babylonian-Core.package/monticello.meta/preamble.st @@ -0,0 +1,6 @@ +(PackageInfo named: 'Babylonian-Core') preamble: '"below, add code to be run before the loading of this package" +[(Process respondsTo: #addInstVarName:) + ifTrue: [Process addInstVarName: ''tracer''] + ifFalse: [Process addInstVarNamed: ''tracer'']] + on: Warning do: [:e | e resume]. +'! From 648bec8d3d6a5037c53c6919d25f7d267255bf8a Mon Sep 17 00:00:00 2001 From: Patrick R Date: Thu, 14 Jan 2021 14:01:34 +0100 Subject: [PATCH 27/71] Adds the tracer method --- .../BPExample.class/methodProperties.json | 2 +- .../BlockNode.extension/methodProperties.json | 24 +++++++++---------- .../methodProperties.json | 4 ++-- .../ParseNode.extension/methodProperties.json | 24 +++++++++---------- .../Process.extension/instance/tracer.st | 4 ++++ .../Process.extension/methodProperties.json | 5 ++++ .../Process.extension/properties.json | 2 ++ .../methodProperties.json | 4 ++-- 8 files changed, 40 insertions(+), 29 deletions(-) create mode 100644 packages/Babylonian-Core.package/Process.extension/instance/tracer.st create mode 100644 packages/Babylonian-Core.package/Process.extension/methodProperties.json create mode 100644 packages/Babylonian-Core.package/Process.extension/properties.json diff --git a/packages/Babylonian-Core.package/BPExample.class/methodProperties.json b/packages/Babylonian-Core.package/BPExample.class/methodProperties.json index 5d43b9da..88b37101 100644 --- a/packages/Babylonian-Core.package/BPExample.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPExample.class/methodProperties.json @@ -46,5 +46,5 @@ "traceInBackground" : "cmfcmf 11/10/2020 11:34", "traceInBackgroundWithCallgraph:" : "cmfcmf 11/10/2020 11:34", "traceToHaltAt:" : "pre 9/30/2020 09:55", - "tracingIsStillRunning" : " 1/14/2021 13:34:20", + "tracingIsStillRunning" : "1/14/2021 13:34:20", "uniqueIdentifier" : "pre 9/30/2020 09:55" } } diff --git a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json index 27e12e71..d76ae9ab 100644 --- a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalSize: (bpCallgraph)" : " 1/14/2021 13:34:20", - "additionalSizeBeforeBlock: (bpCallgraph)" : " 1/14/2021 13:34:20", - "emitCodeForEvaluatedClosureValue:encoder: (bpCallgraph)" : " 1/14/2021 13:34:20", - "emitCodeForEvaluatedFullClosureValue:encoder: (bpCallgraph)" : " 1/14/2021 13:34:20", - "emitCodeForEvaluatedValue:encoder: (bpCallgraph)" : " 1/14/2021 13:34:20", - "emitCodeForValue:encoder: (bpCallgraph)" : " 1/14/2021 13:34:20", - "isRootBlock: (bpCallgraph)" : " 1/14/2021 13:34:20", - "litIndexBlockIdentifier: (bpCallgraph)" : " 1/14/2021 13:34:20", - "sizeCodeForEvaluatedClosureValue: (bpCallgraph)" : " 1/14/2021 13:34:20", - "sizeCodeForEvaluatedFullClosureValue: (bpCallgraph)" : " 1/14/2021 13:34:20", - "sizeCodeForEvaluatedValue: (bpCallgraph)" : " 1/14/2021 13:34:20", - "sizeCodeForValue: (bpCallgraph)" : " 1/14/2021 13:34:20" } } + "additionalSize: (bpCallgraph)" : " 1/14/2021 14:00:57", + "additionalSizeBeforeBlock: (bpCallgraph)" : " 1/14/2021 14:00:57", + "emitCodeForEvaluatedClosureValue:encoder: (bpCallgraph)" : " 1/14/2021 14:00:57", + "emitCodeForEvaluatedFullClosureValue:encoder: (bpCallgraph)" : " 1/14/2021 14:00:57", + "emitCodeForEvaluatedValue:encoder: (bpCallgraph)" : " 1/14/2021 14:00:57", + "emitCodeForValue:encoder: (bpCallgraph)" : " 1/14/2021 14:00:57", + "isRootBlock: (bpCallgraph)" : " 1/14/2021 14:00:57", + "litIndexBlockIdentifier: (bpCallgraph)" : " 1/14/2021 14:00:57", + "sizeCodeForEvaluatedClosureValue: (bpCallgraph)" : " 1/14/2021 14:00:57", + "sizeCodeForEvaluatedFullClosureValue: (bpCallgraph)" : " 1/14/2021 14:00:57", + "sizeCodeForEvaluatedValue: (bpCallgraph)" : " 1/14/2021 14:00:57", + "sizeCodeForValue: (bpCallgraph)" : " 1/14/2021 14:00:57" } } diff --git a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json index e53d989f..f3e05e6f 100644 --- a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "generate:using: (bpCallgraph)" : " 1/14/2021 13:34:20", - "rememberNOPs:range:blockId: (bpCallgraph)" : " 1/14/2021 13:34:20" } } + "generate:using: (bpCallgraph)" : " 1/14/2021 14:00:57", + "rememberNOPs:range:blockId: (bpCallgraph)" : " 1/14/2021 14:00:57" } } diff --git a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json index f8949c06..fc5b7d1c 100644 --- a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalReturnSize:returns: (bpCallgraph)" : " 1/14/2021 13:34:20", - "emitCodeForReturn:encoder: (bpCallgraph)" : " 1/14/2021 13:34:20", - "emitNOPs:stack:n:type: (bpCallgraph)" : " 1/14/2021 13:34:20", - "findEnclosingNonOptimizedBlock: (bpCallgraph)" : " 1/14/2021 13:34:20", - "findEnclosingNonOptimizedBlockId: (bpCallgraph)" : " 1/14/2021 13:34:20", - "invocationTempIndex: (bpCallgraph)" : " 1/14/2021 13:34:20", - "litIndexBlockIdentifier: (bpCallgraph)" : " 1/14/2021 13:34:20", - "litIndexEnterInvocation: (bpCallgraph)" : " 1/14/2021 13:34:20", - "litIndexExitInvocation: (bpCallgraph)" : " 1/14/2021 13:34:20", - "litIndexInvocationCount: (bpCallgraph)" : " 1/14/2021 13:34:20", - "litIndexTracerClass: (bpCallgraph)" : " 1/14/2021 13:34:20", - "sizeCodeForReturn: (bpCallgraph)" : " 1/14/2021 13:34:20" } } + "additionalReturnSize:returns: (bpCallgraph)" : " 1/14/2021 14:00:57", + "emitCodeForReturn:encoder: (bpCallgraph)" : " 1/14/2021 14:00:57", + "emitNOPs:stack:n:type: (bpCallgraph)" : " 1/14/2021 14:00:57", + "findEnclosingNonOptimizedBlock: (bpCallgraph)" : " 1/14/2021 14:00:57", + "findEnclosingNonOptimizedBlockId: (bpCallgraph)" : " 1/14/2021 14:00:57", + "invocationTempIndex: (bpCallgraph)" : " 1/14/2021 14:00:57", + "litIndexBlockIdentifier: (bpCallgraph)" : " 1/14/2021 14:00:57", + "litIndexEnterInvocation: (bpCallgraph)" : " 1/14/2021 14:00:57", + "litIndexExitInvocation: (bpCallgraph)" : " 1/14/2021 14:00:57", + "litIndexInvocationCount: (bpCallgraph)" : " 1/14/2021 14:00:57", + "litIndexTracerClass: (bpCallgraph)" : " 1/14/2021 14:00:57", + "sizeCodeForReturn: (bpCallgraph)" : " 1/14/2021 14:00:57" } } 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..bf1442dd --- /dev/null +++ b/packages/Babylonian-Core.package/Process.extension/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + }, + "instance" : { + "tracer" : "smalltalkCI 1/14/2021 14:01" } } 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/VariableNode.extension/methodProperties.json b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json index caa8d5f1..b3d0acd5 100644 --- a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "emitCodeForReturn:encoder: (bpCallgraph)" : " 1/14/2021 13:34:20", - "sizeCodeForReturn: (bpCallgraph)" : " 1/14/2021 13:34:20" } } + "emitCodeForReturn:encoder: (bpCallgraph)" : " 1/14/2021 14:00:57", + "sizeCodeForReturn: (bpCallgraph)" : " 1/14/2021 14:00:57" } } From 90bcc091051b4a005acd2cc47e9ba00b6e14b65b Mon Sep 17 00:00:00 2001 From: Patrick R Date: Thu, 14 Jan 2021 14:11:02 +0100 Subject: [PATCH 28/71] Adds the missing tracer: and pauseFlushingCachesDuring: methods --- .../CSLayeredMethod.extension/class/flushAllCaches.st | 5 +++++ .../class/pauseFlushingCachesDuring..st | 8 ++++++++ .../CSLayeredMethod.extension/methodProperties.json | 6 ++++++ .../CSLayeredMethod.extension/properties.json | 2 ++ .../Process.extension/instance/tracer..st | 4 ++++ .../Process.extension/methodProperties.json | 3 ++- 6 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 packages/Babylonian-Core.package/CSLayeredMethod.extension/class/flushAllCaches.st create mode 100644 packages/Babylonian-Core.package/CSLayeredMethod.extension/class/pauseFlushingCachesDuring..st create mode 100644 packages/Babylonian-Core.package/CSLayeredMethod.extension/methodProperties.json create mode 100644 packages/Babylonian-Core.package/CSLayeredMethod.extension/properties.json create mode 100644 packages/Babylonian-Core.package/Process.extension/instance/tracer..st 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..e27eeeca --- /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 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/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/methodProperties.json b/packages/Babylonian-Core.package/Process.extension/methodProperties.json index bf1442dd..416e746a 100644 --- a/packages/Babylonian-Core.package/Process.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/Process.extension/methodProperties.json @@ -2,4 +2,5 @@ "class" : { }, "instance" : { - "tracer" : "smalltalkCI 1/14/2021 14:01" } } + "tracer" : "smalltalkCI 1/14/2021 14:01", + "tracer:" : "smalltalkCI 1/14/2021 14:08" } } From 09d41d5f98631863f0e888c3c688d202381bc519 Mon Sep 17 00:00:00 2001 From: Christian Flach Date: Thu, 14 Jan 2021 20:57:05 +0100 Subject: [PATCH 29/71] Add missing inst var to MethodNode --- .../monticello.meta/postscriptOfRemoval.st | 3 +++ packages/Babylonian-Core.package/monticello.meta/preamble.st | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/packages/Babylonian-Core.package/monticello.meta/postscriptOfRemoval.st b/packages/Babylonian-Core.package/monticello.meta/postscriptOfRemoval.st index cc2cb709..caa68a14 100644 --- a/packages/Babylonian-Core.package/monticello.meta/postscriptOfRemoval.st +++ b/packages/Babylonian-Core.package/monticello.meta/postscriptOfRemoval.st @@ -2,4 +2,7 @@ [(Process respondsTo: #removeInstVarName:) ifTrue: [Process removeInstVarName: ''tracer''] ifFalse: [Process removeInstVarNamed: ''tracer'']] on: Warning do: [:e | e resume]. +[(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 index 845f46b1..00206874 100644 --- a/packages/Babylonian-Core.package/monticello.meta/preamble.st +++ b/packages/Babylonian-Core.package/monticello.meta/preamble.st @@ -3,4 +3,8 @@ ifTrue: [Process addInstVarName: ''tracer''] ifFalse: [Process addInstVarNamed: ''tracer'']] on: Warning do: [:e | e resume]. +[(MethodNode respondsTo: #addInstVarName:) + ifTrue: [MethodNode addInstVarName: ''bpCallgraphNOPs''] + ifFalse: [MethodNode addInstVarNamed: ''bpCallgraphNOPs'']] + on: Warning do: [:e | e resume]. '! From 0600bc3a5822ee2d7910648232866205f9685f04 Mon Sep 17 00:00:00 2001 From: Christian Flach Date: Thu, 14 Jan 2021 20:39:50 +0100 Subject: [PATCH 30/71] Print relative blocks sizes when using the RelativeInstructionPrinter --- ...ushClosureCopyNumCopiedValues.numArgs.blockSize..st | 10 ++++++++++ .../methodProperties.json | 5 +++++ .../properties.json | 2 ++ 3 files changed, 17 insertions(+) create mode 100644 packages/Babylonian-Core.package/RelativeInstructionPrinter.extension/instance/pushClosureCopyNumCopiedValues.numArgs.blockSize..st create mode 100644 packages/Babylonian-Core.package/RelativeInstructionPrinter.extension/methodProperties.json create mode 100644 packages/Babylonian-Core.package/RelativeInstructionPrinter.extension/properties.json 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" } From 1b4bd12a156ea1fc6124b821887a324bee34d130 Mon Sep 17 00:00:00 2001 From: Christian Flach Date: Thu, 14 Jan 2021 21:16:42 +0100 Subject: [PATCH 31/71] Fix pauseFlushingCachesDuring: --- .../class/pauseFlushingCachesDuring..st | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/Babylonian-Core.package/CSLayeredMethod.extension/class/pauseFlushingCachesDuring..st b/packages/Babylonian-Core.package/CSLayeredMethod.extension/class/pauseFlushingCachesDuring..st index e27eeeca..6717928a 100644 --- a/packages/Babylonian-Core.package/CSLayeredMethod.extension/class/pauseFlushingCachesDuring..st +++ b/packages/Babylonian-Core.package/CSLayeredMethod.extension/class/pauseFlushingCachesDuring..st @@ -2,7 +2,7 @@ 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 ifTrue: [^ aBlock value "support nested pausing"]. + (FlushingPaused ifNil: [false]) ifTrue: [^ aBlock value "support nested pausing"]. FlushingPaused := true. ^ aBlock ensure: [FlushingPaused := false. self flushAllCaches] \ No newline at end of file From 16ddd1ae340ed1ca5ab48bc2793030889fc2fdac Mon Sep 17 00:00:00 2001 From: Christian Flach Date: Thu, 14 Jan 2021 21:40:07 +0100 Subject: [PATCH 32/71] Add missing method --- ...thodOfClass.trailer.from. (bpCallgraph).st | 55 +++++++++++++++++++ .../methodProperties.json | 3 +- 2 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from. (bpCallgraph).st b/packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from. (bpCallgraph).st new file mode 100644 index 00000000..0731df54 --- /dev/null +++ b/packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from. (bpCallgraph).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 index a04bf9ed..756943f6 100644 --- a/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json @@ -2,4 +2,5 @@ "class" : { }, "instance" : { - "genNops:" : "cmfcmf 11/27/2020 13:40" } } + "genNops:" : "cmfcmf 11/27/2020 13:40", + "generateMethodOfClass:trailer:from: (bpCallgraph)" : "cmfcmf 10/20/2020 15:58" } } From f7c24fe9a04d09831820a7966c836cc7098cc590 Mon Sep 17 00:00:00 2001 From: Christian Flach Date: Thu, 14 Jan 2021 21:48:06 +0100 Subject: [PATCH 33/71] Fix botched rename --- .../BPByteCodeCallgraphTracer.class/instance/jumpHelperFor..st | 2 +- .../BPByteCodeCallgraphTracer.class/methodProperties.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/jumpHelperFor..st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/jumpHelperFor..st index 8ace5bf8..be78a65a 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/jumpHelperFor..st +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/jumpHelperFor..st @@ -2,7 +2,7 @@ private jumpHelperFor: aContext | helper | - helper := BPCallgraphEntryContextJumpHelper new. + helper := BPCallgraphEntryReenter new. helper class: aContext methodClass asString selector: aContext selector diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json index 90fda8f8..772e33d6 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json @@ -19,7 +19,7 @@ "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/4/2021 15:30", + "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", From e7570103ef66276c643d231fe70865e687462a16 Mon Sep 17 00:00:00 2001 From: Patrick R Date: Fri, 15 Jan 2021 09:34:32 +0100 Subject: [PATCH 34/71] Makes the migration scripts more robust --- .../BlockNode.extension/methodProperties.json | 24 +++++++++---------- .../methodProperties.json | 2 +- .../methodProperties.json | 4 ++-- .../ParseNode.extension/methodProperties.json | 24 +++++++++---------- .../methodProperties.json | 4 ++-- .../monticello.meta/postscriptOfRemoval.st | 15 +++++++----- .../monticello.meta/preamble.st | 18 +++++++------- 7 files changed, 48 insertions(+), 43 deletions(-) diff --git a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json index d76ae9ab..a17c9ce4 100644 --- a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalSize: (bpCallgraph)" : " 1/14/2021 14:00:57", - "additionalSizeBeforeBlock: (bpCallgraph)" : " 1/14/2021 14:00:57", - "emitCodeForEvaluatedClosureValue:encoder: (bpCallgraph)" : " 1/14/2021 14:00:57", - "emitCodeForEvaluatedFullClosureValue:encoder: (bpCallgraph)" : " 1/14/2021 14:00:57", - "emitCodeForEvaluatedValue:encoder: (bpCallgraph)" : " 1/14/2021 14:00:57", - "emitCodeForValue:encoder: (bpCallgraph)" : " 1/14/2021 14:00:57", - "isRootBlock: (bpCallgraph)" : " 1/14/2021 14:00:57", - "litIndexBlockIdentifier: (bpCallgraph)" : " 1/14/2021 14:00:57", - "sizeCodeForEvaluatedClosureValue: (bpCallgraph)" : " 1/14/2021 14:00:57", - "sizeCodeForEvaluatedFullClosureValue: (bpCallgraph)" : " 1/14/2021 14:00:57", - "sizeCodeForEvaluatedValue: (bpCallgraph)" : " 1/14/2021 14:00:57", - "sizeCodeForValue: (bpCallgraph)" : " 1/14/2021 14:00:57" } } + "additionalSize: (bpCallgraph)" : " 1/15/2021 09:22:28", + "additionalSizeBeforeBlock: (bpCallgraph)" : " 1/15/2021 09:22:28", + "emitCodeForEvaluatedClosureValue:encoder: (bpCallgraph)" : " 1/15/2021 09:22:28", + "emitCodeForEvaluatedFullClosureValue:encoder: (bpCallgraph)" : " 1/15/2021 09:22:28", + "emitCodeForEvaluatedValue:encoder: (bpCallgraph)" : " 1/15/2021 09:22:28", + "emitCodeForValue:encoder: (bpCallgraph)" : " 1/15/2021 09:22:28", + "isRootBlock: (bpCallgraph)" : " 1/15/2021 09:22:28", + "litIndexBlockIdentifier: (bpCallgraph)" : " 1/15/2021 09:22:28", + "sizeCodeForEvaluatedClosureValue: (bpCallgraph)" : " 1/15/2021 09:22:28", + "sizeCodeForEvaluatedFullClosureValue: (bpCallgraph)" : " 1/15/2021 09:22:28", + "sizeCodeForEvaluatedValue: (bpCallgraph)" : " 1/15/2021 09:22:28", + "sizeCodeForValue: (bpCallgraph)" : " 1/15/2021 09:22:28" } } diff --git a/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json index 756943f6..b002e644 100644 --- a/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json @@ -3,4 +3,4 @@ }, "instance" : { "genNops:" : "cmfcmf 11/27/2020 13:40", - "generateMethodOfClass:trailer:from: (bpCallgraph)" : "cmfcmf 10/20/2020 15:58" } } + "generateMethodOfClass:trailer:from: (bpCallgraph)" : " 1/15/2021 09:22:28" } } diff --git a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json index f3e05e6f..8bc6f7f1 100644 --- a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "generate:using: (bpCallgraph)" : " 1/14/2021 14:00:57", - "rememberNOPs:range:blockId: (bpCallgraph)" : " 1/14/2021 14:00:57" } } + "generate:using: (bpCallgraph)" : " 1/15/2021 09:22:28", + "rememberNOPs:range:blockId: (bpCallgraph)" : " 1/15/2021 09:22:28" } } diff --git a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json index fc5b7d1c..628bcf9f 100644 --- a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalReturnSize:returns: (bpCallgraph)" : " 1/14/2021 14:00:57", - "emitCodeForReturn:encoder: (bpCallgraph)" : " 1/14/2021 14:00:57", - "emitNOPs:stack:n:type: (bpCallgraph)" : " 1/14/2021 14:00:57", - "findEnclosingNonOptimizedBlock: (bpCallgraph)" : " 1/14/2021 14:00:57", - "findEnclosingNonOptimizedBlockId: (bpCallgraph)" : " 1/14/2021 14:00:57", - "invocationTempIndex: (bpCallgraph)" : " 1/14/2021 14:00:57", - "litIndexBlockIdentifier: (bpCallgraph)" : " 1/14/2021 14:00:57", - "litIndexEnterInvocation: (bpCallgraph)" : " 1/14/2021 14:00:57", - "litIndexExitInvocation: (bpCallgraph)" : " 1/14/2021 14:00:57", - "litIndexInvocationCount: (bpCallgraph)" : " 1/14/2021 14:00:57", - "litIndexTracerClass: (bpCallgraph)" : " 1/14/2021 14:00:57", - "sizeCodeForReturn: (bpCallgraph)" : " 1/14/2021 14:00:57" } } + "additionalReturnSize:returns: (bpCallgraph)" : " 1/15/2021 09:22:28", + "emitCodeForReturn:encoder: (bpCallgraph)" : " 1/15/2021 09:22:28", + "emitNOPs:stack:n:type: (bpCallgraph)" : " 1/15/2021 09:22:28", + "findEnclosingNonOptimizedBlock: (bpCallgraph)" : " 1/15/2021 09:22:28", + "findEnclosingNonOptimizedBlockId: (bpCallgraph)" : " 1/15/2021 09:22:28", + "invocationTempIndex: (bpCallgraph)" : " 1/15/2021 09:22:28", + "litIndexBlockIdentifier: (bpCallgraph)" : " 1/15/2021 09:22:28", + "litIndexEnterInvocation: (bpCallgraph)" : " 1/15/2021 09:22:28", + "litIndexExitInvocation: (bpCallgraph)" : " 1/15/2021 09:22:28", + "litIndexInvocationCount: (bpCallgraph)" : " 1/15/2021 09:22:28", + "litIndexTracerClass: (bpCallgraph)" : " 1/15/2021 09:22:28", + "sizeCodeForReturn: (bpCallgraph)" : " 1/15/2021 09:22:28" } } diff --git a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json index b3d0acd5..de1708bd 100644 --- a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "emitCodeForReturn:encoder: (bpCallgraph)" : " 1/14/2021 14:00:57", - "sizeCodeForReturn: (bpCallgraph)" : " 1/14/2021 14:00:57" } } + "emitCodeForReturn:encoder: (bpCallgraph)" : " 1/15/2021 09:22:28", + "sizeCodeForReturn: (bpCallgraph)" : " 1/15/2021 09:22:28" } } diff --git a/packages/Babylonian-Core.package/monticello.meta/postscriptOfRemoval.st b/packages/Babylonian-Core.package/monticello.meta/postscriptOfRemoval.st index caa68a14..bc06ee05 100644 --- a/packages/Babylonian-Core.package/monticello.meta/postscriptOfRemoval.st +++ b/packages/Babylonian-Core.package/monticello.meta/postscriptOfRemoval.st @@ -1,8 +1,11 @@ (PackageInfo named: 'Babylonian-Core') postscriptOfRemoval: '"below, add code to clean up after the unloading of this package" -[(Process respondsTo: #removeInstVarName:) - ifTrue: [Process removeInstVarName: ''tracer''] - ifFalse: [Process removeInstVarNamed: ''tracer'']] on: Warning do: [:e | e resume]. -[(MethodNode respondsTo: #removeInstVarName:) - ifTrue: [MethodNode removeInstVarName: ''bpCallgraphNOPs''] - ifFalse: [MethodNode removeInstVarNamed: ''bpCallgraphNOPs'']] on: Warning do: [:e | e resume]. +(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 index 00206874..c7a7d585 100644 --- a/packages/Babylonian-Core.package/monticello.meta/preamble.st +++ b/packages/Babylonian-Core.package/monticello.meta/preamble.st @@ -1,10 +1,12 @@ (PackageInfo named: 'Babylonian-Core') preamble: '"below, add code to be run before the loading of this package" -[(Process respondsTo: #addInstVarName:) - ifTrue: [Process addInstVarName: ''tracer''] - ifFalse: [Process addInstVarNamed: ''tracer'']] - on: Warning do: [:e | e resume]. -[(MethodNode respondsTo: #addInstVarName:) - ifTrue: [MethodNode addInstVarName: ''bpCallgraphNOPs''] - ifFalse: [MethodNode addInstVarNamed: ''bpCallgraphNOPs'']] - on: Warning do: [:e | e resume]. +(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]]. '! From 1d2b1f10482091b5f789c2bd1a8f8a1b6f9535ff Mon Sep 17 00:00:00 2001 From: Patrick R Date: Fri, 15 Jan 2021 10:31:20 +0100 Subject: [PATCH 35/71] Fixes the compiler tests by deleting methods that seem to have survived the merge --- .../BPCompiler.class/methodProperties.json | 1 + ...ecutableCode.statements.finalStatement..st | 29 ------------------- .../methodProperties.json | 1 - .../instance/testRewritingIgnoresSliders.st | 13 --------- .../methodProperties.json | 1 - 5 files changed, 1 insertion(+), 44 deletions(-) delete mode 100644 packages/Babylonian-Compiler.package/BPSourceRewriter.class/instance/MoreExecutableCode.statements.finalStatement..st delete mode 100644 packages/Babylonian-Tests.package/BPCompilerTest.class/instance/testRewritingIgnoresSliders.st diff --git a/packages/Babylonian-Compiler.package/BPCompiler.class/methodProperties.json b/packages/Babylonian-Compiler.package/BPCompiler.class/methodProperties.json index 2f737bc8..cd04a510 100644 --- a/packages/Babylonian-Compiler.package/BPCompiler.class/methodProperties.json +++ b/packages/Babylonian-Compiler.package/BPCompiler.class/methodProperties.json @@ -1,5 +1,6 @@ { "class" : { + "bpInstrumentedLayerName" : " 1/15/2021 09:22:32", "compilerClass" : "cmfcmf 10/30/2020 12:39", "exampleTextAnchor" : "pre 11/8/2019 12:05" }, "instance" : { diff --git a/packages/Babylonian-Compiler.package/BPSourceRewriter.class/instance/MoreExecutableCode.statements.finalStatement..st b/packages/Babylonian-Compiler.package/BPSourceRewriter.class/instance/MoreExecutableCode.statements.finalStatement..st deleted file mode 100644 index 9feb682d..00000000 --- a/packages/Babylonian-Compiler.package/BPSourceRewriter.class/instance/MoreExecutableCode.statements.finalStatement..st +++ /dev/null @@ -1,29 +0,0 @@ -grammar rules -MoreExecutableCode: aNode statements: statements finalStatement: finalStatement - - | finalStatementSource statementsSource finalStatementTemplate blockId | - blockId := ""self nextBlockId"". - statementsSource := self value: statements. - finalStatementTemplate := 'self bpBlock: {1} leftWith: ({2}) at: thisContext'. - finalStatementSource := self value: finalStatement. - finalStatementSource - ifEmpty: [ - statementsSource := self valueStatements: statements withLastStatementAs: [:lastStatement | - finalStatementTemplate format: {blockId . lastStatement}]. ] - ifNotEmpty: [ - statementsSource := self value: statements. - "We have to express the condition this akwardly to protect from lines as the condition itself (small riddle :))" - finalStatementSource := (finalStatementSource withBlanksTrimmed first = $^) - ifTrue: [ | finalStatementParts | - finalStatementParts := { - (finalStatementSource copyUpTo: $^) , '^ '. - (finalStatementSource copyAfterLast: $^) withBlanksTrimmed }. - finalStatementParts first , (finalStatementTemplate format: {blockId . finalStatementParts second})] - ifFalse: [ - finalStatementTemplate format: {blockId . finalStatementSource}]]. - - ^ '{1} -{2}{3}' format: { - 'self bpBlock: {1} enteredAt: thisContext.' format: {blockId}. - ""statementsSource"". - finalStatementSource} \ No newline at end of file diff --git a/packages/Babylonian-Compiler.package/BPSourceRewriter.class/methodProperties.json b/packages/Babylonian-Compiler.package/BPSourceRewriter.class/methodProperties.json index 190c6810..e7dd3249 100644 --- a/packages/Babylonian-Compiler.package/BPSourceRewriter.class/methodProperties.json +++ b/packages/Babylonian-Compiler.package/BPSourceRewriter.class/methodProperties.json @@ -13,7 +13,6 @@ "CascadedMessages:with:and:and:" : "jb 12/7/2020 18:04", "ExecutableCode:variables:pragmas:moreCode:" : "pre 9/25/2020 11:47", "MethodHeader:with:" : "pre 9/25/2020 11:14", - "MoreExecutableCode:statements:finalStatement:" : "pre 1/27/2020 17:53", "bpAssert:with:" : "pre 9/25/2020 11:20", "bpProbe:with:" : "pre 9/25/2020 11:20", "bpReplace:with:" : "pre 9/25/2020 11:20", diff --git a/packages/Babylonian-Tests.package/BPCompilerTest.class/instance/testRewritingIgnoresSliders.st b/packages/Babylonian-Tests.package/BPCompilerTest.class/instance/testRewritingIgnoresSliders.st deleted file mode 100644 index 1e82a486..00000000 --- a/packages/Babylonian-Tests.package/BPCompilerTest.class/instance/testRewritingIgnoresSliders.st +++ /dev/null @@ -1,13 +0,0 @@ -tests -testRewritingIgnoresSliders - - self - assertCompilerRewrites: -'method - 2 + ""[a + b]""' - to: -'method - - self bpBlock: 1 enteredAt: thisContext. -self bpBlock: 1 leftWith: (2 + [self bpBlock: 2 enteredAt: thisContext. -self bpBlock: 2 leftWith: (a + b) at: thisContext]) at: thisContext' \ No newline at end of file diff --git a/packages/Babylonian-Tests.package/BPCompilerTest.class/methodProperties.json b/packages/Babylonian-Tests.package/BPCompilerTest.class/methodProperties.json index d70189f3..2b841029 100644 --- a/packages/Babylonian-Tests.package/BPCompilerTest.class/methodProperties.json +++ b/packages/Babylonian-Tests.package/BPCompilerTest.class/methodProperties.json @@ -13,7 +13,6 @@ "testRewritingErrorOnIncompleteExpressionForReplacement" : "pre 5/10/2019 11:41", "testRewritingErrorOnIncompleteExpressionProbe" : "pre 8/17/2020 08:52", "testRewritingExampleSpecificAssertion" : "pre 9/25/2020 11:56", - "testRewritingIgnoresSliders" : "pre 3/5/2020 17:45", "testRewritingKeywordMessageArgumentProbe" : "pre 9/25/2020 12:00", "testRewritingKeywordMessageBinaryArgumentProbe" : "pre 9/25/2020 16:54", "testRewritingKeywordMessageBinaryReceiverProbe" : "pre 9/25/2020 16:54", From 820f6828aacd73d03ffdfa60da5f6f11ee971838 Mon Sep 17 00:00:00 2001 From: Patrick R Date: Fri, 15 Jan 2021 10:46:12 +0100 Subject: [PATCH 36/71] Fixed trace notification tests to respect the tuple of trace and callgraph tracer --- .../instance/testAsyncTracingReturnsIntermediateTrace.st | 2 +- .../instance/testAsyncTracingReturnsSameTrace.st | 4 ++-- .../BPTracingTest.class/methodProperties.json | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) 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", From 60900a8f680ff7ce89878a2a23d211845a1438fd Mon Sep 17 00:00:00 2001 From: Patrick R Date: Fri, 15 Jan 2021 14:49:00 +0100 Subject: [PATCH 37/71] Improves the preamble / post-removal scripts again --- ...e. (bpCallgraph).st => additionalSize..st} | 0 ...raph).st => additionalSizeBeforeBlock..st} | 0 ...tCodeForEvaluatedClosureValue.encoder..st} | 0 ...eForEvaluatedFullClosureValue.encoder..st} | 0 ... => emitCodeForEvaluatedValue.encoder..st} | 0 ...graph).st => emitCodeForValue.encoder..st} | 0 ...lock. (bpCallgraph).st => isRootBlock..st} | 0 ...lgraph).st => litIndexBlockIdentifier..st} | 0 ...t => sizeCodeForEvaluatedClosureValue..st} | 0 ... sizeCodeForEvaluatedFullClosureValue..st} | 0 ...raph).st => sizeCodeForEvaluatedValue..st} | 0 ... (bpCallgraph).st => sizeCodeForValue..st} | 0 .../BlockNode.extension/methodProperties.json | 24 +++++++++---------- ...=> generateMethodOfClass.trailer.from..st} | 0 .../methodProperties.json | 2 +- ...g. (bpCallgraph).st => generate.using..st} | 0 ...aph).st => rememberNOPs.range.blockId..st} | 0 .../methodProperties.json | 4 ++-- ...h).st => additionalReturnSize.returns..st} | 0 ...raph).st => emitCodeForReturn.encoder..st} | 0 ...allgraph).st => emitNOPs.stack.n.type..st} | 0 ....st => findEnclosingNonOptimizedBlock..st} | 0 ...t => findEnclosingNonOptimizedBlockId..st} | 0 ...pCallgraph).st => invocationTempIndex..st} | 0 ...lgraph).st => litIndexBlockIdentifier..st} | 0 ...lgraph).st => litIndexEnterInvocation..st} | 0 ...llgraph).st => litIndexExitInvocation..st} | 0 ...lgraph).st => litIndexInvocationCount..st} | 0 ...pCallgraph).st => litIndexTracerClass..st} | 0 ...(bpCallgraph).st => sizeCodeForReturn..st} | 0 .../ParseNode.extension/methodProperties.json | 24 +++++++++---------- ...raph).st => emitCodeForReturn.encoder..st} | 0 ...(bpCallgraph).st => sizeCodeForReturn..st} | 0 .../methodProperties.json | 4 ++-- 34 files changed, 29 insertions(+), 29 deletions(-) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{additionalSize. (bpCallgraph).st => additionalSize..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{additionalSizeBeforeBlock. (bpCallgraph).st => additionalSizeBeforeBlock..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st => emitCodeForEvaluatedClosureValue.encoder..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st => emitCodeForEvaluatedFullClosureValue.encoder..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedValue.encoder. (bpCallgraph).st => emitCodeForEvaluatedValue.encoder..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForValue.encoder. (bpCallgraph).st => emitCodeForValue.encoder..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{isRootBlock. (bpCallgraph).st => isRootBlock..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{litIndexBlockIdentifier. (bpCallgraph).st => litIndexBlockIdentifier..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedClosureValue. (bpCallgraph).st => sizeCodeForEvaluatedClosureValue..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st => sizeCodeForEvaluatedFullClosureValue..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedValue. (bpCallgraph).st => sizeCodeForEvaluatedValue..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForValue. (bpCallgraph).st => sizeCodeForValue..st} (100%) rename packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/{generateMethodOfClass.trailer.from. (bpCallgraph).st => generateMethodOfClass.trailer.from..st} (100%) rename packages/Babylonian-Core.package/MethodNode.extension/instance/{generate.using. (bpCallgraph).st => generate.using..st} (100%) rename packages/Babylonian-Core.package/MethodNode.extension/instance/{rememberNOPs.range.blockId. (bpCallgraph).st => rememberNOPs.range.blockId..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{additionalReturnSize.returns. (bpCallgraph).st => additionalReturnSize.returns..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{emitCodeForReturn.encoder. (bpCallgraph).st => emitCodeForReturn.encoder..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{emitNOPs.stack.n.type. (bpCallgraph).st => emitNOPs.stack.n.type..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{findEnclosingNonOptimizedBlock. (bpCallgraph).st => findEnclosingNonOptimizedBlock..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{findEnclosingNonOptimizedBlockId. (bpCallgraph).st => findEnclosingNonOptimizedBlockId..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{invocationTempIndex. (bpCallgraph).st => invocationTempIndex..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexBlockIdentifier. (bpCallgraph).st => litIndexBlockIdentifier..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexEnterInvocation. (bpCallgraph).st => litIndexEnterInvocation..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexExitInvocation. (bpCallgraph).st => litIndexExitInvocation..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexInvocationCount. (bpCallgraph).st => litIndexInvocationCount..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexTracerClass. (bpCallgraph).st => litIndexTracerClass..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{sizeCodeForReturn. (bpCallgraph).st => sizeCodeForReturn..st} (100%) rename packages/Babylonian-Core.package/VariableNode.extension/instance/{emitCodeForReturn.encoder. (bpCallgraph).st => emitCodeForReturn.encoder..st} (100%) rename packages/Babylonian-Core.package/VariableNode.extension/instance/{sizeCodeForReturn. (bpCallgraph).st => sizeCodeForReturn..st} (100%) diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json index a17c9ce4..fb90c22f 100644 --- a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalSize: (bpCallgraph)" : " 1/15/2021 09:22:28", - "additionalSizeBeforeBlock: (bpCallgraph)" : " 1/15/2021 09:22:28", - "emitCodeForEvaluatedClosureValue:encoder: (bpCallgraph)" : " 1/15/2021 09:22:28", - "emitCodeForEvaluatedFullClosureValue:encoder: (bpCallgraph)" : " 1/15/2021 09:22:28", - "emitCodeForEvaluatedValue:encoder: (bpCallgraph)" : " 1/15/2021 09:22:28", - "emitCodeForValue:encoder: (bpCallgraph)" : " 1/15/2021 09:22:28", - "isRootBlock: (bpCallgraph)" : " 1/15/2021 09:22:28", - "litIndexBlockIdentifier: (bpCallgraph)" : " 1/15/2021 09:22:28", - "sizeCodeForEvaluatedClosureValue: (bpCallgraph)" : " 1/15/2021 09:22:28", - "sizeCodeForEvaluatedFullClosureValue: (bpCallgraph)" : " 1/15/2021 09:22:28", - "sizeCodeForEvaluatedValue: (bpCallgraph)" : " 1/15/2021 09:22:28", - "sizeCodeForValue: (bpCallgraph)" : " 1/15/2021 09:22:28" } } + "additionalSize:" : " 1/15/2021 14:48:05", + "additionalSizeBeforeBlock:" : " 1/15/2021 14:48:05", + "emitCodeForEvaluatedClosureValue:encoder:" : " 1/15/2021 14:48:05", + "emitCodeForEvaluatedFullClosureValue:encoder:" : " 1/15/2021 14:48:05", + "emitCodeForEvaluatedValue:encoder:" : " 1/15/2021 14:48:05", + "emitCodeForValue:encoder:" : " 1/15/2021 14:48:05", + "isRootBlock:" : " 1/15/2021 14:48:05", + "litIndexBlockIdentifier:" : " 1/15/2021 14:48:05", + "sizeCodeForEvaluatedClosureValue:" : " 1/15/2021 14:48:05", + "sizeCodeForEvaluatedFullClosureValue:" : " 1/15/2021 14:48:05", + "sizeCodeForEvaluatedValue:" : " 1/15/2021 14:48:05", + "sizeCodeForValue:" : " 1/15/2021 14:48:05" } } diff --git a/packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from. (bpCallgraph).st b/packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from..st similarity index 100% rename from packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from. (bpCallgraph).st rename to packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from..st diff --git a/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json index b002e644..8c32fc1c 100644 --- a/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json @@ -3,4 +3,4 @@ }, "instance" : { "genNops:" : "cmfcmf 11/27/2020 13:40", - "generateMethodOfClass:trailer:from: (bpCallgraph)" : " 1/15/2021 09:22:28" } } + "generateMethodOfClass:trailer:from:" : " 1/15/2021 14:48:05" } } diff --git a/packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using. (bpCallgraph).st b/packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using..st similarity index 100% rename from packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using. (bpCallgraph).st rename to packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using..st diff --git a/packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId. (bpCallgraph).st b/packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId..st similarity index 100% rename from packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId. (bpCallgraph).st rename to packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId..st diff --git a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json index 8bc6f7f1..149580b4 100644 --- a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "generate:using: (bpCallgraph)" : " 1/15/2021 09:22:28", - "rememberNOPs:range:blockId: (bpCallgraph)" : " 1/15/2021 09:22:28" } } + "generate:using:" : " 1/15/2021 14:48:05", + "rememberNOPs:range:blockId:" : " 1/15/2021 14:48:05" } } diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json index 628bcf9f..f86c2607 100644 --- a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalReturnSize:returns: (bpCallgraph)" : " 1/15/2021 09:22:28", - "emitCodeForReturn:encoder: (bpCallgraph)" : " 1/15/2021 09:22:28", - "emitNOPs:stack:n:type: (bpCallgraph)" : " 1/15/2021 09:22:28", - "findEnclosingNonOptimizedBlock: (bpCallgraph)" : " 1/15/2021 09:22:28", - "findEnclosingNonOptimizedBlockId: (bpCallgraph)" : " 1/15/2021 09:22:28", - "invocationTempIndex: (bpCallgraph)" : " 1/15/2021 09:22:28", - "litIndexBlockIdentifier: (bpCallgraph)" : " 1/15/2021 09:22:28", - "litIndexEnterInvocation: (bpCallgraph)" : " 1/15/2021 09:22:28", - "litIndexExitInvocation: (bpCallgraph)" : " 1/15/2021 09:22:28", - "litIndexInvocationCount: (bpCallgraph)" : " 1/15/2021 09:22:28", - "litIndexTracerClass: (bpCallgraph)" : " 1/15/2021 09:22:28", - "sizeCodeForReturn: (bpCallgraph)" : " 1/15/2021 09:22:28" } } + "additionalReturnSize:returns:" : " 1/15/2021 14:48:05", + "emitCodeForReturn:encoder:" : " 1/15/2021 14:48:05", + "emitNOPs:stack:n:type:" : " 1/15/2021 14:48:05", + "findEnclosingNonOptimizedBlock:" : " 1/15/2021 14:48:05", + "findEnclosingNonOptimizedBlockId:" : " 1/15/2021 14:48:05", + "invocationTempIndex:" : " 1/15/2021 14:48:05", + "litIndexBlockIdentifier:" : " 1/15/2021 14:48:05", + "litIndexEnterInvocation:" : " 1/15/2021 14:48:05", + "litIndexExitInvocation:" : " 1/15/2021 14:48:05", + "litIndexInvocationCount:" : " 1/15/2021 14:48:05", + "litIndexTracerClass:" : " 1/15/2021 14:48:05", + "sizeCodeForReturn:" : " 1/15/2021 14:48:05" } } diff --git a/packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder..st diff --git a/packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st b/packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn..st similarity index 100% rename from packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st rename to packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn..st diff --git a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json index de1708bd..136e7d15 100644 --- a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "emitCodeForReturn:encoder: (bpCallgraph)" : " 1/15/2021 09:22:28", - "sizeCodeForReturn: (bpCallgraph)" : " 1/15/2021 09:22:28" } } + "emitCodeForReturn:encoder:" : " 1/15/2021 14:48:05", + "sizeCodeForReturn:" : " 1/15/2021 14:48:05" } } From 39697a9056245944ace14dc7e600d0a835cffe96 Mon Sep 17 00:00:00 2001 From: Patrick R Date: Fri, 15 Jan 2021 14:50:39 +0100 Subject: [PATCH 38/71] Resets the state of the UI package to the base state and applies the callgraph modifications --- .../instance/traceInBackground.st | 4 +- .../traceInBackgroundWithCallgraph..st | 2 +- .../BPExample.class/methodProperties.json | 4 +- .../instance/initialize.st | 6 +-- .../instance/newExampleLabelMorphFor..st | 15 +++++-- .../instance/newExampleSelectionFieldMorph.st | 2 +- .../methodProperties.json | 6 +-- .../instance/valueMorphFor.trace..st | 4 +- .../instance/valueTextFor..st | 16 ------- .../methodProperties.json | 3 +- .../instance/addAnnotation.in..st | 23 ---------- .../instance/addAnnotationAtSelection..st | 14 ------ .../instance/addAssertionToSelection.st | 5 --- .../instance/addProbeToSelection.st | 5 --- .../instance/addReplacementToSelection.st | 4 -- .../instance/annotationsInSelection.st | 11 ----- .../BPBrowser.class/instance/bindingOf..st | 8 ---- .../instance/buildWindowWith.specs..st | 2 +- .../instance/callgraphCategoryMenu..st | 2 +- .../instance/codePaneMenuAnnotationItems..st | 29 ------------ .../instance/compileMessage.notifying..st | 4 -- .../instance/compiledMethod.st | 4 -- .../determineIntervalToAnnotateFor..st | 44 ------------------- .../BPBrowser.class/instance/doItReceiver.st | 8 ---- .../instance/exampleForEvaluation.st | 6 --- .../instance/exampleMorphFor..st | 6 --- .../instance/isAnnotatableRule..st | 4 -- .../instance/removeAnnotations..st | 16 ------- .../instance/removeAssertionFromSelection.st | 4 -- .../instance/removeProbeFromSelection.st | 4 -- .../removeReplacementFromSelection.st | 4 -- .../removeSelectedAnnotationsSatisfying..st | 15 ------- .../instance/saveMethodWithExamples.st | 5 --- .../instance/saveMethodWithExamplesWith..st | 5 --- .../BPBrowser.class/methodProperties.json | 36 +++------------ .../instance/addArgumentScriptMorphs.st | 31 ------------- .../instance/addCallgraphMorphs.st | 3 +- .../instance/addReceiverConstructorMorph.st | 14 ------ .../instance/selectLiveSpecimenThen..st | 10 ----- .../BPExampleMorph.class/instance/step.st | 2 +- .../instance/updateMorphs.st | 3 +- .../instance/viewInSidebar.st | 4 -- .../methodProperties.json | 12 ++--- .../instance/addCreateExampleButton.st | 21 --------- .../instance/bottomColor..st | 2 +- .../instance/drawOn..st | 4 +- .../instance/initialize.st | 4 +- .../methodProperties.json | 4 +- .../instance/annotation..st | 8 ---- .../BPProbeMorph.class/instance/blinkFor..st | 4 -- .../instance/exploreButtonClickedFor..st | 1 - .../BPProbeMorph.class/instance/initialize.st | 19 -------- .../instance/newExampleLabelMorphFor..st | 22 ---------- .../instance/newExampleLineMorph.st | 14 ------ .../instance/newLineMorphFor..st | 2 +- .../instance/newTracesMorph.st | 12 ----- .../instance/newWidgetsMorph.st | 12 ----- .../removeLinesWithoutCurrentTrace..st | 6 --- .../BPProbeMorph.class/instance/step.st | 13 ------ .../BPProbeMorph.class/instance/stepTime.st | 4 -- .../instance/valueTextFor..st | 17 ------- .../instance/valuesTextFor..st | 12 ----- .../BPProbeMorph.class/methodProperties.json | 37 +++++----------- .../BPProbeMorph.class/properties.json | 3 +- .../instance/annotation..st | 5 --- .../instance/createMorphs.st | 4 -- .../BPSliderMorph.class/methodProperties.json | 6 +-- .../instance/callgraphMenu.forTrace..st | 2 +- .../instance/colorForTraceValue.inTrace..st | 2 +- .../instance/initialize.st | 2 + .../instance/newExampleLineMorph.st | 6 +-- .../instance/viewCommonAncestorForTrace..st | 2 +- .../methodProperties.json | 9 ++-- .../BPTraceBasedMorph.class/properties.json | 3 +- .../instance/allAnnotationsMorphs.st | 2 +- .../methodProperties.json | 1 + 76 files changed, 83 insertions(+), 591 deletions(-) delete mode 100644 packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/instance/valueTextFor..st delete mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/addAnnotation.in..st delete mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/addAnnotationAtSelection..st delete mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/addAssertionToSelection.st delete mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/addProbeToSelection.st delete mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/addReplacementToSelection.st delete mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/annotationsInSelection.st delete mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/bindingOf..st delete mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/codePaneMenuAnnotationItems..st delete mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st delete mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/compiledMethod.st delete mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/determineIntervalToAnnotateFor..st delete mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/doItReceiver.st delete mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/exampleForEvaluation.st delete mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/exampleMorphFor..st delete mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/isAnnotatableRule..st delete mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/removeAnnotations..st delete mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/removeAssertionFromSelection.st delete mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/removeProbeFromSelection.st delete mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/removeReplacementFromSelection.st delete mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/removeSelectedAnnotationsSatisfying..st delete mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/saveMethodWithExamples.st delete mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/saveMethodWithExamplesWith..st delete mode 100644 packages/Babylonian-UI.package/BPExampleMorph.class/instance/addArgumentScriptMorphs.st delete mode 100644 packages/Babylonian-UI.package/BPExampleMorph.class/instance/addReceiverConstructorMorph.st delete mode 100644 packages/Babylonian-UI.package/BPExampleMorph.class/instance/selectLiveSpecimenThen..st delete mode 100644 packages/Babylonian-UI.package/BPExampleMorph.class/instance/viewInSidebar.st delete mode 100644 packages/Babylonian-UI.package/BPExamplesMorph.class/instance/addCreateExampleButton.st delete mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/annotation..st delete mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/blinkFor..st delete mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/initialize.st delete mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExampleLabelMorphFor..st delete mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExampleLineMorph.st delete mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/newTracesMorph.st delete mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/newWidgetsMorph.st delete mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/removeLinesWithoutCurrentTrace..st delete mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/step.st delete mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/stepTime.st delete mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/valueTextFor..st delete mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/valuesTextFor..st delete mode 100644 packages/Babylonian-UI.package/BPSliderMorph.class/instance/annotation..st delete mode 100644 packages/Babylonian-UI.package/BPSliderMorph.class/instance/createMorphs.st rename packages/Babylonian-UI.package/{BPProbeMorph.class => BPTraceBasedMorph.class}/instance/callgraphMenu.forTrace..st (98%) rename packages/Babylonian-UI.package/{BPProbeMorph.class => BPTraceBasedMorph.class}/instance/colorForTraceValue.inTrace..st (98%) rename packages/Babylonian-UI.package/{BPProbeMorph.class => BPTraceBasedMorph.class}/instance/viewCommonAncestorForTrace..st (98%) rename packages/Babylonian-UI.package/{BPBrowser.class => CodeHolder.extension}/instance/allAnnotationsMorphs.st (76%) diff --git a/packages/Babylonian-Core.package/BPExample.class/instance/traceInBackground.st b/packages/Babylonian-Core.package/BPExample.class/instance/traceInBackground.st index f0e6026e..dcd9f05c 100644 --- a/packages/Babylonian-Core.package/BPExample.class/instance/traceInBackground.st +++ b/packages/Babylonian-Core.package/BPExample.class/instance/traceInBackground.st @@ -1,4 +1,6 @@ tracing traceInBackground - ^ self traceInBackgroundWithCallgraph: (self class alwaysGenerateCallgraph ifTrue: [#byteCode] ifFalse: [#none]) + ^ 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 index e45427b8..2cfa0696 100644 --- a/packages/Babylonian-Core.package/BPExample.class/instance/traceInBackgroundWithCallgraph..st +++ b/packages/Babylonian-Core.package/BPExample.class/instance/traceInBackgroundWithCallgraph..st @@ -14,7 +14,7 @@ traceInBackgroundWithCallgraph: aSymbol "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. + promise resolveWith: {e trace . nil}. Processor activeProcess suspend.]]. traceInformation tracingProcess: (exampleExecution forkAt: Processor userSchedulingPriority diff --git a/packages/Babylonian-Core.package/BPExample.class/methodProperties.json b/packages/Babylonian-Core.package/BPExample.class/methodProperties.json index 88b37101..d1126a55 100644 --- a/packages/Babylonian-Core.package/BPExample.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPExample.class/methodProperties.json @@ -43,8 +43,8 @@ "trace" : "cmfcmf 11/9/2020 15:02", "trace:" : "cmfcmf 11/9/2020 15:10", "traceAsyncNotifying:withCallgraph:" : "cmfcmf 1/5/2021 21:20", - "traceInBackground" : "cmfcmf 11/10/2020 11:34", - "traceInBackgroundWithCallgraph:" : "cmfcmf 11/10/2020 11:34", + "traceInBackground" : "pre 1/15/2021 10:51", + "traceInBackgroundWithCallgraph:" : "pre 1/15/2021 10:58", "traceToHaltAt:" : "pre 9/30/2020 09:55", "tracingIsStillRunning" : "1/14/2021 13:34:20", "uniqueIdentifier" : "pre 9/30/2020 09:55" } } diff --git a/packages/Babylonian-UI.package/BPAnnotationMorph.class/instance/initialize.st b/packages/Babylonian-UI.package/BPAnnotationMorph.class/instance/initialize.st index b46a6a70..92ba6e79 100644 --- a/packages/Babylonian-UI.package/BPAnnotationMorph.class/instance/initialize.st +++ b/packages/Babylonian-UI.package/BPAnnotationMorph.class/instance/initialize.st @@ -3,7 +3,7 @@ initialize super initialize. self color: ((ScrollPane basicNew userInterfaceTheme color ifNil: [ - Color peach lighter]) adjustBrightness: -0.02). + Color peach lighter]) adjustBrightness: -0.05). self height: self fontHeight. self @@ -11,8 +11,8 @@ initialize cellPositioning: #topLeft; listDirection: #leftToRight; vResizing: #shrinkWrap; - cellInset: 2; - layoutInset: 2. + cellInset: 1; + layoutInset: 1. BPStyler withSidebarAnnotations: [ 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/BPAnnotationMorph.class/instance/newExampleSelectionFieldMorph.st b/packages/Babylonian-UI.package/BPAnnotationMorph.class/instance/newExampleSelectionFieldMorph.st index e36c9e08..45375ff9 100644 --- a/packages/Babylonian-UI.package/BPAnnotationMorph.class/instance/newExampleSelectionFieldMorph.st +++ b/packages/Babylonian-UI.package/BPAnnotationMorph.class/instance/newExampleSelectionFieldMorph.st @@ -9,6 +9,6 @@ newExampleSelectionFieldMorph onChangeBlock: [:exampleOrAllExampleString | exampleOrAllExampleString = BPExampleSpecificScript allExamplesName ifTrue: [self annotation exampleName: exampleOrAllExampleString] - ifFalse: [self annotation exampleName: exampleOrAllExampleString uniqueIdentifier] + ifFalse: [self annotation exampleName: exampleOrAllExampleString uniqueIdentifier]. self codeContentChanged]); yourself. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPAnnotationMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPAnnotationMorph.class/methodProperties.json index c842085c..998370f2 100644 --- a/packages/Babylonian-UI.package/BPAnnotationMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPAnnotationMorph.class/methodProperties.json @@ -24,7 +24,7 @@ "iconSize" : "pre 7/24/2019 13:18", "id" : "pre 7/2/2019 16:38", "id:" : "pre 7/2/2019 16:38", - "initialize" : "pre 1/6/2021 10:50", + "initialize" : "pre 1/15/2021 14:45", "isAssertion" : "pre 7/3/2019 11:11", "isBPAnnotationMorph" : "pre 7/3/2019 11:10", "isExample" : "pre 7/23/2019 12:47", @@ -36,8 +36,8 @@ "methodReference" : "pre 11/18/2019 12:28", "methodReference:" : "pre 11/18/2019 12:28", "newContainerMorph" : "pre 10/12/2020 17:47", - "newExampleLabelMorphFor:" : "pre 1/8/2021 16:51", - "newExampleSelectionFieldMorph" : "pre 1/12/2021 09:57", + "newExampleLabelMorphFor:" : "pre 1/15/2021 13:51", + "newExampleSelectionFieldMorph" : "pre 1/15/2021 11:00", "newRemoveButton" : "pre 8/21/2020 10:32", "refreshTextComposition" : "pre 1/11/2021 11:31", "removeButtonClicked" : "jb 12/7/2020 18:57", diff --git a/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/instance/valueMorphFor.trace..st b/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/instance/valueMorphFor.trace..st index 171c6e55..0f816e94 100644 --- a/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/instance/valueMorphFor.trace..st +++ b/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/instance/valueMorphFor.trace..st @@ -1,8 +1,8 @@ private -valueMorphFor: traceValue trace: trace +valueMorphFor: traceValue trace: aTrace | initialValueMorph previousValueMorph | - initialValueMorph := super valueMorphFor: traceValue trace: trace. + 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/instance/valueTextFor..st b/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/instance/valueTextFor..st deleted file mode 100644 index 590461fc..00000000 --- a/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/instance/valueTextFor..st +++ /dev/null @@ -1,16 +0,0 @@ -private -valueTextFor: traceValue - - | previousValueText valueText | - traceValue traceHasFailedBefore ifTrue: [^ super valueTextFor: traceValue]. - previousValueText := (traceValue previousValueOf: traceValue assignedVariableNames first) printString asText. - previousValueText addAttribute: TextEmphasis struckOut. - valueText := super valueTextFor: traceValue. - ^ Text streamContents: [:str | - str - << previousValueText; - << '|' asText; - << valueText] - - - \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/methodProperties.json index 67e8348d..093127ca 100644 --- a/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPAssignmentProbeMorph.class/methodProperties.json @@ -2,5 +2,4 @@ "class" : { }, "instance" : { - "valueMorphFor:trace:" : "cmfcmf 10/30/2020 15:56", - "valueTextFor:" : "pre 7/10/2020 15:55" } } + "valueMorphFor:trace:" : "pre 1/15/2021 13:59" } } diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/addAnnotation.in..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/addAnnotation.in..st deleted file mode 100644 index 3c3eca45..00000000 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/addAnnotation.in..st +++ /dev/null @@ -1,23 +0,0 @@ -private -addAnnotation: anAnnotation in: interval - - | newContent text actualInterval | - actualInterval := self determineIntervalToAnnotateFor: interval. - actualInterval ifNil: [self codeTextMorph textMorph flash. ^ self]. - - anAnnotation methodReference: self methodReference. - text := self codeTextMorph text. - newContent := Character startOfHeader asString asText , (text copyFrom: actualInterval start to: actualInterval stop). - newContent addAttribute: (BPTextAnchor new - anchoredMorph: anAnnotation asMorph; - yourself). - newContent := text - copyReplaceFrom: actualInterval start - to: actualInterval stop - with: newContent. - - (self codeTextMorph) - setText: newContent; - hasUnacceptedEdits: true; - accept. - diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/addAnnotationAtSelection..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/addAnnotationAtSelection..st deleted file mode 100644 index 87b94d50..00000000 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/addAnnotationAtSelection..st +++ /dev/null @@ -1,14 +0,0 @@ -private -addAnnotationAtSelection: anAnnotation - - | result | - self hasUnacceptedEdits ifTrue: [ - self inform: 'To add annotations, -save method first.'. - ^ false]. - - result := self - addAnnotation: anAnnotation - in: (self selectedInterval start to: self selectedInterval stop). - self codeTextMorph setSelection: (self selectedInterval start + 1 to: self selectedInterval stop + 2). - ^ result \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/addAssertionToSelection.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/addAssertionToSelection.st deleted file mode 100644 index a19a0e75..00000000 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/addAssertionToSelection.st +++ /dev/null @@ -1,5 +0,0 @@ -annotations menu -addAssertionToSelection - - self addAnnotationAtSelection: BPAssertion new - \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/addProbeToSelection.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/addProbeToSelection.st deleted file mode 100644 index 9c13dd85..00000000 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/addProbeToSelection.st +++ /dev/null @@ -1,5 +0,0 @@ -annotations menu -addProbeToSelection - - self addAnnotationAtSelection: BPProbe new. - \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/addReplacementToSelection.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/addReplacementToSelection.st deleted file mode 100644 index 665c92a3..00000000 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/addReplacementToSelection.st +++ /dev/null @@ -1,4 +0,0 @@ -annotations menu -addReplacementToSelection - - self addAnnotationAtSelection: BPReplacement new. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/annotationsInSelection.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/annotationsInSelection.st deleted file mode 100644 index 4bad39cb..00000000 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/annotationsInSelection.st +++ /dev/null @@ -1,11 +0,0 @@ -private -annotationsInSelection - - | annotations interval| - annotations := Set new. - interval := self codeTextMorph selectionInterval. - (interval start to: interval stop + 1) do: [:index | - self codeTextMorph text attributesAt: index do: [:attr | - ((attr isKindOf: TextAnchor) and: [attr anchoredMorph isBPAnnotationMorph]) - ifTrue: [annotations add: attr anchoredMorph annotation]]]. - ^ annotations \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/bindingOf..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/bindingOf..st deleted file mode 100644 index 6c7a3af3..00000000 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/bindingOf..st +++ /dev/null @@ -1,8 +0,0 @@ -binding -bindingOf: aString - - ^ self exampleForEvaluation - ifNil: [super bindingOf: aString] - ifNotNil: [:e | - (self exampleMorphFor: e) ifNotNil: [:m | m flash]. - aString -> (e newArguments at: (e argumentNames indexOf: aString))] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/buildWindowWith.specs..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/buildWindowWith.specs..st index 9a6c9a2d..bb25e2a2 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/buildWindowWith.specs..st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/buildWindowWith.specs..st @@ -1,4 +1,4 @@ -callgraph ui +callgraph buildWindowWith: aBuilder specs: aCollection | specs | diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphCategoryMenu..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphCategoryMenu..st index 73ce24ab..bea60ed8 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphCategoryMenu..st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphCategoryMenu..st @@ -1,4 +1,4 @@ -callgraph context menus +callgraph callgraphCategoryMenu: aMenu diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/codePaneMenuAnnotationItems..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/codePaneMenuAnnotationItems..st deleted file mode 100644 index b13db1aa..00000000 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/codePaneMenuAnnotationItems..st +++ /dev/null @@ -1,29 +0,0 @@ -annotations menu -codePaneMenuAnnotationItems: aMenu - - - - | annotationsInSelection | - - self hasUnacceptedEdits ifTrue: [ - aMenu add: 'for annotations save method first' action: #yourself. - ^ aMenu]. - - annotationsInSelection := self annotationsInSelection. - - annotationsInSelection ifEmpty: [ - aMenu - add: 'add probe (u)' action: #addProbeToSelection; - add: 'add assertion' action: #addAssertionToSelection; - add: 'add replacement' action: #addReplacementToSelection]. - - aMenu addLine. - - (annotationsInSelection anySatisfy: [:a | a isProbe]) ifTrue: [ - aMenu add: 'remove probe' action: #removeProbeFromSelection]. - (annotationsInSelection anySatisfy: [:a | a isAssertion]) ifTrue: [ - aMenu add: 'remove assertion' action: #removeAssertionFromSelection]. - (annotationsInSelection anySatisfy: [:a | a isReplacement]) ifTrue: [ - aMenu add: 'remove replacement' action: #removeReplacementFromSelection]. - - ^ aMenu \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st deleted file mode 100644 index 5bd2178d..00000000 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st +++ /dev/null @@ -1,4 +0,0 @@ -code pane -compileMessage: aText notifying: aController - - ^ super compileMessage: aText notifying: aController \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/compiledMethod.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/compiledMethod.st deleted file mode 100644 index e5ac86ce..00000000 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/compiledMethod.st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -compiledMethod - - ^ self methodReference compiledMethod \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/determineIntervalToAnnotateFor..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/determineIntervalToAnnotateFor..st deleted file mode 100644 index f5eefa92..00000000 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/determineIntervalToAnnotateFor..st +++ /dev/null @@ -1,44 +0,0 @@ -as yet unclassified -determineIntervalToAnnotateFor: anInterval - "This determines the interval to annotate for a selected interval. The selected interval can also be a 0 width selection. - If there is not valid interval this method will return nil." - - - - | nodes parents lowestCommonAncestorIndex ancestors lowestUsefulAncestor | - - self bpBlock: 1 enteredAt: thisContext. -nodes := currentCompiledMethod bpSourceMap atAll: {(anInterval start). anInterval stop}. - "This is necessary as we do only assume that the last node is the lowest one, not that - the rest of the nodes is necessarily ordered according to the tree" - parents := nodes collect: [:allNodes | self bpBlock: 2 enteredAt: thisContext. -self bpBlock: 2 leftWith: ({allNodes last} , allNodes last allParents) at: thisContext]. - - "This is a naiive approach but is fine as the trees are not that deep." - lowestCommonAncestorIndex := (parents first findFirst: [:n | self bpBlock: 3 enteredAt: thisContext. -self bpBlock: 3 leftWith: (parents second includes: n) at: thisContext]). - lowestCommonAncestorIndex = 0 ifTrue: [self bpBlock: 4 enteredAt: thisContext. -self bpBlock: 4 leftWith: (self error: 'broken tree, no common root found') at: thisContext]. - - ancestors := parents first - copyFrom: lowestCommonAncestorIndex - to: parents first size. - - "This is not enough yet, we have the list of AST nodes covering the selected interval - and their full ranges, but these nodes could be nonsensical to annotate." - lowestUsefulAncestor := (ancestors) - detect: [:n | self bpBlock: 5 enteredAt: thisContext. -self bpBlock: 5 leftWith: (self isAnnotatableRule: n ruleName) at: thisContext] - ifNone: ["This can happen if users selected more than one statement, - we now have to search for the first statement below the current index" - self bpBlock: 6 enteredAt: thisContext. -self bpBlock: 6 leftWith: ((parents first first: lowestCommonAncestorIndex) reverse - detect: [:n | self bpBlock: 7 enteredAt: thisContext. -self bpBlock: 7 leftWith: (self isAnnotatableRule: n ruleName) at: thisContext] - ifNone: ["Try it again for the end of the interval" - self bpBlock: 8 enteredAt: thisContext. -self bpBlock: 8 leftWith: ((parents second copyUpTo: (parents first at: lowestCommonAncestorIndex)) reverse - detect: [:n | self bpBlock: 9 enteredAt: thisContext. -self bpBlock: 9 leftWith: (self isAnnotatableRule: n ruleName) at: thisContext] - ifNone: [self bpBlock: 10 enteredAt: thisContext. -^ self bpBlock: 10 leftWith: (nil "There really is nothing to annotate") at: thisContext]) at: thisContext]) at: thisContext].^ self bpBlock: 1 leftWith: ((lowestUsefulAncestor) interval) at: thisContext \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/doItReceiver.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/doItReceiver.st deleted file mode 100644 index 4140bd0d..00000000 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/doItReceiver.st +++ /dev/null @@ -1,8 +0,0 @@ -accessing -doItReceiver - - ^ self exampleForEvaluation - ifNil: [super doItReceiver] - ifNotNil: [:e | - (self exampleMorphFor: e) ifNotNil: [:m | m flash]. - e newReceiver] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/exampleForEvaluation.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/exampleForEvaluation.st deleted file mode 100644 index 7cd8b02b..00000000 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/exampleForEvaluation.st +++ /dev/null @@ -1,6 +0,0 @@ -private -exampleForEvaluation - - ^ self compiledMethod bpActiveExamples - ifEmpty: [nil] - ifNotEmptyDo: [:examples | examples first] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/exampleMorphFor..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/exampleMorphFor..st deleted file mode 100644 index 7500bb2a..00000000 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/exampleMorphFor..st +++ /dev/null @@ -1,6 +0,0 @@ -private -exampleMorphFor: anExample - - ^ self codeTextMorph allMorphs - detect: [:m | m isBPAnnotationMorph and: [m isExample and: [m example == anExample]]] - ifNone: [nil] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/isAnnotatableRule..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/isAnnotatableRule..st deleted file mode 100644 index 448a6423..00000000 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/isAnnotatableRule..st +++ /dev/null @@ -1,4 +0,0 @@ -private -isAnnotatableRule: aRuleName - - ^ #(UnaryMessageSend BinaryMessageSend KeywordMessageSend Expression Statement Operand) includes: aRuleName \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/removeAnnotations..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/removeAnnotations..st deleted file mode 100644 index cbe12ea1..00000000 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/removeAnnotations..st +++ /dev/null @@ -1,16 +0,0 @@ -private -removeAnnotations: aCollectionOfAnnotations - - | attributes attributesToBeRemoved newContent | - attributes := (self codeTextMorph text runs values gather: [:c | c]) asSet. - attributesToBeRemoved := attributes select: [:attr | (attr isKindOf: TextAnchor) - and: [attr anchoredMorph isBPAnnotationMorph] - and: [aCollectionOfAnnotations includes: attr anchoredMorph annotation]]. - - newContent := self codeTextMorph text copy. - attributesToBeRemoved do: [:attr | - newContent removeAttribute: attr from: 1 to: newContent size]. - - self saveMethodWithExamplesWith: newContent. - - \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/removeAssertionFromSelection.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/removeAssertionFromSelection.st deleted file mode 100644 index 568b23cb..00000000 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/removeAssertionFromSelection.st +++ /dev/null @@ -1,4 +0,0 @@ -annotations menu -removeAssertionFromSelection - - self removeSelectedAnnotationsSatisfying: [:a | a isAssertion] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/removeProbeFromSelection.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/removeProbeFromSelection.st deleted file mode 100644 index 907fada3..00000000 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/removeProbeFromSelection.st +++ /dev/null @@ -1,4 +0,0 @@ -annotations menu -removeProbeFromSelection - - self removeSelectedAnnotationsSatisfying: [:a | a isProbe] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/removeReplacementFromSelection.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/removeReplacementFromSelection.st deleted file mode 100644 index 78ea7fba..00000000 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/removeReplacementFromSelection.st +++ /dev/null @@ -1,4 +0,0 @@ -annotations menu -removeReplacementFromSelection - - self removeSelectedAnnotationsSatisfying: [:a | a isReplacement] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/removeSelectedAnnotationsSatisfying..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/removeSelectedAnnotationsSatisfying..st deleted file mode 100644 index 889369b9..00000000 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/removeSelectedAnnotationsSatisfying..st +++ /dev/null @@ -1,15 +0,0 @@ -private -removeSelectedAnnotationsSatisfying: aSelectBlock - - | attributes attributesToBeRemoved | - attributes := self codeTextMorph text attributesAt: self codeTextMorph selectionInterval start. - attributesToBeRemoved := attributes select: [:attr | - self codeTextMorph selectionInterval allSatisfy: [:index | - (self codeTextMorph text attributesAt: index) includes: attr]]. - attributesToBeRemoved := attributesToBeRemoved asSet select: [:attr | - (attr isKindOf: TextAnchor) - and: [attr anchoredMorph isBPAnnotationMorph] - and: [aSelectBlock value: attr anchoredMorph annotation]]. - - self removeAnnotations: (attributesToBeRemoved collect: [:attr | - attr anchoredMorph annotation]). diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/saveMethodWithExamples.st b/packages/Babylonian-UI.package/BPBrowser.class/instance/saveMethodWithExamples.st deleted file mode 100644 index 01d7886c..00000000 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/saveMethodWithExamples.st +++ /dev/null @@ -1,5 +0,0 @@ -private -saveMethodWithExamples - - self codeTextMorph hasUnacceptedEdits: true. - self codeTextMorph accept. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/saveMethodWithExamplesWith..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/saveMethodWithExamplesWith..st deleted file mode 100644 index 34b63cf2..00000000 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/saveMethodWithExamplesWith..st +++ /dev/null @@ -1,5 +0,0 @@ -private -saveMethodWithExamplesWith: newContent - - self codeTextMorph setText: newContent. - self saveMethodWithExamples \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json index 6fd6dc27..1f817463 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json @@ -4,19 +4,12 @@ "initialize" : "pre 8/25/2020 10:35", "startUp" : "jb 12/3/2020 23:07" }, "instance" : { - "aboutToStyle:" : "pre 11/11/2019 09:44", - "aboutToStyle:requestor:" : "pre 11/8/2019 17:16", - "addAnnotation:in:" : "pre 7/17/2020 17:49", - "addAnnotationAtSelection:" : "pre 7/13/2020 15:46", - "addAssertionToSelection" : "pre 11/13/2019 17:37", - "addProbeToSelection" : "pre 8/6/2019 16:11", - "addReplacementToSelection" : "pre 11/14/2019 15:50", - "allAnnotationsMorphs" : "cmfcmf 10/28/2020 13:03", - "annotationsInSelection" : "pre 11/8/2019 12:05", - "bindingOf:" : "pre 8/25/2020 10:10", - "buildCodePaneWith:" : "pre 7/13/2020 16:07", - "buildWindowWith:specs:" : "cmfcmf 10/30/2020 15:58", - "callgraphCategoryMenu:" : "cmfcmf 10/23/2020 12:56", + "aboutToStyle:" : "jb 12/3/2020 23:32", + "aboutToStyle:requestor:" : "jb 12/3/2020 23:32", + "buildCodePaneWith:" : "pre 11/23/2020 10:12", + "buildDefaultBrowserWith:" : "pre 1/6/2021 10:50", + "buildWindowWith:specs:" : "pre 1/15/2021 14:02", + "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", @@ -33,25 +26,10 @@ "callgraphUninstrumentClassCategory" : "cmfcmf 10/22/2020 17:38", "callgraphUninstrumentMessage" : "cmfcmf 10/23/2020 11:39", "callgraphcodePaneMenu:" : "cmfcmf 11/2/2020 14:22", - "codePaneMenuAnnotationItems:" : "pre 8/25/2020 09:17", - "compileMessage:notifying:" : "pre 11/11/2019 09:46", - "compiledMethod" : "pre 1/24/2020 15:08", "compressWidthOfSpecs:from:to:" : "cmfcmf 10/30/2020 13:07", "defaultBrowserTitle" : "pre 11/8/2019 17:17", - "determineIntervalToAnnotateFor:" : "cmfcmf 9/16/2020 14:55", - "doItReceiver" : "pre 8/25/2020 10:03", - "exampleForEvaluation" : "pre 8/25/2020 09:59", - "exampleMorphFor:" : "pre 8/25/2020 10:01", - "isAnnotatableRule:" : "pre 7/2/2020 19:37", "messageIconFor:" : "cmfcmf 10/23/2020 12:58", "messageList" : "pre 9/24/2020 14:26", - "rawMessageCategoryList" : "pre 3/19/2020 11:26", - "removeAnnotations:" : "pre 8/24/2020 18:28", - "removeAssertionFromSelection" : "pre 7/23/2019 14:48", - "removeProbeFromSelection" : "pre 7/23/2019 14:48", - "removeReplacementFromSelection" : "pre 4/29/2020 19:07", - "removeSelectedAnnotationsSatisfying:" : "pre 7/26/2019 16:08", - "saveMethodWithExamples" : "pre 11/11/2019 09:36", - "saveMethodWithExamplesWith:" : "pre 8/6/2019 13:57", + "rawMessageCategoryList" : "jb 12/3/2020 22:54", "sidebarShowExample:id:traceValue:" : "cmfcmf 11/5/2020 13:00", "sidebarShowMethod:" : "cmfcmf 11/2/2020 14:14" } } diff --git a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/addArgumentScriptMorphs.st b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/addArgumentScriptMorphs.st deleted file mode 100644 index b7df9e52..00000000 --- a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/addArgumentScriptMorphs.st +++ /dev/null @@ -1,31 +0,0 @@ -private - ui -addArgumentScriptMorphs - - | editField | - self example argumentNames withIndexDo: [:argumentName :index | - self addMorphBack: (argumentName , ': ') asMorph. - - "Editing field" - editField := self - editFieldInitialContent: (self example argumentScriptStringAt: index) - onChange: [:str | - self example argumentScripts at: index put: str. - self codeContentChanged] - onAccept: [:str | - self containingBrowser saveMethodWithExamples. - false "Do not continue handling this morphs edit"]. - self addMorphBack: editField. - - "Live specimen selection" - self addMorphBack: (SimpleButtonMorph new - height: self fontHeight; - color: self color; - borderWidth: 2; - label: 's'; - target: [ - self selectLiveSpecimenThen: [:specimen |. - self example argumentScripts at: index put: specimen. - self codeContentChanged. - editField setText: (self example argumentScriptStringAt: index)]]; - actionSelector: #value; - yourself)] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/addCallgraphMorphs.st b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/addCallgraphMorphs.st index 4d8f542b..376fb470 100644 --- a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/addCallgraphMorphs.st +++ b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/addCallgraphMorphs.st @@ -1,7 +1,6 @@ -private - ui +callgraph addCallgraphMorphs - self addMorphBack: (TextMorph new color: Color black; hResizing: #shrinkWrap; diff --git a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/addReceiverConstructorMorph.st b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/addReceiverConstructorMorph.st deleted file mode 100644 index 33d0ed9c..00000000 --- a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/addReceiverConstructorMorph.st +++ /dev/null @@ -1,14 +0,0 @@ -private - ui -addReceiverConstructorMorph - - self addMorphBack: 'self: ' asMorph. - - self addMorphBack: (self - editFieldInitialContent: (self example receiverConstructor isSymbol - ifTrue: [self example receiverConstructor printString] - ifFalse: [self example receiverConstructor]) - onChange: [:str | - self example receiverConstructor: str. - self codeContentChanged] - onAccept: [:str | - self containingBrowser codeTextMorph accept]) \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/selectLiveSpecimenThen..st b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/selectLiveSpecimenThen..st deleted file mode 100644 index 6f6f1df5..00000000 --- a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/selectLiveSpecimenThen..st +++ /dev/null @@ -1,10 +0,0 @@ -private - ui -selectLiveSpecimenThen: uiThenBlock - - "This is somewhat feature-envy-ish, the representation of live specimen is leaking throughout - the registry, example, and this UI..." - BPSelectViaDropMorph new - then: [:specimen | | reference | - reference := BPActiveSpecimenRegistry value storeSpecimen: specimen. - uiThenBlock value: reference]; - openInWindow \ 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 b798a265..321891fd 100644 --- a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/step.st +++ b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/step.st @@ -10,7 +10,7 @@ step (trace notNil and: [trace hasTraceCompleted not and: [self example tracingIsStillRunning]]) ifTrue: [self ensureLoaderIcon] 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 8641606c..b447e823 100644 --- a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/updateMorphs.st +++ b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/updateMorphs.st @@ -10,5 +10,4 @@ updateMorphs addExampleNameMorph; addExampleSpecificMorphs; addDeleteButtonMorph; - addCallgraphMorphs. - + addCallgraphMorphs. \ 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 deleted file mode 100644 index ba736247..00000000 --- a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/viewInSidebar.st +++ /dev/null @@ -1,4 +0,0 @@ -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 7cfe18a6..d9e479c2 100644 --- a/packages/Babylonian-UI.package/BPExampleMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPExampleMorph.class/methodProperties.json @@ -4,9 +4,7 @@ "instance" : { "activateExampleButtonClicked" : "pre 1/6/2021 19:23", "addActivationButtonMorph" : "pre 9/30/2020 10:35", - "addArgumentScriptMorphs" : "pre 8/25/2020 10:23", - "addCallgraphMorphs" : "cmfcmf 11/10/2020 10:59", - "addReceiverConstructorMorph" : "pre 8/25/2020 09:26", + "addCallgraphMorphs" : "pre 1/15/2021 13:43", "addCollapseButtonMorph" : "pre 1/8/2021 14:09", "addDeleteButtonMorph" : "pre 1/6/2021 19:14", "addExampleNameMorph" : "jb 12/7/2020 18:57", @@ -24,9 +22,7 @@ "isCollapsed" : "pre 1/12/2021 10:20", "isExample" : "pre 9/30/2020 10:34", "isExampleActive" : "pre 9/30/2020 10:34", - "removeButtonClicked" : "pre 9/30/2020 10:35", - "selectLiveSpecimenThen:" : "pre 7/10/2020 18:24", - "step" : "cmfcmf 10/30/2020 12:43", + "removeButtonClicked" : "pre 1/6/2021 19:41", + "step" : "pre 1/15/2021 13:43", "textEmphasis" : "pre 9/30/2020 10:35", - "updateMorphs" : "cmfcmf 10/30/2020 12:28", - "viewInSidebar" : "cmfcmf 11/10/2020 11:01" } } + "updateMorphs" : "pre 1/15/2021 13:44" } } diff --git a/packages/Babylonian-UI.package/BPExamplesMorph.class/instance/addCreateExampleButton.st b/packages/Babylonian-UI.package/BPExamplesMorph.class/instance/addCreateExampleButton.st deleted file mode 100644 index 13ec65e8..00000000 --- a/packages/Babylonian-UI.package/BPExamplesMorph.class/instance/addCreateExampleButton.st +++ /dev/null @@ -1,21 +0,0 @@ -initialization -addCreateExampleButton - - | addExampleButton | - addExampleButton := IconicButton new - labelGraphic: ('add an example' asText addAttribute: (TextColor color: Color lightGray); yourself) asMorph imageForm; - yourself. - - addExampleButton - color: Color transparent; - borderWidth: 0; - hResizing: #shrinkWrap; - layoutInset: 1; - extent: addExampleButton extent * 0.8. - - addExampleButton - target: self; - actionSelector: #addExampleButtonClicked. - - self addMorph: addExampleButton - \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/instance/bottomColor..st b/packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/instance/bottomColor..st index 2294cedd..498136f5 100644 --- a/packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/instance/bottomColor..st +++ b/packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/instance/bottomColor..st @@ -1,4 +1,4 @@ -as yet unclassified +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 index 7fe69264..06604404 100644 --- a/packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/instance/drawOn..st +++ b/packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/instance/drawOn..st @@ -1,8 +1,8 @@ -as yet unclassified +drawing drawOn: aCanvas aCanvas line: self innerBounds bottomLeft to: self innerBounds bottomRight - width: 4 color: bottomColor. + 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 index e1bb8d33..f0afa350 100644 --- a/packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/instance/initialize.st +++ b/packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/instance/initialize.st @@ -1,4 +1,4 @@ -as yet unclassified +initialization initialize @@ -8,6 +8,6 @@ initialize hResizing: #shrinkWrap; changeTableLayout; listDirection: #leftToRight; - borderWidth: 4; + 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 index b289df46..199d7060 100644 --- a/packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPMorphWithBottomBorder.class/methodProperties.json @@ -3,5 +3,5 @@ }, "instance" : { "bottomColor:" : "cmfcmf 11/10/2020 13:27", - "drawOn:" : "cmfcmf 11/10/2020 13:34", - "initialize" : "cmfcmf 11/10/2020 13:35" } } + "drawOn:" : "pre 1/15/2021 14:43", + "initialize" : "pre 1/15/2021 14:43" } } diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/annotation..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/annotation..st deleted file mode 100644 index 38b592c8..00000000 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/annotation..st +++ /dev/null @@ -1,8 +0,0 @@ -accessing -annotation: anObject - - | result | - result := super annotation: anObject. - self updateFrom: self emptyTraces. - ^ result - \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/blinkFor..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/blinkFor..st deleted file mode 100644 index 59a7ecb1..00000000 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/blinkFor..st +++ /dev/null @@ -1,4 +0,0 @@ -stepping and presenter -blinkFor: aDuration - - blinkCounter := aDuration asMilliSeconds // self stepTime \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/exploreButtonClickedFor..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/exploreButtonClickedFor..st index cd1ae53b..97b371f1 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/exploreButtonClickedFor..st +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/exploreButtonClickedFor..st @@ -1,6 +1,5 @@ actions exploreButtonClickedFor: aBPTrace - | menu | menu := MenuMorph new. diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/initialize.st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/initialize.st deleted file mode 100644 index 919d1dc5..00000000 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/initialize.st +++ /dev/null @@ -1,19 +0,0 @@ -initialization -initialize - - - | removeButton | - super initialize. - colorCache := Dictionary new. - - allTracesCompleted := false. - - "This morph holds the traces and the expression morph" - widgetsMorph := self newWidgetsMorph. - self addMorphBack: widgetsMorph. - - tracesMorph := self newTracesMorph. - widgetsMorph addMorphBack: tracesMorph. - - removeButton := self newRemoveButton. - self addMorphBack: removeButton \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExampleLabelMorphFor..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExampleLabelMorphFor..st deleted file mode 100644 index bb60746b..00000000 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExampleLabelMorphFor..st +++ /dev/null @@ -1,22 +0,0 @@ -private - ui -newExampleLabelMorphFor: aTrace - - | exampleLabel | - exampleLabel := aTrace example exampleName asText. - exampleLabel addAttribute: (BPPluggableTextAttribute new evalBlock: [ - MenuMorph new - addTitle: 'example'; - add: 'browse example' action: [self containingBrowser browseReference: aTrace example 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)" - aTrace example method methodReference browse]; - add: 'disable example' action: [aTrace example isActive: false]; - addLine; - add: 'view example in sidebar' action: [self containingBrowser sidebarShowExample: aTrace example id: self id traceValue: nil]; - add: 'open callgraph in new window' action: [BPCallgraphExplorer open loadFromCallgraph: aTrace example currentCallgraph]; - popUpInWorld]). - - ^ (TextMorph new) - contents: exampleLabel; - color: aTrace example color; - readOnly: true; - yourself \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExampleLineMorph.st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExampleLineMorph.st deleted file mode 100644 index 25f0b5d1..00000000 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newExampleLineMorph.st +++ /dev/null @@ -1,14 +0,0 @@ -private - ui -newExampleLineMorph - - ^ Morph new - color: Color transparent; - changeTableLayout; - layoutInset: 0; - listDirection: #leftToRight; - vResizing: #shrinkWrap; - hResizing: #shrinkWrap; - cellPositioning: #leftCenter; - cellGap: 1; - name: 'example line'; - yourself. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newLineMorphFor..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newLineMorphFor..st index 14087589..8a2f6ca3 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newLineMorphFor..st +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newLineMorphFor..st @@ -23,6 +23,6 @@ newLineMorphFor: aTrace scrollPane := self newScrollPane. newLine addMorphBack: scrollPane. - + ^ newLine \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newTracesMorph.st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newTracesMorph.st deleted file mode 100644 index aecc3614..00000000 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newTracesMorph.st +++ /dev/null @@ -1,12 +0,0 @@ -private - ui -newTracesMorph - - ^ Morph new - color: Color transparent; - changeTableLayout; - listDirection: #topToBottom; - vResizing: #shrinkWrap; - hResizing: #shrinkWrap; - cellPositioning: #topLeft; - layoutInset: 1; - yourself. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newWidgetsMorph.st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newWidgetsMorph.st deleted file mode 100644 index 69a0beb3..00000000 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/newWidgetsMorph.st +++ /dev/null @@ -1,12 +0,0 @@ -private - ui -newWidgetsMorph - - ^ Morph new - color: Color transparent; - changeTableLayout; - listDirection: #topToBottom; - vResizing: #shrinkWrap; - hResizing: #shrinkWrap; - cellPositioning: #topLeft; - layoutInset: 1; - yourself. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/removeLinesWithoutCurrentTrace..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/removeLinesWithoutCurrentTrace..st deleted file mode 100644 index ef599637..00000000 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/removeLinesWithoutCurrentTrace..st +++ /dev/null @@ -1,6 +0,0 @@ -private - ui -removeLinesWithoutCurrentTrace: traces - - tracesMorph submorphs do: [:line | - (traces includes: (line valueOfProperty: #bpTrace)) ifFalse: [ - line abandon]] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/step.st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/step.st deleted file mode 100644 index 3f890f94..00000000 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/step.st +++ /dev/null @@ -1,13 +0,0 @@ -stepping and presenter -step - - | newTraces | - self methodReference ifNil: [^ false]. - newTraces := self getTraces asIdentitySet. - - (allTracesCompleted not or: [newTraces ~= displayedTraces]) ifTrue: [ - allTracesCompleted := newTraces ifEmpty: [false] ifNotEmpty: [:ts | ts allSatisfy: [:t | t hasTraceCompleted]]. - (newTraces notNil and: [newTraces notEmpty]) - ifTrue: [ self updateFrom: newTraces] - ifFalse: [self updateFrom: self emptyTraces]. - displayedTraces := newTraces] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/stepTime.st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/stepTime.st deleted file mode 100644 index b7fabca7..00000000 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/stepTime.st +++ /dev/null @@ -1,4 +0,0 @@ -stepping and presenter -stepTime - - ^ 100 \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valueTextFor..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valueTextFor..st deleted file mode 100644 index 39390b03..00000000 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valueTextFor..st +++ /dev/null @@ -1,17 +0,0 @@ -private -valueTextFor: traceValue - - | value | - value := traceValue tracedValue. - ^ (value isCollection or: [value isNumber]) - ifTrue: [value printString asText] - ifFalse: [| iconMorph | - iconMorph := self iconForValue: value. - ((Text - string: Character startOfHeader asString - attributes: {TextAnchor new - anchoredMorph: iconMorph; - yourself}) , - String space , - value printString asText)] - \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valuesTextFor..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valuesTextFor..st deleted file mode 100644 index 64774f77..00000000 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valuesTextFor..st +++ /dev/null @@ -1,12 +0,0 @@ -private -valuesTextFor: trace - - | values | - values := trace valuesForProbeId: self id. - values first traceHasFailedBefore ifTrue: [ - ^ 'Error during execution: ' , trace recordedException printString]. - values ifEmpty: [ - ^ self noValuesText]. - ^ Text streamContents: [:str | values - do: [:v | str << (self valueTextFor: v)] - separatedBy: [str << ', ' asText]] \ 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 15644a2a..af2dea45 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json @@ -2,36 +2,21 @@ "class" : { }, "instance" : { - "annotation:" : "cmfcmf 10/13/2020 12:16", - "blinkFor:" : "cmfcmf 10/28/2020 12:59", - "callgraphMenu:forTrace:" : "cmfcmf 11/10/2020 12:56", - "colorForTraceValue:inTrace:" : "cmfcmf 1/4/2021 13:28", - "ensureLineMorphFor:" : "pre 8/21/2020 12:09", - "exploreButtonClickedFor:" : "cmfcmf 11/10/2020 12:56", - "haltButtonClickedFor:and:" : "pre 9/29/2020 16:12", + "ensureLineMorphFor:" : "jb 12/3/2020 23:29", + "exploreButtonClickedFor:" : "pre 1/15/2021 13:47", + "haltButtonClickedFor:and:" : "jb 12/7/2020 19:00", "iconForValue:" : "pre 10/6/2020 09:21", - "initialize" : "cmfcmf 11/10/2020 13:48", "isProbe" : "pre 7/3/2019 11:11", - "newAddExpressionMorph" : "pre 10/6/2020 11:53", - "newExampleLabelMorphFor:" : "cmfcmf 11/10/2020 14:09", - "newExampleLineMorph" : "pre 11/18/2019 12:43", - "newExploreButtonFor:" : "cmfcmf 11/10/2020 12:55", + "newAddExpressionMorph" : "jb 12/3/2020 22:49", + "newExploreButtonFor:" : "pre 1/15/2021 13:52", "newExpressionMorph" : "pre 10/8/2020 10:46", "newHaltButtonFor:" : "pre 9/29/2020 15:55", - "newLineMorphFor:" : "cmfcmf 11/10/2020 12:45", - "newScrollPane" : "pre 10/12/2020 11:23", - "newTracesMorph" : "pre 3/19/2020 14:06", - "newWidgetsMorph" : "pre 9/22/2020 10:03", + "newLineMorphFor:" : "pre 1/8/2021 16:50", + "newScrollPane" : "pre 1/6/2021 10:50", "noValuesText" : "pre 7/7/2020 16:38", "relevantTracesOf:do:" : "pre 11/18/2019 12:47", - "removeLinesWithoutCurrentTrace:" : "pre 8/20/2020 16:32", "setExpressionButtonClicked" : "pre 9/22/2020 10:05", - "step" : "cmfcmf 11/10/2020 13:48", - "stepTime" : "pre 8/20/2020 17:35", - "updateExpressionMorphIfNecessary" : "pre 9/22/2020 10:04", - "updateFrom:" : "pre 10/12/2020 18:02", - "valueMorphFor:trace:" : "cmfcmf 11/10/2020 13:56", - "valueTextFor:" : "pre 7/7/2020 16:43", - "valuesMorphFor:" : "cmfcmf 10/30/2020 15:56", - "valuesTextFor:" : "pre 8/17/2020 09:31", - "viewCommonAncestorForTrace:" : "cmfcmf 11/10/2020 15:05" } } + "updateExpressionMorphIfNecessary" : "jb 12/7/2020 19:00", + "updateFrom:" : "pre 12/16/2020 18:53", + "valueMorphFor:trace:" : "pre 1/15/2021 13:57", + "valuesMorphFor:" : "pre 1/15/2021 13:58" } } diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/properties.json b/packages/Babylonian-UI.package/BPProbeMorph.class/properties.json index 46e5e96d..a14e59b4 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/properties.json +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/properties.json @@ -7,8 +7,7 @@ "commentStamp" : "", "instvars" : [ "expressionMorph", - "addExpressionMorph", - "colorCache" ], + "addExpressionMorph" ], "name" : "BPProbeMorph", "pools" : [ ], diff --git a/packages/Babylonian-UI.package/BPSliderMorph.class/instance/annotation..st b/packages/Babylonian-UI.package/BPSliderMorph.class/instance/annotation..st deleted file mode 100644 index 555fd67e..00000000 --- a/packages/Babylonian-UI.package/BPSliderMorph.class/instance/annotation..st +++ /dev/null @@ -1,5 +0,0 @@ -accessing -annotation: anObject - - super annotation: anObject. - self createMorphs. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPSliderMorph.class/instance/createMorphs.st b/packages/Babylonian-UI.package/BPSliderMorph.class/instance/createMorphs.st deleted file mode 100644 index d60b0f2d..00000000 --- a/packages/Babylonian-UI.package/BPSliderMorph.class/instance/createMorphs.st +++ /dev/null @@ -1,4 +0,0 @@ -private -createMorphs - - self removeAllMorphs. \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPSliderMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPSliderMorph.class/methodProperties.json index ee037330..c37476c3 100644 --- a/packages/Babylonian-UI.package/BPSliderMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPSliderMorph.class/methodProperties.json @@ -2,10 +2,8 @@ "class" : { }, "instance" : { - "annotation:" : "pre 1/24/2020 16:13", - "createMorphs" : "pre 1/24/2020 16:15", - "for:selectContextAt:" : "pre 9/28/2020 10:54", - "initialize" : "pre 9/28/2020 09:56", + "for:selectContextAt:" : "jb 12/7/2020 19:01", + "initialize" : "jb 12/7/2020 19:01", "isSlider" : "pre 1/24/2020 16:14", "removeButtonClicked" : "jb 12/3/2020 22:53", "resetAllFilters" : "pre 9/28/2020 11:19", diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/callgraphMenu.forTrace..st b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/callgraphMenu.forTrace..st similarity index 98% rename from packages/Babylonian-UI.package/BPProbeMorph.class/instance/callgraphMenu.forTrace..st rename to packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/callgraphMenu.forTrace..st index bcd2bf2b..f21f8165 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/callgraphMenu.forTrace..st +++ b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/callgraphMenu.forTrace..st @@ -1,4 +1,4 @@ -private - ui +callgraphs callgraphMenu: menu forTrace: aTrace | example callgraph entries | diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/colorForTraceValue.inTrace..st b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/colorForTraceValue.inTrace..st similarity index 98% rename from packages/Babylonian-UI.package/BPProbeMorph.class/instance/colorForTraceValue.inTrace..st rename to packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/colorForTraceValue.inTrace..st index c9393c4c..d69e0526 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/colorForTraceValue.inTrace..st +++ b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/colorForTraceValue.inTrace..st @@ -1,4 +1,4 @@ -private +callgraphs colorForTraceValue: aBPTraceValue inTrace: aBPTrace ^ (colorCache at: aBPTrace ifAbsentPut: [| callgraph values path paths uniquePaths colors | diff --git a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/initialize.st b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/initialize.st index 644b2b61..2242c75b 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 e3b852ef..5534c27a 100644 --- a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/newExampleLineMorph.st +++ b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/newExampleLineMorph.st @@ -2,10 +2,10 @@ private - ui newExampleLineMorph ^ Morph new - color: Color transparent; - changeTableLayout; + color: Color transparent; + changeTableLayout; layoutInset: 0; - listDirection: #leftToRight; + listDirection: #leftToRight; vResizing: #shrinkWrap; hResizing: #spaceFill; cellPositioning: #leftCenter; diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/viewCommonAncestorForTrace..st b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/viewCommonAncestorForTrace..st similarity index 98% rename from packages/Babylonian-UI.package/BPProbeMorph.class/instance/viewCommonAncestorForTrace..st rename to packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/viewCommonAncestorForTrace..st index 18cec898..be854472 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/viewCommonAncestorForTrace..st +++ b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/viewCommonAncestorForTrace..st @@ -1,4 +1,4 @@ -private - ui +callgraphs viewCommonAncestorForTrace: aTrace | ancestor callgraph children paths | diff --git a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json index 89aa15a9..ddc822d4 100644 --- a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json @@ -2,10 +2,12 @@ "class" : { "isAbstract" : "pre 9/25/2020 10:15" }, "instance" : { + "callgraphMenu:forTrace:" : "pre 1/15/2021 13:47", + "colorForTraceValue:inTrace:" : "pre 1/15/2021 13:46", "filterValues:throughSliderForTrace:" : "pre 9/28/2020 11:21", - "initialize" : "jb 12/7/2020 18:59", + "initialize" : "pre 1/15/2021 13:49", "listenToSlider:" : "jb 12/7/2020 18:59", - "newExampleLineMorph" : "pre 1/6/2021 10:37", + "newExampleLineMorph" : "pre 1/15/2021 14:47", "newTracesMorph" : "pre 12/16/2020 18:52", "newWidgetsMorph" : "pre 11/23/2020 13:43", "removeLinesWithoutCurrentTrace:" : "jb 12/7/2020 19:00", @@ -13,4 +15,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/BPBrowser.class/instance/allAnnotationsMorphs.st b/packages/Babylonian-UI.package/CodeHolder.extension/instance/allAnnotationsMorphs.st similarity index 76% rename from packages/Babylonian-UI.package/BPBrowser.class/instance/allAnnotationsMorphs.st rename to packages/Babylonian-UI.package/CodeHolder.extension/instance/allAnnotationsMorphs.st index 1a45eaf1..a0c56ef7 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/allAnnotationsMorphs.st +++ b/packages/Babylonian-UI.package/CodeHolder.extension/instance/allAnnotationsMorphs.st @@ -1,4 +1,4 @@ -as yet unclassified +*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/methodProperties.json b/packages/Babylonian-UI.package/CodeHolder.extension/methodProperties.json index 6798814d..5f87fc5d 100644 --- a/packages/Babylonian-UI.package/CodeHolder.extension/methodProperties.json +++ b/packages/Babylonian-UI.package/CodeHolder.extension/methodProperties.json @@ -8,6 +8,7 @@ "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", From 064515365be1526c1ebeebaa14190308fd414e78 Mon Sep 17 00:00:00 2001 From: Patrick R Date: Wed, 20 Jan 2021 16:08:21 +0100 Subject: [PATCH 39/71] Implements re-instrumentation of instrumented methods --- .../instance/compileMessage.notifying..st | 16 ++++++++++++++++ .../BPBrowser.class/methodProperties.json | 1 + 2 files changed, 17 insertions(+) create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st new file mode 100644 index 00000000..fb2fbd54 --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st @@ -0,0 +1,16 @@ +code pane +compileMessage: aText notifying: aController + + "Wrapped to allow for re-instrumenting methods that already have been instrumented" + | oldMethod | + oldMethod := self compiledMethod. + ^ (BPByteCodeRewriter hasTracing: oldMethod) + ifTrue: [| resultMethod | + resultMethod := #bpCallgraph withLayerDo: [ + super compileMessage: aText notifying: aController]. + (BPByteCodeRewriter hasActiveTracing: oldMethod) ifTrue: [ + BPByteCodeRewriter + enableTracingForClass: oldMethod methodClass + selector: oldMethod selector]. + resultMethod] + ifFalse: [super compileMessage: aText notifying: aController] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json index 1f817463..04304260 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json @@ -26,6 +26,7 @@ "callgraphUninstrumentClassCategory" : "cmfcmf 10/22/2020 17:38", "callgraphUninstrumentMessage" : "cmfcmf 10/23/2020 11:39", "callgraphcodePaneMenu:" : "cmfcmf 11/2/2020 14:22", + "compileMessage:notifying:" : "pre 1/20/2021 16:08", "compressWidthOfSpecs:from:to:" : "cmfcmf 10/30/2020 13:07", "defaultBrowserTitle" : "pre 11/8/2019 17:17", "messageIconFor:" : "cmfcmf 10/23/2020 12:58", From 193f7e453cc991c48c8b6ed1ecca401b7106729a Mon Sep 17 00:00:00 2001 From: Patrick R Date: Wed, 20 Jan 2021 17:19:36 +0100 Subject: [PATCH 40/71] When preserving the callgraph instrumentation take care to not break the example references --- .../disableTracingForCompiledMethod.mode..st | 3 ++- .../enableTracingForCompiledMethod.mode..st | 3 ++- ...thod.mode.howToAddToMethodDictWhenSlow..st | 5 ++-- .../methodProperties.json | 6 ++--- .../instance/callgraph.st | 2 +- .../methodProperties.json | 2 +- .../BlockNode.extension/methodProperties.json | 24 +++++++++---------- .../methodProperties.json | 2 +- .../methodProperties.json | 4 ++-- .../ParseNode.extension/methodProperties.json | 24 +++++++++---------- .../methodProperties.json | 4 ++-- .../instance/buildWindowWith.specs..st | 8 +++---- .../instance/compileMessage.notifying..st | 15 ++++++------ .../BPBrowser.class/methodProperties.json | 4 ++-- 14 files changed, 54 insertions(+), 52 deletions(-) diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForCompiledMethod.mode..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForCompiledMethod.mode..st index 2b588b8e..6c667d47 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForCompiledMethod.mode..st +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForCompiledMethod.mode..st @@ -2,4 +2,5 @@ disableTracingForCompiledMethod: oldMethod mode: aSymbol ^ self disableTracingForCompiledMethod: oldMethod mode: aSymbol howToAddToMethodDictWhenSlow: [:newMethod | - newMethod methodClass methodDict at: newMethod selector put: newMethod] \ No newline at end of file + 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..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForCompiledMethod.mode..st index e6d75426..b339fbb2 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForCompiledMethod.mode..st +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForCompiledMethod.mode..st @@ -2,4 +2,5 @@ enableTracingForCompiledMethod: oldMethod mode: aSymbol ^ self enableTracingForCompiledMethod: oldMethod mode: aSymbol howToAddToMethodDictWhenSlow: [:newMethod | - newMethod methodClass methodDict at: newMethod selector put: newMethod] \ No newline at end of file + 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 index 26719515..3f92a86d 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForCompiledMethod.mode.howToAddToMethodDictWhenSlow..st +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForCompiledMethod.mode.howToAddToMethodDictWhenSlow..st @@ -10,7 +10,7 @@ enableTracingForCompiledMethod: oldMethod mode: aSymbol howToAddToMethodDictWhen 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)"]. @@ -19,8 +19,7 @@ enableTracingForCompiledMethod: oldMethod mode: aSymbol howToAddToMethodDictWhen aSymbol == #slow ifTrue: [ oldMethod isInstalled - ifTrue: [ - aBlock value: newMethod] + 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/methodProperties.json b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json index d3a29bc0..edf50a71 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json @@ -7,15 +7,15 @@ "disableTracingForClass:selector:" : "cmfcmf 9/29/2020 17:08", "disableTracingForClassCategory:" : "cmfcmf 10/23/2020 13:04", "disableTracingForCompiledMethod:" : "cmfcmf 10/20/2020 14:22", - "disableTracingForCompiledMethod:mode:" : "cmfcmf 10/26/2020 15:37", + "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:" : "cmfcmf 10/23/2020 13:04", "enableTracingForCompiledMethod:" : "cmfcmf 10/20/2020 14:27", - "enableTracingForCompiledMethod:mode:" : "cmfcmf 10/26/2020 15:34", - "enableTracingForCompiledMethod:mode:howToAddToMethodDictWhenSlow:" : "cmfcmf 12/15/2020 17:22", + "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", diff --git a/packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/callgraph.st b/packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/callgraph.st index 04ca7b0d..e4e13f49 100644 --- a/packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/callgraph.st +++ b/packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/callgraph.st @@ -2,4 +2,4 @@ as yet unclassified callgraph callgraph ifNotNil: [^ callgraph]. - ^ callgraph := callgraphTracer eventsForTree \ No newline at end of file + ^ callgraphTracer ifNotNil: [callgraph := callgraphTracer eventsForTree] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExampleTraceInformation.class/methodProperties.json b/packages/Babylonian-Core.package/BPExampleTraceInformation.class/methodProperties.json index 07769429..431b148d 100644 --- a/packages/Babylonian-Core.package/BPExampleTraceInformation.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPExampleTraceInformation.class/methodProperties.json @@ -2,7 +2,7 @@ "class" : { }, "instance" : { - "callgraph" : "cmfcmf 11/9/2020 15:23", + "callgraph" : "pre 1/20/2021 16:19", "callgraphTracer" : "cmfcmf 11/9/2020 15:09", "callgraphTracer:" : "cmfcmf 11/9/2020 15:32", "terminateTracingProcess" : "cmfcmf 11/9/2020 17:00", diff --git a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json index fb90c22f..f1bdd763 100644 --- a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalSize:" : " 1/15/2021 14:48:05", - "additionalSizeBeforeBlock:" : " 1/15/2021 14:48:05", - "emitCodeForEvaluatedClosureValue:encoder:" : " 1/15/2021 14:48:05", - "emitCodeForEvaluatedFullClosureValue:encoder:" : " 1/15/2021 14:48:05", - "emitCodeForEvaluatedValue:encoder:" : " 1/15/2021 14:48:05", - "emitCodeForValue:encoder:" : " 1/15/2021 14:48:05", - "isRootBlock:" : " 1/15/2021 14:48:05", - "litIndexBlockIdentifier:" : " 1/15/2021 14:48:05", - "sizeCodeForEvaluatedClosureValue:" : " 1/15/2021 14:48:05", - "sizeCodeForEvaluatedFullClosureValue:" : " 1/15/2021 14:48:05", - "sizeCodeForEvaluatedValue:" : " 1/15/2021 14:48:05", - "sizeCodeForValue:" : " 1/15/2021 14:48:05" } } + "additionalSize:" : "1/15/2021 14:48:05", + "additionalSizeBeforeBlock:" : "1/15/2021 14:48:05", + "emitCodeForEvaluatedClosureValue:encoder:" : "1/15/2021 14:48:05", + "emitCodeForEvaluatedFullClosureValue:encoder:" : "1/15/2021 14:48:05", + "emitCodeForEvaluatedValue:encoder:" : "1/15/2021 14:48:05", + "emitCodeForValue:encoder:" : "1/15/2021 14:48:05", + "isRootBlock:" : "1/15/2021 14:48:05", + "litIndexBlockIdentifier:" : "1/15/2021 14:48:05", + "sizeCodeForEvaluatedClosureValue:" : "1/15/2021 14:48:05", + "sizeCodeForEvaluatedFullClosureValue:" : "1/15/2021 14:48:05", + "sizeCodeForEvaluatedValue:" : "1/15/2021 14:48:05", + "sizeCodeForValue:" : "1/15/2021 14:48:05" } } diff --git a/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json index 8c32fc1c..2b8649ae 100644 --- a/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json @@ -3,4 +3,4 @@ }, "instance" : { "genNops:" : "cmfcmf 11/27/2020 13:40", - "generateMethodOfClass:trailer:from:" : " 1/15/2021 14:48:05" } } + "generateMethodOfClass:trailer:from:" : "1/15/2021 14:48:05" } } diff --git a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json index 149580b4..e07ccd46 100644 --- a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "generate:using:" : " 1/15/2021 14:48:05", - "rememberNOPs:range:blockId:" : " 1/15/2021 14:48:05" } } + "generate:using:" : "1/15/2021 14:48:05", + "rememberNOPs:range:blockId:" : "1/15/2021 14:48:05" } } diff --git a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json index f86c2607..4f5d17c1 100644 --- a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalReturnSize:returns:" : " 1/15/2021 14:48:05", - "emitCodeForReturn:encoder:" : " 1/15/2021 14:48:05", - "emitNOPs:stack:n:type:" : " 1/15/2021 14:48:05", - "findEnclosingNonOptimizedBlock:" : " 1/15/2021 14:48:05", - "findEnclosingNonOptimizedBlockId:" : " 1/15/2021 14:48:05", - "invocationTempIndex:" : " 1/15/2021 14:48:05", - "litIndexBlockIdentifier:" : " 1/15/2021 14:48:05", - "litIndexEnterInvocation:" : " 1/15/2021 14:48:05", - "litIndexExitInvocation:" : " 1/15/2021 14:48:05", - "litIndexInvocationCount:" : " 1/15/2021 14:48:05", - "litIndexTracerClass:" : " 1/15/2021 14:48:05", - "sizeCodeForReturn:" : " 1/15/2021 14:48:05" } } + "additionalReturnSize:returns:" : "1/15/2021 14:48:05", + "emitCodeForReturn:encoder:" : "1/15/2021 14:48:05", + "emitNOPs:stack:n:type:" : "1/15/2021 14:48:05", + "findEnclosingNonOptimizedBlock:" : "1/15/2021 14:48:05", + "findEnclosingNonOptimizedBlockId:" : "1/15/2021 14:48:05", + "invocationTempIndex:" : "1/15/2021 14:48:05", + "litIndexBlockIdentifier:" : "1/15/2021 14:48:05", + "litIndexEnterInvocation:" : "1/15/2021 14:48:05", + "litIndexExitInvocation:" : "1/15/2021 14:48:05", + "litIndexInvocationCount:" : "1/15/2021 14:48:05", + "litIndexTracerClass:" : "1/15/2021 14:48:05", + "sizeCodeForReturn:" : "1/15/2021 14:48:05" } } diff --git a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json index 136e7d15..916c63e5 100644 --- a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "emitCodeForReturn:encoder:" : " 1/15/2021 14:48:05", - "sizeCodeForReturn:" : " 1/15/2021 14:48:05" } } + "emitCodeForReturn:encoder:" : "1/15/2021 14:48:05", + "sizeCodeForReturn:" : "1/15/2021 14:48:05" } } diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/buildWindowWith.specs..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/buildWindowWith.specs..st index bb25e2a2..b8f192e9 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/buildWindowWith.specs..st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/buildWindowWith.specs..st @@ -2,10 +2,10 @@ callgraph buildWindowWith: aBuilder specs: aCollection | specs | - sidebar := BPBrowserSidebar new. + sidebar := BPBrowserSidebar new + when: #browseMethod send: #browseReference: to: self; + yourself. specs := self compressWidthOfSpecs: aCollection from: 1 to: 0.7. ^ super buildWindowWith: aBuilder specs: { - (0@0 corner: (specs first key leftFraction)@1) -> [sidebar - when: #browseMethod send: #browseReference: to: self; - buildWith: aBuilder] + (0@0 corner: (specs first key leftFraction)@1) -> [sidebar buildWith: aBuilder] }, specs \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st index fb2fbd54..6c51cb23 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st @@ -2,15 +2,16 @@ code pane compileMessage: aText notifying: aController "Wrapped to allow for re-instrumenting methods that already have been instrumented" - | oldMethod | + | oldMethod result | oldMethod := self compiledMethod. - ^ (BPByteCodeRewriter hasTracing: oldMethod) - ifTrue: [| resultMethod | - resultMethod := #bpCallgraph withLayerDo: [ + (BPByteCodeRewriter hasTracing: oldMethod) + ifTrue: [ + result := #bpCallgraph withLayerDo: [ super compileMessage: aText notifying: aController]. (BPByteCodeRewriter hasActiveTracing: oldMethod) ifTrue: [ BPByteCodeRewriter enableTracingForClass: oldMethod methodClass - selector: oldMethod selector]. - resultMethod] - ifFalse: [super compileMessage: aText notifying: aController] \ No newline at end of file + selector: oldMethod selector]] + ifFalse: [result := super compileMessage: aText notifying: aController]. + sidebar changed: #visualizationMorphs. + ^ result \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json index 04304260..128aceb5 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json @@ -8,7 +8,7 @@ "aboutToStyle:requestor:" : "jb 12/3/2020 23:32", "buildCodePaneWith:" : "pre 11/23/2020 10:12", "buildDefaultBrowserWith:" : "pre 1/6/2021 10:50", - "buildWindowWith:specs:" : "pre 1/15/2021 14:02", + "buildWindowWith:specs:" : "pre 1/20/2021 16:12", "callgraphCategoryMenu:" : "pre 1/15/2021 14:03", "callgraphClassMenu:" : "cmfcmf 10/23/2020 12:56", "callgraphDisableTracingForClass" : "cmfcmf 10/23/2020 12:55", @@ -26,7 +26,7 @@ "callgraphUninstrumentClassCategory" : "cmfcmf 10/22/2020 17:38", "callgraphUninstrumentMessage" : "cmfcmf 10/23/2020 11:39", "callgraphcodePaneMenu:" : "cmfcmf 11/2/2020 14:22", - "compileMessage:notifying:" : "pre 1/20/2021 16:08", + "compileMessage:notifying:" : "pre 1/20/2021 16:14", "compressWidthOfSpecs:from:to:" : "cmfcmf 10/30/2020 13:07", "defaultBrowserTitle" : "pre 11/8/2019 17:17", "messageIconFor:" : "cmfcmf 10/23/2020 12:58", From 639d7875a5f1a116b4792327ec9d3ef4324e5628 Mon Sep 17 00:00:00 2001 From: Patrick R Date: Wed, 20 Jan 2021 17:23:01 +0100 Subject: [PATCH 41/71] Re-adds a method gone missing during the merge --- .../BPExampleMorph.class/instance/viewInSidebar.st | 4 ++++ .../BPExampleMorph.class/methodProperties.json | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 packages/Babylonian-UI.package/BPExampleMorph.class/instance/viewInSidebar.st 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 d9e479c2..995e62d4 100644 --- a/packages/Babylonian-UI.package/BPExampleMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPExampleMorph.class/methodProperties.json @@ -25,4 +25,5 @@ "removeButtonClicked" : "pre 1/6/2021 19:41", "step" : "pre 1/15/2021 13:43", "textEmphasis" : "pre 9/30/2020 10:35", - "updateMorphs" : "pre 1/15/2021 13:44" } } + "updateMorphs" : "pre 1/15/2021 13:44", + "viewInSidebar" : "pre 1/20/2021 17:22" } } From 5f8f2a9ed77b9ac7e4de8c3ab451ce102eb1f4c6 Mon Sep 17 00:00:00 2001 From: Patrick R Date: Thu, 21 Jan 2021 15:22:38 +0100 Subject: [PATCH 42/71] Makes the preservation of the instrumentation less flaky with regard to new methods. --- .../BPBrowser.class/instance/compileMessage.notifying..st | 2 ++ .../Babylonian-UI.package/BPBrowser.class/methodProperties.json | 2 +- .../CodeHolder.extension/instance/compiledMethod.st | 2 +- .../CodeHolder.extension/methodProperties.json | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st index 6c51cb23..28eb859f 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st @@ -4,6 +4,8 @@ compileMessage: aText notifying: aController "Wrapped to allow for re-instrumenting methods that already have been instrumented" | oldMethod result | oldMethod := self compiledMethod. + oldMethod ifNil: [ + ^ super compileMessage: aText notifying: aController]. (BPByteCodeRewriter hasTracing: oldMethod) ifTrue: [ result := #bpCallgraph withLayerDo: [ diff --git a/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json index 128aceb5..39c34ffc 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json @@ -26,7 +26,7 @@ "callgraphUninstrumentClassCategory" : "cmfcmf 10/22/2020 17:38", "callgraphUninstrumentMessage" : "cmfcmf 10/23/2020 11:39", "callgraphcodePaneMenu:" : "cmfcmf 11/2/2020 14:22", - "compileMessage:notifying:" : "pre 1/20/2021 16:14", + "compileMessage:notifying:" : "pre 1/21/2021 14:02", "compressWidthOfSpecs:from:to:" : "cmfcmf 10/30/2020 13:07", "defaultBrowserTitle" : "pre 11/8/2019 17:17", "messageIconFor:" : "cmfcmf 10/23/2020 12:58", 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 5f87fc5d..c591f447 100644 --- a/packages/Babylonian-UI.package/CodeHolder.extension/methodProperties.json +++ b/packages/Babylonian-UI.package/CodeHolder.extension/methodProperties.json @@ -12,7 +12,7 @@ "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", From 12f69e2634aa306abffb34b468dce965f4b21275 Mon Sep 17 00:00:00 2001 From: Patrick R Date: Fri, 22 Jan 2021 11:25:25 +0100 Subject: [PATCH 43/71] Deactivates the callgraph tracing during bpSnapshot --- .../class/deactivateDuring..st | 4 ++++ .../methodProperties.json | 1 + .../instance/traceAsyncNotifying..st | 7 ------ .../traceAsyncNotifying.withCallgraph..st | 3 +++ .../BPExample.class/methodProperties.json | 12 ++++++++-- .../methodProperties.json | 1 - ...e..st => additionalSize. (bpCallgraph).st} | 0 ...ditionalSizeBeforeBlock. (bpCallgraph).st} | 0 ...tedClosureValue.encoder. (bpCallgraph).st} | 0 ...ullClosureValue.encoder. (bpCallgraph).st} | 0 ...rEvaluatedValue.encoder. (bpCallgraph).st} | 0 ...mitCodeForValue.encoder. (bpCallgraph).st} | 0 ...lock..st => isRootBlock. (bpCallgraph).st} | 0 ...litIndexBlockIdentifier. (bpCallgraph).st} | 0 ...orEvaluatedClosureValue. (bpCallgraph).st} | 0 ...aluatedFullClosureValue. (bpCallgraph).st} | 0 ...zeCodeForEvaluatedValue. (bpCallgraph).st} | 0 ....st => sizeCodeForValue. (bpCallgraph).st} | 0 .../BlockNode.extension/methodProperties.json | 24 +++++++++---------- ...hodOfClass.trailer.from. (bpCallgraph).st} | 0 .../methodProperties.json | 2 +- .../methodProperties.json | 2 +- ...g..st => generate.using. (bpCallgraph).st} | 0 ...emberNOPs.range.blockId. (bpCallgraph).st} | 0 .../methodProperties.json | 4 ++-- .../Object.extension/instance/bpSnapshot.st | 14 ++++++----- .../Object.extension/methodProperties.json | 2 +- ...ionalReturnSize.returns. (bpCallgraph).st} | 0 ...itCodeForReturn.encoder. (bpCallgraph).st} | 0 ...> emitNOPs.stack.n.type. (bpCallgraph).st} | 0 ...losingNonOptimizedBlock. (bpCallgraph).st} | 0 ...singNonOptimizedBlockId. (bpCallgraph).st} | 0 ... => invocationTempIndex. (bpCallgraph).st} | 0 ...litIndexBlockIdentifier. (bpCallgraph).st} | 0 ...litIndexEnterInvocation. (bpCallgraph).st} | 0 ... litIndexExitInvocation. (bpCallgraph).st} | 0 ...litIndexInvocationCount. (bpCallgraph).st} | 0 ... => litIndexTracerClass. (bpCallgraph).st} | 0 ...st => sizeCodeForReturn. (bpCallgraph).st} | 0 .../ParseNode.extension/methodProperties.json | 24 +++++++++---------- ...itCodeForReturn.encoder. (bpCallgraph).st} | 0 ...st => sizeCodeForReturn. (bpCallgraph).st} | 0 .../methodProperties.json | 4 ++-- 43 files changed, 57 insertions(+), 47 deletions(-) create mode 100644 packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/class/deactivateDuring..st delete mode 100644 packages/Babylonian-Core.package/BPExample.class/instance/traceAsyncNotifying..st rename packages/Babylonian-Core.package/BlockNode.extension/instance/{additionalSize..st => additionalSize. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{additionalSizeBeforeBlock..st => additionalSizeBeforeBlock. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedClosureValue.encoder..st => emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedFullClosureValue.encoder..st => emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedValue.encoder..st => emitCodeForEvaluatedValue.encoder. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForValue.encoder..st => emitCodeForValue.encoder. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{isRootBlock..st => isRootBlock. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{litIndexBlockIdentifier..st => litIndexBlockIdentifier. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedClosureValue..st => sizeCodeForEvaluatedClosureValue. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedFullClosureValue..st => sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedValue..st => sizeCodeForEvaluatedValue. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForValue..st => sizeCodeForValue. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/{generateMethodOfClass.trailer.from..st => generateMethodOfClass.trailer.from. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/MethodNode.extension/instance/{generate.using..st => generate.using. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/MethodNode.extension/instance/{rememberNOPs.range.blockId..st => rememberNOPs.range.blockId. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{additionalReturnSize.returns..st => additionalReturnSize.returns. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{emitCodeForReturn.encoder..st => emitCodeForReturn.encoder. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{emitNOPs.stack.n.type..st => emitNOPs.stack.n.type. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{findEnclosingNonOptimizedBlock..st => findEnclosingNonOptimizedBlock. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{findEnclosingNonOptimizedBlockId..st => findEnclosingNonOptimizedBlockId. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{invocationTempIndex..st => invocationTempIndex. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexBlockIdentifier..st => litIndexBlockIdentifier. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexEnterInvocation..st => litIndexEnterInvocation. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexExitInvocation..st => litIndexExitInvocation. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexInvocationCount..st => litIndexInvocationCount. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexTracerClass..st => litIndexTracerClass. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{sizeCodeForReturn..st => sizeCodeForReturn. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/VariableNode.extension/instance/{emitCodeForReturn.encoder..st => emitCodeForReturn.encoder. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/VariableNode.extension/instance/{sizeCodeForReturn..st => sizeCodeForReturn. (bpCallgraph).st} (100%) 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/methodProperties.json b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json index 772e33d6..036f334d 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json @@ -1,6 +1,7 @@ { "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", 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 index f87f5695..212c1262 100644 --- a/packages/Babylonian-Core.package/BPExample.class/instance/traceAsyncNotifying.withCallgraph..st +++ b/packages/Babylonian-Core.package/BPExample.class/instance/traceAsyncNotifying.withCallgraph..st @@ -1,6 +1,9 @@ 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 | diff --git a/packages/Babylonian-Core.package/BPExample.class/methodProperties.json b/packages/Babylonian-Core.package/BPExample.class/methodProperties.json index 33ec5b33..a2de7a0e 100644 --- a/packages/Babylonian-Core.package/BPExample.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPExample.class/methodProperties.json @@ -2,7 +2,8 @@ "class" : { "alwaysGenerateCallgraph" : "cmfcmf 11/9/2020 14:53", "alwaysGenerateCallgraph:" : "cmfcmf 11/9/2020 14:51", - "bpExamplePragmaSelectors" : "pre 9/30/2020 10:08", + "bpExamplePragmaPrefix" : " 1/22/2021 11:04:38", + "bpExamplePragmaPrefixes" : " 1/22/2021 11:04:38", "fromPragma:" : "pre 9/30/2020 10:20", "newFor:" : "pre 9/30/2020 11:08" }, "instance" : { @@ -33,7 +34,12 @@ "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", @@ -43,8 +49,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/BPScriptExample.class/methodProperties.json b/packages/Babylonian-Core.package/BPScriptExample.class/methodProperties.json index dec5db37..4262259a 100644 --- a/packages/Babylonian-Core.package/BPScriptExample.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPScriptExample.class/methodProperties.json @@ -3,7 +3,6 @@ "bpExamplePragmaPrefix" : "pre 1/21/2021 15:45" }, "instance" : { "asPragma" : "pre 9/30/2020 10:57", - "execute" : "cmfcmf 10/30/2020 12:51", "initializeFromPragma:" : "pre 9/30/2020 10:59", "morphClass" : "pre 9/30/2020 10:41", "run" : "pre 1/21/2021 17:18", diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json index f1bdd763..96c72178 100644 --- a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalSize:" : "1/15/2021 14:48:05", - "additionalSizeBeforeBlock:" : "1/15/2021 14:48:05", - "emitCodeForEvaluatedClosureValue:encoder:" : "1/15/2021 14:48:05", - "emitCodeForEvaluatedFullClosureValue:encoder:" : "1/15/2021 14:48:05", - "emitCodeForEvaluatedValue:encoder:" : "1/15/2021 14:48:05", - "emitCodeForValue:encoder:" : "1/15/2021 14:48:05", - "isRootBlock:" : "1/15/2021 14:48:05", - "litIndexBlockIdentifier:" : "1/15/2021 14:48:05", - "sizeCodeForEvaluatedClosureValue:" : "1/15/2021 14:48:05", - "sizeCodeForEvaluatedFullClosureValue:" : "1/15/2021 14:48:05", - "sizeCodeForEvaluatedValue:" : "1/15/2021 14:48:05", - "sizeCodeForValue:" : "1/15/2021 14:48:05" } } + "additionalSize: (bpCallgraph)" : "1/15/2021 14:48:05", + "additionalSizeBeforeBlock: (bpCallgraph)" : "1/15/2021 14:48:05", + "emitCodeForEvaluatedClosureValue:encoder: (bpCallgraph)" : "1/15/2021 14:48:05", + "emitCodeForEvaluatedFullClosureValue:encoder: (bpCallgraph)" : "1/15/2021 14:48:05", + "emitCodeForEvaluatedValue:encoder: (bpCallgraph)" : "1/15/2021 14:48:05", + "emitCodeForValue:encoder: (bpCallgraph)" : "1/15/2021 14:48:05", + "isRootBlock: (bpCallgraph)" : "1/15/2021 14:48:05", + "litIndexBlockIdentifier: (bpCallgraph)" : "1/15/2021 14:48:05", + "sizeCodeForEvaluatedClosureValue: (bpCallgraph)" : "1/15/2021 14:48:05", + "sizeCodeForEvaluatedFullClosureValue: (bpCallgraph)" : "1/15/2021 14:48:05", + "sizeCodeForEvaluatedValue: (bpCallgraph)" : "1/15/2021 14:48:05", + "sizeCodeForValue: (bpCallgraph)" : "1/15/2021 14:48:05" } } 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. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from..st rename to packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json index 2b8649ae..cae85e55 100644 --- a/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json @@ -3,4 +3,4 @@ }, "instance" : { "genNops:" : "cmfcmf 11/27/2020 13:40", - "generateMethodOfClass:trailer:from:" : "1/15/2021 14:48:05" } } + "generateMethodOfClass:trailer:from: (bpCallgraph)" : "1/15/2021 14:48:05" } } diff --git a/packages/Babylonian-Core.package/CompiledMethod.extension/methodProperties.json b/packages/Babylonian-Core.package/CompiledMethod.extension/methodProperties.json index a571629e..6eee59ed 100644 --- a/packages/Babylonian-Core.package/CompiledMethod.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/CompiledMethod.extension/methodProperties.json @@ -9,5 +9,5 @@ "bpRemoveExample:" : "pre 1/6/2021 18:58", "bpSourceMap" : "pre 7/2/2020 19:22", "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/MethodNode.extension/instance/generate.using..st b/packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using..st rename to packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using. (bpCallgraph).st 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. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId..st rename to packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json index e07ccd46..1caccfa2 100644 --- a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "generate:using:" : "1/15/2021 14:48:05", - "rememberNOPs:range:blockId:" : "1/15/2021 14:48:05" } } + "generate:using: (bpCallgraph)" : "1/15/2021 14:48:05", + "rememberNOPs:range:blockId: (bpCallgraph)" : "1/15/2021 14:48:05" } } 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. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st 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. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json index 4f5d17c1..1719cc62 100644 --- a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalReturnSize:returns:" : "1/15/2021 14:48:05", - "emitCodeForReturn:encoder:" : "1/15/2021 14:48:05", - "emitNOPs:stack:n:type:" : "1/15/2021 14:48:05", - "findEnclosingNonOptimizedBlock:" : "1/15/2021 14:48:05", - "findEnclosingNonOptimizedBlockId:" : "1/15/2021 14:48:05", - "invocationTempIndex:" : "1/15/2021 14:48:05", - "litIndexBlockIdentifier:" : "1/15/2021 14:48:05", - "litIndexEnterInvocation:" : "1/15/2021 14:48:05", - "litIndexExitInvocation:" : "1/15/2021 14:48:05", - "litIndexInvocationCount:" : "1/15/2021 14:48:05", - "litIndexTracerClass:" : "1/15/2021 14:48:05", - "sizeCodeForReturn:" : "1/15/2021 14:48:05" } } + "additionalReturnSize:returns: (bpCallgraph)" : "1/15/2021 14:48:05", + "emitCodeForReturn:encoder: (bpCallgraph)" : "1/15/2021 14:48:05", + "emitNOPs:stack:n:type: (bpCallgraph)" : "1/15/2021 14:48:05", + "findEnclosingNonOptimizedBlock: (bpCallgraph)" : "1/15/2021 14:48:05", + "findEnclosingNonOptimizedBlockId: (bpCallgraph)" : "1/15/2021 14:48:05", + "invocationTempIndex: (bpCallgraph)" : "1/15/2021 14:48:05", + "litIndexBlockIdentifier: (bpCallgraph)" : "1/15/2021 14:48:05", + "litIndexEnterInvocation: (bpCallgraph)" : "1/15/2021 14:48:05", + "litIndexExitInvocation: (bpCallgraph)" : "1/15/2021 14:48:05", + "litIndexInvocationCount: (bpCallgraph)" : "1/15/2021 14:48:05", + "litIndexTracerClass: (bpCallgraph)" : "1/15/2021 14:48:05", + "sizeCodeForReturn: (bpCallgraph)" : "1/15/2021 14:48:05" } } diff --git a/packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder..st b/packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder..st rename to packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn..st b/packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn..st rename to packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json index 916c63e5..68425d22 100644 --- a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "emitCodeForReturn:encoder:" : "1/15/2021 14:48:05", - "sizeCodeForReturn:" : "1/15/2021 14:48:05" } } + "emitCodeForReturn:encoder: (bpCallgraph)" : "1/15/2021 14:48:05", + "sizeCodeForReturn: (bpCallgraph)" : "1/15/2021 14:48:05" } } From 9ac08f74733112c9784a3c138a82aad7e12f9969 Mon Sep 17 00:00:00 2001 From: Patrick R Date: Fri, 22 Jan 2021 16:01:25 +0100 Subject: [PATCH 44/71] Extracts the callgraph browser into its own class --- .../instance/defaultBrowserTitle.st | 4 +-- .../BPBrowser.class/methodProperties.json | 26 ++--------------- .../BPBrowser.class/properties.json | 2 +- .../BPCallgraphBrowser.class/README.md | 0 .../class/compilerClass.st | 4 +++ .../class/initialize.st | 13 +++++++++ .../BPCallgraphBrowser.class/class/startUp.st | 5 ++++ .../instance/buildWindowWith.specs..st | 0 .../instance/callgraphCategoryMenu..st | 0 .../instance/callgraphClassMenu..st | 0 .../callgraphDisableTracingForClass.st | 0 ...callgraphDisableTracingForClassCategory.st | 0 .../callgraphDisableTracingForMessage.st | 0 .../callgraphEnableTracingForClass.st | 0 .../callgraphEnableTracingForClassCategory.st | 0 .../callgraphEnableTracingForMessage.st | 0 .../instance/callgraphInstrumentClass.st | 0 .../callgraphInstrumentClassCategory.st | 0 .../instance/callgraphInstrumentMessage.st | 0 .../instance/callgraphMessageMenu..st | 0 .../instance/callgraphShowMessage.st | 0 .../instance/callgraphUninstrumentClass.st | 0 .../callgraphUninstrumentClassCategory.st | 0 .../instance/callgraphUninstrumentMessage.st | 0 .../instance/callgraphcodePaneMenu..st | 0 .../instance/compressWidthOfSpecs.from.to..st | 0 .../instance/defaultBrowserTitle.st | 4 +++ .../instance/messageIconFor..st | 0 .../sidebarShowExample.id.traceValue..st | 0 .../instance/sidebarShowMethod..st | 0 .../methodProperties.json | 29 +++++++++++++++++++ .../BPCallgraphBrowser.class/properties.json | 14 +++++++++ 32 files changed, 74 insertions(+), 27 deletions(-) create mode 100644 packages/Babylonian-UI.package/BPCallgraphBrowser.class/README.md create mode 100644 packages/Babylonian-UI.package/BPCallgraphBrowser.class/class/compilerClass.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphBrowser.class/class/initialize.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphBrowser.class/class/startUp.st rename packages/Babylonian-UI.package/{BPBrowser.class => BPCallgraphBrowser.class}/instance/buildWindowWith.specs..st (100%) rename packages/Babylonian-UI.package/{BPBrowser.class => BPCallgraphBrowser.class}/instance/callgraphCategoryMenu..st (100%) rename packages/Babylonian-UI.package/{BPBrowser.class => BPCallgraphBrowser.class}/instance/callgraphClassMenu..st (100%) rename packages/Babylonian-UI.package/{BPBrowser.class => BPCallgraphBrowser.class}/instance/callgraphDisableTracingForClass.st (100%) rename packages/Babylonian-UI.package/{BPBrowser.class => BPCallgraphBrowser.class}/instance/callgraphDisableTracingForClassCategory.st (100%) rename packages/Babylonian-UI.package/{BPBrowser.class => BPCallgraphBrowser.class}/instance/callgraphDisableTracingForMessage.st (100%) rename packages/Babylonian-UI.package/{BPBrowser.class => BPCallgraphBrowser.class}/instance/callgraphEnableTracingForClass.st (100%) rename packages/Babylonian-UI.package/{BPBrowser.class => BPCallgraphBrowser.class}/instance/callgraphEnableTracingForClassCategory.st (100%) rename packages/Babylonian-UI.package/{BPBrowser.class => BPCallgraphBrowser.class}/instance/callgraphEnableTracingForMessage.st (100%) rename packages/Babylonian-UI.package/{BPBrowser.class => BPCallgraphBrowser.class}/instance/callgraphInstrumentClass.st (100%) rename packages/Babylonian-UI.package/{BPBrowser.class => BPCallgraphBrowser.class}/instance/callgraphInstrumentClassCategory.st (100%) rename packages/Babylonian-UI.package/{BPBrowser.class => BPCallgraphBrowser.class}/instance/callgraphInstrumentMessage.st (100%) rename packages/Babylonian-UI.package/{BPBrowser.class => BPCallgraphBrowser.class}/instance/callgraphMessageMenu..st (100%) rename packages/Babylonian-UI.package/{BPBrowser.class => BPCallgraphBrowser.class}/instance/callgraphShowMessage.st (100%) rename packages/Babylonian-UI.package/{BPBrowser.class => BPCallgraphBrowser.class}/instance/callgraphUninstrumentClass.st (100%) rename packages/Babylonian-UI.package/{BPBrowser.class => BPCallgraphBrowser.class}/instance/callgraphUninstrumentClassCategory.st (100%) rename packages/Babylonian-UI.package/{BPBrowser.class => BPCallgraphBrowser.class}/instance/callgraphUninstrumentMessage.st (100%) rename packages/Babylonian-UI.package/{BPBrowser.class => BPCallgraphBrowser.class}/instance/callgraphcodePaneMenu..st (100%) rename packages/Babylonian-UI.package/{BPBrowser.class => BPCallgraphBrowser.class}/instance/compressWidthOfSpecs.from.to..st (100%) create mode 100644 packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/defaultBrowserTitle.st rename packages/Babylonian-UI.package/{BPBrowser.class => BPCallgraphBrowser.class}/instance/messageIconFor..st (100%) rename packages/Babylonian-UI.package/{BPBrowser.class => BPCallgraphBrowser.class}/instance/sidebarShowExample.id.traceValue..st (100%) rename packages/Babylonian-UI.package/{BPBrowser.class => BPCallgraphBrowser.class}/instance/sidebarShowMethod..st (100%) create mode 100644 packages/Babylonian-UI.package/BPCallgraphBrowser.class/methodProperties.json create mode 100644 packages/Babylonian-UI.package/BPCallgraphBrowser.class/properties.json 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/BPBrowser.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json index 38f07fdd..67bd3f34 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json @@ -8,29 +8,7 @@ "aboutToStyle:requestor:" : "jb 12/3/2020 23:32", "buildCodePaneWith:" : "pre 1/21/2021 18:42", "buildDefaultBrowserWith:" : "pre 1/6/2021 10:50", - "buildWindowWith:specs:" : "pre 1/20/2021 16:12", - "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", "compileMessage:notifying:" : "pre 1/21/2021 14:02", - "compressWidthOfSpecs:from:to:" : "cmfcmf 10/30/2020 13:07", - "defaultBrowserTitle" : "pre 11/8/2019 17:17", - "messageIconFor:" : "cmfcmf 10/23/2020 12:58", + "defaultBrowserTitle" : "pre 1/22/2021 15:56", "messageList" : "pre 9/24/2020 14:26", - "rawMessageCategoryList" : "jb 12/3/2020 22:54", - "sidebarShowExample:id:traceValue:" : "cmfcmf 11/5/2020 13:00", - "sidebarShowMethod:" : "cmfcmf 11/2/2020 14:14" } } + "rawMessageCategoryList" : "jb 12/3/2020 22:54" } } diff --git a/packages/Babylonian-UI.package/BPBrowser.class/properties.json b/packages/Babylonian-UI.package/BPBrowser.class/properties.json index cf757344..557e149f 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/properties.json +++ b/packages/Babylonian-UI.package/BPBrowser.class/properties.json @@ -6,7 +6,7 @@ ], "commentStamp" : "", "instvars" : [ - "sidebar" ], + ], "name" : "BPBrowser", "pools" : [ ], 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/BPBrowser.class/instance/buildWindowWith.specs..st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/buildWindowWith.specs..st similarity index 100% rename from packages/Babylonian-UI.package/BPBrowser.class/instance/buildWindowWith.specs..st rename to packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/buildWindowWith.specs..st diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphCategoryMenu..st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphCategoryMenu..st similarity index 100% rename from packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphCategoryMenu..st rename to packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphCategoryMenu..st diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphClassMenu..st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphClassMenu..st similarity index 100% rename from packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphClassMenu..st rename to packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphClassMenu..st diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForClass.st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphDisableTracingForClass.st similarity index 100% rename from packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForClass.st rename to packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphDisableTracingForClass.st diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForClassCategory.st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphDisableTracingForClassCategory.st similarity index 100% rename from packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForClassCategory.st rename to packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphDisableTracingForClassCategory.st diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForMessage.st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphDisableTracingForMessage.st similarity index 100% rename from packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphDisableTracingForMessage.st rename to packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphDisableTracingForMessage.st diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForClass.st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphEnableTracingForClass.st similarity index 100% rename from packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForClass.st rename to packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphEnableTracingForClass.st diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForClassCategory.st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphEnableTracingForClassCategory.st similarity index 100% rename from packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForClassCategory.st rename to packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphEnableTracingForClassCategory.st diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForMessage.st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphEnableTracingForMessage.st similarity index 100% rename from packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphEnableTracingForMessage.st rename to packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphEnableTracingForMessage.st diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentClass.st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphInstrumentClass.st similarity index 100% rename from packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentClass.st rename to packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphInstrumentClass.st diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentClassCategory.st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphInstrumentClassCategory.st similarity index 100% rename from packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentClassCategory.st rename to packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphInstrumentClassCategory.st diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentMessage.st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphInstrumentMessage.st similarity index 100% rename from packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphInstrumentMessage.st rename to packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphInstrumentMessage.st diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphMessageMenu..st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphMessageMenu..st similarity index 100% rename from packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphMessageMenu..st rename to packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphMessageMenu..st diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphShowMessage.st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphShowMessage.st similarity index 100% rename from packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphShowMessage.st rename to packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphShowMessage.st diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentClass.st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphUninstrumentClass.st similarity index 100% rename from packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentClass.st rename to packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphUninstrumentClass.st diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentClassCategory.st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphUninstrumentClassCategory.st similarity index 100% rename from packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentClassCategory.st rename to packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphUninstrumentClassCategory.st diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentMessage.st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphUninstrumentMessage.st similarity index 100% rename from packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphUninstrumentMessage.st rename to packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphUninstrumentMessage.st diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphcodePaneMenu..st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphcodePaneMenu..st similarity index 100% rename from packages/Babylonian-UI.package/BPBrowser.class/instance/callgraphcodePaneMenu..st rename to packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/callgraphcodePaneMenu..st diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/compressWidthOfSpecs.from.to..st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/compressWidthOfSpecs.from.to..st similarity index 100% rename from packages/Babylonian-UI.package/BPBrowser.class/instance/compressWidthOfSpecs.from.to..st rename to packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/compressWidthOfSpecs.from.to..st 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/BPBrowser.class/instance/messageIconFor..st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/messageIconFor..st similarity index 100% rename from packages/Babylonian-UI.package/BPBrowser.class/instance/messageIconFor..st rename to packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/messageIconFor..st diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/sidebarShowExample.id.traceValue..st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/sidebarShowExample.id.traceValue..st similarity index 100% rename from packages/Babylonian-UI.package/BPBrowser.class/instance/sidebarShowExample.id.traceValue..st rename to packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/sidebarShowExample.id.traceValue..st diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/sidebarShowMethod..st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/sidebarShowMethod..st similarity index 100% rename from packages/Babylonian-UI.package/BPBrowser.class/instance/sidebarShowMethod..st rename to packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/sidebarShowMethod..st 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..075bbade --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/methodProperties.json @@ -0,0 +1,29 @@ +{ + "class" : { + "compilerClass" : "pre 7/26/2019 10:07", + "initialize" : "pre 1/22/2021 15:58", + "startUp" : "jb 12/3/2020 23:07" }, + "instance" : { + "buildWindowWith:specs:" : "pre 1/20/2021 16:12", + "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:" : "cmfcmf 10/30/2020 13:07", + "defaultBrowserTitle" : "pre 1/22/2021 15:55", + "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..443798ef --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/properties.json @@ -0,0 +1,14 @@ +{ + "category" : "Babylonian-UI", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "", + "instvars" : [ + "sidebar" ], + "name" : "BPCallgraphBrowser", + "pools" : [ + ], + "super" : "BPBrowser", + "type" : "normal" } From 6a75453a8c7f4ccf1952c91f86031011de3fdbbc Mon Sep 17 00:00:00 2001 From: Patrick R Date: Fri, 22 Jan 2021 16:44:13 +0100 Subject: [PATCH 45/71] Refactors the shouldNeverInstrument: method --- .../class/shouldNeverInstrument.selector..st | 26 ++++++++++++------- .../methodProperties.json | 2 +- .../BPExample.class/methodProperties.json | 18 ++++++------- ...e. (bpCallgraph).st => additionalSize..st} | 0 ...raph).st => additionalSizeBeforeBlock..st} | 0 ...tCodeForEvaluatedClosureValue.encoder..st} | 0 ...eForEvaluatedFullClosureValue.encoder..st} | 0 ... => emitCodeForEvaluatedValue.encoder..st} | 0 ...graph).st => emitCodeForValue.encoder..st} | 0 ...lock. (bpCallgraph).st => isRootBlock..st} | 0 ...lgraph).st => litIndexBlockIdentifier..st} | 0 ...t => sizeCodeForEvaluatedClosureValue..st} | 0 ... sizeCodeForEvaluatedFullClosureValue..st} | 0 ...raph).st => sizeCodeForEvaluatedValue..st} | 0 ... (bpCallgraph).st => sizeCodeForValue..st} | 0 .../BlockNode.extension/methodProperties.json | 24 ++++++++--------- ...=> generateMethodOfClass.trailer.from..st} | 0 .../methodProperties.json | 2 +- ...g. (bpCallgraph).st => generate.using..st} | 0 ...aph).st => rememberNOPs.range.blockId..st} | 0 .../methodProperties.json | 4 +-- ...h).st => additionalReturnSize.returns..st} | 0 ...raph).st => emitCodeForReturn.encoder..st} | 0 ...allgraph).st => emitNOPs.stack.n.type..st} | 0 ....st => findEnclosingNonOptimizedBlock..st} | 0 ...t => findEnclosingNonOptimizedBlockId..st} | 0 ...pCallgraph).st => invocationTempIndex..st} | 0 ...lgraph).st => litIndexBlockIdentifier..st} | 0 ...lgraph).st => litIndexEnterInvocation..st} | 0 ...llgraph).st => litIndexExitInvocation..st} | 0 ...lgraph).st => litIndexInvocationCount..st} | 0 ...pCallgraph).st => litIndexTracerClass..st} | 0 ...(bpCallgraph).st => sizeCodeForReturn..st} | 0 .../ParseNode.extension/methodProperties.json | 24 ++++++++--------- ...raph).st => emitCodeForReturn.encoder..st} | 0 ...(bpCallgraph).st => sizeCodeForReturn..st} | 0 .../methodProperties.json | 4 +-- 37 files changed, 55 insertions(+), 49 deletions(-) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{additionalSize. (bpCallgraph).st => additionalSize..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{additionalSizeBeforeBlock. (bpCallgraph).st => additionalSizeBeforeBlock..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st => emitCodeForEvaluatedClosureValue.encoder..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st => emitCodeForEvaluatedFullClosureValue.encoder..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedValue.encoder. (bpCallgraph).st => emitCodeForEvaluatedValue.encoder..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForValue.encoder. (bpCallgraph).st => emitCodeForValue.encoder..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{isRootBlock. (bpCallgraph).st => isRootBlock..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{litIndexBlockIdentifier. (bpCallgraph).st => litIndexBlockIdentifier..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedClosureValue. (bpCallgraph).st => sizeCodeForEvaluatedClosureValue..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st => sizeCodeForEvaluatedFullClosureValue..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedValue. (bpCallgraph).st => sizeCodeForEvaluatedValue..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForValue. (bpCallgraph).st => sizeCodeForValue..st} (100%) rename packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/{generateMethodOfClass.trailer.from. (bpCallgraph).st => generateMethodOfClass.trailer.from..st} (100%) rename packages/Babylonian-Core.package/MethodNode.extension/instance/{generate.using. (bpCallgraph).st => generate.using..st} (100%) rename packages/Babylonian-Core.package/MethodNode.extension/instance/{rememberNOPs.range.blockId. (bpCallgraph).st => rememberNOPs.range.blockId..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{additionalReturnSize.returns. (bpCallgraph).st => additionalReturnSize.returns..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{emitCodeForReturn.encoder. (bpCallgraph).st => emitCodeForReturn.encoder..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{emitNOPs.stack.n.type. (bpCallgraph).st => emitNOPs.stack.n.type..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{findEnclosingNonOptimizedBlock. (bpCallgraph).st => findEnclosingNonOptimizedBlock..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{findEnclosingNonOptimizedBlockId. (bpCallgraph).st => findEnclosingNonOptimizedBlockId..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{invocationTempIndex. (bpCallgraph).st => invocationTempIndex..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexBlockIdentifier. (bpCallgraph).st => litIndexBlockIdentifier..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexEnterInvocation. (bpCallgraph).st => litIndexEnterInvocation..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexExitInvocation. (bpCallgraph).st => litIndexExitInvocation..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexInvocationCount. (bpCallgraph).st => litIndexInvocationCount..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexTracerClass. (bpCallgraph).st => litIndexTracerClass..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{sizeCodeForReturn. (bpCallgraph).st => sizeCodeForReturn..st} (100%) rename packages/Babylonian-Core.package/VariableNode.extension/instance/{emitCodeForReturn.encoder. (bpCallgraph).st => emitCodeForReturn.encoder..st} (100%) rename packages/Babylonian-Core.package/VariableNode.extension/instance/{sizeCodeForReturn. (bpCallgraph).st => sizeCodeForReturn..st} (100%) diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st index 72f441ca..5603bad5 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st @@ -5,17 +5,23 @@ shouldNeverInstrument: aClass selector: aSymbol | class method | (aClass category beginsWith: 'Babylonian-') ifTrue: [ aClass category ~= 'Babylonian-Tests-Callgraph-ByteCode-Fixtures' ifTrue: [^ true]]. - (aClass theNonMetaClass includesBehavior: Context) ifTrue: [^ true]. - ((aClass includesBehavior: CompiledMethod) and: [aSymbol == #valueWithReceiver:arguments:]) ifTrue: [^ true]. - ((aClass includesBehavior: BlockClosure) and: [aSymbol == #value or: [aSymbol == #ensure:]]) ifTrue: [^ true]. - ((aClass theNonMetaClass includesBehavior: Binding) and: [aSymbol == #value]) ifTrue: [^ true]. - (aClass theNonMetaClass includesBehavior: BPByteCodeCallgraphTracer) ifTrue: [^ true]. - (aClass theNonMetaClass includesBehavior: DynamicVariable) ifTrue: [^ true]. - ((aClass includesBehavior: WriteStream) and: [aSymbol == #nextPut:]) ifTrue: [^ true]. - - (aClass theNonMetaClass includesBehavior: BPByteCodeMethodState) ifTrue: [^ true]. - (aClass theNonMetaClass includesBehavior: BPByteCodeAssociation) ifTrue: [^ true]. + {{CompiledMethod . {#valueWithReceiver:arguments:}}. + {BlockClosure . {#value . #ensure}}. + {WriteStream . {#nextPut:}}} anySatisfy: [: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 ;)"}} + } anySatisfy: [: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]. diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json index edf50a71..5a71eaa4 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json @@ -40,7 +40,7 @@ "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:" : "cmfcmf 10/26/2020 10:53", + "shouldNeverInstrument:selector:" : "pre 1/22/2021 16:40", "teardown" : "cmfcmf 10/7/2020 15:31", "uninstallWrapper:" : "cmfcmf 10/29/2020 13:06", "uninstrumentAll" : "cmfcmf 12/10/2020 12:43", diff --git a/packages/Babylonian-Core.package/BPExample.class/methodProperties.json b/packages/Babylonian-Core.package/BPExample.class/methodProperties.json index a2de7a0e..1a037380 100644 --- a/packages/Babylonian-Core.package/BPExample.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPExample.class/methodProperties.json @@ -2,8 +2,8 @@ "class" : { "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", + "bpExamplePragmaPrefix" : "1/22/2021 11:04:38", + "bpExamplePragmaPrefixes" : "1/22/2021 11:04:38", "fromPragma:" : "pre 9/30/2020 10:20", "newFor:" : "pre 9/30/2020 11:08" }, "instance" : { @@ -34,12 +34,12 @@ "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", + "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", + "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", @@ -49,10 +49,10 @@ "tearDownScript:" : "pre 1/21/2021 15:36", "toggleIsActive" : "pre 10/23/2020 10:16", "trace" : "pre 9/30/2020 09:55", - "trace:" : " 1/22/2021 11:04:38", + "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", + "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/BlockNode.extension/instance/additionalSize. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json index 96c72178..015c1fbf 100644 --- a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalSize: (bpCallgraph)" : "1/15/2021 14:48:05", - "additionalSizeBeforeBlock: (bpCallgraph)" : "1/15/2021 14:48:05", - "emitCodeForEvaluatedClosureValue:encoder: (bpCallgraph)" : "1/15/2021 14:48:05", - "emitCodeForEvaluatedFullClosureValue:encoder: (bpCallgraph)" : "1/15/2021 14:48:05", - "emitCodeForEvaluatedValue:encoder: (bpCallgraph)" : "1/15/2021 14:48:05", - "emitCodeForValue:encoder: (bpCallgraph)" : "1/15/2021 14:48:05", - "isRootBlock: (bpCallgraph)" : "1/15/2021 14:48:05", - "litIndexBlockIdentifier: (bpCallgraph)" : "1/15/2021 14:48:05", - "sizeCodeForEvaluatedClosureValue: (bpCallgraph)" : "1/15/2021 14:48:05", - "sizeCodeForEvaluatedFullClosureValue: (bpCallgraph)" : "1/15/2021 14:48:05", - "sizeCodeForEvaluatedValue: (bpCallgraph)" : "1/15/2021 14:48:05", - "sizeCodeForValue: (bpCallgraph)" : "1/15/2021 14:48:05" } } + "additionalSize:" : " 1/22/2021 16:40:39", + "additionalSizeBeforeBlock:" : " 1/22/2021 16:40:39", + "emitCodeForEvaluatedClosureValue:encoder:" : " 1/22/2021 16:40:39", + "emitCodeForEvaluatedFullClosureValue:encoder:" : " 1/22/2021 16:40:39", + "emitCodeForEvaluatedValue:encoder:" : " 1/22/2021 16:40:39", + "emitCodeForValue:encoder:" : " 1/22/2021 16:40:39", + "isRootBlock:" : " 1/22/2021 16:40:39", + "litIndexBlockIdentifier:" : " 1/22/2021 16:40:39", + "sizeCodeForEvaluatedClosureValue:" : " 1/22/2021 16:40:39", + "sizeCodeForEvaluatedFullClosureValue:" : " 1/22/2021 16:40:39", + "sizeCodeForEvaluatedValue:" : " 1/22/2021 16:40:39", + "sizeCodeForValue:" : " 1/22/2021 16:40:39" } } diff --git a/packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from. (bpCallgraph).st b/packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from..st similarity index 100% rename from packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from. (bpCallgraph).st rename to packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from..st diff --git a/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json index cae85e55..30146fc1 100644 --- a/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json @@ -3,4 +3,4 @@ }, "instance" : { "genNops:" : "cmfcmf 11/27/2020 13:40", - "generateMethodOfClass:trailer:from: (bpCallgraph)" : "1/15/2021 14:48:05" } } + "generateMethodOfClass:trailer:from:" : " 1/22/2021 16:40:39" } } diff --git a/packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using. (bpCallgraph).st b/packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using..st similarity index 100% rename from packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using. (bpCallgraph).st rename to packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using..st diff --git a/packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId. (bpCallgraph).st b/packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId..st similarity index 100% rename from packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId. (bpCallgraph).st rename to packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId..st diff --git a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json index 1caccfa2..07eb9ab3 100644 --- a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "generate:using: (bpCallgraph)" : "1/15/2021 14:48:05", - "rememberNOPs:range:blockId: (bpCallgraph)" : "1/15/2021 14:48:05" } } + "generate:using:" : " 1/22/2021 16:40:39", + "rememberNOPs:range:blockId:" : " 1/22/2021 16:40:39" } } diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json index 1719cc62..aacb3fe0 100644 --- a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalReturnSize:returns: (bpCallgraph)" : "1/15/2021 14:48:05", - "emitCodeForReturn:encoder: (bpCallgraph)" : "1/15/2021 14:48:05", - "emitNOPs:stack:n:type: (bpCallgraph)" : "1/15/2021 14:48:05", - "findEnclosingNonOptimizedBlock: (bpCallgraph)" : "1/15/2021 14:48:05", - "findEnclosingNonOptimizedBlockId: (bpCallgraph)" : "1/15/2021 14:48:05", - "invocationTempIndex: (bpCallgraph)" : "1/15/2021 14:48:05", - "litIndexBlockIdentifier: (bpCallgraph)" : "1/15/2021 14:48:05", - "litIndexEnterInvocation: (bpCallgraph)" : "1/15/2021 14:48:05", - "litIndexExitInvocation: (bpCallgraph)" : "1/15/2021 14:48:05", - "litIndexInvocationCount: (bpCallgraph)" : "1/15/2021 14:48:05", - "litIndexTracerClass: (bpCallgraph)" : "1/15/2021 14:48:05", - "sizeCodeForReturn: (bpCallgraph)" : "1/15/2021 14:48:05" } } + "additionalReturnSize:returns:" : " 1/22/2021 16:40:39", + "emitCodeForReturn:encoder:" : " 1/22/2021 16:40:39", + "emitNOPs:stack:n:type:" : " 1/22/2021 16:40:39", + "findEnclosingNonOptimizedBlock:" : " 1/22/2021 16:40:39", + "findEnclosingNonOptimizedBlockId:" : " 1/22/2021 16:40:39", + "invocationTempIndex:" : " 1/22/2021 16:40:39", + "litIndexBlockIdentifier:" : " 1/22/2021 16:40:39", + "litIndexEnterInvocation:" : " 1/22/2021 16:40:39", + "litIndexExitInvocation:" : " 1/22/2021 16:40:39", + "litIndexInvocationCount:" : " 1/22/2021 16:40:39", + "litIndexTracerClass:" : " 1/22/2021 16:40:39", + "sizeCodeForReturn:" : " 1/22/2021 16:40:39" } } diff --git a/packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder..st diff --git a/packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st b/packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn..st similarity index 100% rename from packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st rename to packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn..st diff --git a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json index 68425d22..8d96af20 100644 --- a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "emitCodeForReturn:encoder: (bpCallgraph)" : "1/15/2021 14:48:05", - "sizeCodeForReturn: (bpCallgraph)" : "1/15/2021 14:48:05" } } + "emitCodeForReturn:encoder:" : " 1/22/2021 16:40:39", + "sizeCodeForReturn:" : " 1/22/2021 16:40:39" } } From c83f4220323c120c4fa6777d1712bc125d6de744 Mon Sep 17 00:00:00 2001 From: Patrick R Date: Fri, 22 Jan 2021 17:08:43 +0100 Subject: [PATCH 46/71] Adds a configuration dialog to set the packages to be instrumented --- .../README.md | 1 + .../class/configure.st | 4 +++ .../instance/accept.st | 5 ++++ .../instance/buildButtons..st | 20 +++++++++++++ .../instance/buildInstrumentedList..st | 12 ++++++++ .../instance/buildUninstrumentedList..st | 12 ++++++++ .../instance/buildWith..st | 19 ++++++++++++ .../instance/buttonWidth.st | 4 +++ .../instance/categoriesPlusPrefixes.st | 7 +++++ .../instance/chooseFor..st | 21 +++++++++++++ .../instance/configure.st | 21 +++++++++++++ .../instance/confirm..st | 4 +++ .../instance/hasInstrumentedSelection.st | 4 +++ .../instance/hasUninstrumentedSelection.st | 4 +++ .../instance/inform..st | 4 +++ .../instance/initialExtent.st | 6 ++++ .../instance/instrumentSelected.st | 24 +++++++++++++++ .../instance/instrumentedPackages.st | 4 +++ .../instance/instrumentedPackagesWithTitle.st | 4 +++ .../instance/packagesToInstrument.st | 4 +++ .../instance/selectionInstrumented..st | 7 +++++ .../instance/selectionInstrumented.st | 4 +++ .../instance/selectionUninstrumented..st | 7 +++++ .../instance/selectionUninstrumented.st | 4 +++ .../instance/uninstrumentSelected.st | 17 +++++++++++ .../instance/uninstrumentedPackages.st | 4 +++ .../uninstrumentedPackagesWithTitle.st | 4 +++ .../instance/updateUninstrumentedPackages.st | 6 ++++ .../methodProperties.json | 30 +++++++++++++++++++ .../properties.json | 18 +++++++++++ 30 files changed, 285 insertions(+) create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/README.md create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/class/configure.st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/accept.st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/buildButtons..st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/buildInstrumentedList..st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/buildUninstrumentedList..st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/buildWith..st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/buttonWidth.st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/categoriesPlusPrefixes.st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/chooseFor..st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/configure.st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/confirm..st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/hasInstrumentedSelection.st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/hasUninstrumentedSelection.st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/inform..st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/initialExtent.st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/instrumentSelected.st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/instrumentedPackages.st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/instrumentedPackagesWithTitle.st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/packagesToInstrument.st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/selectionInstrumented..st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/selectionInstrumented.st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/selectionUninstrumented..st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/selectionUninstrumented.st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/uninstrumentSelected.st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/uninstrumentedPackages.st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/uninstrumentedPackagesWithTitle.st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/updateUninstrumentedPackages.st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/methodProperties.json create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/properties.json 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..6858a45d --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/README.md @@ -0,0 +1 @@ +I allow users to add or remove packages from a working copy. Users choose from class categories in the system, so this is not necessarily dependent on Monticello packages. \ No newline at end of file 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/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/chooseFor..st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/chooseFor..st new file mode 100644 index 00000000..6db740ce --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/chooseFor..st @@ -0,0 +1,21 @@ +choosing packages +chooseFor: aWorkingCopy + + "returns true if any changes were made" + + | originalPackages addedPackages removedPackages subPath | + acceptChanges := false. + instrumentedPackages := self packagesToInstrument. + originalPackages := trackedPackages 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]. + + PackagesToInstrument removeAll: removedPackages. + PackagesToInstrument addAll: addedPackages. + ^ true \ 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..97c7cf4b --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/configure.st @@ -0,0 +1,21 @@ +choosing packages +configure + + "returns true if any changes were made" + + | originalPackages addedPackages removedPackages | + acceptChanges := false. + instrumentedPackages := self packagesToInstrument. + 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]. + + PackagesToInstrument removeAll: removedPackages. + PackagesToInstrument addAll: addedPackages. + ^ true \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/confirm..st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/confirm..st new file mode 100644 index 00000000..17e46e57 --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/confirm..st @@ -0,0 +1,4 @@ +user interface +confirm: aString + + ^ self confirm: aString. \ 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..0cd38d2c --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/instrumentedPackagesWithTitle.st @@ -0,0 +1,4 @@ +accessing +instrumentedPackagesWithTitle + + ^ #('-- Tracked Packages --'), self instrumentedPackages \ 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..b9798002 --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/uninstrumentSelected.st @@ -0,0 +1,17 @@ +actions +uninstrumentSelected + + | package | + package := (self trackedPackagesWithTitle at: self selectionTracked). + self trackedPackages remove: package. + + self updateUntrackedPackages. + + self changed: #trackedPackagesWithTitle. + self changed: #untrackedPackagesWithTitle. + selectionTracked ifNotNil: + [selectionTracked := selectionTracked min: trackedPackages size + 1. + self changed: #selectionTracked]. + self changed: #hasTrackedSelection. + self changed: #hasUntrackedSelection. + \ 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..b06cf18f --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/methodProperties.json @@ -0,0 +1,30 @@ +{ + "class" : { + "configure" : "pre 1/22/2021 17:01" }, + "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", + "chooseFor:" : "pre 1/22/2021 17:01", + "configure" : "pre 1/22/2021 17:03", + "confirm:" : "pre 1/22/2021 16:55", + "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 1/22/2021 16:59", + "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 1/22/2021 16:50", + "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..7a181c5e --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/properties.json @@ -0,0 +1,18 @@ +{ + "category" : "Babylonian-UI-Callgraph", + "classinstvars" : [ + ], + "classvars" : [ + "PackagesToInstrument" ], + "commentStamp" : "", + "instvars" : [ + "acceptChanges", + "instrumentedPackages", + "selectionInstrumented", + "selectionUninstrumented", + "uninstrumentedPackages" ], + "name" : "BPConfigureInstrumentation", + "pools" : [ + ], + "super" : "Model", + "type" : "normal" } From 931fdefdc7f4ee7fbde5b8f4ea2d8b6791e69e82 Mon Sep 17 00:00:00 2001 From: Patrick R Date: Fri, 22 Jan 2021 17:37:18 +0100 Subject: [PATCH 47/71] Fixes minor bugs in the refactored blacklist of methods to instrument --- .../class/shouldNeverInstrument.selector..st | 4 ++-- .../methodProperties.json | 2 +- ...e..st => additionalSize. (bpCallgraph).st} | 0 ...ditionalSizeBeforeBlock. (bpCallgraph).st} | 0 ...tedClosureValue.encoder. (bpCallgraph).st} | 0 ...ullClosureValue.encoder. (bpCallgraph).st} | 0 ...rEvaluatedValue.encoder. (bpCallgraph).st} | 0 ...mitCodeForValue.encoder. (bpCallgraph).st} | 0 ...lock..st => isRootBlock. (bpCallgraph).st} | 0 ...litIndexBlockIdentifier. (bpCallgraph).st} | 0 ...orEvaluatedClosureValue. (bpCallgraph).st} | 0 ...aluatedFullClosureValue. (bpCallgraph).st} | 0 ...zeCodeForEvaluatedValue. (bpCallgraph).st} | 0 ....st => sizeCodeForValue. (bpCallgraph).st} | 0 .../BlockNode.extension/methodProperties.json | 24 +++++++++---------- ...hodOfClass.trailer.from. (bpCallgraph).st} | 0 .../methodProperties.json | 2 +- ...g..st => generate.using. (bpCallgraph).st} | 0 ...emberNOPs.range.blockId. (bpCallgraph).st} | 0 .../methodProperties.json | 4 ++-- ...ionalReturnSize.returns. (bpCallgraph).st} | 0 ...itCodeForReturn.encoder. (bpCallgraph).st} | 0 ...> emitNOPs.stack.n.type. (bpCallgraph).st} | 0 ...losingNonOptimizedBlock. (bpCallgraph).st} | 0 ...singNonOptimizedBlockId. (bpCallgraph).st} | 0 ... => invocationTempIndex. (bpCallgraph).st} | 0 ...litIndexBlockIdentifier. (bpCallgraph).st} | 0 ...litIndexEnterInvocation. (bpCallgraph).st} | 0 ... litIndexExitInvocation. (bpCallgraph).st} | 0 ...litIndexInvocationCount. (bpCallgraph).st} | 0 ... => litIndexTracerClass. (bpCallgraph).st} | 0 ...st => sizeCodeForReturn. (bpCallgraph).st} | 0 .../ParseNode.extension/methodProperties.json | 24 +++++++++---------- ...itCodeForReturn.encoder. (bpCallgraph).st} | 0 ...st => sizeCodeForReturn. (bpCallgraph).st} | 0 .../methodProperties.json | 4 ++-- 36 files changed, 32 insertions(+), 32 deletions(-) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{additionalSize..st => additionalSize. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{additionalSizeBeforeBlock..st => additionalSizeBeforeBlock. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedClosureValue.encoder..st => emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedFullClosureValue.encoder..st => emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedValue.encoder..st => emitCodeForEvaluatedValue.encoder. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForValue.encoder..st => emitCodeForValue.encoder. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{isRootBlock..st => isRootBlock. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{litIndexBlockIdentifier..st => litIndexBlockIdentifier. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedClosureValue..st => sizeCodeForEvaluatedClosureValue. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedFullClosureValue..st => sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedValue..st => sizeCodeForEvaluatedValue. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForValue..st => sizeCodeForValue. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/{generateMethodOfClass.trailer.from..st => generateMethodOfClass.trailer.from. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/MethodNode.extension/instance/{generate.using..st => generate.using. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/MethodNode.extension/instance/{rememberNOPs.range.blockId..st => rememberNOPs.range.blockId. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{additionalReturnSize.returns..st => additionalReturnSize.returns. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{emitCodeForReturn.encoder..st => emitCodeForReturn.encoder. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{emitNOPs.stack.n.type..st => emitNOPs.stack.n.type. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{findEnclosingNonOptimizedBlock..st => findEnclosingNonOptimizedBlock. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{findEnclosingNonOptimizedBlockId..st => findEnclosingNonOptimizedBlockId. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{invocationTempIndex..st => invocationTempIndex. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexBlockIdentifier..st => litIndexBlockIdentifier. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexEnterInvocation..st => litIndexEnterInvocation. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexExitInvocation..st => litIndexExitInvocation. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexInvocationCount..st => litIndexInvocationCount. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexTracerClass..st => litIndexTracerClass. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{sizeCodeForReturn..st => sizeCodeForReturn. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/VariableNode.extension/instance/{emitCodeForReturn.encoder..st => emitCodeForReturn.encoder. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/VariableNode.extension/instance/{sizeCodeForReturn..st => sizeCodeForReturn. (bpCallgraph).st} (100%) diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st index 5603bad5..b1807b1e 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st @@ -8,7 +8,7 @@ shouldNeverInstrument: aClass selector: aSymbol {{CompiledMethod . {#valueWithReceiver:arguments:}}. {BlockClosure . {#value . #ensure}}. - {WriteStream . {#nextPut:}}} anySatisfy: [:tuple | + {WriteStream . {#nextPut:}}} do: [:tuple | ((aClass includesBehavior: tuple first) and: [tuple second anySatisfy: [:excludedSelector | excludedSelector == aSymbol]]) ifTrue: [^ true]]. @@ -18,7 +18,7 @@ shouldNeverInstrument: aClass selector: aSymbol {DynamicVariable . {"only check for the class ;)"}}. {BPByteCodeMethodState . {"only check for the class ;)"}}. {BPByteCodeAssociation . {"only check for the class ;)"}} - } anySatisfy: [:tuple | + } do: [:tuple | ((aClass theNonMetaClass includesBehavior: tuple first) and: [tuple second isEmpty or: [tuple second anySatisfy: [:excludedSelector | excludedSelector == aSymbol]]]) ifTrue: [^ true]]. diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json index 5a71eaa4..80bb9a71 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json @@ -40,7 +40,7 @@ "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 1/22/2021 16:40", + "shouldNeverInstrument:selector:" : "pre 1/22/2021 17:27", "teardown" : "cmfcmf 10/7/2020 15:31", "uninstallWrapper:" : "cmfcmf 10/29/2020 13:06", "uninstrumentAll" : "cmfcmf 12/10/2020 12:43", diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json index 015c1fbf..d243957e 100644 --- a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalSize:" : " 1/22/2021 16:40:39", - "additionalSizeBeforeBlock:" : " 1/22/2021 16:40:39", - "emitCodeForEvaluatedClosureValue:encoder:" : " 1/22/2021 16:40:39", - "emitCodeForEvaluatedFullClosureValue:encoder:" : " 1/22/2021 16:40:39", - "emitCodeForEvaluatedValue:encoder:" : " 1/22/2021 16:40:39", - "emitCodeForValue:encoder:" : " 1/22/2021 16:40:39", - "isRootBlock:" : " 1/22/2021 16:40:39", - "litIndexBlockIdentifier:" : " 1/22/2021 16:40:39", - "sizeCodeForEvaluatedClosureValue:" : " 1/22/2021 16:40:39", - "sizeCodeForEvaluatedFullClosureValue:" : " 1/22/2021 16:40:39", - "sizeCodeForEvaluatedValue:" : " 1/22/2021 16:40:39", - "sizeCodeForValue:" : " 1/22/2021 16:40:39" } } + "additionalSize: (bpCallgraph)" : "1/22/2021 16:40:39", + "additionalSizeBeforeBlock: (bpCallgraph)" : "1/22/2021 16:40:39", + "emitCodeForEvaluatedClosureValue:encoder: (bpCallgraph)" : "1/22/2021 16:40:39", + "emitCodeForEvaluatedFullClosureValue:encoder: (bpCallgraph)" : "1/22/2021 16:40:39", + "emitCodeForEvaluatedValue:encoder: (bpCallgraph)" : "1/22/2021 16:40:39", + "emitCodeForValue:encoder: (bpCallgraph)" : "1/22/2021 16:40:39", + "isRootBlock: (bpCallgraph)" : "1/22/2021 16:40:39", + "litIndexBlockIdentifier: (bpCallgraph)" : "1/22/2021 16:40:39", + "sizeCodeForEvaluatedClosureValue: (bpCallgraph)" : "1/22/2021 16:40:39", + "sizeCodeForEvaluatedFullClosureValue: (bpCallgraph)" : "1/22/2021 16:40:39", + "sizeCodeForEvaluatedValue: (bpCallgraph)" : "1/22/2021 16:40:39", + "sizeCodeForValue: (bpCallgraph)" : "1/22/2021 16:40:39" } } 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. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from..st rename to packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json index 30146fc1..9c9fdb9d 100644 --- a/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json @@ -3,4 +3,4 @@ }, "instance" : { "genNops:" : "cmfcmf 11/27/2020 13:40", - "generateMethodOfClass:trailer:from:" : " 1/22/2021 16:40:39" } } + "generateMethodOfClass:trailer:from: (bpCallgraph)" : "1/22/2021 16:40:39" } } diff --git a/packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using..st b/packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using..st rename to packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using. (bpCallgraph).st 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. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId..st rename to packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json index 07eb9ab3..c571d105 100644 --- a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "generate:using:" : " 1/22/2021 16:40:39", - "rememberNOPs:range:blockId:" : " 1/22/2021 16:40:39" } } + "generate:using: (bpCallgraph)" : "1/22/2021 16:40:39", + "rememberNOPs:range:blockId: (bpCallgraph)" : "1/22/2021 16:40:39" } } diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st 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. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json index aacb3fe0..fb589c34 100644 --- a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalReturnSize:returns:" : " 1/22/2021 16:40:39", - "emitCodeForReturn:encoder:" : " 1/22/2021 16:40:39", - "emitNOPs:stack:n:type:" : " 1/22/2021 16:40:39", - "findEnclosingNonOptimizedBlock:" : " 1/22/2021 16:40:39", - "findEnclosingNonOptimizedBlockId:" : " 1/22/2021 16:40:39", - "invocationTempIndex:" : " 1/22/2021 16:40:39", - "litIndexBlockIdentifier:" : " 1/22/2021 16:40:39", - "litIndexEnterInvocation:" : " 1/22/2021 16:40:39", - "litIndexExitInvocation:" : " 1/22/2021 16:40:39", - "litIndexInvocationCount:" : " 1/22/2021 16:40:39", - "litIndexTracerClass:" : " 1/22/2021 16:40:39", - "sizeCodeForReturn:" : " 1/22/2021 16:40:39" } } + "additionalReturnSize:returns: (bpCallgraph)" : "1/22/2021 16:40:39", + "emitCodeForReturn:encoder: (bpCallgraph)" : "1/22/2021 16:40:39", + "emitNOPs:stack:n:type: (bpCallgraph)" : "1/22/2021 16:40:39", + "findEnclosingNonOptimizedBlock: (bpCallgraph)" : "1/22/2021 16:40:39", + "findEnclosingNonOptimizedBlockId: (bpCallgraph)" : "1/22/2021 16:40:39", + "invocationTempIndex: (bpCallgraph)" : "1/22/2021 16:40:39", + "litIndexBlockIdentifier: (bpCallgraph)" : "1/22/2021 16:40:39", + "litIndexEnterInvocation: (bpCallgraph)" : "1/22/2021 16:40:39", + "litIndexExitInvocation: (bpCallgraph)" : "1/22/2021 16:40:39", + "litIndexInvocationCount: (bpCallgraph)" : "1/22/2021 16:40:39", + "litIndexTracerClass: (bpCallgraph)" : "1/22/2021 16:40:39", + "sizeCodeForReturn: (bpCallgraph)" : "1/22/2021 16:40:39" } } diff --git a/packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder..st b/packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder..st rename to packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn..st b/packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn..st rename to packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json index 8d96af20..2741ee0a 100644 --- a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "emitCodeForReturn:encoder:" : " 1/22/2021 16:40:39", - "sizeCodeForReturn:" : " 1/22/2021 16:40:39" } } + "emitCodeForReturn:encoder: (bpCallgraph)" : "1/22/2021 16:40:39", + "sizeCodeForReturn: (bpCallgraph)" : "1/22/2021 16:40:39" } } From 4474f01ba7ff2470e6aecbe234c19f56efb4c8bf Mon Sep 17 00:00:00 2001 From: Patrick R Date: Fri, 22 Jan 2021 17:37:59 +0100 Subject: [PATCH 48/71] Uses the instrumentation configuration in deciding which methods to instrument and which to leave alone --- .../instance/compileMessage.notifying..st | 19 -------------- .../BPBrowser.class/methodProperties.json | 1 - .../instance/compileMessage.notifying..st | 25 +++++++++++++++++++ .../methodProperties.json | 1 + .../class/packagesToInstrument.st | 4 +++ .../instance/chooseFor..st | 21 ---------------- .../instance/configure.st | 16 +++++++++--- .../instance/confirm..st | 4 --- .../instance/inform..st | 4 --- .../instance/packagesToInstrument.st | 4 +-- .../instance/uninstrumentSelected.st | 20 +++++++-------- .../methodProperties.json | 12 ++++----- 12 files changed, 59 insertions(+), 72 deletions(-) delete mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st create mode 100644 packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/compileMessage.notifying..st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/class/packagesToInstrument.st delete mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/chooseFor..st delete mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/confirm..st delete mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/inform..st diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st deleted file mode 100644 index 28eb859f..00000000 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st +++ /dev/null @@ -1,19 +0,0 @@ -code pane -compileMessage: aText notifying: aController - - "Wrapped to allow for re-instrumenting methods that already have been instrumented" - | oldMethod result | - oldMethod := self compiledMethod. - oldMethod ifNil: [ - ^ super compileMessage: aText notifying: aController]. - (BPByteCodeRewriter hasTracing: oldMethod) - ifTrue: [ - result := #bpCallgraph withLayerDo: [ - super compileMessage: aText notifying: aController]. - (BPByteCodeRewriter hasActiveTracing: oldMethod) ifTrue: [ - BPByteCodeRewriter - enableTracingForClass: oldMethod methodClass - selector: oldMethod selector]] - ifFalse: [result := super compileMessage: aText notifying: aController]. - sidebar changed: #visualizationMorphs. - ^ result \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json index 67bd3f34..c584885e 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json @@ -8,7 +8,6 @@ "aboutToStyle:requestor:" : "jb 12/3/2020 23:32", "buildCodePaneWith:" : "pre 1/21/2021 18:42", "buildDefaultBrowserWith:" : "pre 1/6/2021 10:50", - "compileMessage:notifying:" : "pre 1/21/2021 14:02", "defaultBrowserTitle" : "pre 1/22/2021 15:56", "messageList" : "pre 9/24/2020 14:26", "rawMessageCategoryList" : "jb 12/3/2020 22:54" } } diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/compileMessage.notifying..st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/compileMessage.notifying..st new file mode 100644 index 00000000..67885fd7 --- /dev/null +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/compileMessage.notifying..st @@ -0,0 +1,25 @@ +code pane +compileMessage: aText notifying: aController + + "Wrapped to allow for re-instrumenting methods that already have been instrumented" + | oldMethod result instrument enable | + oldMethod := self compiledMethod. + instrument := enable := false. + (BPConfigureInstrumentation packagesToInstrument includes: self selectedSystemCategory) + ifTrue: [instrument := enable := true] + ifFalse: [ + oldMethod ifNotNil: [ + instrument := BPByteCodeRewriter hasTracing: oldMethod. + enable := BPByteCodeRewriter hasActiveTracing: oldMethod]]. + + enable + ifTrue: [result := #bpCallgraph withLayerDo: [ + super compileMessage: aText notifying: aController]. + instrument ifTrue: [ + BPByteCodeRewriter + enableTracingForClass: oldMethod methodClass + selector: oldMethod selector]] + ifFalse: [result := super compileMessage: aText notifying: aController]. + + sidebar changed: #visualizationMorphs. + ^ result \ 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 index 075bbade..2b23f976 100644 --- a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/methodProperties.json @@ -22,6 +22,7 @@ "callgraphUninstrumentClassCategory" : "cmfcmf 10/22/2020 17:38", "callgraphUninstrumentMessage" : "cmfcmf 10/23/2020 11:39", "callgraphcodePaneMenu:" : "cmfcmf 11/2/2020 14:22", + "compileMessage:notifying:" : "pre 1/22/2021 17:36", "compressWidthOfSpecs:from:to:" : "cmfcmf 10/30/2020 13:07", "defaultBrowserTitle" : "pre 1/22/2021 15:55", "messageIconFor:" : "cmfcmf 10/23/2020 12:58", 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..4a242aad --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/class/packagesToInstrument.st @@ -0,0 +1,4 @@ +as yet unclassified +packagesToInstrument + + ^ PackagesToInstrument ifNil: [#()] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/chooseFor..st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/chooseFor..st deleted file mode 100644 index 6db740ce..00000000 --- a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/chooseFor..st +++ /dev/null @@ -1,21 +0,0 @@ -choosing packages -chooseFor: aWorkingCopy - - "returns true if any changes were made" - - | originalPackages addedPackages removedPackages subPath | - acceptChanges := false. - instrumentedPackages := self packagesToInstrument. - originalPackages := trackedPackages 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]. - - PackagesToInstrument removeAll: removedPackages. - PackagesToInstrument addAll: addedPackages. - ^ true \ 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 index 97c7cf4b..7055e417 100644 --- a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/configure.st +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/configure.st @@ -5,7 +5,7 @@ configure | originalPackages addedPackages removedPackages | acceptChanges := false. - instrumentedPackages := self packagesToInstrument. + instrumentedPackages := self packagesToInstrument asOrderedCollection sorted. originalPackages := instrumentedPackages copy. self updateUninstrumentedPackages. @@ -16,6 +16,14 @@ configure addedPackages := self instrumentedPackages copyWithoutAll: originalPackages. (removedPackages isEmpty and: [addedPackages isEmpty]) ifTrue: [^ false]. - PackagesToInstrument removeAll: removedPackages. - PackagesToInstrument addAll: addedPackages. - ^ true \ No newline at end of file + (self confirm: 'This will instrument the newly selected +packages and can take considerable time!') + ifTrue: [ + removedPackages do: [:p | + BPByteCodeRewriter uninstrumentClassCategory: p]. + PackagesToInstrument removeAll: removedPackages. + addedPackages do: [:p | + BPByteCodeRewriter instrumentClassCategory: p]. + PackagesToInstrument addAll: addedPackages. + ^ true] + ifFalse: [^ false] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/confirm..st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/confirm..st deleted file mode 100644 index 17e46e57..00000000 --- a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/confirm..st +++ /dev/null @@ -1,4 +0,0 @@ -user interface -confirm: aString - - ^ self confirm: aString. \ 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 deleted file mode 100644 index 9e4d0303..00000000 --- a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/inform..st +++ /dev/null @@ -1,4 +0,0 @@ -user interface -inform: aString - - self inform: aString. \ 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 index e2dfda9a..a4954831 100644 --- a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/packagesToInstrument.st +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/packagesToInstrument.st @@ -1,4 +1,4 @@ choosing packages packagesToInstrument - - ^ PackagesToInstrument ifNil: [PackagesToInstrument := OrderedCollection new] \ No newline at end of file + + ^ PackagesToInstrument ifNil: [PackagesToInstrument := Set new] \ 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 index b9798002..58b194ac 100644 --- a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/uninstrumentSelected.st +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/uninstrumentSelected.st @@ -2,16 +2,16 @@ actions uninstrumentSelected | package | - package := (self trackedPackagesWithTitle at: self selectionTracked). - self trackedPackages remove: package. + package := (self instrumentedPackagesWithTitle at: self selectionInstrumented). + self instrumentedPackages remove: package. - self updateUntrackedPackages. + self updateUninstrumentedPackages. - self changed: #trackedPackagesWithTitle. - self changed: #untrackedPackagesWithTitle. - selectionTracked ifNotNil: - [selectionTracked := selectionTracked min: trackedPackages size + 1. - self changed: #selectionTracked]. - self changed: #hasTrackedSelection. - self changed: #hasUntrackedSelection. + 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/methodProperties.json b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/methodProperties.json index b06cf18f..0dbdc1ad 100644 --- a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/methodProperties.json @@ -1,6 +1,7 @@ { "class" : { - "configure" : "pre 1/22/2021 17:01" }, + "configure" : "pre 1/22/2021 17:01", + "packagesToInstrument" : "pre 1/22/2021 17:32" }, "instance" : { "accept" : "pre 1/22/2021 16:49", "buildButtons:" : "pre 1/22/2021 17:02", @@ -9,22 +10,19 @@ "buildWith:" : "pre 1/22/2021 16:52", "buttonWidth" : "TB 4/22/2018 11:44", "categoriesPlusPrefixes" : "TB 4/22/2018 00:37", - "chooseFor:" : "pre 1/22/2021 17:01", - "configure" : "pre 1/22/2021 17:03", - "confirm:" : "pre 1/22/2021 16:55", + "configure" : "pre 1/22/2021 17:29", "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 1/22/2021 16:59", - "packagesToInstrument" : "pre 1/22/2021 17:01", + "packagesToInstrument" : "pre 1/22/2021 17:28", "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 1/22/2021 16:50", + "uninstrumentSelected" : "pre 1/22/2021 17:25", "uninstrumentedPackages" : "pre 1/22/2021 16:59", "uninstrumentedPackagesWithTitle" : "pre 1/22/2021 17:00", "updateUninstrumentedPackages" : "pre 1/22/2021 17:00" } } From 70ea1d21e6ce382b6570ac9d9c839c75f6e3506e Mon Sep 17 00:00:00 2001 From: Patrick R Date: Mon, 15 Feb 2021 09:53:34 +0100 Subject: [PATCH 49/71] Moves some code to BPBrowser and adds the instrumented packages configuration dialog --- .../instance/compileMessage.notifying..st | 19 ++++++++++++++ .../BPBrowser.class/methodProperties.json | 1 + .../instance/compileMessage.notifying..st | 25 ------------------- .../methodProperties.json | 1 - .../class/packagesToInstrument.st | 4 --- .../instance/chooseFor..st | 21 ++++++++++++++++ .../instance/configure.st | 16 +++--------- .../instance/confirm..st | 4 +++ .../instance/inform..st | 4 +++ .../instance/packagesToInstrument.st | 4 +-- .../instance/uninstrumentSelected.st | 20 +++++++-------- .../methodProperties.json | 12 +++++---- 12 files changed, 72 insertions(+), 59 deletions(-) create mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st delete mode 100644 packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/compileMessage.notifying..st delete mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/class/packagesToInstrument.st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/chooseFor..st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/confirm..st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/inform..st diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st new file mode 100644 index 00000000..28eb859f --- /dev/null +++ b/packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st @@ -0,0 +1,19 @@ +code pane +compileMessage: aText notifying: aController + + "Wrapped to allow for re-instrumenting methods that already have been instrumented" + | oldMethod result | + oldMethod := self compiledMethod. + oldMethod ifNil: [ + ^ super compileMessage: aText notifying: aController]. + (BPByteCodeRewriter hasTracing: oldMethod) + ifTrue: [ + result := #bpCallgraph withLayerDo: [ + super compileMessage: aText notifying: aController]. + (BPByteCodeRewriter hasActiveTracing: oldMethod) ifTrue: [ + BPByteCodeRewriter + enableTracingForClass: oldMethod methodClass + selector: oldMethod selector]] + ifFalse: [result := super compileMessage: aText notifying: aController]. + sidebar changed: #visualizationMorphs. + ^ result \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json index c584885e..67bd3f34 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json @@ -8,6 +8,7 @@ "aboutToStyle:requestor:" : "jb 12/3/2020 23:32", "buildCodePaneWith:" : "pre 1/21/2021 18:42", "buildDefaultBrowserWith:" : "pre 1/6/2021 10:50", + "compileMessage:notifying:" : "pre 1/21/2021 14:02", "defaultBrowserTitle" : "pre 1/22/2021 15:56", "messageList" : "pre 9/24/2020 14:26", "rawMessageCategoryList" : "jb 12/3/2020 22:54" } } diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/compileMessage.notifying..st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/compileMessage.notifying..st deleted file mode 100644 index 67885fd7..00000000 --- a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/compileMessage.notifying..st +++ /dev/null @@ -1,25 +0,0 @@ -code pane -compileMessage: aText notifying: aController - - "Wrapped to allow for re-instrumenting methods that already have been instrumented" - | oldMethod result instrument enable | - oldMethod := self compiledMethod. - instrument := enable := false. - (BPConfigureInstrumentation packagesToInstrument includes: self selectedSystemCategory) - ifTrue: [instrument := enable := true] - ifFalse: [ - oldMethod ifNotNil: [ - instrument := BPByteCodeRewriter hasTracing: oldMethod. - enable := BPByteCodeRewriter hasActiveTracing: oldMethod]]. - - enable - ifTrue: [result := #bpCallgraph withLayerDo: [ - super compileMessage: aText notifying: aController]. - instrument ifTrue: [ - BPByteCodeRewriter - enableTracingForClass: oldMethod methodClass - selector: oldMethod selector]] - ifFalse: [result := super compileMessage: aText notifying: aController]. - - sidebar changed: #visualizationMorphs. - ^ result \ 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 index 2b23f976..075bbade 100644 --- a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/methodProperties.json @@ -22,7 +22,6 @@ "callgraphUninstrumentClassCategory" : "cmfcmf 10/22/2020 17:38", "callgraphUninstrumentMessage" : "cmfcmf 10/23/2020 11:39", "callgraphcodePaneMenu:" : "cmfcmf 11/2/2020 14:22", - "compileMessage:notifying:" : "pre 1/22/2021 17:36", "compressWidthOfSpecs:from:to:" : "cmfcmf 10/30/2020 13:07", "defaultBrowserTitle" : "pre 1/22/2021 15:55", "messageIconFor:" : "cmfcmf 10/23/2020 12:58", diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/class/packagesToInstrument.st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/class/packagesToInstrument.st deleted file mode 100644 index 4a242aad..00000000 --- a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/class/packagesToInstrument.st +++ /dev/null @@ -1,4 +0,0 @@ -as yet unclassified -packagesToInstrument - - ^ PackagesToInstrument ifNil: [#()] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/chooseFor..st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/chooseFor..st new file mode 100644 index 00000000..6db740ce --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/chooseFor..st @@ -0,0 +1,21 @@ +choosing packages +chooseFor: aWorkingCopy + + "returns true if any changes were made" + + | originalPackages addedPackages removedPackages subPath | + acceptChanges := false. + instrumentedPackages := self packagesToInstrument. + originalPackages := trackedPackages 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]. + + PackagesToInstrument removeAll: removedPackages. + PackagesToInstrument addAll: addedPackages. + ^ true \ 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 index 7055e417..97c7cf4b 100644 --- a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/configure.st +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/configure.st @@ -5,7 +5,7 @@ configure | originalPackages addedPackages removedPackages | acceptChanges := false. - instrumentedPackages := self packagesToInstrument asOrderedCollection sorted. + instrumentedPackages := self packagesToInstrument. originalPackages := instrumentedPackages copy. self updateUninstrumentedPackages. @@ -16,14 +16,6 @@ configure addedPackages := self instrumentedPackages copyWithoutAll: originalPackages. (removedPackages isEmpty and: [addedPackages isEmpty]) ifTrue: [^ false]. - (self confirm: 'This will instrument the newly selected -packages and can take considerable time!') - ifTrue: [ - removedPackages do: [:p | - BPByteCodeRewriter uninstrumentClassCategory: p]. - PackagesToInstrument removeAll: removedPackages. - addedPackages do: [:p | - BPByteCodeRewriter instrumentClassCategory: p]. - PackagesToInstrument addAll: addedPackages. - ^ true] - ifFalse: [^ false] \ No newline at end of file + PackagesToInstrument removeAll: removedPackages. + PackagesToInstrument addAll: addedPackages. + ^ true \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/confirm..st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/confirm..st new file mode 100644 index 00000000..17e46e57 --- /dev/null +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/confirm..st @@ -0,0 +1,4 @@ +user interface +confirm: aString + + ^ self confirm: aString. \ 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/packagesToInstrument.st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/packagesToInstrument.st index a4954831..e2dfda9a 100644 --- a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/packagesToInstrument.st +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/packagesToInstrument.st @@ -1,4 +1,4 @@ choosing packages packagesToInstrument - - ^ PackagesToInstrument ifNil: [PackagesToInstrument := Set new] \ No newline at end of file + + ^ PackagesToInstrument ifNil: [PackagesToInstrument := OrderedCollection new] \ 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 index 58b194ac..b9798002 100644 --- a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/uninstrumentSelected.st +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/uninstrumentSelected.st @@ -2,16 +2,16 @@ actions uninstrumentSelected | package | - package := (self instrumentedPackagesWithTitle at: self selectionInstrumented). - self instrumentedPackages remove: package. + package := (self trackedPackagesWithTitle at: self selectionTracked). + self trackedPackages remove: package. - self updateUninstrumentedPackages. + self updateUntrackedPackages. - self changed: #instrumentedPackagesWithTitle. - self changed: #uninstrumentedPackagesWithTitle. - selectionInstrumented ifNotNil: - [selectionInstrumented := selectionInstrumented min: instrumentedPackages size + 1. - self changed: #selectionInstrumented]. - self changed: #hasInstrumentedSelection. - self changed: #hasUninstrumentedSelection. + self changed: #trackedPackagesWithTitle. + self changed: #untrackedPackagesWithTitle. + selectionTracked ifNotNil: + [selectionTracked := selectionTracked min: trackedPackages size + 1. + self changed: #selectionTracked]. + self changed: #hasTrackedSelection. + self changed: #hasUntrackedSelection. \ 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 index 0dbdc1ad..b06cf18f 100644 --- a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/methodProperties.json @@ -1,7 +1,6 @@ { "class" : { - "configure" : "pre 1/22/2021 17:01", - "packagesToInstrument" : "pre 1/22/2021 17:32" }, + "configure" : "pre 1/22/2021 17:01" }, "instance" : { "accept" : "pre 1/22/2021 16:49", "buildButtons:" : "pre 1/22/2021 17:02", @@ -10,19 +9,22 @@ "buildWith:" : "pre 1/22/2021 16:52", "buttonWidth" : "TB 4/22/2018 11:44", "categoriesPlusPrefixes" : "TB 4/22/2018 00:37", - "configure" : "pre 1/22/2021 17:29", + "chooseFor:" : "pre 1/22/2021 17:01", + "configure" : "pre 1/22/2021 17:03", + "confirm:" : "pre 1/22/2021 16:55", "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 1/22/2021 16:59", - "packagesToInstrument" : "pre 1/22/2021 17:28", + "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 1/22/2021 17:25", + "uninstrumentSelected" : "pre 1/22/2021 16:50", "uninstrumentedPackages" : "pre 1/22/2021 16:59", "uninstrumentedPackagesWithTitle" : "pre 1/22/2021 17:00", "updateUninstrumentedPackages" : "pre 1/22/2021 17:00" } } From 7a477b90e42f29e9248b2f52f0da3d2b5c26ff73 Mon Sep 17 00:00:00 2001 From: Patrick R Date: Mon, 15 Feb 2021 09:54:44 +0100 Subject: [PATCH 50/71] Adds recording of sender pc and method --- .../instance/enter.invocation..st | 6 ++++- .../instance/eventsForTree.st | 8 ++++--- .../instance/eventsToString.st | 4 +++- .../methodProperties.json | 6 ++--- .../class/shouldNeverInstrument.selector..st | 4 ++-- .../methodProperties.json | 2 +- ....invocationCount.senderPC.senderMethod..st | 11 +++++++++ .../instance/senderPC..st | 4 ++++ .../methodProperties.json | 2 ++ .../properties.json | 4 +++- ...e. (bpCallgraph).st => additionalSize..st} | 0 ...raph).st => additionalSizeBeforeBlock..st} | 0 ...tCodeForEvaluatedClosureValue.encoder..st} | 0 ...eForEvaluatedFullClosureValue.encoder..st} | 0 ... => emitCodeForEvaluatedValue.encoder..st} | 0 ...graph).st => emitCodeForValue.encoder..st} | 0 ...lock. (bpCallgraph).st => isRootBlock..st} | 0 ...lgraph).st => litIndexBlockIdentifier..st} | 0 ...t => sizeCodeForEvaluatedClosureValue..st} | 0 ... sizeCodeForEvaluatedFullClosureValue..st} | 0 ...raph).st => sizeCodeForEvaluatedValue..st} | 0 ... (bpCallgraph).st => sizeCodeForValue..st} | 0 .../BlockNode.extension/methodProperties.json | 24 +++++++++---------- ...=> generateMethodOfClass.trailer.from..st} | 0 .../methodProperties.json | 2 +- ...g. (bpCallgraph).st => generate.using..st} | 0 ...aph).st => rememberNOPs.range.blockId..st} | 0 .../methodProperties.json | 4 ++-- ...h).st => additionalReturnSize.returns..st} | 0 ...raph).st => emitCodeForReturn.encoder..st} | 0 ...allgraph).st => emitNOPs.stack.n.type..st} | 0 ....st => findEnclosingNonOptimizedBlock..st} | 0 ...t => findEnclosingNonOptimizedBlockId..st} | 0 ...pCallgraph).st => invocationTempIndex..st} | 0 ...lgraph).st => litIndexBlockIdentifier..st} | 0 ...lgraph).st => litIndexEnterInvocation..st} | 0 ...llgraph).st => litIndexExitInvocation..st} | 0 ...lgraph).st => litIndexInvocationCount..st} | 0 ...pCallgraph).st => litIndexTracerClass..st} | 0 ...(bpCallgraph).st => sizeCodeForReturn..st} | 0 .../ParseNode.extension/methodProperties.json | 24 +++++++++---------- ...raph).st => emitCodeForReturn.encoder..st} | 0 ...(bpCallgraph).st => sizeCodeForReturn..st} | 0 .../methodProperties.json | 4 ++-- 44 files changed, 68 insertions(+), 41 deletions(-) create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/class.selector.blockIdx.invocationCount.senderPC.senderMethod..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/senderPC..st rename packages/Babylonian-Core.package/BlockNode.extension/instance/{additionalSize. (bpCallgraph).st => additionalSize..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{additionalSizeBeforeBlock. (bpCallgraph).st => additionalSizeBeforeBlock..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st => emitCodeForEvaluatedClosureValue.encoder..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st => emitCodeForEvaluatedFullClosureValue.encoder..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedValue.encoder. (bpCallgraph).st => emitCodeForEvaluatedValue.encoder..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForValue.encoder. (bpCallgraph).st => emitCodeForValue.encoder..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{isRootBlock. (bpCallgraph).st => isRootBlock..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{litIndexBlockIdentifier. (bpCallgraph).st => litIndexBlockIdentifier..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedClosureValue. (bpCallgraph).st => sizeCodeForEvaluatedClosureValue..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st => sizeCodeForEvaluatedFullClosureValue..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedValue. (bpCallgraph).st => sizeCodeForEvaluatedValue..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForValue. (bpCallgraph).st => sizeCodeForValue..st} (100%) rename packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/{generateMethodOfClass.trailer.from. (bpCallgraph).st => generateMethodOfClass.trailer.from..st} (100%) rename packages/Babylonian-Core.package/MethodNode.extension/instance/{generate.using. (bpCallgraph).st => generate.using..st} (100%) rename packages/Babylonian-Core.package/MethodNode.extension/instance/{rememberNOPs.range.blockId. (bpCallgraph).st => rememberNOPs.range.blockId..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{additionalReturnSize.returns. (bpCallgraph).st => additionalReturnSize.returns..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{emitCodeForReturn.encoder. (bpCallgraph).st => emitCodeForReturn.encoder..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{emitNOPs.stack.n.type. (bpCallgraph).st => emitNOPs.stack.n.type..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{findEnclosingNonOptimizedBlock. (bpCallgraph).st => findEnclosingNonOptimizedBlock..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{findEnclosingNonOptimizedBlockId. (bpCallgraph).st => findEnclosingNonOptimizedBlockId..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{invocationTempIndex. (bpCallgraph).st => invocationTempIndex..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexBlockIdentifier. (bpCallgraph).st => litIndexBlockIdentifier..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexEnterInvocation. (bpCallgraph).st => litIndexEnterInvocation..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexExitInvocation. (bpCallgraph).st => litIndexExitInvocation..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexInvocationCount. (bpCallgraph).st => litIndexInvocationCount..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexTracerClass. (bpCallgraph).st => litIndexTracerClass..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{sizeCodeForReturn. (bpCallgraph).st => sizeCodeForReturn..st} (100%) rename packages/Babylonian-Core.package/VariableNode.extension/instance/{emitCodeForReturn.encoder. (bpCallgraph).st => emitCodeForReturn.encoder..st} (100%) rename packages/Babylonian-Core.package/VariableNode.extension/instance/{sizeCodeForReturn. (bpCallgraph).st => sizeCodeForReturn..st} (100%) diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/enter.invocation..st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/enter.invocation..st index c84a3643..857a0bdb 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/enter.invocation..st +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/enter.invocation..st @@ -1,6 +1,10 @@ tracing enter: aString invocation: aNumber + | senderContext | events nextPut: #enter. events nextPut: aString. - events nextPut: aNumber \ No newline at end of file + 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/eventsForTree.st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsForTree.st index bceef316..b73498cf 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsForTree.st +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsForTree.st @@ -1,7 +1,7 @@ post processing eventsForTree - | callgraph depth depthAfterExit depthMap printContinuesHere eventStream treeCache addToTree prevDepth overwriteDepth executionContinuation | + | callgraph depth depthAfterExit depthMap printContinuesHere eventStream treeCache addToTree prevDepth overwriteDepth executionContinuation senderMethod | depth := 0. depthAfterExit := nil. @@ -39,16 +39,18 @@ eventsForTree eventStream := self eventStream. [eventStream atEnd] whileFalse: [| entry | eventStream next caseOf: { - [#enter] -> [ | parts class selector blockIdx invocationCount | + [#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. + 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]. diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsToString.st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsToString.st index facc5b3d..dd6c2b3b 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsToString.st +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsToString.st @@ -2,7 +2,7 @@ post processing eventsToString - ^ String streamContents: [:stringStream | | depth depthAfterExit depthMap printContinuesHere eventStream | + ^ String streamContents: [:stringStream | | senderMethod senderPC depth depthAfterExit depthMap printContinuesHere eventStream | depth := 0. depthAfterExit := nil. @@ -26,6 +26,8 @@ eventsToString 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; diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json index 036f334d..b0cc4e4c 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json @@ -11,10 +11,10 @@ "instance" : { "blockIdxFromContext:" : "cmfcmf 1/4/2021 12:37", "customEvent:data:" : "cmfcmf 10/23/2020 14:56", - "enter:invocation:" : "cmfcmf 10/20/2020 13:44", + "enter:invocation:" : "pre 1/21/2021 15:14", "eventStream" : "cmfcmf 10/20/2020 13:49", - "eventsForTree" : "cmfcmf 1/4/2021 13:11", - "eventsToString" : "cmfcmf 1/2/2021 14:27", + "eventsForTree" : "pre 1/20/2021 17:46", + "eventsToString" : "pre 1/20/2021 17:47", "eventsToStringForTest" : "cmfcmf 10/7/2020 14:07", "exit:invocation:returns:" : "cmfcmf 10/20/2020 13:47", "initialize" : "cmfcmf 12/5/2020 14:15", diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st index b1807b1e..5603bad5 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st @@ -8,7 +8,7 @@ shouldNeverInstrument: aClass selector: aSymbol {{CompiledMethod . {#valueWithReceiver:arguments:}}. {BlockClosure . {#value . #ensure}}. - {WriteStream . {#nextPut:}}} do: [:tuple | + {WriteStream . {#nextPut:}}} anySatisfy: [:tuple | ((aClass includesBehavior: tuple first) and: [tuple second anySatisfy: [:excludedSelector | excludedSelector == aSymbol]]) ifTrue: [^ true]]. @@ -18,7 +18,7 @@ shouldNeverInstrument: aClass selector: aSymbol {DynamicVariable . {"only check for the class ;)"}}. {BPByteCodeMethodState . {"only check for the class ;)"}}. {BPByteCodeAssociation . {"only check for the class ;)"}} - } do: [:tuple | + } anySatisfy: [:tuple | ((aClass theNonMetaClass includesBehavior: tuple first) and: [tuple second isEmpty or: [tuple second anySatisfy: [:excludedSelector | excludedSelector == aSymbol]]]) ifTrue: [^ true]]. diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json index 80bb9a71..5a71eaa4 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json @@ -40,7 +40,7 @@ "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 1/22/2021 17:27", + "shouldNeverInstrument:selector:" : "pre 1/22/2021 16:40", "teardown" : "cmfcmf 10/7/2020 15:31", "uninstallWrapper:" : "cmfcmf 10/29/2020 13:06", "uninstrumentAll" : "cmfcmf 12/10/2020 12:43", 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/senderPC..st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/senderPC..st new file mode 100644 index 00000000..52efb4e0 --- /dev/null +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/senderPC..st @@ -0,0 +1,4 @@ +accessing +senderPC: aNumber + + senderPC := aNumber \ 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 index c2b1892b..18578e3d 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/methodProperties.json @@ -4,6 +4,7 @@ "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", @@ -17,4 +18,5 @@ "latexLabel" : "cmfcmf 1/4/2021 13:56", "menu:" : "cmfcmf 1/4/2021 20:50", "methodReference" : "cmfcmf 10/30/2020 14:53", + "senderPC:" : "pre 1/20/2021 17:29", "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 index 7a89c21e..faa93a26 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/properties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/properties.json @@ -9,7 +9,9 @@ "class", "selector", "blockIndex", - "invocationCount" ], + "invocationCount", + "senderPC", + "senderMethod" ], "name" : "BPCallgraphEntryEnter", "pools" : [ ], diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json index d243957e..04c00271 100644 --- a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalSize: (bpCallgraph)" : "1/22/2021 16:40:39", - "additionalSizeBeforeBlock: (bpCallgraph)" : "1/22/2021 16:40:39", - "emitCodeForEvaluatedClosureValue:encoder: (bpCallgraph)" : "1/22/2021 16:40:39", - "emitCodeForEvaluatedFullClosureValue:encoder: (bpCallgraph)" : "1/22/2021 16:40:39", - "emitCodeForEvaluatedValue:encoder: (bpCallgraph)" : "1/22/2021 16:40:39", - "emitCodeForValue:encoder: (bpCallgraph)" : "1/22/2021 16:40:39", - "isRootBlock: (bpCallgraph)" : "1/22/2021 16:40:39", - "litIndexBlockIdentifier: (bpCallgraph)" : "1/22/2021 16:40:39", - "sizeCodeForEvaluatedClosureValue: (bpCallgraph)" : "1/22/2021 16:40:39", - "sizeCodeForEvaluatedFullClosureValue: (bpCallgraph)" : "1/22/2021 16:40:39", - "sizeCodeForEvaluatedValue: (bpCallgraph)" : "1/22/2021 16:40:39", - "sizeCodeForValue: (bpCallgraph)" : "1/22/2021 16:40:39" } } + "additionalSize:" : " 2/15/2021 09:53:45", + "additionalSizeBeforeBlock:" : " 2/15/2021 09:53:45", + "emitCodeForEvaluatedClosureValue:encoder:" : " 2/15/2021 09:53:45", + "emitCodeForEvaluatedFullClosureValue:encoder:" : " 2/15/2021 09:53:45", + "emitCodeForEvaluatedValue:encoder:" : " 2/15/2021 09:53:45", + "emitCodeForValue:encoder:" : " 2/15/2021 09:53:45", + "isRootBlock:" : " 2/15/2021 09:53:45", + "litIndexBlockIdentifier:" : " 2/15/2021 09:53:45", + "sizeCodeForEvaluatedClosureValue:" : " 2/15/2021 09:53:45", + "sizeCodeForEvaluatedFullClosureValue:" : " 2/15/2021 09:53:45", + "sizeCodeForEvaluatedValue:" : " 2/15/2021 09:53:45", + "sizeCodeForValue:" : " 2/15/2021 09:53:45" } } diff --git a/packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from. (bpCallgraph).st b/packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from..st similarity index 100% rename from packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from. (bpCallgraph).st rename to packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from..st diff --git a/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json index 9c9fdb9d..d5c5e68c 100644 --- a/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json @@ -3,4 +3,4 @@ }, "instance" : { "genNops:" : "cmfcmf 11/27/2020 13:40", - "generateMethodOfClass:trailer:from: (bpCallgraph)" : "1/22/2021 16:40:39" } } + "generateMethodOfClass:trailer:from:" : " 2/15/2021 09:53:45" } } diff --git a/packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using. (bpCallgraph).st b/packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using..st similarity index 100% rename from packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using. (bpCallgraph).st rename to packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using..st diff --git a/packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId. (bpCallgraph).st b/packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId..st similarity index 100% rename from packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId. (bpCallgraph).st rename to packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId..st diff --git a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json index c571d105..75422353 100644 --- a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "generate:using: (bpCallgraph)" : "1/22/2021 16:40:39", - "rememberNOPs:range:blockId: (bpCallgraph)" : "1/22/2021 16:40:39" } } + "generate:using:" : " 2/15/2021 09:53:45", + "rememberNOPs:range:blockId:" : " 2/15/2021 09:53:45" } } diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json index fb589c34..6f8ac809 100644 --- a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalReturnSize:returns: (bpCallgraph)" : "1/22/2021 16:40:39", - "emitCodeForReturn:encoder: (bpCallgraph)" : "1/22/2021 16:40:39", - "emitNOPs:stack:n:type: (bpCallgraph)" : "1/22/2021 16:40:39", - "findEnclosingNonOptimizedBlock: (bpCallgraph)" : "1/22/2021 16:40:39", - "findEnclosingNonOptimizedBlockId: (bpCallgraph)" : "1/22/2021 16:40:39", - "invocationTempIndex: (bpCallgraph)" : "1/22/2021 16:40:39", - "litIndexBlockIdentifier: (bpCallgraph)" : "1/22/2021 16:40:39", - "litIndexEnterInvocation: (bpCallgraph)" : "1/22/2021 16:40:39", - "litIndexExitInvocation: (bpCallgraph)" : "1/22/2021 16:40:39", - "litIndexInvocationCount: (bpCallgraph)" : "1/22/2021 16:40:39", - "litIndexTracerClass: (bpCallgraph)" : "1/22/2021 16:40:39", - "sizeCodeForReturn: (bpCallgraph)" : "1/22/2021 16:40:39" } } + "additionalReturnSize:returns:" : " 2/15/2021 09:53:45", + "emitCodeForReturn:encoder:" : " 2/15/2021 09:53:45", + "emitNOPs:stack:n:type:" : " 2/15/2021 09:53:45", + "findEnclosingNonOptimizedBlock:" : " 2/15/2021 09:53:45", + "findEnclosingNonOptimizedBlockId:" : " 2/15/2021 09:53:45", + "invocationTempIndex:" : " 2/15/2021 09:53:45", + "litIndexBlockIdentifier:" : " 2/15/2021 09:53:45", + "litIndexEnterInvocation:" : " 2/15/2021 09:53:45", + "litIndexExitInvocation:" : " 2/15/2021 09:53:45", + "litIndexInvocationCount:" : " 2/15/2021 09:53:45", + "litIndexTracerClass:" : " 2/15/2021 09:53:45", + "sizeCodeForReturn:" : " 2/15/2021 09:53:45" } } diff --git a/packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder..st diff --git a/packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st b/packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn..st similarity index 100% rename from packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st rename to packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn..st diff --git a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json index 2741ee0a..e49952bb 100644 --- a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "emitCodeForReturn:encoder: (bpCallgraph)" : "1/22/2021 16:40:39", - "sizeCodeForReturn: (bpCallgraph)" : "1/22/2021 16:40:39" } } + "emitCodeForReturn:encoder:" : " 2/15/2021 09:53:45", + "sizeCodeForReturn:" : " 2/15/2021 09:53:45" } } From 40ee7b8a16098fba47facae638f1c4ddc0a09cf7 Mon Sep 17 00:00:00 2001 From: Patrick R Date: Mon, 15 Feb 2021 10:07:30 +0100 Subject: [PATCH 51/71] Removes the callgraphTracer from the TraceInformation after the callgraph was constructed --- .../instance/callgraph.st | 6 +++-- .../methodProperties.json | 2 +- .../BlockNode.extension/methodProperties.json | 24 +++++++++---------- .../methodProperties.json | 2 +- .../methodProperties.json | 4 ++-- .../ParseNode.extension/methodProperties.json | 24 +++++++++---------- .../methodProperties.json | 4 ++-- 7 files changed, 34 insertions(+), 32 deletions(-) diff --git a/packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/callgraph.st b/packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/callgraph.st index e4e13f49..31857fd2 100644 --- a/packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/callgraph.st +++ b/packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/callgraph.st @@ -1,5 +1,7 @@ -as yet unclassified +accessing callgraph callgraph ifNotNil: [^ callgraph]. - ^ callgraphTracer ifNotNil: [callgraph := callgraphTracer eventsForTree] \ No newline at end of file + ^ callgraphTracer ifNotNil: [ + callgraph := callgraphTracer eventsForTree. + callgraphTracer := nil] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExampleTraceInformation.class/methodProperties.json b/packages/Babylonian-Core.package/BPExampleTraceInformation.class/methodProperties.json index 431b148d..a7987997 100644 --- a/packages/Babylonian-Core.package/BPExampleTraceInformation.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPExampleTraceInformation.class/methodProperties.json @@ -2,7 +2,7 @@ "class" : { }, "instance" : { - "callgraph" : "pre 1/20/2021 16:19", + "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", diff --git a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json index 04c00271..6cd8d3bb 100644 --- a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalSize:" : " 2/15/2021 09:53:45", - "additionalSizeBeforeBlock:" : " 2/15/2021 09:53:45", - "emitCodeForEvaluatedClosureValue:encoder:" : " 2/15/2021 09:53:45", - "emitCodeForEvaluatedFullClosureValue:encoder:" : " 2/15/2021 09:53:45", - "emitCodeForEvaluatedValue:encoder:" : " 2/15/2021 09:53:45", - "emitCodeForValue:encoder:" : " 2/15/2021 09:53:45", - "isRootBlock:" : " 2/15/2021 09:53:45", - "litIndexBlockIdentifier:" : " 2/15/2021 09:53:45", - "sizeCodeForEvaluatedClosureValue:" : " 2/15/2021 09:53:45", - "sizeCodeForEvaluatedFullClosureValue:" : " 2/15/2021 09:53:45", - "sizeCodeForEvaluatedValue:" : " 2/15/2021 09:53:45", - "sizeCodeForValue:" : " 2/15/2021 09:53:45" } } + "additionalSize:" : "2/15/2021 09:53:45", + "additionalSizeBeforeBlock:" : "2/15/2021 09:53:45", + "emitCodeForEvaluatedClosureValue:encoder:" : "2/15/2021 09:53:45", + "emitCodeForEvaluatedFullClosureValue:encoder:" : "2/15/2021 09:53:45", + "emitCodeForEvaluatedValue:encoder:" : "2/15/2021 09:53:45", + "emitCodeForValue:encoder:" : "2/15/2021 09:53:45", + "isRootBlock:" : "2/15/2021 09:53:45", + "litIndexBlockIdentifier:" : "2/15/2021 09:53:45", + "sizeCodeForEvaluatedClosureValue:" : "2/15/2021 09:53:45", + "sizeCodeForEvaluatedFullClosureValue:" : "2/15/2021 09:53:45", + "sizeCodeForEvaluatedValue:" : "2/15/2021 09:53:45", + "sizeCodeForValue:" : "2/15/2021 09:53:45" } } diff --git a/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json index d5c5e68c..be37bb00 100644 --- a/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json @@ -3,4 +3,4 @@ }, "instance" : { "genNops:" : "cmfcmf 11/27/2020 13:40", - "generateMethodOfClass:trailer:from:" : " 2/15/2021 09:53:45" } } + "generateMethodOfClass:trailer:from:" : "2/15/2021 09:53:45" } } diff --git a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json index 75422353..207ffc77 100644 --- a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "generate:using:" : " 2/15/2021 09:53:45", - "rememberNOPs:range:blockId:" : " 2/15/2021 09:53:45" } } + "generate:using:" : "2/15/2021 09:53:45", + "rememberNOPs:range:blockId:" : "2/15/2021 09:53:45" } } diff --git a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json index 6f8ac809..35e18e91 100644 --- a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalReturnSize:returns:" : " 2/15/2021 09:53:45", - "emitCodeForReturn:encoder:" : " 2/15/2021 09:53:45", - "emitNOPs:stack:n:type:" : " 2/15/2021 09:53:45", - "findEnclosingNonOptimizedBlock:" : " 2/15/2021 09:53:45", - "findEnclosingNonOptimizedBlockId:" : " 2/15/2021 09:53:45", - "invocationTempIndex:" : " 2/15/2021 09:53:45", - "litIndexBlockIdentifier:" : " 2/15/2021 09:53:45", - "litIndexEnterInvocation:" : " 2/15/2021 09:53:45", - "litIndexExitInvocation:" : " 2/15/2021 09:53:45", - "litIndexInvocationCount:" : " 2/15/2021 09:53:45", - "litIndexTracerClass:" : " 2/15/2021 09:53:45", - "sizeCodeForReturn:" : " 2/15/2021 09:53:45" } } + "additionalReturnSize:returns:" : "2/15/2021 09:53:45", + "emitCodeForReturn:encoder:" : "2/15/2021 09:53:45", + "emitNOPs:stack:n:type:" : "2/15/2021 09:53:45", + "findEnclosingNonOptimizedBlock:" : "2/15/2021 09:53:45", + "findEnclosingNonOptimizedBlockId:" : "2/15/2021 09:53:45", + "invocationTempIndex:" : "2/15/2021 09:53:45", + "litIndexBlockIdentifier:" : "2/15/2021 09:53:45", + "litIndexEnterInvocation:" : "2/15/2021 09:53:45", + "litIndexExitInvocation:" : "2/15/2021 09:53:45", + "litIndexInvocationCount:" : "2/15/2021 09:53:45", + "litIndexTracerClass:" : "2/15/2021 09:53:45", + "sizeCodeForReturn:" : "2/15/2021 09:53:45" } } diff --git a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json index e49952bb..bb5c5ad1 100644 --- a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "emitCodeForReturn:encoder:" : " 2/15/2021 09:53:45", - "sizeCodeForReturn:" : " 2/15/2021 09:53:45" } } + "emitCodeForReturn:encoder:" : "2/15/2021 09:53:45", + "sizeCodeForReturn:" : "2/15/2021 09:53:45" } } From 0625ba424f646607cfc037400a27c65639e81a72 Mon Sep 17 00:00:00 2001 From: Patrick R Date: Mon, 15 Feb 2021 11:17:00 +0100 Subject: [PATCH 52/71] Adds a simple callgraph browser without icons for the instrumentation status. Makes the selection of colors in the probe morphs more resilient --- .../instance/enter.invocation..st | 4 ++-- .../instance/eventsForTree.st | 4 ++-- .../instance/eventsToString.st | 4 ++-- .../methodProperties.json | 6 ++--- .../class/shouldNeverInstrument.selector..st | 7 +++--- .../methodProperties.json | 2 +- .../BPCallgraph.class/instance/detect..st | 2 +- .../BPCallgraph.class/methodProperties.json | 2 +- .../instance/callgraph.st | 2 +- .../methodProperties.json | 2 +- .../BPMethodExample.class/instance/run.st | 9 +++++-- .../methodProperties.json | 2 +- ...e..st => additionalSize. (bpCallgraph).st} | 0 ...ditionalSizeBeforeBlock. (bpCallgraph).st} | 0 ...tedClosureValue.encoder. (bpCallgraph).st} | 0 ...ullClosureValue.encoder. (bpCallgraph).st} | 0 ...rEvaluatedValue.encoder. (bpCallgraph).st} | 0 ...mitCodeForValue.encoder. (bpCallgraph).st} | 0 ...lock..st => isRootBlock. (bpCallgraph).st} | 0 ...litIndexBlockIdentifier. (bpCallgraph).st} | 0 ...orEvaluatedClosureValue. (bpCallgraph).st} | 0 ...aluatedFullClosureValue. (bpCallgraph).st} | 0 ...zeCodeForEvaluatedValue. (bpCallgraph).st} | 0 ....st => sizeCodeForValue. (bpCallgraph).st} | 0 .../BlockNode.extension/methodProperties.json | 24 +++++++++---------- ...hodOfClass.trailer.from. (bpCallgraph).st} | 0 .../methodProperties.json | 2 +- ...g..st => generate.using. (bpCallgraph).st} | 0 ...emberNOPs.range.blockId. (bpCallgraph).st} | 0 .../methodProperties.json | 4 ++-- ...ionalReturnSize.returns. (bpCallgraph).st} | 0 ...itCodeForReturn.encoder. (bpCallgraph).st} | 0 ...> emitNOPs.stack.n.type. (bpCallgraph).st} | 0 ...losingNonOptimizedBlock. (bpCallgraph).st} | 0 ...singNonOptimizedBlockId. (bpCallgraph).st} | 0 ... => invocationTempIndex. (bpCallgraph).st} | 0 ...litIndexBlockIdentifier. (bpCallgraph).st} | 0 ...litIndexEnterInvocation. (bpCallgraph).st} | 0 ... litIndexExitInvocation. (bpCallgraph).st} | 0 ...litIndexInvocationCount. (bpCallgraph).st} | 0 ... => litIndexTracerClass. (bpCallgraph).st} | 0 ...st => sizeCodeForReturn. (bpCallgraph).st} | 0 .../ParseNode.extension/methodProperties.json | 24 +++++++++---------- ...itCodeForReturn.encoder. (bpCallgraph).st} | 0 ...st => sizeCodeForReturn. (bpCallgraph).st} | 0 .../methodProperties.json | 4 ++-- .../instance/actualExampleList.st | 2 +- .../instance/actualPackageList.st | 2 +- .../methodProperties.json | 4 ++-- .../BPSimpleCallgraphBrowser.class/README.md | 0 .../class/initialize.st | 10 ++++++++ .../instance/messageIconFor..st | 6 +++++ .../methodProperties.json | 5 ++++ .../properties.json | 14 +++++++++++ .../instance/colorForTraceValue.inTrace..st | 1 + .../methodProperties.json | 2 +- 56 files changed, 96 insertions(+), 54 deletions(-) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{additionalSize..st => additionalSize. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{additionalSizeBeforeBlock..st => additionalSizeBeforeBlock. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedClosureValue.encoder..st => emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedFullClosureValue.encoder..st => emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedValue.encoder..st => emitCodeForEvaluatedValue.encoder. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForValue.encoder..st => emitCodeForValue.encoder. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{isRootBlock..st => isRootBlock. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{litIndexBlockIdentifier..st => litIndexBlockIdentifier. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedClosureValue..st => sizeCodeForEvaluatedClosureValue. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedFullClosureValue..st => sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedValue..st => sizeCodeForEvaluatedValue. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForValue..st => sizeCodeForValue. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/{generateMethodOfClass.trailer.from..st => generateMethodOfClass.trailer.from. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/MethodNode.extension/instance/{generate.using..st => generate.using. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/MethodNode.extension/instance/{rememberNOPs.range.blockId..st => rememberNOPs.range.blockId. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{additionalReturnSize.returns..st => additionalReturnSize.returns. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{emitCodeForReturn.encoder..st => emitCodeForReturn.encoder. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{emitNOPs.stack.n.type..st => emitNOPs.stack.n.type. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{findEnclosingNonOptimizedBlock..st => findEnclosingNonOptimizedBlock. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{findEnclosingNonOptimizedBlockId..st => findEnclosingNonOptimizedBlockId. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{invocationTempIndex..st => invocationTempIndex. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexBlockIdentifier..st => litIndexBlockIdentifier. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexEnterInvocation..st => litIndexEnterInvocation. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexExitInvocation..st => litIndexExitInvocation. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexInvocationCount..st => litIndexInvocationCount. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexTracerClass..st => litIndexTracerClass. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{sizeCodeForReturn..st => sizeCodeForReturn. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/VariableNode.extension/instance/{emitCodeForReturn.encoder..st => emitCodeForReturn.encoder. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/VariableNode.extension/instance/{sizeCodeForReturn..st => sizeCodeForReturn. (bpCallgraph).st} (100%) create mode 100644 packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/README.md create mode 100644 packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/class/initialize.st create mode 100644 packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/instance/messageIconFor..st create mode 100644 packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/methodProperties.json create mode 100644 packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/properties.json diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/enter.invocation..st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/enter.invocation..st index 857a0bdb..0a4f1a38 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/enter.invocation..st +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/enter.invocation..st @@ -5,6 +5,6 @@ enter: aString invocation: aNumber events nextPut: #enter. events nextPut: aString. events nextPut: aNumber. - senderContext := thisContext sender sender sender. + "senderContext := thisContext sender sender sender. events nextPut: senderContext pc. - events nextPut: senderContext method. \ No newline at end of file + events nextPut: senderContext method." \ 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 index b73498cf..f08c2d56 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsForTree.st +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsForTree.st @@ -46,8 +46,8 @@ eventsForTree 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. + "senderPC := eventStream next. + senderMethod := eventStream next." entry := BPCallgraphEntryEnter new. entry class: class selector: selector blockIdx: blockIdx invocationCount: invocationCount senderPC: senderPC senderMethod: senderMethod. diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsToString.st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsToString.st index dd6c2b3b..9207b545 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsToString.st +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsToString.st @@ -26,8 +26,8 @@ eventsToString 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. + "senderPC := eventStream next. + senderMethod := eventStream next." stringStream nextPutAll: class; diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json index b0cc4e4c..9042cc7c 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json @@ -11,10 +11,10 @@ "instance" : { "blockIdxFromContext:" : "cmfcmf 1/4/2021 12:37", "customEvent:data:" : "cmfcmf 10/23/2020 14:56", - "enter:invocation:" : "pre 1/21/2021 15:14", + "enter:invocation:" : "pre 2/15/2021 10:52", "eventStream" : "cmfcmf 10/20/2020 13:49", - "eventsForTree" : "pre 1/20/2021 17:46", - "eventsToString" : "pre 1/20/2021 17:47", + "eventsForTree" : "pre 2/15/2021 10:53", + "eventsToString" : "pre 2/15/2021 10:53", "eventsToStringForTest" : "cmfcmf 10/7/2020 14:07", "exit:invocation:returns:" : "cmfcmf 10/20/2020 13:47", "initialize" : "cmfcmf 12/5/2020 14:15", diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st index 5603bad5..1de1a393 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st @@ -4,11 +4,12 @@ shouldNeverInstrument: aClass selector: aSymbol "largely copied from MwMethodWrapper class >> #canWrap:inClass:" | class method | (aClass category beginsWith: 'Babylonian-') ifTrue: [ - aClass category ~= 'Babylonian-Tests-Callgraph-ByteCode-Fixtures' ifTrue: [^ true]]. + ({'Babylonian-Tests-Callgraph-ByteCode-Fixtures' . 'Babylonian-Demo-TreeScene'} includes: aClass category) + ifFalse: [^ true]]. {{CompiledMethod . {#valueWithReceiver:arguments:}}. {BlockClosure . {#value . #ensure}}. - {WriteStream . {#nextPut:}}} anySatisfy: [:tuple | + {WriteStream . {#nextPut:}}} do: [:tuple | ((aClass includesBehavior: tuple first) and: [tuple second anySatisfy: [:excludedSelector | excludedSelector == aSymbol]]) ifTrue: [^ true]]. @@ -18,7 +19,7 @@ shouldNeverInstrument: aClass selector: aSymbol {DynamicVariable . {"only check for the class ;)"}}. {BPByteCodeMethodState . {"only check for the class ;)"}}. {BPByteCodeAssociation . {"only check for the class ;)"}} - } anySatisfy: [:tuple | + } do: [:tuple | ((aClass theNonMetaClass includesBehavior: tuple first) and: [tuple second isEmpty or: [tuple second anySatisfy: [:excludedSelector | excludedSelector == aSymbol]]]) ifTrue: [^ true]]. diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json index 5a71eaa4..7a26ac40 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json @@ -40,7 +40,7 @@ "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 1/22/2021 16:40", + "shouldNeverInstrument:selector:" : "pre 2/15/2021 10:45", "teardown" : "cmfcmf 10/7/2020 15:31", "uninstallWrapper:" : "cmfcmf 10/29/2020 13:06", "uninstrumentAll" : "cmfcmf 12/10/2020 12:43", diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect..st index dad461a6..bdc8abec 100644 --- a/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect..st +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect..st @@ -1,4 +1,4 @@ enumerating detect: aBlock - ^ self detect: aBlock ifFound: [:entry | ^ entry] ifNone: [self errorNotFound: aBlock] \ No newline at end of file + ^ self detect: aBlock ifFound: [:entry | ^ entry] ifNone: [self error: aBlock asString] \ 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 index 1535f620..747306ee 100644 --- a/packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json @@ -6,7 +6,7 @@ "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:" : "pre 2/15/2021 10:21", "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", diff --git a/packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/callgraph.st b/packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/callgraph.st index 31857fd2..390ebb70 100644 --- a/packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/callgraph.st +++ b/packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/callgraph.st @@ -4,4 +4,4 @@ callgraph callgraph ifNotNil: [^ callgraph]. ^ callgraphTracer ifNotNil: [ callgraph := callgraphTracer eventsForTree. - callgraphTracer := nil] \ No newline at end of file + "callgraphTracer := nil"] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExampleTraceInformation.class/methodProperties.json b/packages/Babylonian-Core.package/BPExampleTraceInformation.class/methodProperties.json index a7987997..95cb9854 100644 --- a/packages/Babylonian-Core.package/BPExampleTraceInformation.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPExampleTraceInformation.class/methodProperties.json @@ -2,7 +2,7 @@ "class" : { }, "instance" : { - "callgraph" : "pre 2/15/2021 10:04", + "callgraph" : "pre 2/15/2021 10:27", "callgraphTracer" : "cmfcmf 11/9/2020 15:09", "callgraphTracer:" : "cmfcmf 11/9/2020 15:32", "terminateTracingProcess" : "cmfcmf 11/9/2020 17:00", diff --git a/packages/Babylonian-Core.package/BPMethodExample.class/instance/run.st b/packages/Babylonian-Core.package/BPMethodExample.class/instance/run.st index cb66f605..5ac5b0de 100644 --- a/packages/Babylonian-Core.package/BPMethodExample.class/instance/run.st +++ b/packages/Babylonian-Core.package/BPMethodExample.class/instance/run.st @@ -1,6 +1,11 @@ tracing run - ^ self newReceiver + | receiver arguments | + BPByteCodeCallgraphTracer deactivateDuring: [#bpInstrumented withoutLayerDo: [ + receiver := self newReceiver. + arguments := self newArguments]]. + + ^ receiver perform: self method selector - withArguments: self newArguments \ No newline at end of file + withArguments: arguments \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPMethodExample.class/methodProperties.json b/packages/Babylonian-Core.package/BPMethodExample.class/methodProperties.json index af9195de..3fc4bad4 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 9/28/2020 12:03", "resolveLiveSpecimen:" : "jb 12/1/2020 14:22", - "run" : "pre 1/21/2021 17:18" } } + "run" : "pre 2/15/2021 11:13" } } diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json index 6cd8d3bb..d243957e 100644 --- a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalSize:" : "2/15/2021 09:53:45", - "additionalSizeBeforeBlock:" : "2/15/2021 09:53:45", - "emitCodeForEvaluatedClosureValue:encoder:" : "2/15/2021 09:53:45", - "emitCodeForEvaluatedFullClosureValue:encoder:" : "2/15/2021 09:53:45", - "emitCodeForEvaluatedValue:encoder:" : "2/15/2021 09:53:45", - "emitCodeForValue:encoder:" : "2/15/2021 09:53:45", - "isRootBlock:" : "2/15/2021 09:53:45", - "litIndexBlockIdentifier:" : "2/15/2021 09:53:45", - "sizeCodeForEvaluatedClosureValue:" : "2/15/2021 09:53:45", - "sizeCodeForEvaluatedFullClosureValue:" : "2/15/2021 09:53:45", - "sizeCodeForEvaluatedValue:" : "2/15/2021 09:53:45", - "sizeCodeForValue:" : "2/15/2021 09:53:45" } } + "additionalSize: (bpCallgraph)" : "1/22/2021 16:40:39", + "additionalSizeBeforeBlock: (bpCallgraph)" : "1/22/2021 16:40:39", + "emitCodeForEvaluatedClosureValue:encoder: (bpCallgraph)" : "1/22/2021 16:40:39", + "emitCodeForEvaluatedFullClosureValue:encoder: (bpCallgraph)" : "1/22/2021 16:40:39", + "emitCodeForEvaluatedValue:encoder: (bpCallgraph)" : "1/22/2021 16:40:39", + "emitCodeForValue:encoder: (bpCallgraph)" : "1/22/2021 16:40:39", + "isRootBlock: (bpCallgraph)" : "1/22/2021 16:40:39", + "litIndexBlockIdentifier: (bpCallgraph)" : "1/22/2021 16:40:39", + "sizeCodeForEvaluatedClosureValue: (bpCallgraph)" : "1/22/2021 16:40:39", + "sizeCodeForEvaluatedFullClosureValue: (bpCallgraph)" : "1/22/2021 16:40:39", + "sizeCodeForEvaluatedValue: (bpCallgraph)" : "1/22/2021 16:40:39", + "sizeCodeForValue: (bpCallgraph)" : "1/22/2021 16:40:39" } } 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. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from..st rename to packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json index be37bb00..9c9fdb9d 100644 --- a/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json @@ -3,4 +3,4 @@ }, "instance" : { "genNops:" : "cmfcmf 11/27/2020 13:40", - "generateMethodOfClass:trailer:from:" : "2/15/2021 09:53:45" } } + "generateMethodOfClass:trailer:from: (bpCallgraph)" : "1/22/2021 16:40:39" } } diff --git a/packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using..st b/packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using..st rename to packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using. (bpCallgraph).st 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. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId..st rename to packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json index 207ffc77..c571d105 100644 --- a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "generate:using:" : "2/15/2021 09:53:45", - "rememberNOPs:range:blockId:" : "2/15/2021 09:53:45" } } + "generate:using: (bpCallgraph)" : "1/22/2021 16:40:39", + "rememberNOPs:range:blockId: (bpCallgraph)" : "1/22/2021 16:40:39" } } diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st 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. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json index 35e18e91..fb589c34 100644 --- a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalReturnSize:returns:" : "2/15/2021 09:53:45", - "emitCodeForReturn:encoder:" : "2/15/2021 09:53:45", - "emitNOPs:stack:n:type:" : "2/15/2021 09:53:45", - "findEnclosingNonOptimizedBlock:" : "2/15/2021 09:53:45", - "findEnclosingNonOptimizedBlockId:" : "2/15/2021 09:53:45", - "invocationTempIndex:" : "2/15/2021 09:53:45", - "litIndexBlockIdentifier:" : "2/15/2021 09:53:45", - "litIndexEnterInvocation:" : "2/15/2021 09:53:45", - "litIndexExitInvocation:" : "2/15/2021 09:53:45", - "litIndexInvocationCount:" : "2/15/2021 09:53:45", - "litIndexTracerClass:" : "2/15/2021 09:53:45", - "sizeCodeForReturn:" : "2/15/2021 09:53:45" } } + "additionalReturnSize:returns: (bpCallgraph)" : "1/22/2021 16:40:39", + "emitCodeForReturn:encoder: (bpCallgraph)" : "1/22/2021 16:40:39", + "emitNOPs:stack:n:type: (bpCallgraph)" : "1/22/2021 16:40:39", + "findEnclosingNonOptimizedBlock: (bpCallgraph)" : "1/22/2021 16:40:39", + "findEnclosingNonOptimizedBlockId: (bpCallgraph)" : "1/22/2021 16:40:39", + "invocationTempIndex: (bpCallgraph)" : "1/22/2021 16:40:39", + "litIndexBlockIdentifier: (bpCallgraph)" : "1/22/2021 16:40:39", + "litIndexEnterInvocation: (bpCallgraph)" : "1/22/2021 16:40:39", + "litIndexExitInvocation: (bpCallgraph)" : "1/22/2021 16:40:39", + "litIndexInvocationCount: (bpCallgraph)" : "1/22/2021 16:40:39", + "litIndexTracerClass: (bpCallgraph)" : "1/22/2021 16:40:39", + "sizeCodeForReturn: (bpCallgraph)" : "1/22/2021 16:40:39" } } diff --git a/packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder..st b/packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder..st rename to packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn..st b/packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn..st rename to packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json index bb5c5ad1..2741ee0a 100644 --- a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "emitCodeForReturn:encoder:" : "2/15/2021 09:53:45", - "sizeCodeForReturn:" : "2/15/2021 09:53:45" } } + "emitCodeForReturn:encoder: (bpCallgraph)" : "1/22/2021 16:40:39", + "sizeCodeForReturn: (bpCallgraph)" : "1/22/2021 16:40:39" } } diff --git a/packages/Babylonian-UI.package/BPExamplesBrowser.class/instance/actualExampleList.st b/packages/Babylonian-UI.package/BPExamplesBrowser.class/instance/actualExampleList.st index 2f87a8df..f09d2635 100644 --- a/packages/Babylonian-UI.package/BPExamplesBrowser.class/instance/actualExampleList.st +++ b/packages/Babylonian-UI.package/BPExamplesBrowser.class/instance/actualExampleList.st @@ -10,4 +10,4 @@ actualExampleList writing browsers is boring --pre" (anExample isActive ifTrue: ['aaa'] - ifFalse: ['xxx']) , anExample exampleName]] \ No newline at end of file + ifFalse: ['xxx']) , anExample exampleName] ascending] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPExamplesBrowser.class/instance/actualPackageList.st b/packages/Babylonian-UI.package/BPExamplesBrowser.class/instance/actualPackageList.st index 338fdad2..4081e3b1 100644 --- a/packages/Babylonian-UI.package/BPExamplesBrowser.class/instance/actualPackageList.st +++ b/packages/Babylonian-UI.package/BPExamplesBrowser.class/instance/actualPackageList.st @@ -2,4 +2,4 @@ accessing actualPackageList ^ packageList ifNil: [packageList := (SystemNavigation default allExamples collect: [:anExample | - anExample method methodClass package]) asSet sorted: [:aPackage | aPackage name]] \ No newline at end of file + anExample method methodClass package]) asSet sorted: [:aPackage | aPackage name] ascending] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPExamplesBrowser.class/methodProperties.json b/packages/Babylonian-UI.package/BPExamplesBrowser.class/methodProperties.json index 51bdbbfc..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" : "jb 12/3/2020 22:55", - "actualPackageList" : "jb 12/3/2020 23:33", + "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/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/messageIconFor..st b/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/instance/messageIconFor..st new file mode 100644 index 00000000..2018cb44 --- /dev/null +++ b/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/instance/messageIconFor..st @@ -0,0 +1,6 @@ +callgraph context menus +messageIconFor: aSelector + + ^ ToolIcons iconNamed: (ToolIcons + iconForClass: self selectedClassOrMetaClass + selector: aSelector) \ 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..9a015108 --- /dev/null +++ b/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + "initialize" : "pre 2/15/2021 10:36" }, + "instance" : { + "messageIconFor:" : "pre 2/15/2021 10:09" } } 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/colorForTraceValue.inTrace..st b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/colorForTraceValue.inTrace..st index d69e0526..ff3baf94 100644 --- a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/colorForTraceValue.inTrace..st +++ b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/colorForTraceValue.inTrace..st @@ -3,6 +3,7 @@ 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 | diff --git a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json index ddc822d4..852492aa 100644 --- a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json @@ -3,7 +3,7 @@ "isAbstract" : "pre 9/25/2020 10:15" }, "instance" : { "callgraphMenu:forTrace:" : "pre 1/15/2021 13:47", - "colorForTraceValue:inTrace:" : "pre 1/15/2021 13:46", + "colorForTraceValue:inTrace:" : "pre 2/15/2021 10:21", "filterValues:throughSliderForTrace:" : "pre 9/28/2020 11:21", "initialize" : "pre 1/15/2021 13:49", "listenToSlider:" : "jb 12/7/2020 18:59", From c34a933326d82ca1787e4725e554452110de898a Mon Sep 17 00:00:00 2001 From: Patrick R Date: Mon, 15 Feb 2021 11:18:24 +0100 Subject: [PATCH 53/71] Revert "Adds a simple callgraph browser without icons for the instrumentation status. Makes the selection of colors in the probe morphs more resilient" This reverts commit 0625ba424f646607cfc037400a27c65639e81a72. --- .../instance/enter.invocation..st | 4 ++-- .../instance/eventsForTree.st | 4 ++-- .../instance/eventsToString.st | 4 ++-- .../methodProperties.json | 6 ++--- .../class/shouldNeverInstrument.selector..st | 7 +++--- .../methodProperties.json | 2 +- .../BPCallgraph.class/instance/detect..st | 2 +- .../BPCallgraph.class/methodProperties.json | 2 +- .../instance/callgraph.st | 2 +- .../methodProperties.json | 2 +- .../BPMethodExample.class/instance/run.st | 9 ++----- .../methodProperties.json | 2 +- ...e. (bpCallgraph).st => additionalSize..st} | 0 ...raph).st => additionalSizeBeforeBlock..st} | 0 ...tCodeForEvaluatedClosureValue.encoder..st} | 0 ...eForEvaluatedFullClosureValue.encoder..st} | 0 ... => emitCodeForEvaluatedValue.encoder..st} | 0 ...graph).st => emitCodeForValue.encoder..st} | 0 ...lock. (bpCallgraph).st => isRootBlock..st} | 0 ...lgraph).st => litIndexBlockIdentifier..st} | 0 ...t => sizeCodeForEvaluatedClosureValue..st} | 0 ... sizeCodeForEvaluatedFullClosureValue..st} | 0 ...raph).st => sizeCodeForEvaluatedValue..st} | 0 ... (bpCallgraph).st => sizeCodeForValue..st} | 0 .../BlockNode.extension/methodProperties.json | 24 +++++++++---------- ...=> generateMethodOfClass.trailer.from..st} | 0 .../methodProperties.json | 2 +- ...g. (bpCallgraph).st => generate.using..st} | 0 ...aph).st => rememberNOPs.range.blockId..st} | 0 .../methodProperties.json | 4 ++-- ...h).st => additionalReturnSize.returns..st} | 0 ...raph).st => emitCodeForReturn.encoder..st} | 0 ...allgraph).st => emitNOPs.stack.n.type..st} | 0 ....st => findEnclosingNonOptimizedBlock..st} | 0 ...t => findEnclosingNonOptimizedBlockId..st} | 0 ...pCallgraph).st => invocationTempIndex..st} | 0 ...lgraph).st => litIndexBlockIdentifier..st} | 0 ...lgraph).st => litIndexEnterInvocation..st} | 0 ...llgraph).st => litIndexExitInvocation..st} | 0 ...lgraph).st => litIndexInvocationCount..st} | 0 ...pCallgraph).st => litIndexTracerClass..st} | 0 ...(bpCallgraph).st => sizeCodeForReturn..st} | 0 .../ParseNode.extension/methodProperties.json | 24 +++++++++---------- ...raph).st => emitCodeForReturn.encoder..st} | 0 ...(bpCallgraph).st => sizeCodeForReturn..st} | 0 .../methodProperties.json | 4 ++-- .../instance/actualExampleList.st | 2 +- .../instance/actualPackageList.st | 2 +- .../methodProperties.json | 4 ++-- .../BPSimpleCallgraphBrowser.class/README.md | 0 .../class/initialize.st | 10 -------- .../instance/messageIconFor..st | 6 ----- .../methodProperties.json | 5 ---- .../properties.json | 14 ----------- .../instance/colorForTraceValue.inTrace..st | 1 - .../methodProperties.json | 2 +- 56 files changed, 54 insertions(+), 96 deletions(-) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{additionalSize. (bpCallgraph).st => additionalSize..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{additionalSizeBeforeBlock. (bpCallgraph).st => additionalSizeBeforeBlock..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st => emitCodeForEvaluatedClosureValue.encoder..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st => emitCodeForEvaluatedFullClosureValue.encoder..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedValue.encoder. (bpCallgraph).st => emitCodeForEvaluatedValue.encoder..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForValue.encoder. (bpCallgraph).st => emitCodeForValue.encoder..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{isRootBlock. (bpCallgraph).st => isRootBlock..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{litIndexBlockIdentifier. (bpCallgraph).st => litIndexBlockIdentifier..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedClosureValue. (bpCallgraph).st => sizeCodeForEvaluatedClosureValue..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st => sizeCodeForEvaluatedFullClosureValue..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedValue. (bpCallgraph).st => sizeCodeForEvaluatedValue..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForValue. (bpCallgraph).st => sizeCodeForValue..st} (100%) rename packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/{generateMethodOfClass.trailer.from. (bpCallgraph).st => generateMethodOfClass.trailer.from..st} (100%) rename packages/Babylonian-Core.package/MethodNode.extension/instance/{generate.using. (bpCallgraph).st => generate.using..st} (100%) rename packages/Babylonian-Core.package/MethodNode.extension/instance/{rememberNOPs.range.blockId. (bpCallgraph).st => rememberNOPs.range.blockId..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{additionalReturnSize.returns. (bpCallgraph).st => additionalReturnSize.returns..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{emitCodeForReturn.encoder. (bpCallgraph).st => emitCodeForReturn.encoder..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{emitNOPs.stack.n.type. (bpCallgraph).st => emitNOPs.stack.n.type..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{findEnclosingNonOptimizedBlock. (bpCallgraph).st => findEnclosingNonOptimizedBlock..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{findEnclosingNonOptimizedBlockId. (bpCallgraph).st => findEnclosingNonOptimizedBlockId..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{invocationTempIndex. (bpCallgraph).st => invocationTempIndex..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexBlockIdentifier. (bpCallgraph).st => litIndexBlockIdentifier..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexEnterInvocation. (bpCallgraph).st => litIndexEnterInvocation..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexExitInvocation. (bpCallgraph).st => litIndexExitInvocation..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexInvocationCount. (bpCallgraph).st => litIndexInvocationCount..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexTracerClass. (bpCallgraph).st => litIndexTracerClass..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{sizeCodeForReturn. (bpCallgraph).st => sizeCodeForReturn..st} (100%) rename packages/Babylonian-Core.package/VariableNode.extension/instance/{emitCodeForReturn.encoder. (bpCallgraph).st => emitCodeForReturn.encoder..st} (100%) rename packages/Babylonian-Core.package/VariableNode.extension/instance/{sizeCodeForReturn. (bpCallgraph).st => sizeCodeForReturn..st} (100%) delete mode 100644 packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/README.md delete mode 100644 packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/class/initialize.st delete mode 100644 packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/instance/messageIconFor..st delete mode 100644 packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/methodProperties.json delete mode 100644 packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/properties.json diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/enter.invocation..st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/enter.invocation..st index 0a4f1a38..857a0bdb 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/enter.invocation..st +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/enter.invocation..st @@ -5,6 +5,6 @@ enter: aString invocation: aNumber events nextPut: #enter. events nextPut: aString. events nextPut: aNumber. - "senderContext := thisContext sender sender sender. + senderContext := thisContext sender sender sender. events nextPut: senderContext pc. - events nextPut: senderContext method." \ No newline at end of file + events nextPut: senderContext method. \ 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 index f08c2d56..b73498cf 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsForTree.st +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsForTree.st @@ -46,8 +46,8 @@ eventsForTree 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." + senderPC := eventStream next. + senderMethod := eventStream next. entry := BPCallgraphEntryEnter new. entry class: class selector: selector blockIdx: blockIdx invocationCount: invocationCount senderPC: senderPC senderMethod: senderMethod. diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsToString.st b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsToString.st index 9207b545..dd6c2b3b 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsToString.st +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/eventsToString.st @@ -26,8 +26,8 @@ eventsToString 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." + senderPC := eventStream next. + senderMethod := eventStream next. stringStream nextPutAll: class; diff --git a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json index 9042cc7c..b0cc4e4c 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json @@ -11,10 +11,10 @@ "instance" : { "blockIdxFromContext:" : "cmfcmf 1/4/2021 12:37", "customEvent:data:" : "cmfcmf 10/23/2020 14:56", - "enter:invocation:" : "pre 2/15/2021 10:52", + "enter:invocation:" : "pre 1/21/2021 15:14", "eventStream" : "cmfcmf 10/20/2020 13:49", - "eventsForTree" : "pre 2/15/2021 10:53", - "eventsToString" : "pre 2/15/2021 10:53", + "eventsForTree" : "pre 1/20/2021 17:46", + "eventsToString" : "pre 1/20/2021 17:47", "eventsToStringForTest" : "cmfcmf 10/7/2020 14:07", "exit:invocation:returns:" : "cmfcmf 10/20/2020 13:47", "initialize" : "cmfcmf 12/5/2020 14:15", diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st index 1de1a393..5603bad5 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st @@ -4,12 +4,11 @@ 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'} includes: aClass category) - ifFalse: [^ true]]. + aClass category ~= 'Babylonian-Tests-Callgraph-ByteCode-Fixtures' ifTrue: [^ true]]. {{CompiledMethod . {#valueWithReceiver:arguments:}}. {BlockClosure . {#value . #ensure}}. - {WriteStream . {#nextPut:}}} do: [:tuple | + {WriteStream . {#nextPut:}}} anySatisfy: [:tuple | ((aClass includesBehavior: tuple first) and: [tuple second anySatisfy: [:excludedSelector | excludedSelector == aSymbol]]) ifTrue: [^ true]]. @@ -19,7 +18,7 @@ shouldNeverInstrument: aClass selector: aSymbol {DynamicVariable . {"only check for the class ;)"}}. {BPByteCodeMethodState . {"only check for the class ;)"}}. {BPByteCodeAssociation . {"only check for the class ;)"}} - } do: [:tuple | + } anySatisfy: [:tuple | ((aClass theNonMetaClass includesBehavior: tuple first) and: [tuple second isEmpty or: [tuple second anySatisfy: [:excludedSelector | excludedSelector == aSymbol]]]) ifTrue: [^ true]]. diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json index 7a26ac40..5a71eaa4 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json @@ -40,7 +40,7 @@ "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 2/15/2021 10:45", + "shouldNeverInstrument:selector:" : "pre 1/22/2021 16:40", "teardown" : "cmfcmf 10/7/2020 15:31", "uninstallWrapper:" : "cmfcmf 10/29/2020 13:06", "uninstrumentAll" : "cmfcmf 12/10/2020 12:43", diff --git a/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect..st b/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect..st index bdc8abec..dad461a6 100644 --- a/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect..st +++ b/packages/Babylonian-Core.package/BPCallgraph.class/instance/detect..st @@ -1,4 +1,4 @@ enumerating detect: aBlock - ^ self detect: aBlock ifFound: [:entry | ^ entry] ifNone: [self error: aBlock asString] \ No newline at end of file + ^ 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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json index 747306ee..1535f620 100644 --- a/packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraph.class/methodProperties.json @@ -6,7 +6,7 @@ "allInvocationsOf:" : "cmfcmf 11/3/2020 13:57", "babylonianEntries" : "cmfcmf 10/28/2020 11:01", "commonAncestorOf:ignoringInvocationCounts:" : "cmfcmf 1/4/2021 13:26", - "detect:" : "pre 2/15/2021 10:21", + "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", diff --git a/packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/callgraph.st b/packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/callgraph.st index 390ebb70..31857fd2 100644 --- a/packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/callgraph.st +++ b/packages/Babylonian-Core.package/BPExampleTraceInformation.class/instance/callgraph.st @@ -4,4 +4,4 @@ callgraph callgraph ifNotNil: [^ callgraph]. ^ callgraphTracer ifNotNil: [ callgraph := callgraphTracer eventsForTree. - "callgraphTracer := nil"] \ No newline at end of file + callgraphTracer := nil] \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPExampleTraceInformation.class/methodProperties.json b/packages/Babylonian-Core.package/BPExampleTraceInformation.class/methodProperties.json index 95cb9854..a7987997 100644 --- a/packages/Babylonian-Core.package/BPExampleTraceInformation.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPExampleTraceInformation.class/methodProperties.json @@ -2,7 +2,7 @@ "class" : { }, "instance" : { - "callgraph" : "pre 2/15/2021 10:27", + "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", diff --git a/packages/Babylonian-Core.package/BPMethodExample.class/instance/run.st b/packages/Babylonian-Core.package/BPMethodExample.class/instance/run.st index 5ac5b0de..cb66f605 100644 --- a/packages/Babylonian-Core.package/BPMethodExample.class/instance/run.st +++ b/packages/Babylonian-Core.package/BPMethodExample.class/instance/run.st @@ -1,11 +1,6 @@ tracing run - | receiver arguments | - BPByteCodeCallgraphTracer deactivateDuring: [#bpInstrumented withoutLayerDo: [ - receiver := self newReceiver. - arguments := self newArguments]]. - - ^ receiver + ^ self newReceiver perform: self method selector - withArguments: arguments \ No newline at end of file + withArguments: self newArguments \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPMethodExample.class/methodProperties.json b/packages/Babylonian-Core.package/BPMethodExample.class/methodProperties.json index 3fc4bad4..af9195de 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 9/28/2020 12:03", "resolveLiveSpecimen:" : "jb 12/1/2020 14:22", - "run" : "pre 2/15/2021 11:13" } } + "run" : "pre 1/21/2021 17:18" } } diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json index d243957e..6cd8d3bb 100644 --- a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalSize: (bpCallgraph)" : "1/22/2021 16:40:39", - "additionalSizeBeforeBlock: (bpCallgraph)" : "1/22/2021 16:40:39", - "emitCodeForEvaluatedClosureValue:encoder: (bpCallgraph)" : "1/22/2021 16:40:39", - "emitCodeForEvaluatedFullClosureValue:encoder: (bpCallgraph)" : "1/22/2021 16:40:39", - "emitCodeForEvaluatedValue:encoder: (bpCallgraph)" : "1/22/2021 16:40:39", - "emitCodeForValue:encoder: (bpCallgraph)" : "1/22/2021 16:40:39", - "isRootBlock: (bpCallgraph)" : "1/22/2021 16:40:39", - "litIndexBlockIdentifier: (bpCallgraph)" : "1/22/2021 16:40:39", - "sizeCodeForEvaluatedClosureValue: (bpCallgraph)" : "1/22/2021 16:40:39", - "sizeCodeForEvaluatedFullClosureValue: (bpCallgraph)" : "1/22/2021 16:40:39", - "sizeCodeForEvaluatedValue: (bpCallgraph)" : "1/22/2021 16:40:39", - "sizeCodeForValue: (bpCallgraph)" : "1/22/2021 16:40:39" } } + "additionalSize:" : "2/15/2021 09:53:45", + "additionalSizeBeforeBlock:" : "2/15/2021 09:53:45", + "emitCodeForEvaluatedClosureValue:encoder:" : "2/15/2021 09:53:45", + "emitCodeForEvaluatedFullClosureValue:encoder:" : "2/15/2021 09:53:45", + "emitCodeForEvaluatedValue:encoder:" : "2/15/2021 09:53:45", + "emitCodeForValue:encoder:" : "2/15/2021 09:53:45", + "isRootBlock:" : "2/15/2021 09:53:45", + "litIndexBlockIdentifier:" : "2/15/2021 09:53:45", + "sizeCodeForEvaluatedClosureValue:" : "2/15/2021 09:53:45", + "sizeCodeForEvaluatedFullClosureValue:" : "2/15/2021 09:53:45", + "sizeCodeForEvaluatedValue:" : "2/15/2021 09:53:45", + "sizeCodeForValue:" : "2/15/2021 09:53:45" } } diff --git a/packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from. (bpCallgraph).st b/packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from..st similarity index 100% rename from packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from. (bpCallgraph).st rename to packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from..st diff --git a/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json index 9c9fdb9d..be37bb00 100644 --- a/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json @@ -3,4 +3,4 @@ }, "instance" : { "genNops:" : "cmfcmf 11/27/2020 13:40", - "generateMethodOfClass:trailer:from: (bpCallgraph)" : "1/22/2021 16:40:39" } } + "generateMethodOfClass:trailer:from:" : "2/15/2021 09:53:45" } } diff --git a/packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using. (bpCallgraph).st b/packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using..st similarity index 100% rename from packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using. (bpCallgraph).st rename to packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using..st diff --git a/packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId. (bpCallgraph).st b/packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId..st similarity index 100% rename from packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId. (bpCallgraph).st rename to packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId..st diff --git a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json index c571d105..207ffc77 100644 --- a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "generate:using: (bpCallgraph)" : "1/22/2021 16:40:39", - "rememberNOPs:range:blockId: (bpCallgraph)" : "1/22/2021 16:40:39" } } + "generate:using:" : "2/15/2021 09:53:45", + "rememberNOPs:range:blockId:" : "2/15/2021 09:53:45" } } diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json index fb589c34..35e18e91 100644 --- a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalReturnSize:returns: (bpCallgraph)" : "1/22/2021 16:40:39", - "emitCodeForReturn:encoder: (bpCallgraph)" : "1/22/2021 16:40:39", - "emitNOPs:stack:n:type: (bpCallgraph)" : "1/22/2021 16:40:39", - "findEnclosingNonOptimizedBlock: (bpCallgraph)" : "1/22/2021 16:40:39", - "findEnclosingNonOptimizedBlockId: (bpCallgraph)" : "1/22/2021 16:40:39", - "invocationTempIndex: (bpCallgraph)" : "1/22/2021 16:40:39", - "litIndexBlockIdentifier: (bpCallgraph)" : "1/22/2021 16:40:39", - "litIndexEnterInvocation: (bpCallgraph)" : "1/22/2021 16:40:39", - "litIndexExitInvocation: (bpCallgraph)" : "1/22/2021 16:40:39", - "litIndexInvocationCount: (bpCallgraph)" : "1/22/2021 16:40:39", - "litIndexTracerClass: (bpCallgraph)" : "1/22/2021 16:40:39", - "sizeCodeForReturn: (bpCallgraph)" : "1/22/2021 16:40:39" } } + "additionalReturnSize:returns:" : "2/15/2021 09:53:45", + "emitCodeForReturn:encoder:" : "2/15/2021 09:53:45", + "emitNOPs:stack:n:type:" : "2/15/2021 09:53:45", + "findEnclosingNonOptimizedBlock:" : "2/15/2021 09:53:45", + "findEnclosingNonOptimizedBlockId:" : "2/15/2021 09:53:45", + "invocationTempIndex:" : "2/15/2021 09:53:45", + "litIndexBlockIdentifier:" : "2/15/2021 09:53:45", + "litIndexEnterInvocation:" : "2/15/2021 09:53:45", + "litIndexExitInvocation:" : "2/15/2021 09:53:45", + "litIndexInvocationCount:" : "2/15/2021 09:53:45", + "litIndexTracerClass:" : "2/15/2021 09:53:45", + "sizeCodeForReturn:" : "2/15/2021 09:53:45" } } diff --git a/packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder..st diff --git a/packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st b/packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn..st similarity index 100% rename from packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st rename to packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn..st diff --git a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json index 2741ee0a..bb5c5ad1 100644 --- a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "emitCodeForReturn:encoder: (bpCallgraph)" : "1/22/2021 16:40:39", - "sizeCodeForReturn: (bpCallgraph)" : "1/22/2021 16:40:39" } } + "emitCodeForReturn:encoder:" : "2/15/2021 09:53:45", + "sizeCodeForReturn:" : "2/15/2021 09:53:45" } } diff --git a/packages/Babylonian-UI.package/BPExamplesBrowser.class/instance/actualExampleList.st b/packages/Babylonian-UI.package/BPExamplesBrowser.class/instance/actualExampleList.st index f09d2635..2f87a8df 100644 --- a/packages/Babylonian-UI.package/BPExamplesBrowser.class/instance/actualExampleList.st +++ b/packages/Babylonian-UI.package/BPExamplesBrowser.class/instance/actualExampleList.st @@ -10,4 +10,4 @@ actualExampleList writing browsers is boring --pre" (anExample isActive ifTrue: ['aaa'] - ifFalse: ['xxx']) , anExample exampleName] ascending] \ No newline at end of file + ifFalse: ['xxx']) , anExample exampleName]] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPExamplesBrowser.class/instance/actualPackageList.st b/packages/Babylonian-UI.package/BPExamplesBrowser.class/instance/actualPackageList.st index 4081e3b1..338fdad2 100644 --- a/packages/Babylonian-UI.package/BPExamplesBrowser.class/instance/actualPackageList.st +++ b/packages/Babylonian-UI.package/BPExamplesBrowser.class/instance/actualPackageList.st @@ -2,4 +2,4 @@ accessing actualPackageList ^ packageList ifNil: [packageList := (SystemNavigation default allExamples collect: [:anExample | - anExample method methodClass package]) asSet sorted: [:aPackage | aPackage name] ascending] \ No newline at end of file + anExample method methodClass package]) asSet sorted: [:aPackage | aPackage name]] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPExamplesBrowser.class/methodProperties.json b/packages/Babylonian-UI.package/BPExamplesBrowser.class/methodProperties.json index 13317dbe..51bdbbfc 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 10:29", - "actualPackageList" : "pre 2/15/2021 10:29", + "actualExampleList" : "jb 12/3/2020 22:55", + "actualPackageList" : "jb 12/3/2020 23:33", "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/BPSimpleCallgraphBrowser.class/README.md b/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/README.md deleted file mode 100644 index e69de29b..00000000 diff --git a/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/class/initialize.st b/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/class/initialize.st deleted file mode 100644 index 7e647df1..00000000 --- a/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/class/initialize.st +++ /dev/null @@ -1,10 +0,0 @@ -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/messageIconFor..st b/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/instance/messageIconFor..st deleted file mode 100644 index 2018cb44..00000000 --- a/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/instance/messageIconFor..st +++ /dev/null @@ -1,6 +0,0 @@ -callgraph context menus -messageIconFor: aSelector - - ^ ToolIcons iconNamed: (ToolIcons - iconForClass: self selectedClassOrMetaClass - selector: aSelector) \ 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 deleted file mode 100644 index 9a015108..00000000 --- a/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/methodProperties.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "class" : { - "initialize" : "pre 2/15/2021 10:36" }, - "instance" : { - "messageIconFor:" : "pre 2/15/2021 10:09" } } diff --git a/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/properties.json b/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/properties.json deleted file mode 100644 index 9a0ec36a..00000000 --- a/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/properties.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "category" : "Babylonian-UI", - "classinstvars" : [ - ], - "classvars" : [ - ], - "commentStamp" : "", - "instvars" : [ - ], - "name" : "BPSimpleCallgraphBrowser", - "pools" : [ - ], - "super" : "BPCallgraphBrowser", - "type" : "normal" } diff --git a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/colorForTraceValue.inTrace..st b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/colorForTraceValue.inTrace..st index ff3baf94..d69e0526 100644 --- a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/colorForTraceValue.inTrace..st +++ b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/colorForTraceValue.inTrace..st @@ -3,7 +3,6 @@ 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 | diff --git a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json index 852492aa..ddc822d4 100644 --- a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json @@ -3,7 +3,7 @@ "isAbstract" : "pre 9/25/2020 10:15" }, "instance" : { "callgraphMenu:forTrace:" : "pre 1/15/2021 13:47", - "colorForTraceValue:inTrace:" : "pre 2/15/2021 10:21", + "colorForTraceValue:inTrace:" : "pre 1/15/2021 13:46", "filterValues:throughSliderForTrace:" : "pre 9/28/2020 11:21", "initialize" : "pre 1/15/2021 13:49", "listenToSlider:" : "jb 12/7/2020 18:59", From b4cd5967ec6a35799b3807d94803aeafc555c936 Mon Sep 17 00:00:00 2001 From: Patrick R Date: Mon, 15 Feb 2021 11:19:32 +0100 Subject: [PATCH 54/71] Adds a simple callgraph browser without message icons for instrumentation status and makes the selection of callgraph colors more resilient to the asynchronous creation of callgraphs. --- .../instance/actualExampleList.st | 2 +- .../instance/actualPackageList.st | 2 +- .../BPExamplesBrowser.class/methodProperties.json | 4 ++-- .../BPSimpleCallgraphBrowser.class/README.md | 0 .../class/initialize.st | 10 ++++++++++ .../instance/messageIconFor..st | 6 ++++++ .../methodProperties.json | 5 +++++ .../BPSimpleCallgraphBrowser.class/properties.json | 14 ++++++++++++++ .../instance/colorForTraceValue.inTrace..st | 1 + .../BPTraceBasedMorph.class/methodProperties.json | 2 +- 10 files changed, 41 insertions(+), 5 deletions(-) create mode 100644 packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/README.md create mode 100644 packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/class/initialize.st create mode 100644 packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/instance/messageIconFor..st create mode 100644 packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/methodProperties.json create mode 100644 packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/properties.json diff --git a/packages/Babylonian-UI.package/BPExamplesBrowser.class/instance/actualExampleList.st b/packages/Babylonian-UI.package/BPExamplesBrowser.class/instance/actualExampleList.st index 2f87a8df..f09d2635 100644 --- a/packages/Babylonian-UI.package/BPExamplesBrowser.class/instance/actualExampleList.st +++ b/packages/Babylonian-UI.package/BPExamplesBrowser.class/instance/actualExampleList.st @@ -10,4 +10,4 @@ actualExampleList writing browsers is boring --pre" (anExample isActive ifTrue: ['aaa'] - ifFalse: ['xxx']) , anExample exampleName]] \ No newline at end of file + ifFalse: ['xxx']) , anExample exampleName] ascending] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPExamplesBrowser.class/instance/actualPackageList.st b/packages/Babylonian-UI.package/BPExamplesBrowser.class/instance/actualPackageList.st index 338fdad2..4081e3b1 100644 --- a/packages/Babylonian-UI.package/BPExamplesBrowser.class/instance/actualPackageList.st +++ b/packages/Babylonian-UI.package/BPExamplesBrowser.class/instance/actualPackageList.st @@ -2,4 +2,4 @@ accessing actualPackageList ^ packageList ifNil: [packageList := (SystemNavigation default allExamples collect: [:anExample | - anExample method methodClass package]) asSet sorted: [:aPackage | aPackage name]] \ No newline at end of file + anExample method methodClass package]) asSet sorted: [:aPackage | aPackage name] ascending] \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPExamplesBrowser.class/methodProperties.json b/packages/Babylonian-UI.package/BPExamplesBrowser.class/methodProperties.json index 51bdbbfc..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" : "jb 12/3/2020 22:55", - "actualPackageList" : "jb 12/3/2020 23:33", + "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/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/messageIconFor..st b/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/instance/messageIconFor..st new file mode 100644 index 00000000..2018cb44 --- /dev/null +++ b/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/instance/messageIconFor..st @@ -0,0 +1,6 @@ +callgraph context menus +messageIconFor: aSelector + + ^ ToolIcons iconNamed: (ToolIcons + iconForClass: self selectedClassOrMetaClass + selector: aSelector) \ 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..9a015108 --- /dev/null +++ b/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/methodProperties.json @@ -0,0 +1,5 @@ +{ + "class" : { + "initialize" : "pre 2/15/2021 10:36" }, + "instance" : { + "messageIconFor:" : "pre 2/15/2021 10:09" } } 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/colorForTraceValue.inTrace..st b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/colorForTraceValue.inTrace..st index d69e0526..ff3baf94 100644 --- a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/colorForTraceValue.inTrace..st +++ b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/instance/colorForTraceValue.inTrace..st @@ -3,6 +3,7 @@ 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 | diff --git a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json index ddc822d4..852492aa 100644 --- a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json @@ -3,7 +3,7 @@ "isAbstract" : "pre 9/25/2020 10:15" }, "instance" : { "callgraphMenu:forTrace:" : "pre 1/15/2021 13:47", - "colorForTraceValue:inTrace:" : "pre 1/15/2021 13:46", + "colorForTraceValue:inTrace:" : "pre 2/15/2021 10:21", "filterValues:throughSliderForTrace:" : "pre 9/28/2020 11:21", "initialize" : "pre 1/15/2021 13:49", "listenToSlider:" : "jb 12/7/2020 18:59", From e232a9617a9179e2d12e887269fb51d9272b34e9 Mon Sep 17 00:00:00 2001 From: Patrick R Date: Mon, 15 Feb 2021 11:20:29 +0100 Subject: [PATCH 55/71] Fixes a bug in my "beautiful" #shouldNeverInstrument: (should never have touched it). Added the Demo package to the whitelist --- .../class/shouldNeverInstrument.selector..st | 7 ++++--- .../BPByteCodeRewriter.class/methodProperties.json | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st index 5603bad5..1de1a393 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st @@ -4,11 +4,12 @@ shouldNeverInstrument: aClass selector: aSymbol "largely copied from MwMethodWrapper class >> #canWrap:inClass:" | class method | (aClass category beginsWith: 'Babylonian-') ifTrue: [ - aClass category ~= 'Babylonian-Tests-Callgraph-ByteCode-Fixtures' ifTrue: [^ true]]. + ({'Babylonian-Tests-Callgraph-ByteCode-Fixtures' . 'Babylonian-Demo-TreeScene'} includes: aClass category) + ifFalse: [^ true]]. {{CompiledMethod . {#valueWithReceiver:arguments:}}. {BlockClosure . {#value . #ensure}}. - {WriteStream . {#nextPut:}}} anySatisfy: [:tuple | + {WriteStream . {#nextPut:}}} do: [:tuple | ((aClass includesBehavior: tuple first) and: [tuple second anySatisfy: [:excludedSelector | excludedSelector == aSymbol]]) ifTrue: [^ true]]. @@ -18,7 +19,7 @@ shouldNeverInstrument: aClass selector: aSymbol {DynamicVariable . {"only check for the class ;)"}}. {BPByteCodeMethodState . {"only check for the class ;)"}}. {BPByteCodeAssociation . {"only check for the class ;)"}} - } anySatisfy: [:tuple | + } do: [:tuple | ((aClass theNonMetaClass includesBehavior: tuple first) and: [tuple second isEmpty or: [tuple second anySatisfy: [:excludedSelector | excludedSelector == aSymbol]]]) ifTrue: [^ true]]. diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json index 5a71eaa4..7a26ac40 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json @@ -40,7 +40,7 @@ "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 1/22/2021 16:40", + "shouldNeverInstrument:selector:" : "pre 2/15/2021 10:45", "teardown" : "cmfcmf 10/7/2020 15:31", "uninstallWrapper:" : "cmfcmf 10/29/2020 13:06", "uninstrumentAll" : "cmfcmf 12/10/2020 12:43", From 25a0080ebd9abc604fbbe9c9d95531f64dcbae94 Mon Sep 17 00:00:00 2001 From: Patrick R Date: Mon, 15 Feb 2021 11:21:11 +0100 Subject: [PATCH 56/71] Deactivates the callgraph tracer during setting up receivers and arguments of a method example --- .../BPMethodExample.class/instance/run.st | 9 +++++++-- .../BPMethodExample.class/methodProperties.json | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/Babylonian-Core.package/BPMethodExample.class/instance/run.st b/packages/Babylonian-Core.package/BPMethodExample.class/instance/run.st index cb66f605..5ac5b0de 100644 --- a/packages/Babylonian-Core.package/BPMethodExample.class/instance/run.st +++ b/packages/Babylonian-Core.package/BPMethodExample.class/instance/run.st @@ -1,6 +1,11 @@ tracing run - ^ self newReceiver + | receiver arguments | + BPByteCodeCallgraphTracer deactivateDuring: [#bpInstrumented withoutLayerDo: [ + receiver := self newReceiver. + arguments := self newArguments]]. + + ^ receiver perform: self method selector - withArguments: self newArguments \ No newline at end of file + withArguments: arguments \ No newline at end of file diff --git a/packages/Babylonian-Core.package/BPMethodExample.class/methodProperties.json b/packages/Babylonian-Core.package/BPMethodExample.class/methodProperties.json index af9195de..3fc4bad4 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 9/28/2020 12:03", "resolveLiveSpecimen:" : "jb 12/1/2020 14:22", - "run" : "pre 1/21/2021 17:18" } } + "run" : "pre 2/15/2021 11:13" } } From fa99b40f12e0fe5ffde0e42ff7e7a8ea05c99d39 Mon Sep 17 00:00:00 2001 From: Patrick R Date: Mon, 15 Feb 2021 16:39:54 +0100 Subject: [PATCH 57/71] Adds a fix for wrong offset of temporary and instance variables Co-authored-by: Christian Flach --- ...closingNonOptimizedBlock. (bpCallgraph).st | 22 +++++++++++++++++++ .../ParseNode.extension/methodProperties.json | 1 + 2 files changed, 23 insertions(+) create mode 100644 packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st new file mode 100644 index 00000000..eee5d0d0 --- /dev/null +++ b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).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/methodProperties.json b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json index 35e18e91..09cd20f7 100644 --- a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json @@ -6,6 +6,7 @@ "emitCodeForReturn:encoder:" : "2/15/2021 09:53:45", "emitNOPs:stack:n:type:" : "2/15/2021 09:53:45", "findEnclosingNonOptimizedBlock:" : "2/15/2021 09:53:45", + "findEnclosingNonOptimizedBlock: (bpCallgraph)" : "pre 2/15/2021 16:31", "findEnclosingNonOptimizedBlockId:" : "2/15/2021 09:53:45", "invocationTempIndex:" : "2/15/2021 09:53:45", "litIndexBlockIdentifier:" : "2/15/2021 09:53:45", From d1ed2e5400baa65b7cd5cbea3d0f740ea4ab9dcd Mon Sep 17 00:00:00 2001 From: Patrick R Date: Mon, 15 Feb 2021 16:47:09 +0100 Subject: [PATCH 58/71] Moves layered method code to the right source file --- ...closingNonOptimizedBlock. (bpCallgraph).st | 22 ------------------- .../findEnclosingNonOptimizedBlock..st | 4 ++-- 2 files changed, 2 insertions(+), 24 deletions(-) delete mode 100644 packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st deleted file mode 100644 index eee5d0d0..00000000 --- a/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st +++ /dev/null @@ -1,22 +0,0 @@ -*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/findEnclosingNonOptimizedBlock..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock..st index 83194743..eee5d0d0 100644 --- a/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock..st +++ b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock..st @@ -1,9 +1,8 @@ *Babylonian-Core-Callgraph-ByteCode findEnclosingNonOptimizedBlock: encoder - | node | - (self class == VariableNode or: [self class == TempVariableNode]) + (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, ...). @@ -16,6 +15,7 @@ findEnclosingNonOptimizedBlock: encoder ((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]. From 9e2ef9be260deddd5f0feed9578c2f62b7ddee75 Mon Sep 17 00:00:00 2001 From: Patrick R Date: Mon, 22 Feb 2021 11:38:04 +0100 Subject: [PATCH 59/71] Changes call graph sidebar to initialy display the full call graph and to update correctly on change to example. --- .../BPBrowser.class/methodProperties.json | 2 +- .../BPBrowserSidebar.class/instance/initialize.st | 2 +- .../BPBrowserSidebar.class/instance/setExampleListIndex..st | 6 +++++- .../instance/setVisualizationTypeIndex..st | 5 +++-- .../BPBrowserSidebar.class/methodProperties.json | 6 +++--- 5 files changed, 13 insertions(+), 8 deletions(-) diff --git a/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json index dd71118c..ee0a49cf 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json @@ -8,8 +8,8 @@ "aboutToStyle:requestor:" : "jb 12/3/2020 23:32", "buildCodePaneWith:" : "pre 1/21/2021 18:42", "buildDefaultBrowserWith:" : "pre 1/6/2021 10:50", - "compileMessage:notifying:" : "pre 1/21/2021 14:02", "classIconAt:" : "pre 2/15/2021 11:50", + "compileMessage:notifying:" : "pre 1/21/2021 14:02", "defaultBrowserTitle" : "pre 11/8/2019 17:17", "messageIconFor:" : "pre 2/15/2021 11:51", "messageList" : "pre 9/24/2020 14:26", diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/initialize.st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/initialize.st index ab5165ba..dac685a9 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/initialize.st +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/initialize.st @@ -5,6 +5,6 @@ initialize super initialize. exampleListIndex := 0. - visualizationTypeIndex := 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/setExampleListIndex..st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/setExampleListIndex..st index 5ba17241..c34891dc 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/setExampleListIndex..st +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/setExampleListIndex..st @@ -5,4 +5,8 @@ setExampleListIndex: aNumber exampleListIndex := aNumber. self changed: #getExampleListIndex. self changed: #visualizationMorphs. - self changed: #bottomBarText \ No newline at end of file + 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 index 62cd5855..525ed69e 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/setVisualizationTypeIndex..st +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/setVisualizationTypeIndex..st @@ -2,5 +2,6 @@ visualization type setVisualizationTypeIndex: aNumber visualizationTypeIndex := aNumber. - self changed: #getVisualizationTypeIndex. - self changed: #visualizationMorphs \ No newline at end of file + self + changed: #getVisualizationTypeIndex; + changed: #visualizationMorphs. \ 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 index 64c4c4ee..ee523fd5 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json @@ -15,14 +15,14 @@ "getVisualizationTypeIndex" : "cmfcmf 10/30/2020 14:02", "getVisualizationTypeLabels" : "cmfcmf 10/30/2020 14:09", "getVisualizationTypes" : "cmfcmf 12/31/2020 21:27", - "initialize" : "cmfcmf 11/9/2020 16:32", + "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", - "setExampleListIndex:" : "cmfcmf 11/9/2020 16:29", - "setVisualizationTypeIndex:" : "cmfcmf 10/30/2020 14:10", + "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", "visualizationMorphs" : "cmfcmf 11/4/2020 15:30" } } From 73087376d0f5886d65fa3ff6d93a3d575bb87989 Mon Sep 17 00:00:00 2001 From: Patrick R Date: Mon, 22 Feb 2021 11:51:29 +0100 Subject: [PATCH 60/71] Change the layouting of the callgraph sidebar --- .../BPBrowserSidebar.class/instance/buildWith..st | 6 +++--- .../BPBrowserSidebar.class/methodProperties.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildWith..st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildWith..st index d0b1039b..7cb4f2c9 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildWith..st +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/buildWith..st @@ -9,16 +9,16 @@ buildWith: aBuilder wantsResizeHandles: true; children: { (self buildExampleListWith: aBuilder) - frame: (0@0 corner: 1@0.2); + frame: (0@0 corner: 1@0.1); yourself. (self buildVisualizationTypeWith: aBuilder) frame: (LayoutFrame - fractions: (0@0.2 corner: 1@0.2) + fractions: (0@0.1 corner: 1@0.1) offsets: (0@0 corner: 0@visualizationTypeHeight)); yourself. (self buildVisualizationWith: aBuilder) frame: (LayoutFrame - fractions: (0@0.2 corner: 1@1) + fractions: (0@0.1 corner: 1@1) offsets: (0@visualizationTypeHeight corner: 0@(buttonBarHeight * -1))); yourself. (self buildButtonBarWith: aBuilder) diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json index ee523fd5..643a6c59 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json @@ -7,7 +7,7 @@ "buildExampleListWith:" : "cmfcmf 10/30/2020 15:37", "buildVisualizationTypeWith:" : "cmfcmf 10/30/2020 14:09", "buildVisualizationWith:" : "cmfcmf 10/30/2020 14:08", - "buildWith:" : "cmfcmf 11/2/2020 12:18", + "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", From 688c11bd25b86e49ee4a18ab0caf654b890e463a Mon Sep 17 00:00:00 2001 From: Patrick R Date: Mon, 22 Feb 2021 11:52:06 +0100 Subject: [PATCH 61/71] Slightly reworks the sidebar selection button in the method example morph --- .../instance/addCallgraphMorphs.st | 26 ++++++++++++------- .../instance/updateMorphs.st | 4 +-- .../methodProperties.json | 4 +-- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/addCallgraphMorphs.st b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/addCallgraphMorphs.st index 376fb470..4691fb97 100644 --- a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/addCallgraphMorphs.st +++ b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/addCallgraphMorphs.st @@ -1,19 +1,27 @@ callgraph addCallgraphMorphs - self addMorphBack: (TextMorph new + | sidebarButton | + "self addMorphBack: (TextMorph new color: Color black; hResizing: #shrinkWrap; vResizing: #shrinkWrap; readOnly: true; contents: ''; name: #duration; - yourself). - self addMorphBack: (SimpleButtonMorph new - hResizing: #shrinkWrap; - vResizing: #shrinkWrap; + yourself)." + + sidebarButton := IconicButton new. + sidebarButton + labelGraphic: (BPIcons sidebarIcon scaledToSize: self iconSize * 0.8); name: #contextTrace; - label: 'view in sidebar'; - target: self; - actionSelector: #viewInSidebar - yourself). \ No newline at end of file + 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/updateMorphs.st b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/updateMorphs.st index acee0289..85f2484c 100644 --- a/packages/Babylonian-UI.package/BPExampleMorph.class/instance/updateMorphs.st +++ b/packages/Babylonian-UI.package/BPExampleMorph.class/instance/updateMorphs.st @@ -10,5 +10,5 @@ updateMorphs addExampleNameMorph; addExampleConfigurationButtonMorph; addExampleSpecificMorphs; - addDeleteButtonMorph; - addCallgraphMorphs. \ No newline at end of file + addCallgraphMorphs; + addDeleteButtonMorph \ 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 a539a054..2b75f3cf 100644 --- a/packages/Babylonian-UI.package/BPExampleMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPExampleMorph.class/methodProperties.json @@ -4,7 +4,7 @@ "instance" : { "activateExampleButtonClicked" : "pre 1/6/2021 19:23", "addActivationButtonMorph" : "pre 9/30/2020 10:35", - "addCallgraphMorphs" : "pre 1/15/2021 13:43", + "addCallgraphMorphs" : "pre 2/22/2021 11:50", "addCollapseButtonMorph" : "pre 1/8/2021 14:09", "addDeleteButtonMorph" : "pre 1/6/2021 19:14", "addExampleConfigurationButtonMorph" : "pre 1/21/2021 18:33", @@ -27,5 +27,5 @@ "removeButtonClicked" : "pre 1/6/2021 19:41", "step" : "pre 1/15/2021 13:43", "textEmphasis" : "pre 9/30/2020 10:35", - "updateMorphs" : "pre 1/15/2021 13:44", + "updateMorphs" : "pre 2/22/2021 11:49", "viewInSidebar" : "pre 1/20/2021 17:22" } } From 22e4b21d08dbcfdd82287d2db745492b5824e754 Mon Sep 17 00:00:00 2001 From: Patrick R Date: Mon, 22 Feb 2021 19:05:42 +0100 Subject: [PATCH 62/71] puts the callgraph visualization on the right of the browser (just to try it), fixes the message icon method by copying it --- .../instance/buildWindowWith.specs..st | 5 +++-- .../instance/compressWidthOfSpecs.from.to..st | 6 +++--- .../methodProperties.json | 4 ++-- .../instance/messageIconFor..st | 21 ++++++++++++++++--- .../methodProperties.json | 2 +- .../methodProperties.json | 2 ++ 6 files changed, 29 insertions(+), 11 deletions(-) diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/buildWindowWith.specs..st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/buildWindowWith.specs..st index b8f192e9..9f4577f4 100644 --- a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/buildWindowWith.specs..st +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/buildWindowWith.specs..st @@ -1,11 +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: { - (0@0 corner: (specs first key leftFraction)@1) -> [sidebar buildWith: aBuilder] + ((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/compressWidthOfSpecs.from.to..st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/compressWidthOfSpecs.from.to..st index 1406af22..04752b87 100644 --- a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/compressWidthOfSpecs.from.to..st +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/compressWidthOfSpecs.from.to..st @@ -1,10 +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 + offset. - frame leftFraction: frame leftFraction / aFraction * anotherFraction + offset. + 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/methodProperties.json b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/methodProperties.json index 075bbade..31832af2 100644 --- a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/methodProperties.json @@ -4,7 +4,7 @@ "initialize" : "pre 1/22/2021 15:58", "startUp" : "jb 12/3/2020 23:07" }, "instance" : { - "buildWindowWith:specs:" : "pre 1/20/2021 16:12", + "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", @@ -22,7 +22,7 @@ "callgraphUninstrumentClassCategory" : "cmfcmf 10/22/2020 17:38", "callgraphUninstrumentMessage" : "cmfcmf 10/23/2020 11:39", "callgraphcodePaneMenu:" : "cmfcmf 11/2/2020 14:22", - "compressWidthOfSpecs:from:to:" : "cmfcmf 10/30/2020 13:07", + "compressWidthOfSpecs:from:to:" : "pre 2/22/2021 18:41", "defaultBrowserTitle" : "pre 1/22/2021 15:55", "messageIconFor:" : "cmfcmf 10/23/2020 12:58", "sidebarShowExample:id:traceValue:" : "cmfcmf 11/5/2020 13:00", diff --git a/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/instance/messageIconFor..st b/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/instance/messageIconFor..st index 2018cb44..5fc0b6fc 100644 --- a/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/instance/messageIconFor..st +++ b/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/instance/messageIconFor..st @@ -1,6 +1,21 @@ callgraph context menus messageIconFor: aSelector - ^ ToolIcons iconNamed: (ToolIcons - iconForClass: self selectedClassOrMetaClass - selector: aSelector) \ No newline at end of file + "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 index 9a015108..14465747 100644 --- a/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/methodProperties.json @@ -2,4 +2,4 @@ "class" : { "initialize" : "pre 2/15/2021 10:36" }, "instance" : { - "messageIconFor:" : "pre 2/15/2021 10:09" } } + "messageIconFor:" : "pre 2/22/2021 18:44" } } diff --git a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json index 8abc3b10..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", From 358fd9d49f6cbc971c72f0bd8faeede12f94f820 Mon Sep 17 00:00:00 2001 From: Patrick R Date: Mon, 22 Feb 2021 19:09:27 +0100 Subject: [PATCH 63/71] Adds the call site recording and the corresponding UI which I deactivated right away as it will not work the way I fixed the debugger map for now... --- .../instance/exit.invocation.returns..st | 9 +++++---- .../methodProperties.json | 4 ++-- .../instance/senderMethod.st | 4 ++++ .../instance/senderMethodReference.st | 4 ++++ .../instance/senderPC..st | 4 ---- .../instance/senderPC.st | 4 ++++ .../methodProperties.json | 4 +++- .../ParseNode.extension/methodProperties.json | 1 - .../instance/visualizationMorphs.st | 2 ++ .../BPBrowserSidebar.class/methodProperties.json | 2 +- .../instance/buildWith..st | 10 ++++++++-- .../methodProperties.json | 2 +- .../instance/contentsSelection.st | 14 ++++++++++++++ .../instance/highlightSendIn.at..st | 8 ++++++++ .../BPCallgraphBrowser.class/methodProperties.json | 2 ++ .../BPCallgraphBrowser.class/properties.json | 3 ++- .../instance/doubleClick..st | 2 +- .../instance/setSelectedEntry..st | 4 +++- .../BPCallgraphModel.class/methodProperties.json | 4 ++-- 19 files changed, 66 insertions(+), 21 deletions(-) create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/senderMethod.st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/senderMethodReference.st delete mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/senderPC..st create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/senderPC.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/contentsSelection.st create mode 100644 packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/highlightSendIn.at..st 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 index 93507655..56daa866 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/exit.invocation.returns..st +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/instance/exit.invocation.returns..st @@ -1,7 +1,8 @@ tracing exit: aString invocation: aNumber returns: aBoolean - events nextPut: #exit. - events nextPut: aString. - events nextPut: aNumber. - events nextPut: aBoolean \ No newline at end of file + events + nextPut: #exit; + nextPut: aString; + nextPut: aNumber; + nextPut: aBoolean. \ 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 index b0cc4e4c..a97624bc 100644 --- a/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPByteCodeCallgraphTracer.class/methodProperties.json @@ -11,12 +11,12 @@ "instance" : { "blockIdxFromContext:" : "cmfcmf 1/4/2021 12:37", "customEvent:data:" : "cmfcmf 10/23/2020 14:56", - "enter:invocation:" : "pre 1/21/2021 15:14", + "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:" : "cmfcmf 10/20/2020 13:47", + "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", 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 deleted file mode 100644 index 52efb4e0..00000000 --- a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/senderPC..st +++ /dev/null @@ -1,4 +0,0 @@ -accessing -senderPC: aNumber - - senderPC := aNumber \ 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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/methodProperties.json index 18578e3d..f0a9510b 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/methodProperties.json @@ -18,5 +18,7 @@ "latexLabel" : "cmfcmf 1/4/2021 13:56", "menu:" : "cmfcmf 1/4/2021 20:50", "methodReference" : "cmfcmf 10/30/2020 14:53", - "senderPC:" : "pre 1/20/2021 17:29", + "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/ParseNode.extension/methodProperties.json b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json index 09cd20f7..35e18e91 100644 --- a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json @@ -6,7 +6,6 @@ "emitCodeForReturn:encoder:" : "2/15/2021 09:53:45", "emitNOPs:stack:n:type:" : "2/15/2021 09:53:45", "findEnclosingNonOptimizedBlock:" : "2/15/2021 09:53:45", - "findEnclosingNonOptimizedBlock: (bpCallgraph)" : "pre 2/15/2021 16:31", "findEnclosingNonOptimizedBlockId:" : "2/15/2021 09:53:45", "invocationTempIndex:" : "2/15/2021 09:53:45", "litIndexBlockIdentifier:" : "2/15/2021 09:53:45", diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/visualizationMorphs.st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/visualizationMorphs.st index b53ae63c..69ba1979 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/visualizationMorphs.st +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/visualizationMorphs.st @@ -15,6 +15,8 @@ visualizationMorphs (visualization := class 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 diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json index 643a6c59..4f64ca88 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json @@ -25,4 +25,4 @@ "setVisualizationTypeIndex:" : "pre 2/22/2021 11:35", "showExample:id:traceValue:" : "cmfcmf 11/5/2020 13:01", "showMethod:" : "cmfcmf 11/2/2020 14:34", - "visualizationMorphs" : "cmfcmf 11/4/2020 15:30" } } + "visualizationMorphs" : "pre 2/22/2021 17:59" } } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/buildWith..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/buildWith..st index 26f45e82..f1047fad 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/buildWith..st +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/buildWith..st @@ -4,8 +4,14 @@ buildWith: aBuilder model := BPCallgraphModel new. model callgraph: self callgraph. - model when: #doubleClicked evaluate: [:entry | (entry respondsTo: #methodReference) - ifTrue: [self triggerEvent: #browseMethod with: entry methodReference]]. + 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/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/methodProperties.json index 85f7cd30..93205581 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/methodProperties.json @@ -2,6 +2,6 @@ "class" : { }, "instance" : { - "buildWith:" : "cmfcmf 10/30/2020 16:16", + "buildWith:" : "pre 2/22/2021 18:44", "highlightMethod:" : "cmfcmf 11/2/2020 14:27", "highlightTraceValue:id:" : "cmfcmf 11/9/2020 15:33" } } 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/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/methodProperties.json b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/methodProperties.json index 31832af2..1ed8002a 100644 --- a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/methodProperties.json @@ -23,7 +23,9 @@ "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", + "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 index 443798ef..1c06c579 100644 --- a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/properties.json +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/properties.json @@ -6,7 +6,8 @@ ], "commentStamp" : "", "instvars" : [ - "sidebar" ], + "sidebar", + "selectedPC" ], "name" : "BPCallgraphBrowser", "pools" : [ ], diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/doubleClick..st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/doubleClick..st index fc15d96e..f3609d3c 100644 --- a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/doubleClick..st +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/doubleClick..st @@ -2,4 +2,4 @@ as yet unclassified doubleClick: anObject - self triggerEvent: #doubleClicked with: self getSelectedEntry \ No newline at end of file + self triggerEvent: #doubleClicked with: self getSelectedEntry \ 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 index db646ad7..eb51bd6f 100644 --- a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/setSelectedEntry..st +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/setSelectedEntry..st @@ -2,4 +2,6 @@ as yet unclassified setSelectedEntry: aBPCallgraphEntry selectedEntry := aBPCallgraphEntry. - self changed: #getSelectedEntry \ No newline at end of file + 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/methodProperties.json b/packages/Babylonian-UI.package/BPCallgraphModel.class/methodProperties.json index ab84f29d..a22f616a 100644 --- a/packages/Babylonian-UI.package/BPCallgraphModel.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/methodProperties.json @@ -6,7 +6,7 @@ "callgraph" : "cmfcmf 10/28/2020 10:40", "callgraph:" : "cmfcmf 10/27/2020 14:12", "childrenOf:" : "cmfcmf 11/6/2020 14:29", - "doubleClick:" : "cmfcmf 10/30/2020 14:57", + "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", @@ -33,5 +33,5 @@ "selectPrevBlockCallInSameContext" : "cmfcmf 11/2/2020 14:07", "selectPrevCustomEvent" : "cmfcmf 10/28/2020 11:01", "selectPrevMethodCall" : "cmfcmf 11/2/2020 14:02", - "setSelectedEntry:" : "cmfcmf 10/23/2020 15:38", + "setSelectedEntry:" : "pre 2/22/2021 18:57", "withoutReturnNodes:" : "cmfcmf 11/6/2020 14:29" } } From 0845127ec0c8dfb7a3beb45a7b9d6747cff8b54f Mon Sep 17 00:00:00 2001 From: Patrick R Date: Tue, 2 Mar 2021 18:20:38 +0100 Subject: [PATCH 64/71] Shows the probed source code in the call trace --- .../instance/label.st | 6 ++--- .../methodProperties.json | 2 +- .../instance/enclosedSourceCode.st | 13 ++++++++++ .../methodProperties.json | 1 + .../properties.json | 2 +- .../BPExample.class/methodProperties.json | 2 +- ...e..st => additionalSize. (bpCallgraph).st} | 0 ...ditionalSizeBeforeBlock. (bpCallgraph).st} | 0 ...tedClosureValue.encoder. (bpCallgraph).st} | 0 ...ullClosureValue.encoder. (bpCallgraph).st} | 0 ...rEvaluatedValue.encoder. (bpCallgraph).st} | 0 ...mitCodeForValue.encoder. (bpCallgraph).st} | 0 ...lock..st => isRootBlock. (bpCallgraph).st} | 0 ...litIndexBlockIdentifier. (bpCallgraph).st} | 0 ...orEvaluatedClosureValue. (bpCallgraph).st} | 0 ...aluatedFullClosureValue. (bpCallgraph).st} | 0 ...zeCodeForEvaluatedValue. (bpCallgraph).st} | 0 ....st => sizeCodeForValue. (bpCallgraph).st} | 0 .../BlockNode.extension/methodProperties.json | 24 +++++++++---------- ...hodOfClass.trailer.from. (bpCallgraph).st} | 0 .../methodProperties.json | 2 +- ...g..st => generate.using. (bpCallgraph).st} | 0 ...emberNOPs.range.blockId. (bpCallgraph).st} | 0 .../methodProperties.json | 4 ++-- ...ionalReturnSize.returns. (bpCallgraph).st} | 0 ...itCodeForReturn.encoder. (bpCallgraph).st} | 0 ...> emitNOPs.stack.n.type. (bpCallgraph).st} | 0 ...losingNonOptimizedBlock. (bpCallgraph).st} | 0 ...singNonOptimizedBlockId. (bpCallgraph).st} | 0 ... => invocationTempIndex. (bpCallgraph).st} | 0 ...litIndexBlockIdentifier. (bpCallgraph).st} | 0 ...litIndexEnterInvocation. (bpCallgraph).st} | 0 ... litIndexExitInvocation. (bpCallgraph).st} | 0 ...litIndexInvocationCount. (bpCallgraph).st} | 0 ... => litIndexTracerClass. (bpCallgraph).st} | 0 ...st => sizeCodeForReturn. (bpCallgraph).st} | 0 .../ParseNode.extension/methodProperties.json | 24 +++++++++---------- ...itCodeForReturn.encoder. (bpCallgraph).st} | 0 ...st => sizeCodeForReturn. (bpCallgraph).st} | 0 .../methodProperties.json | 4 ++-- 40 files changed, 49 insertions(+), 35 deletions(-) create mode 100644 packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/instance/enclosedSourceCode.st rename packages/Babylonian-Core.package/BlockNode.extension/instance/{additionalSize..st => additionalSize. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{additionalSizeBeforeBlock..st => additionalSizeBeforeBlock. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedClosureValue.encoder..st => emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedFullClosureValue.encoder..st => emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedValue.encoder..st => emitCodeForEvaluatedValue.encoder. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForValue.encoder..st => emitCodeForValue.encoder. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{isRootBlock..st => isRootBlock. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{litIndexBlockIdentifier..st => litIndexBlockIdentifier. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedClosureValue..st => sizeCodeForEvaluatedClosureValue. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedFullClosureValue..st => sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedValue..st => sizeCodeForEvaluatedValue. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForValue..st => sizeCodeForValue. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/{generateMethodOfClass.trailer.from..st => generateMethodOfClass.trailer.from. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/MethodNode.extension/instance/{generate.using..st => generate.using. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/MethodNode.extension/instance/{rememberNOPs.range.blockId..st => rememberNOPs.range.blockId. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{additionalReturnSize.returns..st => additionalReturnSize.returns. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{emitCodeForReturn.encoder..st => emitCodeForReturn.encoder. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{emitNOPs.stack.n.type..st => emitNOPs.stack.n.type. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{findEnclosingNonOptimizedBlock..st => findEnclosingNonOptimizedBlock. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{findEnclosingNonOptimizedBlockId..st => findEnclosingNonOptimizedBlockId. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{invocationTempIndex..st => invocationTempIndex. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexBlockIdentifier..st => litIndexBlockIdentifier. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexEnterInvocation..st => litIndexEnterInvocation. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexExitInvocation..st => litIndexExitInvocation. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexInvocationCount..st => litIndexInvocationCount. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexTracerClass..st => litIndexTracerClass. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{sizeCodeForReturn..st => sizeCodeForReturn. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/VariableNode.extension/instance/{emitCodeForReturn.encoder..st => emitCodeForReturn.encoder. (bpCallgraph).st} (100%) rename packages/Babylonian-Core.package/VariableNode.extension/instance/{sizeCodeForReturn..st => sizeCodeForReturn. (bpCallgraph).st} (100%) diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/instance/label.st b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/instance/label.st index da5c8de9..53fc12b6 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/instance/label.st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/instance/label.st @@ -4,8 +4,8 @@ label ^ String streamContents: [:s | s nextPutAll: 'Probe hit'; tab; - nextPutAll: 'value: '; + nextPutAll: ''; nextPutAll: (self traceValue tracedValue printStringLimitedTo: 300); tab; - nextPutAll: 'id: '; - nextPutAll: self id asString "probe id"] \ No newline at end of file + 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 index 37624598..03f4bc05 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbe.class/methodProperties.json @@ -4,4 +4,4 @@ "instance" : { "asPathPart" : "cmfcmf 11/4/2020 14:28", "icon" : "cmfcmf 10/28/2020 11:04", - "label" : "cmfcmf 10/28/2020 12:10" } } + "label" : "pre 3/2/2021 18:18" } } 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/methodProperties.json b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/methodProperties.json index b0cb366b..85045d3f 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/methodProperties.json @@ -4,6 +4,7 @@ "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", diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/properties.json b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/properties.json index f04c354c..b1720a6f 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/properties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryBPProbeOrAssertion.class/properties.json @@ -6,7 +6,7 @@ ], "commentStamp" : "", "instvars" : [ - ], + "enclosedSourceCode" ], "name" : "BPCallgraphEntryBPProbeOrAssertion", "pools" : [ ], diff --git a/packages/Babylonian-Core.package/BPExample.class/methodProperties.json b/packages/Babylonian-Core.package/BPExample.class/methodProperties.json index b674bae1..416566b1 100644 --- a/packages/Babylonian-Core.package/BPExample.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPExample.class/methodProperties.json @@ -4,8 +4,8 @@ "alwaysGenerateCallgraph:" : "cmfcmf 11/9/2020 14:51", "bpExamplePragmaPrefix" : "1/22/2021 11:04:38", "bpExamplePragmaPrefixes" : "1/22/2021 11:04:38", - "fromPragma:" : "pre 9/30/2020 10:20", "exampleColors" : "pre 3/2/2021 17:58", + "fromPragma:" : "pre 9/30/2020 10:20", "newFor:" : "pre 9/30/2020 11:08" }, "instance" : { "=" : "pre 8/20/2020 11:56", diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue..st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue..st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json index 6cd8d3bb..e526658a 100644 --- a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalSize:" : "2/15/2021 09:53:45", - "additionalSizeBeforeBlock:" : "2/15/2021 09:53:45", - "emitCodeForEvaluatedClosureValue:encoder:" : "2/15/2021 09:53:45", - "emitCodeForEvaluatedFullClosureValue:encoder:" : "2/15/2021 09:53:45", - "emitCodeForEvaluatedValue:encoder:" : "2/15/2021 09:53:45", - "emitCodeForValue:encoder:" : "2/15/2021 09:53:45", - "isRootBlock:" : "2/15/2021 09:53:45", - "litIndexBlockIdentifier:" : "2/15/2021 09:53:45", - "sizeCodeForEvaluatedClosureValue:" : "2/15/2021 09:53:45", - "sizeCodeForEvaluatedFullClosureValue:" : "2/15/2021 09:53:45", - "sizeCodeForEvaluatedValue:" : "2/15/2021 09:53:45", - "sizeCodeForValue:" : "2/15/2021 09:53:45" } } + "additionalSize: (bpCallgraph)" : "2/15/2021 09:53:45", + "additionalSizeBeforeBlock: (bpCallgraph)" : "2/15/2021 09:53:45", + "emitCodeForEvaluatedClosureValue:encoder: (bpCallgraph)" : "2/15/2021 09:53:45", + "emitCodeForEvaluatedFullClosureValue:encoder: (bpCallgraph)" : "2/15/2021 09:53:45", + "emitCodeForEvaluatedValue:encoder: (bpCallgraph)" : "2/15/2021 09:53:45", + "emitCodeForValue:encoder: (bpCallgraph)" : "2/15/2021 09:53:45", + "isRootBlock: (bpCallgraph)" : "2/15/2021 09:53:45", + "litIndexBlockIdentifier: (bpCallgraph)" : "2/15/2021 09:53:45", + "sizeCodeForEvaluatedClosureValue: (bpCallgraph)" : "2/15/2021 09:53:45", + "sizeCodeForEvaluatedFullClosureValue: (bpCallgraph)" : "2/15/2021 09:53:45", + "sizeCodeForEvaluatedValue: (bpCallgraph)" : "2/15/2021 09:53:45", + "sizeCodeForValue: (bpCallgraph)" : "2/15/2021 09:53:45" } } 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. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from..st rename to packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json index be37bb00..d5655ce7 100644 --- a/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json @@ -3,4 +3,4 @@ }, "instance" : { "genNops:" : "cmfcmf 11/27/2020 13:40", - "generateMethodOfClass:trailer:from:" : "2/15/2021 09:53:45" } } + "generateMethodOfClass:trailer:from: (bpCallgraph)" : "2/15/2021 09:53:45" } } diff --git a/packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using..st b/packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using..st rename to packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using. (bpCallgraph).st 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. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId..st rename to packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json index 207ffc77..8fc3bb30 100644 --- a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "generate:using:" : "2/15/2021 09:53:45", - "rememberNOPs:range:blockId:" : "2/15/2021 09:53:45" } } + "generate:using: (bpCallgraph)" : "2/15/2021 09:53:45", + "rememberNOPs:range:blockId: (bpCallgraph)" : "2/15/2021 09:53:45" } } diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st 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. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn..st b/packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn..st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json index 35e18e91..ff8b365d 100644 --- a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalReturnSize:returns:" : "2/15/2021 09:53:45", - "emitCodeForReturn:encoder:" : "2/15/2021 09:53:45", - "emitNOPs:stack:n:type:" : "2/15/2021 09:53:45", - "findEnclosingNonOptimizedBlock:" : "2/15/2021 09:53:45", - "findEnclosingNonOptimizedBlockId:" : "2/15/2021 09:53:45", - "invocationTempIndex:" : "2/15/2021 09:53:45", - "litIndexBlockIdentifier:" : "2/15/2021 09:53:45", - "litIndexEnterInvocation:" : "2/15/2021 09:53:45", - "litIndexExitInvocation:" : "2/15/2021 09:53:45", - "litIndexInvocationCount:" : "2/15/2021 09:53:45", - "litIndexTracerClass:" : "2/15/2021 09:53:45", - "sizeCodeForReturn:" : "2/15/2021 09:53:45" } } + "additionalReturnSize:returns: (bpCallgraph)" : "2/15/2021 09:53:45", + "emitCodeForReturn:encoder: (bpCallgraph)" : "2/15/2021 09:53:45", + "emitNOPs:stack:n:type: (bpCallgraph)" : "2/15/2021 09:53:45", + "findEnclosingNonOptimizedBlock: (bpCallgraph)" : "2/15/2021 09:53:45", + "findEnclosingNonOptimizedBlockId: (bpCallgraph)" : "2/15/2021 09:53:45", + "invocationTempIndex: (bpCallgraph)" : "2/15/2021 09:53:45", + "litIndexBlockIdentifier: (bpCallgraph)" : "2/15/2021 09:53:45", + "litIndexEnterInvocation: (bpCallgraph)" : "2/15/2021 09:53:45", + "litIndexExitInvocation: (bpCallgraph)" : "2/15/2021 09:53:45", + "litIndexInvocationCount: (bpCallgraph)" : "2/15/2021 09:53:45", + "litIndexTracerClass: (bpCallgraph)" : "2/15/2021 09:53:45", + "sizeCodeForReturn: (bpCallgraph)" : "2/15/2021 09:53:45" } } diff --git a/packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder..st b/packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder..st rename to packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn..st b/packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st similarity index 100% rename from packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn..st rename to packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st diff --git a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json index bb5c5ad1..d87adc90 100644 --- a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "emitCodeForReturn:encoder:" : "2/15/2021 09:53:45", - "sizeCodeForReturn:" : "2/15/2021 09:53:45" } } + "emitCodeForReturn:encoder: (bpCallgraph)" : "2/15/2021 09:53:45", + "sizeCodeForReturn: (bpCallgraph)" : "2/15/2021 09:53:45" } } From af1c5a74ba520a9f8584d3e82249851886132258 Mon Sep 17 00:00:00 2001 From: Patrick R Date: Wed, 10 Mar 2021 11:59:20 +0100 Subject: [PATCH 65/71] Renames the visualization types in the sidebar --- .../BPBrowserSidebar.class/instance/getVisualizationTypes.st | 4 ++-- .../BPBrowserSidebar.class/methodProperties.json | 2 +- .../BPTraceBasedMorph.class/methodProperties.json | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getVisualizationTypes.st b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getVisualizationTypes.st index da816978..17e3a533 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getVisualizationTypes.st +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/getVisualizationTypes.st @@ -3,6 +3,6 @@ getVisualizationTypes ^ { 'callgraph' -> #callgraph. - 'annotation set'-> #annotations. - 'procedure set' -> #methodSet. + 'probes'-> #annotations. + 'methods' -> #methodSet. } \ 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 index 4f64ca88..4e111b21 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json @@ -14,7 +14,7 @@ "getExampleListLabels" : "cmfcmf 10/30/2020 15:39", "getVisualizationTypeIndex" : "cmfcmf 10/30/2020 14:02", "getVisualizationTypeLabels" : "cmfcmf 10/30/2020 14:09", - "getVisualizationTypes" : "cmfcmf 12/31/2020 21:27", + "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", diff --git a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json index a645e11e..f21b98c6 100644 --- a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json @@ -3,8 +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", + "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", From 5f70dbb622cafb60b2b65e413b5fa539c1acc461 Mon Sep 17 00:00:00 2001 From: Patrick R Date: Thu, 11 Mar 2021 15:32:27 +0100 Subject: [PATCH 66/71] Several small UI simplifications * Removed inspect and browse from probe value context menu * Removed emjois for stack frames from call graph * Made the UI for ancestor analysis optional --- .../instance/icon.st | 2 +- .../methodProperties.json | 2 +- ...e. (bpCallgraph).st => additionalSize..st} | 0 ...raph).st => additionalSizeBeforeBlock..st} | 0 ...tCodeForEvaluatedClosureValue.encoder..st} | 0 ...eForEvaluatedFullClosureValue.encoder..st} | 0 ... => emitCodeForEvaluatedValue.encoder..st} | 0 ...graph).st => emitCodeForValue.encoder..st} | 0 ...lock. (bpCallgraph).st => isRootBlock..st} | 0 ...lgraph).st => litIndexBlockIdentifier..st} | 0 ...t => sizeCodeForEvaluatedClosureValue..st} | 0 ... sizeCodeForEvaluatedFullClosureValue..st} | 0 ...raph).st => sizeCodeForEvaluatedValue..st} | 0 ... (bpCallgraph).st => sizeCodeForValue..st} | 0 .../BlockNode.extension/methodProperties.json | 24 +++++++++---------- ...=> generateMethodOfClass.trailer.from..st} | 0 .../methodProperties.json | 2 +- ...g. (bpCallgraph).st => generate.using..st} | 0 ...aph).st => rememberNOPs.range.blockId..st} | 0 .../methodProperties.json | 4 ++-- ...h).st => additionalReturnSize.returns..st} | 0 ...raph).st => emitCodeForReturn.encoder..st} | 0 ...allgraph).st => emitNOPs.stack.n.type..st} | 0 ....st => findEnclosingNonOptimizedBlock..st} | 0 ...t => findEnclosingNonOptimizedBlockId..st} | 0 ...pCallgraph).st => invocationTempIndex..st} | 0 ...lgraph).st => litIndexBlockIdentifier..st} | 0 ...lgraph).st => litIndexEnterInvocation..st} | 0 ...llgraph).st => litIndexExitInvocation..st} | 0 ...lgraph).st => litIndexInvocationCount..st} | 0 ...pCallgraph).st => litIndexTracerClass..st} | 0 ...(bpCallgraph).st => sizeCodeForReturn..st} | 0 .../ParseNode.extension/methodProperties.json | 24 +++++++++---------- ...raph).st => emitCodeForReturn.encoder..st} | 0 ...(bpCallgraph).st => sizeCodeForReturn..st} | 0 .../methodProperties.json | 4 ++-- .../class/showFancyAnalysisInCallgraph..st | 4 ++++ .../class/showFancyAnalysisInCallgraph.st | 8 +++++++ .../methodProperties.json | 3 ++- .../selectInSidebarTracedValue.forExample..st | 7 ++++++ .../instance/valueMorphFor.trace..st | 17 +++++++------ .../BPProbeMorph.class/methodProperties.json | 3 ++- 42 files changed, 62 insertions(+), 42 deletions(-) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{additionalSize. (bpCallgraph).st => additionalSize..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{additionalSizeBeforeBlock. (bpCallgraph).st => additionalSizeBeforeBlock..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st => emitCodeForEvaluatedClosureValue.encoder..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st => emitCodeForEvaluatedFullClosureValue.encoder..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForEvaluatedValue.encoder. (bpCallgraph).st => emitCodeForEvaluatedValue.encoder..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{emitCodeForValue.encoder. (bpCallgraph).st => emitCodeForValue.encoder..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{isRootBlock. (bpCallgraph).st => isRootBlock..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{litIndexBlockIdentifier. (bpCallgraph).st => litIndexBlockIdentifier..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedClosureValue. (bpCallgraph).st => sizeCodeForEvaluatedClosureValue..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st => sizeCodeForEvaluatedFullClosureValue..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForEvaluatedValue. (bpCallgraph).st => sizeCodeForEvaluatedValue..st} (100%) rename packages/Babylonian-Core.package/BlockNode.extension/instance/{sizeCodeForValue. (bpCallgraph).st => sizeCodeForValue..st} (100%) rename packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/{generateMethodOfClass.trailer.from. (bpCallgraph).st => generateMethodOfClass.trailer.from..st} (100%) rename packages/Babylonian-Core.package/MethodNode.extension/instance/{generate.using. (bpCallgraph).st => generate.using..st} (100%) rename packages/Babylonian-Core.package/MethodNode.extension/instance/{rememberNOPs.range.blockId. (bpCallgraph).st => rememberNOPs.range.blockId..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{additionalReturnSize.returns. (bpCallgraph).st => additionalReturnSize.returns..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{emitCodeForReturn.encoder. (bpCallgraph).st => emitCodeForReturn.encoder..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{emitNOPs.stack.n.type. (bpCallgraph).st => emitNOPs.stack.n.type..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{findEnclosingNonOptimizedBlock. (bpCallgraph).st => findEnclosingNonOptimizedBlock..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{findEnclosingNonOptimizedBlockId. (bpCallgraph).st => findEnclosingNonOptimizedBlockId..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{invocationTempIndex. (bpCallgraph).st => invocationTempIndex..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexBlockIdentifier. (bpCallgraph).st => litIndexBlockIdentifier..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexEnterInvocation. (bpCallgraph).st => litIndexEnterInvocation..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexExitInvocation. (bpCallgraph).st => litIndexExitInvocation..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexInvocationCount. (bpCallgraph).st => litIndexInvocationCount..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{litIndexTracerClass. (bpCallgraph).st => litIndexTracerClass..st} (100%) rename packages/Babylonian-Core.package/ParseNode.extension/instance/{sizeCodeForReturn. (bpCallgraph).st => sizeCodeForReturn..st} (100%) rename packages/Babylonian-Core.package/VariableNode.extension/instance/{emitCodeForReturn.encoder. (bpCallgraph).st => emitCodeForReturn.encoder..st} (100%) rename packages/Babylonian-Core.package/VariableNode.extension/instance/{sizeCodeForReturn. (bpCallgraph).st => sizeCodeForReturn..st} (100%) create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebar.class/class/showFancyAnalysisInCallgraph..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebar.class/class/showFancyAnalysisInCallgraph.st create mode 100644 packages/Babylonian-UI.package/BPProbeMorph.class/instance/selectInSidebarTracedValue.forExample..st diff --git a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/icon.st b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/icon.st index 9ad1c90f..e674d622 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/icon.st +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/instance/icon.st @@ -1,4 +1,4 @@ as yet unclassified icon - ^ (BPEmojis emojiForHash: invocationCount + class identityHash + selector identityHash) scaledToSize: 12 \ No newline at end of file + ^ nil \ 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 index f0a9510b..d3eb47a7 100644 --- a/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPCallgraphEntryEnter.class/methodProperties.json @@ -13,7 +13,7 @@ "getClass" : "cmfcmf 10/27/2020 16:48", "getInvocationCount" : "cmfcmf 10/27/2020 16:48", "getSelector" : "cmfcmf 10/27/2020 16:48", - "icon" : "cmfcmf 10/23/2020 16:27", + "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", diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSize..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/additionalSizeBeforeBlock..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedClosureValue.encoder..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedFullClosureValue.encoder..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForEvaluatedValue.encoder..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/emitCodeForValue.encoder..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/isRootBlock..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/litIndexBlockIdentifier..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedClosureValue..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedFullClosureValue..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForEvaluatedValue..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue. (bpCallgraph).st b/packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue..st similarity index 100% rename from packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue. (bpCallgraph).st rename to packages/Babylonian-Core.package/BlockNode.extension/instance/sizeCodeForValue..st diff --git a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json index e526658a..5eec1808 100644 --- a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalSize: (bpCallgraph)" : "2/15/2021 09:53:45", - "additionalSizeBeforeBlock: (bpCallgraph)" : "2/15/2021 09:53:45", - "emitCodeForEvaluatedClosureValue:encoder: (bpCallgraph)" : "2/15/2021 09:53:45", - "emitCodeForEvaluatedFullClosureValue:encoder: (bpCallgraph)" : "2/15/2021 09:53:45", - "emitCodeForEvaluatedValue:encoder: (bpCallgraph)" : "2/15/2021 09:53:45", - "emitCodeForValue:encoder: (bpCallgraph)" : "2/15/2021 09:53:45", - "isRootBlock: (bpCallgraph)" : "2/15/2021 09:53:45", - "litIndexBlockIdentifier: (bpCallgraph)" : "2/15/2021 09:53:45", - "sizeCodeForEvaluatedClosureValue: (bpCallgraph)" : "2/15/2021 09:53:45", - "sizeCodeForEvaluatedFullClosureValue: (bpCallgraph)" : "2/15/2021 09:53:45", - "sizeCodeForEvaluatedValue: (bpCallgraph)" : "2/15/2021 09:53:45", - "sizeCodeForValue: (bpCallgraph)" : "2/15/2021 09:53:45" } } + "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/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from. (bpCallgraph).st b/packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from..st similarity index 100% rename from packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from. (bpCallgraph).st rename to packages/Babylonian-Core.package/BytecodeEncoder.extension/instance/generateMethodOfClass.trailer.from..st diff --git a/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json index d5655ce7..d72bd2a9 100644 --- a/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json @@ -3,4 +3,4 @@ }, "instance" : { "genNops:" : "cmfcmf 11/27/2020 13:40", - "generateMethodOfClass:trailer:from: (bpCallgraph)" : "2/15/2021 09:53:45" } } + "generateMethodOfClass:trailer:from:" : " 3/11/2021 15:28:41" } } diff --git a/packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using. (bpCallgraph).st b/packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using..st similarity index 100% rename from packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using. (bpCallgraph).st rename to packages/Babylonian-Core.package/MethodNode.extension/instance/generate.using..st diff --git a/packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId. (bpCallgraph).st b/packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId..st similarity index 100% rename from packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId. (bpCallgraph).st rename to packages/Babylonian-Core.package/MethodNode.extension/instance/rememberNOPs.range.blockId..st diff --git a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json index 8fc3bb30..962ea77f 100644 --- a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "generate:using: (bpCallgraph)" : "2/15/2021 09:53:45", - "rememberNOPs:range:blockId: (bpCallgraph)" : "2/15/2021 09:53:45" } } + "generate:using:" : " 3/11/2021 15:28:41", + "rememberNOPs:range:blockId:" : " 3/11/2021 15:28:41" } } diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/additionalReturnSize.returns..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/emitCodeForReturn.encoder..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/emitNOPs.stack.n.type..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlock..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/findEnclosingNonOptimizedBlockId..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/invocationTempIndex..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexBlockIdentifier..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexEnterInvocation..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexExitInvocation..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexInvocationCount..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/litIndexTracerClass..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st b/packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn..st similarity index 100% rename from packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st rename to packages/Babylonian-Core.package/ParseNode.extension/instance/sizeCodeForReturn..st diff --git a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json index ff8b365d..c47c1fab 100644 --- a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "class" : { }, "instance" : { - "additionalReturnSize:returns: (bpCallgraph)" : "2/15/2021 09:53:45", - "emitCodeForReturn:encoder: (bpCallgraph)" : "2/15/2021 09:53:45", - "emitNOPs:stack:n:type: (bpCallgraph)" : "2/15/2021 09:53:45", - "findEnclosingNonOptimizedBlock: (bpCallgraph)" : "2/15/2021 09:53:45", - "findEnclosingNonOptimizedBlockId: (bpCallgraph)" : "2/15/2021 09:53:45", - "invocationTempIndex: (bpCallgraph)" : "2/15/2021 09:53:45", - "litIndexBlockIdentifier: (bpCallgraph)" : "2/15/2021 09:53:45", - "litIndexEnterInvocation: (bpCallgraph)" : "2/15/2021 09:53:45", - "litIndexExitInvocation: (bpCallgraph)" : "2/15/2021 09:53:45", - "litIndexInvocationCount: (bpCallgraph)" : "2/15/2021 09:53:45", - "litIndexTracerClass: (bpCallgraph)" : "2/15/2021 09:53:45", - "sizeCodeForReturn: (bpCallgraph)" : "2/15/2021 09:53:45" } } + "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/VariableNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st b/packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder..st similarity index 100% rename from packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder. (bpCallgraph).st rename to packages/Babylonian-Core.package/VariableNode.extension/instance/emitCodeForReturn.encoder..st diff --git a/packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st b/packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn..st similarity index 100% rename from packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn. (bpCallgraph).st rename to packages/Babylonian-Core.package/VariableNode.extension/instance/sizeCodeForReturn..st diff --git a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json index d87adc90..c44d2b8f 100644 --- a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "emitCodeForReturn:encoder: (bpCallgraph)" : "2/15/2021 09:53:45", - "sizeCodeForReturn: (bpCallgraph)" : "2/15/2021 09:53:45" } } + "emitCodeForReturn:encoder:" : " 3/11/2021 15:28:41", + "sizeCodeForReturn:" : " 3/11/2021 15:28:41" } } 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/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json index 4e111b21..ed30d6c9 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json @@ -1,6 +1,7 @@ { "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", 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.trace..st b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valueMorphFor.trace..st index 1f6c3b6d..948d7fde 100644 --- a/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valueMorphFor.trace..st +++ b/packages/Babylonian-UI.package/BPProbeMorph.class/instance/valueMorphFor.trace..st @@ -3,17 +3,16 @@ valueMorphFor: traceValue trace: trace | morph wrapperMorph | morph := traceValue tracedValue bpProbeValueMorphIn: traceValue. - morph on: #click send: #value to: [ | selection | - selection := MenuMorph chooseFrom: {'explore' . 'inspect' . 'browse' . 'view in sidebar' . 'select in callgraph'} lines: {3} title: 'Select action'. + 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] -> [traceValue tracedValue inspect]. - [3] -> [traceValue tracedValue browse]. - [4] -> [self containingBrowser sidebarShowExample: trace example id: self id traceValue: traceValue]. - [5] -> [| entry callgraph | - callgraph := trace example currentCallgraph. - entry := callgraph babylonianEntries detect: [:each | (each respondsTo: #traceValue) and: [each traceValue == traceValue]]. - BPSelectedCallgraphEntries select: entry fromCallgraph: callgraph forExample: trace example]} otherwise: []]. + [2] -> [self containingBrowser sidebarShowExample: trace example id: self id traceValue: traceValue]. + [3] -> [self selectInSidebarTracedValue: traceValue forExample: trace example]} + otherwise: []]. ^ true ifTrue: [ wrapperMorph := BPMorphWithBottomBorder new diff --git a/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPProbeMorph.class/methodProperties.json index e9ab891c..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:trace:" : "pre 1/15/2021 13:57", + "valueMorphFor:trace:" : "pre 3/11/2021 15:27", "valuesMorphFor:" : "pre 1/15/2021 13:58" } } From 12b6b7fde69df7297c75292d2cf4b34e421148cd Mon Sep 17 00:00:00 2001 From: Patrick R Date: Thu, 11 Mar 2021 16:44:16 +0100 Subject: [PATCH 67/71] Implements automatic instrumentation and fixes the configuration dialog for that Also includes the missing class var for the fancy analysis preference --- .../class/shouldNeverInstrument.selector..st | 2 +- .../methodProperties.json | 2 +- .../BlockNode.extension/methodProperties.json | 24 +++++++++--------- .../methodProperties.json | 2 +- .../methodProperties.json | 4 +-- .../ParseNode.extension/methodProperties.json | 24 +++++++++--------- .../methodProperties.json | 4 +-- .../instance/compileMessage.notifying..st | 19 -------------- .../BPBrowser.class/methodProperties.json | 1 - .../BPBrowserSidebar.class/properties.json | 2 +- .../instance/defineMessageFrom.notifying..st | 16 ++++++++++++ .../methodProperties.json | 1 + .../README.md | 1 - .../class/packagesToInstrument.st | 4 +++ .../instance/chooseFor..st | 21 ---------------- .../instance/configure.st | 25 +++++++++++++++---- .../instance/confirm..st | 4 --- .../instance/instrumentedPackagesWithTitle.st | 2 +- .../instance/uninstrumentSelected.st | 20 +++++++-------- .../methodProperties.json | 11 ++++---- .../properties.json | 2 +- 21 files changed, 90 insertions(+), 101 deletions(-) delete mode 100644 packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st create mode 100644 packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/defineMessageFrom.notifying..st create mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/class/packagesToInstrument.st delete mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/chooseFor..st delete mode 100644 packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/confirm..st diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st index 1de1a393..c2d2a745 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/shouldNeverInstrument.selector..st @@ -4,7 +4,7 @@ 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'} includes: aClass category) + ({'Babylonian-Tests-Callgraph-ByteCode-Fixtures' . 'Babylonian-Demo-TreeScene' . 'Babylonian-Demo-Morphs' } includes: aClass category) ifFalse: [^ true]]. {{CompiledMethod . {#valueWithReceiver:arguments:}}. diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json index 7a26ac40..e4cda3e8 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json @@ -40,7 +40,7 @@ "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 2/15/2021 10:45", + "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", diff --git a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json index 5eec1808..af40ac6f 100644 --- a/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BlockNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "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" } } + "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/BytecodeEncoder.extension/methodProperties.json b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json index d72bd2a9..c35e4b13 100644 --- a/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/BytecodeEncoder.extension/methodProperties.json @@ -3,4 +3,4 @@ }, "instance" : { "genNops:" : "cmfcmf 11/27/2020 13:40", - "generateMethodOfClass:trailer:from:" : " 3/11/2021 15:28:41" } } + "generateMethodOfClass:trailer:from:" : "3/11/2021 15:28:41" } } diff --git a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json index 962ea77f..ad0d35a8 100644 --- a/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/MethodNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "generate:using:" : " 3/11/2021 15:28:41", - "rememberNOPs:range:blockId:" : " 3/11/2021 15:28:41" } } + "generate:using:" : "3/11/2021 15:28:41", + "rememberNOPs:range:blockId:" : "3/11/2021 15:28:41" } } diff --git a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json index c47c1fab..93563e09 100644 --- a/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/ParseNode.extension/methodProperties.json @@ -2,15 +2,15 @@ "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" } } + "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/VariableNode.extension/methodProperties.json b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json index c44d2b8f..d4c2fbe4 100644 --- a/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json +++ b/packages/Babylonian-Core.package/VariableNode.extension/methodProperties.json @@ -2,5 +2,5 @@ "class" : { }, "instance" : { - "emitCodeForReturn:encoder:" : " 3/11/2021 15:28:41", - "sizeCodeForReturn:" : " 3/11/2021 15:28:41" } } + "emitCodeForReturn:encoder:" : "3/11/2021 15:28:41", + "sizeCodeForReturn:" : "3/11/2021 15:28:41" } } diff --git a/packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st b/packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st deleted file mode 100644 index 28eb859f..00000000 --- a/packages/Babylonian-UI.package/BPBrowser.class/instance/compileMessage.notifying..st +++ /dev/null @@ -1,19 +0,0 @@ -code pane -compileMessage: aText notifying: aController - - "Wrapped to allow for re-instrumenting methods that already have been instrumented" - | oldMethod result | - oldMethod := self compiledMethod. - oldMethod ifNil: [ - ^ super compileMessage: aText notifying: aController]. - (BPByteCodeRewriter hasTracing: oldMethod) - ifTrue: [ - result := #bpCallgraph withLayerDo: [ - super compileMessage: aText notifying: aController]. - (BPByteCodeRewriter hasActiveTracing: oldMethod) ifTrue: [ - BPByteCodeRewriter - enableTracingForClass: oldMethod methodClass - selector: oldMethod selector]] - ifFalse: [result := super compileMessage: aText notifying: aController]. - sidebar changed: #visualizationMorphs. - ^ result \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json index ee0a49cf..05ab8481 100644 --- a/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowser.class/methodProperties.json @@ -9,7 +9,6 @@ "buildCodePaneWith:" : "pre 1/21/2021 18:42", "buildDefaultBrowserWith:" : "pre 1/6/2021 10:50", "classIconAt:" : "pre 2/15/2021 11:50", - "compileMessage:notifying:" : "pre 1/21/2021 14:02", "defaultBrowserTitle" : "pre 11/8/2019 17:17", "messageIconFor:" : "pre 2/15/2021 11:51", "messageList" : "pre 9/24/2020 14:26", diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/properties.json b/packages/Babylonian-UI.package/BPBrowserSidebar.class/properties.json index 3e05ee4f..d47d46ee 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/properties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/properties.json @@ -3,7 +3,7 @@ "classinstvars" : [ ], "classvars" : [ - ], + "ShowFancyAnalysisForCallgraph" ], "commentStamp" : "", "instvars" : [ "exampleListIndex", 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..47249dea --- /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 changed: #visualizationMorphs. + ^ resultingSelector \ 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 index 1ed8002a..d5edf769 100644 --- a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/methodProperties.json @@ -25,6 +25,7 @@ "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 16:11", "highlightSendIn:at:" : "pre 2/22/2021 18:20", "messageIconFor:" : "cmfcmf 10/23/2020 12:58", "sidebarShowExample:id:traceValue:" : "cmfcmf 11/5/2020 13:00", diff --git a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/README.md b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/README.md index 6858a45d..e69de29b 100644 --- a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/README.md +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/README.md @@ -1 +0,0 @@ -I allow users to add or remove packages from a working copy. Users choose from class categories in the system, so this is not necessarily dependent on Monticello packages. \ 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/chooseFor..st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/chooseFor..st deleted file mode 100644 index 6db740ce..00000000 --- a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/chooseFor..st +++ /dev/null @@ -1,21 +0,0 @@ -choosing packages -chooseFor: aWorkingCopy - - "returns true if any changes were made" - - | originalPackages addedPackages removedPackages subPath | - acceptChanges := false. - instrumentedPackages := self packagesToInstrument. - originalPackages := trackedPackages 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]. - - PackagesToInstrument removeAll: removedPackages. - PackagesToInstrument addAll: addedPackages. - ^ true \ 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 index 97c7cf4b..4c38cead 100644 --- a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/configure.st +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/configure.st @@ -3,9 +3,9 @@ configure "returns true if any changes were made" - | originalPackages addedPackages removedPackages | + | originalPackages addedPackages removedPackages warning | acceptChanges := false. - instrumentedPackages := self packagesToInstrument. + instrumentedPackages := self packagesToInstrument asOrderedCollection sorted. originalPackages := instrumentedPackages copy. self updateUninstrumentedPackages. @@ -16,6 +16,21 @@ configure addedPackages := self instrumentedPackages copyWithoutAll: originalPackages. (removedPackages isEmpty and: [addedPackages isEmpty]) ifTrue: [^ false]. - PackagesToInstrument removeAll: removedPackages. - PackagesToInstrument addAll: addedPackages. - ^ true \ No newline at end of file + 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/confirm..st b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/confirm..st deleted file mode 100644 index 17e46e57..00000000 --- a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/confirm..st +++ /dev/null @@ -1,4 +0,0 @@ -user interface -confirm: aString - - ^ self confirm: aString. \ 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 index 0cd38d2c..76fdd581 100644 --- a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/instrumentedPackagesWithTitle.st +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/instrumentedPackagesWithTitle.st @@ -1,4 +1,4 @@ accessing instrumentedPackagesWithTitle - ^ #('-- Tracked Packages --'), self instrumentedPackages \ No newline at end of file + ^ #('-- Tracked Packages --'), self instrumentedPackages sorted \ 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 index b9798002..58b194ac 100644 --- a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/uninstrumentSelected.st +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/instance/uninstrumentSelected.st @@ -2,16 +2,16 @@ actions uninstrumentSelected | package | - package := (self trackedPackagesWithTitle at: self selectionTracked). - self trackedPackages remove: package. + package := (self instrumentedPackagesWithTitle at: self selectionInstrumented). + self instrumentedPackages remove: package. - self updateUntrackedPackages. + self updateUninstrumentedPackages. - self changed: #trackedPackagesWithTitle. - self changed: #untrackedPackagesWithTitle. - selectionTracked ifNotNil: - [selectionTracked := selectionTracked min: trackedPackages size + 1. - self changed: #selectionTracked]. - self changed: #hasTrackedSelection. - self changed: #hasUntrackedSelection. + 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/methodProperties.json b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/methodProperties.json index b06cf18f..25837860 100644 --- a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/methodProperties.json @@ -1,6 +1,7 @@ { "class" : { - "configure" : "pre 1/22/2021 17:01" }, + "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", @@ -9,22 +10,20 @@ "buildWith:" : "pre 1/22/2021 16:52", "buttonWidth" : "TB 4/22/2018 11:44", "categoriesPlusPrefixes" : "TB 4/22/2018 00:37", - "chooseFor:" : "pre 1/22/2021 17:01", - "configure" : "pre 1/22/2021 17:03", - "confirm:" : "pre 1/22/2021 16:55", + "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 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 1/22/2021 16:50", + "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 index 7a181c5e..4c44e51c 100644 --- a/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/properties.json +++ b/packages/Babylonian-UI.package/BPConfigureInstrumentation.class/properties.json @@ -4,7 +4,7 @@ ], "classvars" : [ "PackagesToInstrument" ], - "commentStamp" : "", + "commentStamp" : "pre 3/11/2021 16:02", "instvars" : [ "acceptChanges", "instrumentedPackages", From a14b8d049c9804812def55c4c28034f95c0b4f90 Mon Sep 17 00:00:00 2001 From: Patrick R Date: Thu, 11 Mar 2021 17:58:34 +0100 Subject: [PATCH 68/71] Comitted all kinds of sins to keep the sidebar visualizations stable and update them in-place --- .../instance/selectedVisualizationTypeClass.st | 8 ++++++++ .../instance/updateVisualizationMorphsIfNecessary.st | 8 ++++++++ .../instance/visualizationMorphs.st | 9 ++------- .../BPBrowserSidebar.class/methodProperties.json | 4 +++- .../instance/callgraph.st | 2 +- .../instance/buildWith..st | 3 +-- .../instance/example..st | 8 ++++++++ .../instance/initialize.st | 5 +++++ .../methodProperties.json | 6 ++++-- .../instance/example..st | 12 ++++++++++++ .../instance/resetCache.st | 4 ++++ .../methodProperties.json | 2 ++ .../instance/defineMessageFrom.notifying..st | 4 ++-- .../BPCallgraphBrowser.class/methodProperties.json | 2 +- .../BPCallgraphModel.class/instance/callgraph..st | 2 +- .../BPCallgraphModel.class/methodProperties.json | 2 +- .../instance/contents.notifying..st | 9 +++++++++ .../methodProperties.json | 1 + .../BPTraceBasedMorph.class/methodProperties.json | 4 ++-- 19 files changed, 75 insertions(+), 20 deletions(-) create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/selectedVisualizationTypeClass.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/updateVisualizationMorphsIfNecessary.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/example..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/initialize.st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/example..st create mode 100644 packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/instance/resetCache.st create mode 100644 packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/instance/contents.notifying..st 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/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 index 69ba1979..1eae3f1f 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/visualizationMorphs.st +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/instance/visualizationMorphs.st @@ -6,13 +6,8 @@ visualizationMorphs content := true caseOf: { [self selectedExample isNil] -> [ visualization := nil. 'No example selected']. [self selectedVisualizationType == #none] -> [visualization := nil. 'No visualization selected']. - [true] -> [ | class | - class := self selectedVisualizationType caseOf: { - [#callgraph] -> [BPBrowserSidebarVisualizationCallgraph]. - [#annotations] -> [BPBrowserSidebarVisualizationAnnotations]. - [#methodSet] -> [BPBrowserSidebarVisualizationExecutedMethods]. - }. - (visualization := class new) + [true] -> [ + (visualization := self selectedVisualizationTypeClass new) example: self selectedExample; when: #browseMethod evaluate: [:ref | self triggerEvent: #browseMethod with: ref]; when: #highlightSend evaluate: [:method :pc | diff --git a/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json index ed30d6c9..603cd1cc 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebar.class/methodProperties.json @@ -22,8 +22,10 @@ "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", - "visualizationMorphs" : "pre 2/22/2021 17:59" } } + "updateVisualizationMorphsIfNecessary" : "pre 3/11/2021 17:44", + "visualizationMorphs" : "pre 3/11/2021 17:43" } } diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/callgraph.st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/callgraph.st index ea307bc2..11ddd007 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/callgraph.st +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualization.class/instance/callgraph.st @@ -1,4 +1,4 @@ -as yet unclassified +accessing callgraph ^ self example currentCallgraph \ No newline at end of file diff --git a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/buildWith..st b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/buildWith..st index f1047fad..4a3d0916 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/buildWith..st +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/instance/buildWith..st @@ -1,8 +1,7 @@ toolbuilder buildWith: aBuilder - - model := BPCallgraphModel new. + model callgraph: self callgraph. model when: #doubleClicked 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/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 index 93205581..d2e62736 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationCallgraph.class/methodProperties.json @@ -2,6 +2,8 @@ "class" : { }, "instance" : { - "buildWith:" : "pre 2/22/2021 18:44", + "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" } } + "highlightTraceValue:id:" : "cmfcmf 11/9/2020 15:33", + "initialize" : "pre 3/11/2021 17:35" } } 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/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/methodProperties.json b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/methodProperties.json index 06981ed1..3e8ccade 100644 --- a/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPBrowserSidebarVisualizationEntriesWithDetails.class/methodProperties.json @@ -24,9 +24,11 @@ "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", diff --git a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/defineMessageFrom.notifying..st b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/defineMessageFrom.notifying..st index 47249dea..4b01d20d 100644 --- a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/defineMessageFrom.notifying..st +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/defineMessageFrom.notifying..st @@ -12,5 +12,5 @@ defineMessageFrom: aString notifying: aController selector: resultingSelector] ifFalse: [resultingSelector := super defineMessageFrom: aString notifying: aController]. - sidebar changed: #visualizationMorphs. - ^ resultingSelector \ No newline at end of file + sidebar updateVisualizationMorphsIfNecessary. + ^ resultingSelector \ 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 index d5edf769..69d0ef76 100644 --- a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/methodProperties.json @@ -25,7 +25,7 @@ "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 16:11", + "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", diff --git a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/callgraph..st b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/callgraph..st index 8c30b97c..fb33a69f 100644 --- a/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/callgraph..st +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/instance/callgraph..st @@ -2,4 +2,4 @@ as yet unclassified callgraph: aBPCallgraph callgraph := aBPCallgraph. - self changed: #rootEntries \ No newline at end of file + self changed: #rootEntries. \ 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 index a22f616a..0a070548 100644 --- a/packages/Babylonian-UI.package/BPCallgraphModel.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPCallgraphModel.class/methodProperties.json @@ -4,7 +4,7 @@ "showReturnNodes:" : "cmfcmf 11/6/2020 14:27" }, "instance" : { "callgraph" : "cmfcmf 10/28/2020 10:40", - "callgraph:" : "cmfcmf 10/27/2020 14:12", + "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", 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/methodProperties.json b/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/methodProperties.json index 14465747..657c88b5 100644 --- a/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPSimpleCallgraphBrowser.class/methodProperties.json @@ -2,4 +2,5 @@ "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/BPTraceBasedMorph.class/methodProperties.json b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json index f21b98c6..a645e11e 100644 --- a/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPTraceBasedMorph.class/methodProperties.json @@ -3,8 +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", + "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", From af079d87ffa0b307bada9985b1bd6e7a87e27cf1 Mon Sep 17 00:00:00 2001 From: Patrick R Date: Thu, 11 Mar 2021 17:59:02 +0100 Subject: [PATCH 69/71] Increases default width of callgraph browser --- .../instance/buildDefaultBrowserWith..st | 6 ++++++ .../BPCallgraphBrowser.class/methodProperties.json | 1 + 2 files changed, 7 insertions(+) create mode 100644 packages/Babylonian-UI.package/BPCallgraphBrowser.class/instance/buildDefaultBrowserWith..st 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/methodProperties.json b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/methodProperties.json index 69d0ef76..91013108 100644 --- a/packages/Babylonian-UI.package/BPCallgraphBrowser.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPCallgraphBrowser.class/methodProperties.json @@ -4,6 +4,7 @@ "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", From 19163293c1fd2d99c054727e0a854380758e0ba6 Mon Sep 17 00:00:00 2001 From: Patrick R Date: Fri, 12 Mar 2021 10:51:24 +0100 Subject: [PATCH 70/71] Keeps the scroll position constant (as best as possible) --- .../instance/update..st | 28 +++++++++++++++++++ .../methodProperties.json | 3 +- 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/instance/update..st 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 index fad41aff..52ca5b0b 100644 --- a/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/methodProperties.json +++ b/packages/Babylonian-UI.package/BPCallgraphPluggableTreeMorph.class/methodProperties.json @@ -3,4 +3,5 @@ }, "instance" : { "indentingItemClass" : "cmfcmf 10/23/2020 17:27", - "indicateUnfiltered" : "cmfcmf 10/26/2020 13:14" } } + "indicateUnfiltered" : "cmfcmf 10/26/2020 13:14", + "update:" : "pre 3/12/2021 10:50" } } From 7baa3ed670ec1c15ac497845deeb3f1ba4de929e Mon Sep 17 00:00:00 2001 From: Patrick R Date: Tue, 16 Mar 2021 09:41:55 +0100 Subject: [PATCH 71/71] Changes the code rewriter filter to be less strict by adding an asterisk to the category name. --- .../class/disableTracingForClassCategory..st | 4 ++-- .../class/enableTracingForClassCategory..st | 2 +- .../class/instrumentClassCategory..st | 2 +- .../class/uninstrumentClassCategory..st | 2 +- .../BPByteCodeRewriter.class/methodProperties.json | 8 ++++---- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForClassCategory..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForClassCategory..st index b920249c..3e9d9e51 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForClassCategory..st +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/disableTracingForClassCategory..st @@ -1,7 +1,7 @@ 3 - disable tracing disableTracingForClassCategory: aSymbol - - (SystemOrganization classesIn: aSymbol) do: [:class | + + (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/enableTracingForClassCategory..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForClassCategory..st index e95790f9..0463b7ec 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForClassCategory..st +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/enableTracingForClassCategory..st @@ -2,6 +2,6 @@ enableTracingForClassCategory: aSymbol - (SystemOrganization classesIn: aSymbol) do: [:class | + (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/instrumentClassCategory..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClassCategory..st index 92a43148..22cf2d4f 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClassCategory..st +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/instrumentClassCategory..st @@ -3,7 +3,7 @@ instrumentClassCategory: aSymbol CSLayeredMethod pauseFlushingCachesDuring: [ SystemChangeNotifier uniqueInstance doSilently: [ - self for: (SystemOrganization classesIn: aSymbol) + self for: (SystemOrganization classesIn: aSymbol , '*') do: [:class | self instrumentClass: class theNonMetaClass. self instrumentClass: class theMetaClass] diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentClassCategory..st b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentClassCategory..st index 6f2037a5..e0b247ab 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentClassCategory..st +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/class/uninstrumentClassCategory..st @@ -3,7 +3,7 @@ uninstrumentClassCategory: aSymbol CSLayeredMethod pauseFlushingCachesDuring: [ SystemChangeNotifier uniqueInstance doSilently: [ - self for: (SystemOrganization classesIn: aSymbol) + self for: (SystemOrganization classesIn: aSymbol , '*') do: [:class | self uninstrumentClass: class theNonMetaClass. self uninstrumentClass: class theMetaClass] diff --git a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json index e4cda3e8..fa05c26c 100644 --- a/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json +++ b/packages/Babylonian-Core.package/BPByteCodeRewriter.class/methodProperties.json @@ -5,14 +5,14 @@ "copyCompiledMethod:" : "cmfcmf 10/26/2020 15:55", "disableTracingForClass:" : "cmfcmf 9/29/2020 17:08", "disableTracingForClass:selector:" : "cmfcmf 9/29/2020 17:08", - "disableTracingForClassCategory:" : "cmfcmf 10/23/2020 13:04", + "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:" : "cmfcmf 10/23/2020 13:04", + "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", @@ -26,7 +26,7 @@ "instrumentAll:" : "cmfcmf 12/10/2020 12:39", "instrumentClass:" : "cmfcmf 12/10/2020 12:02", "instrumentClass:selector:" : "cmfcmf 1/4/2021 18:51", - "instrumentClassCategory:" : "cmfcmf 12/10/2020 12:02", + "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", @@ -47,7 +47,7 @@ "uninstrumentAll:" : "cmfcmf 12/10/2020 12:43", "uninstrumentClass:" : "cmfcmf 12/10/2020 12:02", "uninstrumentClass:selector:" : "cmfcmf 12/10/2020 12:35", - "uninstrumentClassCategory:" : "cmfcmf 12/10/2020 12:02", + "uninstrumentClassCategory:" : "pre 3/16/2021 09:40", "uninstrumentCompiledMethod:" : "cmfcmf 10/20/2020 12:45", "uninstrumentContext" : "cmfcmf 10/29/2020 13:06" }, "instance" : {