Hallo André,
Ich habe mal versucht, das Problem nachzuvollziehen und mir sind
dabei
mehrere Dinge aufgefallen.
1. Im aktuellen Squeak-dev-Image (3.9) konnte ich die MakroBenchmarks
nicht finden, ich habe sie von SqueakMap nachgeladen (für 3.7)
- a) diese Version musste ich leicht anpassen, damit sie überhaupt
läuft
und dabei musste ich den benchmark3 auskommentieren, weil dieser
intern
auch wieder simuliert, was schiefgeht
2. Alle Fehler während der Simulation werden vom mit der selben
aussagearmen Fehlermeldung an den User zurückgegeben.
a) die eigentliche Fehlermeldung findet sich dann im 7. Eintrag des
Stacks, wenn man in die lokale Variable arguments schaut.
In meinem Fall bin ich dort auf ein Message not understood: quo:
gestossen. Dann habe ich mich durch die Sender-chain nach oben
gehangelt
(wie es sonst auch der Debugger machen würde) und bin beim Aufruf von
Smalltalk timeStamp: gelandet.
Irgendwo in dieser Kette wird das aktuelle Datum in Nanosekunden
ausgerechnet und dann als argument an Duration>>nanoSeconds:
übergeben.
Wie man sich leicht vorstellen kann, handelt es sich dabei um einen
Large Integer, der irgendwie bei dieser Übergabe in ein Array
umgewandelt wird (frag nicht wie, soweit bin ich noch nicht, aber es
orientiert sich am printString (der LargeInt ist in meinem Beispiel
212058345600 und das Array ist #(212 58345600) )), das dann natürlich
kein quo: versteht.
Scheint mir im Moment noch ziemlich verworren. Man sollte einen
Debugger
extra für den Simulator schreiben (oder den jetzigen anpassen).
Gruss, Torge
André Wendt schrieb:
Hallo *,
beim Versuch, den Code
ContextPart tallyInstructions: [MacroBenchmarks run]
auszuführen, erhalte ich den Fehler "context not in process". Einen
Report zu ähnlichen Aufrufen habe ich bereits unter
<http://bugs.squeak.org/view.php?id=5716> gefunden. Meine Fragen
dazu:
Woran liegt das?
Kennt jemand komplexere Benchmarks als Integer>>#benchmark und
Integer>>#benchFib, die im Simulator funktionieren?
Gibt es andere Möglichkeiten als den Simulator, um die ausgeführten
Instruktionen zu analysieren?
Grüße,
André