All the primitives in the Cog have error codes. Pharo does not write it
explicitly for each primitive, but Pharo could. Knowing why a primitive
failed is very useful. The Cog support over 400 primitives. Do you want to
copy that comment 400 times ? I don't think so. What if one wants to update
that comment, one would need to update all the 400 comments ? That's insane
and very hard to maintain.

It would be nice to update the comment of Object class>>#whatIsAPrimitive
with a paragraph on error code instead, such as the one you wrote.



On Sun, Jun 26, 2016 at 8:00 PM, stepharo <steph...@free.fr> wrote:

> So could we have a nice method comments that I can add to all the
> primitive using this ec?
>
> Proposal:
> https://pharo.fogbugz.com/f/cases/18618/Better-additional-comment-for-primitive-79-error-ec-usage
>
>      "ec is a special temporary variable that holds an error code. In the
> VM primitive, failure is indicated by a variable called primFailCode being
> non-zero. On activating a method with a failing primitive, if the index is
> in bounds of the primitiveFailCodes array in the VMspecialObjectsArray then
> the failure code substitutes the symbol in the primitiveFailCodes array,
> otherwise it supplies the integer value."
>
> Because what I like the most in smalltalk besides live coding is comments.
>
> Stef
>
>
>
>
> Le 22/6/16 à 17:25, Clément Bera a écrit :
>
> It's a special case added a couple year ago to figure out why a primitive
> fail.
>
> It's a special temporary variable that holds an error code. The special
> object array defines a list of error code that the VM can use to explain to
> the programmer why the primitive failed, which are currently symbols.
>
>
>
> On Wed, Jun 22, 2016 at 4:22 PM, Max Leske <maxle...@gmail.com> wrote:
>
>>
>> > On 22 Jun 2016, at 15:59, stepharo < <steph...@free.fr>steph...@free.fr>
>> wrote:
>> >
>> > Hi
>> >
>> > I want to explain where ec is coming.
>> >
>> > I thought that the arguments of pragmas could only be literal and when
>> I see ec it looks like a variable set by the VM
>> >
>> >
>> > newMethod: numberOfBytes header: headerWord
>> >    "Primitive. Answer an instance of me. The number of literals (and
>> other
>> >     information) is specified by the headerWord (see my class comment).
>> >     The first argument specifies the number of fields for bytecodes in
>> the
>> >     method. Fail if either argument is not a SmallInteger, or if
>> numberOfBytes
>> >     is negative, or if memory is low. Once the header of a method is
>> set by
>> >     this primitive, it cannot be changed to change the number of
>> literals.
>> >     Essential. See Object documentation whatIsAPrimitive."
>> >
>> >    <primitive: 79 error: ec>
>> >    ec == #'insufficient object memory' ifTrue:
>> >        [^self handleFailingNewMethod: numberOfBytes header: headerWord].
>> >    ^self primitiveFailed
>> >
>> >
>> > Stef
>> >
>> >
>>
>> That is correct. It’s still a literal though.
>>
>
>
>

Reply via email to