There are 28 users of primitive:error: not 400.

So where can I find the others? Do you know if whatIsAPrimitive description is up to date?

Stef


Le 26/6/16 à 21:00, Clément Bera a écrit :
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 <[email protected] <mailto:[email protected]>> 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 <[email protected]
    <mailto:[email protected]>> wrote:


        > On 22 Jun 2016, at 15:59, stepharo <[email protected]
        <mailto:[email protected]>> 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