Re: [WORKAROUND] Re: walkback while generating external plugins
Posted by
Robert Withers-2 on
May 27, 2021; 3:02pm
URL: https://forum.world.st/walkback-while-generating-external-plugins-tp5130049p5130058.html
Yep, that was the issue. Plugin now generating. Thanks!
Now to realize a plugin implementation..., to speed up my RS code.
---
Kindly,
Robert
On 5/27/21 10:24 AM, Levente Uzonyi wrote:
> Hi Robert,
>
> According to your stack trace, the argument of #declareCVarsIn: is not a
> CCodeGenerator but the symbol #cg. And that is what causes the problem.
> I think you may not be running the right code to generate the plugin
> sources.
>
>
> Levente
>
> On Thu, 27 May 2021, Robert Withers wrote:
>
>> I got past this by removing the call to super>>#declareCVarsIn: from
>> RSFECPlugin class>>#declareCVarsIn:, just like DESPlugin & DSAPlugin.
>> SHA2Plugin still calls the super method, which does not walkback.
>>
>> ---
>> Kindly,
>> Robert
>>
>>
>> On 5/27/21 7:48 AM, Robert Withers wrote:
>>> Hi,
>>>
>>> I am getting a walkback when generating new external plugins:
>>> RSErasurePlugin and RSFECPlugin. The culprit seems to be a super call to
>>> InterpreterPlugin class>>#declareCVarsIn:, called from RSErasurePlugin
>>> class>>declareCVarsIn:. I snipped the stack to pertinent frames. Thx!
>>>
>>> 27 May 2021 7:44:38.719538 am
>>>
>>> VM: unix - Smalltalk
>>> Image: Squeak6.0alpha [latest update: #20535]
>>>
>>> SecurityManager state:
>>> Restricted: false
>>> FileAccess: true
>>> SocketAccess: true
>>> Working Dir /home/rabbit/vm-dev/opensmalltalk-vm/image
>>> Trusted Dir /home/rabbit/vm-dev/opensmalltalk-vm/image/secure
>>> Untrusted Dir /home/rabbit/vm-dev/opensmalltalk-vm/image/My Squeak
>>>
>>> ByteSymbol(Object)>>doesNotUnderstand: #removeVariable:ifAbsent:
>>> Receiver: #cg
>>> Arguments and temporary variables:
>>> aMessage: removeVariable: 'translatedMethodCache' ifAbsent: nil
>>> exception: MessageNotUnderstood:
>>> ByteSymbol>>removeVariable:ifAbsent:
>>> resumeValue: nil
>>> Receiver's instance variables:
>>> #cg
>>>
>>> RSErasurePlugin class(InterpreterPlugin class)>>declareCVarsIn:
>>> Receiver: RSErasurePlugin
>>> Arguments and temporary variables:
>>> aCCodeGenerator: #cg
>>> Receiver's instance variables:
>>> superclass: InterpreterPlugin
>>> methodDict: a
>>> MethodDictionary(#add:by:->(RSErasurePlugin>>#add:by: "a
>>> CompiledMethod...etc...
>>> format: 65542
>>> instanceVariables: #('logTable' 'expTable'
>>> 'multiplicationTable')
>>> organization: ('arithmetic' add:by: divide:by: exp:power:
>>> galoisMultiply:by: subtractFrom:by:...etc...
>>> subclasses: {RSErasurePluginSimulator}
>>> name: #RSErasurePlugin
>>> classPool: nil
>>> sharedPools: nil
>>> environment: Smalltalk
>>> category: #CryptographyRSFECPlugin
>>> timeStamp: 3799545237
>>>
>>> RSErasurePlugin class>>declareCVarsIn:
>>> Receiver: RSErasurePlugin
>>> Arguments and temporary variables:
>>> cg: a VMPluginCodeGenerator
>>> Receiver's instance variables:
>>> superclass: InterpreterPlugin
>>> methodDict: a
>>> MethodDictionary(#add:by:->(RSErasurePlugin>>#add:by: "a
>>> CompiledMethod...etc...
>>> format: 65542
>>> instanceVariables: #('logTable' 'expTable'
>>> 'multiplicationTable')
>>> organization: ('arithmetic' add:by: divide:by: exp:power:
>>> galoisMultiply:by: subtractFrom:by:...etc...
>>> subclasses: {RSErasurePluginSimulator}
>>> name: #RSErasurePlugin
>>> classPool: nil
>>> sharedPools: nil
>>> environment: Smalltalk
>>> category: #CryptographyRSFECPlugin
>>> timeStamp: 3799545237
>>>
>>> --
>>> ---
>>> Kindly,
>>> Robert
>>>
>>>