Marcel Taeumel uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-mt.3362.mcz
==================== Summary ====================
Name: VMMaker.oscog-mt.3362 Author: mt Time: 16 April 2024, 6:10:14.519284 pm UUID: b8f74e14-6430-924d-93fb-2fc1cd50ba34 Ancestors: VMMaker.oscog-mt.3361
Minor workarounds for clang18 and Slang code generation: - for COGMTVM, return type for #sqSocketCloseConnection:isPinned: must also be void, not int - #vmHandle must always be void* - nested-inlining seems to be broken for #isDirectAlien:, so expand #isAlien: manually
=============== Diff against VMMaker.oscog-mt.3361 ===============
Item was changed: ----- Method: SocketPlugin>>sqSocketCloseConnection:isPinned: (in category 'simulation') ----- + sqSocketCloseConnection: socketHandleCArray isPinned: isSocketPinned - sqSocketCloseConnection: socketHandleCArray isPinned: isPinned <private> <option: #COGMTVM> <inline: #always> + | handle | + <var: #handle type: #'void *'> + isSocketPinned ifTrue: [handle := interpreterProxy disownVM: DisownVMForThreading]. + self sqSocketCloseConnection: socketHandleCArray. + isSocketPinned ifTrue: [interpreterProxy ownVM: handle].! - | result handle | - isPinned ifTrue: [handle := interpreterProxy disownVM: DisownVMForThreading]. - result := self sqSocketCloseConnection: socketHandleCArray. - isPinned ifTrue: [interpreterProxy ownVM: handle]. - ^ result!
Item was changed: ----- Method: SqueakSSLPlugin>>primitiveConnect (in category 'primitives') ----- primitiveConnect "Primitive. Starts or continues a client handshake using the provided data. Will eventually produce output to be sent to the server. Requires the host name to be set for the session. Returns: > 0 - Number of bytes to be sent to the server 0 - Success. The connection is established. -1 - More input is required. < -1 - Other errors. " | start srcLen dstLen srcOop dstOop handle srcPtr dstPtr result vmHandle canDisown | <var: #srcPtr type: #'char *'> <var: #dstPtr type: #'char *'> + <var: #vmHandle type: #'void *'> <export: true> interpreterProxy methodArgumentCount = 5 ifFalse:[^interpreterProxy primitiveFail]. dstOop := interpreterProxy stackValue: 0. srcLen := interpreterProxy stackIntegerValue: 1. start := interpreterProxy stackIntegerValue: 2. srcOop := interpreterProxy stackValue: 3. handle := interpreterProxy stackIntegerValue: 4. interpreterProxy failed ifTrue:[^nil]. ((start > 0 and:[srcLen >= 0]) and:[(interpreterProxy isBytes: srcOop) and:[(interpreterProxy isBytes: dstOop) and:[(interpreterProxy byteSizeOf: srcOop) >= (start + srcLen - 1)]]]) ifFalse:[^interpreterProxy primitiveFail]. srcPtr := interpreterProxy firstIndexableField: srcOop. dstPtr := interpreterProxy firstIndexableField: dstOop. srcPtr := srcPtr + start - 1. dstLen := interpreterProxy byteSizeOf: dstOop. canDisown := (interpreterProxy isPinned: srcOop) and: [interpreterProxy isPinned: dstOop]. canDisown ifTrue: [vmHandle := interpreterProxy disownVM: DisownVMForThreading]. result := self sqConnectSSL: handle _: srcPtr _: srcLen _: dstPtr _: dstLen.
canDisown ifTrue: [interpreterProxy ownVM: vmHandle]. interpreterProxy failed ifFalse: [interpreterProxy methodReturnInteger: result]!
Item was changed: ----- Method: ThreadedFFIPlugin>>isDirectAlien: (in category 'primitive support') ----- isDirectAlien: oop <inline: #always> + "self assert: (self isAlien: oop). -- nested inlining is ignored for #isAlien:. Expand here." + self assert: (interpreterProxy is: oop KindOfClass: interpreterProxy classAlien). - self assert: (self isAlien: oop). ^(self sizeField: oop) > 0!
vm-dev@lists.squeakfoundation.org