--- a/ContextInspectorView.st Tue Nov 11 17:08:09 2003 +0100
+++ b/ContextInspectorView.st Tue Nov 11 19:47:39 2003 +0100
@@ -57,11 +57,11 @@
inspect:aContext
"set the context to be inspected"
- |homeContext method homeNames rec sel
+ |methodHomeContext method homeNames rec sel
argNames varNames tmpNames m argsOnly blockNode vars
numVarsInSource numVarsInContext isDoIt
numArgs numVars n tempNames realTempNames src
- oldSelection oldSelectedName argAndVarNames|
+ oldSelection oldSelectedName argAndVarNames hCon|
(aContext == inspectedContext) ifTrue:[
"/ care for contexts which change size
@@ -89,24 +89,24 @@
"/ realized ifFalse:[^ self].
- homeContext := aContext methodHome.
+ methodHomeContext := aContext methodHome.
- homeContext isNil ifTrue:[
+ methodHomeContext isNil ifTrue:[
"its a cheap blocks context"
rec := aContext receiver.
sel := aContext selector.
homeNames := OrderedCollection new.
isDoIt := false.
] ifFalse:[
- rec := homeContext receiver.
- sel := homeContext selector.
+ rec := methodHomeContext receiver.
+ sel := methodHomeContext selector.
"/ #doIt needs special handling below
isDoIt := (sel == #doIt) or:[sel == #doIt:].
- method := homeContext method.
+ method := methodHomeContext method.
-"/ implementorClass := homeContext methodClass.
+"/ implementorClass := methodHomeContext methodClass.
"/ implementorClass notNil ifTrue:[
"/ method := implementorClass compiledMethodAt:sel.
"/ ] ifFalse:[
@@ -114,9 +114,9 @@
"/ "/ see if it was invoked by a direct call
"/ "/ consider this a kludge
"/
-"/ homeContext sender notNil ifTrue:[
-"/ (homeContext sender selector startsWith:'valueWithReceiver:') ifTrue:[
-"/ method := homeContext sender receiver
+"/ methodHomeContext sender notNil ifTrue:[
+"/ (methodHomeContext sender selector startsWith:'valueWithReceiver:') ifTrue:[
+"/ method := methodHomeContext sender receiver
"/ ]
"/ ]
"/ ].
@@ -145,7 +145,7 @@
homeNames := method methodArgAndVarNames.
"/ did it already allocate its locals ?
- homeNames size > (homeContext numArgs + homeContext numVars)
+ homeNames size > (methodHomeContext numArgs + methodHomeContext numVars)
ifTrue:[
homeNames := method methodArgNames.
argsOnly := true.
@@ -163,7 +163,7 @@
"/ check
- numVarsInContext := homeContext argsAndVars size.
+ numVarsInContext := methodHomeContext argsAndVars size.
numVarsInSource := homeNames size.
numVarsInSource > 0 ifTrue:[
@@ -178,8 +178,8 @@
numVarsInSource > numVarsInContext ifTrue:[
homeNames := homeNames copyTo:numVarsInContext.
] ifFalse:[
- numVarsInContext >= homeContext numArgs ifTrue:[
- homeNames := homeNames copyTo:homeContext numArgs
+ numVarsInContext >= methodHomeContext numArgs ifTrue:[
+ homeNames := homeNames copyTo:methodHomeContext numArgs
] ifFalse:[
homeNames := nil
]
@@ -195,35 +195,35 @@
"
homeNames isNil ifTrue:[
homeNames := OrderedCollection new.
- 1 to:homeContext numArgs do:[:index |
+ 1 to:methodHomeContext numArgs do:[:index |
homeNames add:('mArg' , index printString)
].
argsOnly ifFalse:[
- 1 to:homeContext numVars do:[:index |
+ 1 to:methodHomeContext numVars do:[:index |
homeNames add:('mVar' , index printString)
].
"/ showingTemporaries ifTrue:[
-"/ 1 to:homeContext numTemps do:[:index |
+"/ 1 to:methodHomeContext numTemps do:[:index |
"/ homeNames add:('mTmp' , index printString)
"/ ]
"/ ]
]
].
showingTemporaries ifTrue:[
- 1 to:homeContext numTemps do:[:index |
+ 1 to:methodHomeContext numTemps do:[:index |
homeNames add:('mTmp' , index printString)
]
].
n := homeNames size.
- n < (homeContext numVars + homeContext numArgs) ifTrue:[
+ n < (methodHomeContext numVars + methodHomeContext numArgs) ifTrue:[
"/ its a context which includes locals from
"/ inlined sub-blocks.
"/ First, generate synthetic varNames ...
homeNames := homeNames asOrderedCollection.
tempNames := OrderedCollection new.
- n to:(homeContext numVars + homeContext numArgs - 1) do:[:inlinedTempIdx |
+ n to:(methodHomeContext numVars + methodHomeContext numArgs - 1) do:[:inlinedTempIdx |
tempNames add:('*t' , (inlinedTempIdx - n + 1) printString)
].
@@ -242,7 +242,7 @@
numVars:numVars.
] ifFalse:[
blockNode := Compiler
- blockAtLine:(homeContext lineNumber)
+ blockAtLine:(methodHomeContext lineNumber)
in:method
orSource:nil
numArgs:numArgs
@@ -284,76 +284,13 @@
method-home and put real names in here
"
aContext isBlockContext ifTrue:[
- numArgs := aContext numArgs.
- numVars := aContext numVars.
-
- (numArgs > 0 or:[numVars > 0]) ifTrue:[
- argAndVarNames := aContext argAndVarNames.
- argAndVarNames notEmptyOrNil ifTrue:[
- argNames := argAndVarNames copyTo:numArgs.
- varNames := argAndVarNames copyFrom:numArgs+1.
- ].
-
-"/ method notNil ifTrue:[
-"/ isDoIt ifTrue:[
-"/ "/ special for #doIt
-"/ "/ my source is found in the method.
-"/ m := nil.
-"/ src := ('[' , method source , '\]') withCRs
-"/ ] ifFalse:[
-"/ m := method.
-"/ src := nil.
-"/ ].
-"/ blockNode := Compiler
-"/ blockAtLine:(aContext lineNumber)
-"/ in:m
-"/ orSource:src
-"/ numArgs:numArgs
-"/ numVars:numVars.
-"/ blockNode notNil ifTrue:[
-"/ numArgs > 0 ifTrue:[
-"/ vars := blockNode arguments.
-"/ vars size > 0 ifTrue:[
-"/ argNames := vars collect:[:var | var name]
-"/ ]
-"/ ].
-"/ numVars > 0 ifTrue:[
-"/ vars := blockNode variables.
-"/ vars size > 0 ifTrue:[
-"/ varNames := vars collect:[:var | var name].
-"/ ]
-"/ ]
-"/ ].
-"/ ].
+ names := self namesOfBlockContext:aContext.
+ hCon := aContext home.
+ [hCon == methodHomeContext] whileFalse:[
+ names addAll:(self namesOfBlockContext:hCon).
+ hCon := hCon home.
].
-
- names := OrderedCollection new.
-
- argNames isNil ifTrue:[
- argNames := (1 to:numArgs) collect:[:i | 'arg' , i printString].
- ].
-
- names addAll:argNames.
- varNames isNil ifTrue:[
- varNames := (1 to:numVars) collect:[:i | 'var' , i printString].
- ] ifFalse:[
- varNames size ~~ numVars ifTrue:[
- varNames := varNames asOrderedCollection.
- varNames size+1 to:aContext numVars do:[:i |
- varNames add:('var' , i printString)
- ]
- ]
- ].
-
- names addAll:varNames.
-
- showingTemporaries ifTrue:[
- tmpNames := (1 to:(aContext numTemps)) collect:[:i | 'tmp' , i printString].
- names addAll:tmpNames.
- ].
-
names addAll:homeNames.
-
] ifFalse:[
names := homeNames.
].
@@ -373,6 +310,49 @@
"Modified: / 30.7.1998 / 12:51:44 / cg"
!
+namesOfBlockContext:aContext
+ |numArgs numVars argAndVarNames argNames varNames tmpNames names|
+
+ numArgs := aContext numArgs.
+ numVars := aContext numVars.
+
+ (numArgs > 0 or:[numVars > 0]) ifTrue:[
+ argAndVarNames := aContext argAndVarNames.
+ argAndVarNames notEmptyOrNil ifTrue:[
+ argNames := argAndVarNames copyTo:numArgs.
+ varNames := argAndVarNames copyFrom:numArgs+1.
+ ].
+Transcript showCR:argAndVarNames.
+ ].
+
+ names := OrderedCollection new.
+
+ argNames isNil ifTrue:[
+ argNames := (1 to:numArgs) collect:[:i | 'arg' , i printString].
+ ].
+
+ names addAll:argNames.
+ varNames isNil ifTrue:[
+ varNames := (1 to:numVars) collect:[:i | 'var' , i printString].
+ ] ifFalse:[
+ varNames size ~~ numVars ifTrue:[
+ varNames := varNames asOrderedCollection.
+ varNames size+1 to:aContext numVars do:[:i |
+ varNames add:('var' , i printString)
+ ]
+ ]
+ ].
+
+ names addAll:varNames.
+
+ showingTemporaries ifTrue:[
+ tmpNames := (1 to:(aContext numTemps)) collect:[:i | 'tmp' , i printString].
+ names addAll:tmpNames.
+ ].
+
+ ^ names
+!
+
release
"release inspected object"
@@ -519,36 +499,45 @@
valueAtIndex:varIdx
"helper - return the value of the selected entry"
- |homeContext theContext values|
+ |methodHomeContext hCon theContext values|
inspectedContext isNil ifTrue:[^ nil].
argsOnly := false.
theContext := inspectedContext.
- homeContext := theContext methodHome.
+ methodHomeContext := theContext methodHome.
theContext isBlockContext ifTrue:[
values := Array withAll:(theContext argsAndVars).
(showingTemporaries and:[theContext numTemps ~~ 0]) ifTrue:[
values := values , theContext temporaries
].
- homeContext notNil ifTrue:[
- values := values , homeContext args.
+ hCon := theContext home.
+ [hCon == methodHomeContext] whileFalse:[
+ values := values , hCon argsAndVars.
+ (showingTemporaries and:[theContext numTemps ~~ 0]) ifTrue:[
+ values := values , hCon temporaries
+ ].
+ hCon := hCon home.
+ ].
+
+ methodHomeContext notNil ifTrue:[
+ values := values , methodHomeContext args.
argsOnly ifFalse:[
- values := values , homeContext vars.
- (showingTemporaries and:[homeContext numTemps ~~ 0])ifTrue:[
- values := values , homeContext temporaries
+ values := values , methodHomeContext vars.
+ (showingTemporaries and:[methodHomeContext numTemps ~~ 0])ifTrue:[
+ values := values , methodHomeContext temporaries
]
].
].
] ifFalse:[
argsOnly ifTrue:[
- values := homeContext args
+ values := methodHomeContext args
] ifFalse:[
- values := homeContext argsAndVars
+ values := methodHomeContext argsAndVars
].
- (showingTemporaries and:[homeContext numTemps ~~ 0])ifTrue:[
- values := values , homeContext temporaries
+ (showingTemporaries and:[methodHomeContext numTemps ~~ 0])ifTrue:[
+ values := values , methodHomeContext temporaries
]
].
@@ -630,5 +619,5 @@
!ContextInspectorView class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libtool/ContextInspectorView.st,v 1.56 2003-09-03 08:05:19 penk Exp $'
+ ^ '$Header: /cvs/stx/stx/libtool/ContextInspectorView.st,v 1.57 2003-11-11 18:47:39 cg Exp $'
! !