<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<p>I consolidated the RS Plugins into 1 RSPlugin class. Here is the
new load script:</p>
<blockquote>
<p>Installer ss<br/>
project: 'Cryptography';<br/>
install: 'ProCrypto-1-1-1';<br/>
install: 'ProCryptoTests-1-1-1';<br/>
install: 'CryptographyRSPlugin'.<br/>
</p>
</blockquote>
<p><br/>
</p>
<div class="moz-signature">---<br/>
Kindly,<br/>
Robert<br/>
<br/>
<br/>
</div>
<div class="moz-cite-prefix">On 6/4/21 2:51 PM, Robert Withers
wrote:<br/>
</div>
<blockquote type="cite" cite="mid:453fd624-25c7-8052-0da3-05457d9862d1@pm.me">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<p>Hi Levente,</p>
<p>I hope you are having a great day! Are you in Budapest? That
must be awesome! A very old city.</p>
<p>I thought I would post the Squeak code for this instantiatePoly
primitive. My image still blows up on startUp:. I am grateful
you have guided me through this!<br/>
</p>
<blockquote>
<p>primitiveInitializePolyFieldSizeCoefficients<br/>
<br/>
<export: true><br/>
<var: 'coefficients' type: 'unsigned char*' ><br/>
<br/>
| coefficients count coefficientsOop fieldSize result |<br/>
interpreterProxy methodArgumentCount = 2<br/>
ifFalse: [ ^interpreterProxy primitiveFailFor:
PrimErrBadNumArgs ].<br/>
fieldSize := interpreterProxy stackIntegerValue: 1.<br/>
coefficientsOop := interpreterProxy stackObjectValue: 0.<br/>
<br/>
(interpreterProxy isIntegerValue: fieldSize)<br/>
ifFalse: [ ^interpreterProxy primitiveFailFor:
PrimErrBadArgument ].<br/>
(interpreterProxy isBytes: coefficientsOop) <br/>
ifFalse: [ ^interpreterProxy primitiveFailFor:
PrimErrBadArgument ].<br/>
count := interpreterProxy stSizeOf: coefficientsOop.<br/>
coefficients := interpreterProxy firstIndexableField:
coefficientsOop.<br/>
<br/>
(count = 0)<br/>
ifTrue: [ ^interpreterProxy primitiveFailFor:
PrimErrBadArgument ].<br/>
<br/>
result := self <br/>
initializePolyFieldSize: fieldSize <br/>
coefficients: coefficients <br/>
coefficientsCount: count.<br/>
<br/>
^ interpreterProxy failed<br/>
ifTrue: [interpreterProxy primitiveFail]<br/>
ifFalse: [interpreterProxy methodReturnValue:
result].</p>
</blockquote>
<p>Which is calling:</p>
<blockquote>
<p>initializePolyFieldSize: fieldSize coefficients: coefficients
coefficientsCount: coefficientsCount<br/>
<br/>
<var: 'coefficients' type: #'unsigned char*'><br/>
<br/>
| coefficientsLength firstNonZero mutableCoefficients |<br/>
mutableCoefficients := coefficients.<br/>
coefficientsLength := coefficientsCount.<br/>
((coefficientsLength > 1) & ((coefficients at: 1) =
0))<br/>
ifTrue: [<br/>
firstNonZero := 2.<br/>
[(firstNonZero <= coefficientsLength) and:
[(mutableCoefficients at: firstNonZero) = 0]]<br/>
whileTrue: [firstNonZero := firstNonZero + 1].<br/>
(firstNonZero > coefficientsLength)<br/>
ifTrue: [<br/>
mutableCoefficients :=
interpreterProxy<br/>
instantiateClass: interpreterProxy
classByteArray<br/>
indexableSize: 1]<br/>
ifFalse: [<br/>
mutableCoefficients :=
interpreterProxy<br/>
instantiateClass: interpreterProxy
classByteArray<br/>
indexableSize: (coefficientsLength
- firstNonZero + 1).<br/>
0 to: (coefficientsLength - 1)<br/>
do: [:index |<br/>
coefficients at: index put:
(mutableCoefficients at: index)]]].<br/>
^ mutableCoefficients.</p>
</blockquote>
<p><br/>
</p>
<div class="moz-signature">---<br/>
K<span class="Y2IQFc" lang="hu">öszönöm</span>,<br/>
Robert<br/>
<br/>
<br/>
</div>
<div class="moz-cite-prefix">On 6/4/21 1:38 PM, Robert Withers
wrote:<br/>
</div>
<blockquote type="cite" cite="mid:7fcbbbac-f85c-f8e7-7c48-728bb3142495@pm.me">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<p>I am getting this warning when cross compiling the Squeak
plugin to C code.</p>
<blockquote>
<p>warning, signature of
InterpreterProxy>>instantiateClass:indexableSize: does
not match reference implementation.<br/>
</p>
</blockquote>
<div class="moz-signature">---<br/>
Kindly,<br/>
Robert<br/>
<br/>
<br/>
</div>
<div class="moz-cite-prefix">On 6/4/21 1:21 PM, Robert Withers
wrote:<br/>
</div>
<blockquote type="cite" cite="mid:efd9382f-edae-5651-b786-1c8d7c53c375@pm.me">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<p>Nope, this wasn't it.<br/>
</p>
<div class="moz-signature">---<br/>
Kindly,<br/>
Robert<br/>
<br/>
<br/>
</div>
<div class="moz-cite-prefix">On 6/4/21 12:36 PM, Robert wrote:<br/>
</div>
<blockquote type="cite" cite="mid:n23wnbUwGw2wMIxOOu-mPD8niO5UREKvqUkPrAe9NRseu1S4Ld208KPpZE1ljmxwbiWxMp476bGrC3lMvRYK5g==@protonmail.internalid">
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<div>Oh! Heading for a coffee with my nurse. I realized I
may be passing the field into the primitive instead of the
field size. I’ll check it when I get back home!<caret></caret></div>
<div><br/>
</div>
<div id="protonmail_signature_block" class="protonmail_signature_block">
<div>
<div>Kindly,<br/>
Robert<br/>
. .. ... ‘...^,^ </div>
</div>
</div>
<div><br/>
</div>
<div><br/>
</div>
On Fri, Jun 4, 2021 at 12:12, Robert Withers <<a href="mailto:robert.withers@pm.me" class="" moz-do-not-send="true">robert.withers@pm.me</a>> wrote:
<blockquote class="protonmail_quote" type="cite">
<blockquote> </blockquote>
<pre class="lang-c s-code-block hljs"><code><span class="hljs-function">Oh! I forgot to relocate leaves that have already been plugganized. This leaves (heh) 3 possible plugganizations that all instantiate ByteArrays. Here, I fixed it.</span></code>
<code><span class="hljs-function"></span></code></pre>
<blockquote>
<pre class="lang-c s-code-block hljs"><code><span class="hljs-function">WITH GF & GFPOLY PRIMITIVES AND DECODER <span class="hljs-title">PRIMITIVES</span>
<span class="hljs-params">(<span class="hljs-number">3</span> asterix <span class="hljs-keyword">for</span> in-progress plugganization)
</span> - 22194 tallies, 22648 msec.
</span></code><code><span class="hljs-function">**Leaves**
29.1% </span>{<span class="hljs-number">6586</span>ms} RSFECDecoderWithPlugin>>decode:twoS:
<span class="hljs-number">14.7</span>% {<span class="hljs-number">3329</span>ms} RSFECGenericGFPoly <span class="hljs-class"><span class="hljs-keyword">class</span>></span>>newField:coefficients:
<span class="hljs-number">1.0</span>% {<span class="hljs-number">237</span>ms} RSFECDecoderWithPlugin>>runEuclideanAlgorithmPoly:poly:rDegrees:</code></pre>
</blockquote>
<pre class="lang-c s-code-block hljs"><code></code>Calls to plugganized GF/GFPoly methods, so I think these are as optimized as possible:</pre>
<blockquote>
<pre class="lang-c s-code-block hljs"><code><span class="hljs-number">7.3</span>% {<span class="hljs-number">1646</span>ms} RSFECDecoderWithPlugin>>primFindErrorLocationsDegree:coefficients:result:fieldSize:
<span class="hljs-number">2.9</span>% {<span class="hljs-number">654</span>ms} RSFECDecoderWithPlugin>>findErrorMagnitudes:errorLocations:
<span class="hljs-number"></span></code><code><span class="hljs-number">1.4</span>% {<span class="hljs-number">317</span>ms} RSFECGenericGFWithPlugin>><span class="hljs-built_in">log</span>:
</code></pre>
</blockquote>
<pre class="lang-c s-code-block hljs"><code> </code></pre>
<div class="moz-signature">---<br/>
Kindly,<br/>
Robert<br/>
<br/>
<br/>
</div>
<div class="moz-cite-prefix">On 6/4/21 12:02 PM, Robert
Withers wrote:<br/>
</div>
<blockquote type="cite">
<blockquote>
<pre class="lang-c s-code-block hljs"><code><span class="hljs-function">WITH GF & GFPOLY PRIMITIVES AND DECODER <span class="hljs-title">PRIMITIVES</span>
<span class="hljs-params">(<span class="hljs-number">3</span> asterix <span class="hljs-keyword">for</span> in-progress plugganization)
</span> - 22194 tallies, 22648 msec.
</span></code><code><span class="hljs-function">**Leaves**
29.1% </span>{<span class="hljs-number">6586</span>ms} RSFECDecoderWithPlugin>>decode:twoS:
<span class="hljs-number">14.7</span>% {<span class="hljs-number">3329</span>ms} RSFECGenericGFPoly <span class="hljs-class"><span class="hljs-keyword">class</span>></span>>newField:coefficients:
<span class="hljs-number">7.3</span>% {<span class="hljs-number">1646</span>ms} RSFECDecoderWithPlugin>>primFindErrorLocationsDegree:coefficients:result:fieldSize:
<span class="hljs-number">2.9</span>% {<span class="hljs-number">654</span>ms} RSFECDecoderWithPlugin>>findErrorMagnitudes:errorLocations:
<span class="hljs-number">1.0</span>% {<span class="hljs-number">237</span>ms} RSFECDecoderWithPlugin>>runEuclideanAlgorithmPoly:poly:rDegrees:</code></pre>
</blockquote>
<pre class="lang-c s-code-block hljs"><code></code>Calls to plugganized GF/GFPoly methods:</pre>
<blockquote> <code><span class="hljs-number">1.4</span>%
{<span class="hljs-number">317</span>ms}
RSFECGenericGFWithPlugin>><span class="hljs-built_in">log</span>: </code></blockquote>
</blockquote>
</blockquote>
<div><br/>
</div>
<div><br/>
</div>
</blockquote>
</blockquote>
</blockquote>
</blockquote>
</body></html>