[Vm-dev] VM Maker: VMMaker.oscog-eem.2347.mcz

Alistair Grant akgrant0710 at gmail.com
Thu Mar 8 15:12:07 UTC 2018


Hi Levente,


On 8 March 2018 at 00:44, Levente Uzonyi <leves at caesar.elte.hu> wrote:
>
> On Wed, 7 Mar 2018, commits at source.squeak.org wrote:
>
>>
>> Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
>> http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2347.mcz
>>
>
> snip
>
>> Item was changed:
>>  ----- Method: FilePlugin>>primitiveConnectToFile (in category 'file
>> primitives') -----
>>  primitiveConnectToFile
>>         "Connect to the file with the supplied FILE* and writeFlag.
>>         FILE* must be supplied in a byte object (ByteArray) with the
>> platform address size.
>>         writeFlag must be a boolean and compatible with the existing file
>> access."
>>         | writeFlag cfileOop cfile filePointer |
>> +       <var: 'cfile' type: #'void *'>
>> -       <var: 'cfile' type: 'void* '>
>>         <export: true>
>> +       writeFlag := interpreterProxy booleanValueOf: (interpreterProxy
>> stackValue: 0).
>> -       writeFlag := interpreterProxy
>> -                               booleanValueOf: (interpreterProxy
>> stackValue: 0).
>
>
> It should be checked here if the primitive has failed or not, shouldn't it?

Yes.  I thought I'd taken care of this, but obviously not.


>>         cfileOop := interpreterProxy stackValue: 1.
>>         cfile := self pointerFrom: cfileOop.
>>         cfile ifNil:
>>                 [^interpreterProxy primitiveFailFor: PrimErrBadArgument].
>>         filePointer := self connectToFile: cfile write: writeFlag.
>>         interpreterProxy failed ifFalse: +              [interpreterProxy
>> pop: 3 "rcvr, name, writeFlag"
>> +                                                       thenPush:
>> filePointer]!
>> -               [^interpreterProxy pop: 3 "rcvr, name, writeFlag"
>> -                                                       thenPush:
>> filePointer].
>> -       ^interpreterProxy primitiveFail.!
>>
>> Item was changed:
>>  ----- Method: FilePlugin>>primitiveConnectToFileDescriptor (in category
>> 'file primitives') -----
>>  primitiveConnectToFileDescriptor
>>         "Connect to the existing file identified by fileDescriptor.
>>         fileDescriptor must be an integer.
>>         writeFlag is aboolean indicating whether to open in read or write
>> mode and must be compatible with the existing file access."
>>         | writeFlag fdPointer fd filePointer |
>> +       <var: 'fd' type: #int>
>> -       <var: 'fd' type: 'int'>
>>         <export: true>
>>         writeFlag := interpreterProxy
>>                                 booleanValueOf: (interpreterProxy
>> stackValue: 0).
>
>
> Same as above.

I'll change both of these.


Thanks,
Alistair


> Levente
>
>
>>         fdPointer := interpreterProxy stackValue: 1.
>>         (interpreterProxy isIntegerObject: fdPointer)
>>                 ifFalse: [^ interpreterProxy primitiveFailFor:
>> PrimErrBadArgument].
>>         fd := interpreterProxy integerValueOf: fdPointer.
>>         filePointer := self connectToFd: fd write: writeFlag.
>> +       interpreterProxy failed ifFalse:
>> +               [interpreterProxy pop: 3 "rcvr, name, writeFlag"
>> +                                                       thenPush:
>> filePointer]!
>> -       interpreterProxy failed
>> -               ifFalse: [^interpreterProxy pop: 3 "rcvr, name, writeFlag"
>> -                       thenPush: filePointer].
>> -       ^interpreterProxy primitiveFail.!


More information about the Vm-dev mailing list