Given any object of a class that reimplements #isArray in an erroneous way
Given my recent slip in the FFI package, I have the feeling that #isArray has a really specific meaning for the class layout. No one should claim to also be an Array. :-D I mean, not even RawBitsArray does it. There is something going on. :-)
Best, Marcel Am 17.05.2021 12:00:33 schrieb Thiede, Christoph christoph.thiede@student.hpi.uni-potsdam.de: Hi Marcel,
Maybe an actual use case would help. Something bigger than "ProtoObject new isNil".
Of course, here are you:
Debug it: ObjectTracer on: Morph new
In the trunk, this spawns an embarrassing number of additional debuggers while debugging the expression. With my proposed fix, not a single additional debugger is opened before you actually send a message to the morph.
Here is another example. Given any object of a class that reimplements #isArray in an erroneous way, this will break the simulator, too:
Object newSubclass compile: 'isArray ^self notYetImplemented'; new "step through this"
My impression was that even the BasicInspector struggled to deal with proxies.
I think I have fixed this issue via Tools-ct.1056/ToolsTests-ct.105.
Best, Christoph
Von: Squeak-dev squeak-dev-bounces@lists.squeakfoundation.org im Auftrag von Taeumel, Marcel Gesendet: Montag, 17. Mai 2021 08:08 Uhr An: squeak-dev Betreff: Re: [squeak-dev] The Trunk: Kernel-eem.1366.mcz
Are you thinking about proxies (usually implemented as ProtoObject)?
To quote myself and expand the comment: Is this the only issue left that we are having with debugging/simulating ProtoObject? My impression was that even the BasicInspector struggled to deal with proxies. Well, it got better due to the mirror primitives in Context.
Maybe an actual use case would help. Something bigger than "ProtoObject new isNil".
Best, Marcel Am 17.05.2021 07:54:59 schrieb Marcel Taeumel marcel.taeumel@hpi.de: Hi Christoph.
The simulator should not stumble upon any objects that do not implement #isArray in a conventional way.
#isArray is implemented in Object. So, all objects can answer to that. Where do you see a problem? Are you thinking about proxies (usually implemented as ProtoObject)?
Best, Marcel Am 16.05.2021 19:07:34 schrieb Thiede, Christoph christoph.thiede@student.hpi.uni-potsdam.de: Sorry for the confusion. Kernel-ct.1369 has been moved to treated with all justification. I just uploaded Kernel-ct.1407 instead which fixes the mentioned problem.
Best, Christoph Von: Squeak-dev squeak-dev-bounces@lists.squeakfoundation.org im Auftrag von Thiede, Christoph Gesendet: Sonntag, 16. Mai 2021 18:40:59 An: squeak-dev@lists.squeakfoundation.org Betreff: Re: [squeak-dev] The Trunk: Kernel-eem.1366.mcz Hi all,
in my humble opinion, this is still broken as of today in the Trunk. :-) The simulator should not stumble upon any objects that do not implement #isArray in a conventional way. The following should be debuggable, but at the moment, you get a DNU error from #isPrimFailToken: if you step through the expression:
ProtoObject new isNil
Efficiency is important, but IMHO correctness is even more important. Thus I think Kernel-ct.1369 is still relevant for the trunk. :-)
Best, Christoph
----- Carpe Squeak! -- Sent from: http://forum.world.st/Squeak-Dev-f45488.html [http://forum.world.st/Squeak-Dev-f45488.html]