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
<mailto:maxle...@gmail.com>> wrote:
> On 22 Jun 2016, at 15:59, stepharo <steph...@free.fr
<mailto: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.