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 <maxleske@gmail.com> wrote:

> On 22 Jun 2016, at 15:59, stepharo <stepharo@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.