to tabin
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Enter search term:
Next
regexp
Prev
Occur

X
to show
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Enter search term:
Next
regexp
Prev
Occur

X
Log Messages
X

Menu
[log] Session connection to https://smalltalkzoo.thechm.org/nodejs/SessionTracker/ closed
[log] Session connection to https://smalltalkzoo.thechm.org/nodejs/SessionTracker/ established
[log] Session connection to https://smalltalkzoo.thechm.org/nodejs/SessionTracker/ closed
[log] Session connection to https://smalltalkzoo.thechm.org/nodejs/SessionTracker/ established
[log] Session connection to https://smalltalkzoo.thechm.org/nodejs/SessionTracker/ closed
[log] Session connection to https://smalltalkzoo.thechm.org/nodejs/SessionTracker/ established
[log] https://smalltalkzoo.thechm.org/core/anonymous_module_69 loaded in 77 ms
[log] https://smalltalkzoo.thechm.org/core/anonymous_module_70 loaded in 0 ms
[log] Loading ace theme ...
[warn] misspelled option "useElasticTabstops"
[warn] misspelled option "behaviorsEnabled"
[warn] misspelled option "behaviorsEnabled"
[log] Loading ace theme ...
[log] Loading ace theme ...
[log] https://smalltalkzoo.thechm.org/core/anonymous_module_71 loaded in 30 ms
[log] https://smalltalkzoo.thechm.org/core/anonymous_module_72 loaded in 1 ms
[warn] misspelled option "useElasticTabstops"
[warn] misspelled option "behaviorsEnabled"
[warn] misspelled option "behaviorsEnabled"
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
follow log
clear
reattach
missing
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Enter search term:
Next
regexp
Prev
Occur

X
isit
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Enter search term:
Next
regexp
Prev
Occur

X
// changed at Tue Dec 29 2020 14:23:47 GMT-0800 (Pacific Standard Time) by dan
this.addScript(function testClassof() {
this.doit(`
(@ is ~) print.
(classof 5 is ~) print.
`)
});
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
<lively.morphic.Image#965AA... - St72-test-code.png>
Tag:
run
save
debug next call
past saves...
-- ALL --
doit
getVM
testBraces
testClassof
testClassprint
testDo
testIndex
testPrint
testShow
testSpiral
testTabin
Scripts
-
+
-
Connections
+
-- ALL --
all
ObjectEditor -- St72Tests>>testClassof
X

Menu
depth: 1
reset
Current state
X

Menu
Now debugging 'nshow turtle' prefatory to testing edit
show works to print the code, but we need the header info
To do this properly, we need classes to respond to #classDict or the
    like, and that to be a dictionary that responds to #keys and #at,
and descriptors respond to #is, #type, and #offset
We also need a few messages from our non-existing class Object: at
    least #class
But for now, let's use a function classOf so don't need to inherit
---> false seems to be null, but it supposedly got initted in alldefs
---------
As of 12/6/2020...
For documentation help, get a browser on the VMPanel (cmd-click in the
    yellow area and choose the wrench with a red dot). Then select
    methods with names like aboutX, or yetToDo
*How to run the test*
In the VMPAnel:
Push 'Restart'
reads ALLDEFS through '(to USER (read eval ) )'
Push 'Run to:' with 9000000 in the next cell
reads the rest of ALLDEFS through '(" fill _ nil )'
Push Display show if the display pane is not visible
show/hide toggles visibility of graphics area
Push Display clear to clear the graphics area
In the St-72 Workspace:
Enter (if necessary) '@ home. for i to 400 (@go i turn 89)'
Select that line with a CR, and push the 'doit' button
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
doit
VMPanel
X

Menu
As soon as USER has been defined (ie from here on), it provides the code to
    execute in each cycle of Smalltalk execution.'
to class x y z : classDict (
isnew?(CODE 43)
%classDict?(!classDict)
%is?(ISIT eval)
)
to classof x (:#x. CODE 44)
to descriptor x : location offset (
%location? (!location)
%offset? (!offset)
)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Restart
Step
Run
[1289]15688:-/m-/g-: USER.eval: (==>ev )
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Run to:
83155
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Active
[55] t= 0
((@ is ~ ) print . )
turtle
[646] t= 0
((classof 5 is ~ ) print . )
untyped
[1289] t= 0.01
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Stop
Dict
83155
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Display show
Display clear
ObjectEditor -- VMPanel>>makeClass
X

Menu
// Change an existing class or make a new one
// ctxt is the context of the definition. Note that the class may
// get bopund to a temp, a class var, or a global, via ctxt.put()
debugger;
var theClass = this.userDict[title]
if ( !theClass )
{var newDict = {};
newDict.isDictionary = true;
theClass = this.instantiate("class", [newDict]);
}
// redef of USER must preserve global dict
var dict = (title == "USER") ? this.userDict : theClass.instvars[0];
tempNames.forEach(function(name, i) {
dict[name] = this.instantiate("descriptor", ["temp",i])}, this);
ivars.forEach(function(name, i) {
dict[name] = this.instantiate("descriptor", ["inst",i])}, this);
// NOTE: if ivars changes, we should make a new class so old insts can
        hold old class
cvars.forEach(function(name, i) {dict[name] = dict[name] || null});
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
<lively.morphic.Box#48982... - VMPanel2>
Tag:
run
save
debug next call
past saves...
initObjects
instantiate
isAtom
isVarName
makeClass
newContext
newStrVec
objectAndContext
occurrencesOf
parseTo
patchInspector
Scripts
-
+
-
Connections
+
-- ALL --
all