Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2472.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.2472 Author: eem Time: 23 October 2018, 10:51:47.041242 am UUID: ddfb4678-9bee-48fb-a486-c3f3eede8113 Ancestors: VMMaker.oscog-eem.2471
Simplify two uses of malloc: now that we use the right simulation form for VMClass>>malloc:.
Ronie, if I've broken Lowcode simulation I apologise, and want to work on fixing it (perhaps with you?) but I have no test cases.
=============== Diff against VMMaker.oscog-eem.2471 ===============
Item was changed: ----- Method: InterpreterPrimitives>>cStringOrNullFor: (in category 'primitive support') ----- cStringOrNullFor: oop "Answer either a malloced string with the null-terminated contents of oop if oop is a string, or the null pointer if oop is nil, or fail. It is the client's responsibility to free the string later." <api> <returnTypeC: #'char *'> <inline: false> | isString len cString | <var: 'cString' type: #'char *'> isString := self isInstanceOfClassByteString: oop. isString ifFalse: [oop ~= objectMemory nilObject ifTrue: [self primitiveFailFor: PrimErrBadArgument]. ^0]. len := objectMemory lengthOf: oop. len = 0 ifTrue: [^0]. cString := self malloc: len + 1. cString ifNil: [self primitiveFailFor: PrimErrNoCMemory. ^0]. self memcpy: cString _: (objectMemory firstIndexableField: oop) _: len. + cString at: len put: 0. - cString at: (self cCode: [len] inSmalltalk: [len + 1]) put: 0. ^cString!
Item was changed: ----- Method: StackInterpreter>>setupNativeStack (in category 'initialization') ----- setupNativeStack <option: #LowcodeVM> <var: #theNativeStackMemory type: #'char*'> <var: #theShadowCallStackMemory type: #'char*'> <inline: false> "This initializes an alternate stack that is used by the Lowcode instructions" | nativeStackMemorySize theNativeStackMemory shadowCallStackMemorySize theShadowCallStackMemory| nativeStackMemorySize := self nativeStackSize. + theNativeStackMemory := self malloc: nativeStackMemorySize. - theNativeStackMemory := self - cCode: [self malloc: nativeStackMemorySize ] - inSmalltalk: [CArrayAccessor on: (ByteArray new: self nativeStackSize)]. nativeStackPointer := theNativeStackMemory + nativeStackMemorySize. shadowCallStackMemorySize := self shadowCallStackSize. + theShadowCallStackMemory := self malloc: shadowCallStackMemorySize. + shadowCallStackPointer := theShadowCallStackMemory + shadowCallStackMemorySize! - theShadowCallStackMemory := self - cCode: [self malloc: shadowCallStackMemorySize ] - inSmalltalk: [CArrayAccessor on: (ByteArray new: self shadowCallStackSize)]. - shadowCallStackPointer := theShadowCallStackMemory + shadowCallStackMemorySize.!
vm-dev@lists.squeakfoundation.org