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

commits at source.squeak.org commits at source.squeak.org
Thu Mar 15 23:59:19 UTC 2018


Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2359.mcz

==================== Summary ====================

Name: VMMaker.oscog-eem.2359
Author: eem
Time: 15 March 2018, 4:58:47.365471 pm
UUID: b3273e3e-dd9d-4819-a928-7034e1cf412c
Ancestors: VMMaker.oscog-eem.2358

Oops!  Fixed one I missed.

=============== Diff against VMMaker.oscog-eem.2358 ===============

Item was changed:
  ----- Method: MiscPrimitivePlugin>>primitiveTranslateStringWithTable (in category 'primitives') -----
  primitiveTranslateStringWithTable
  	"ByteString (class) translate: aString from: start to: stop table: table"
  	<export: true>
  	| aString start stop table |
  	<var: #table type: #'unsigned char *'>
  	<var: #aString type: #'unsigned char *'>
  	((interpreterProxy isBytes: (interpreterProxy stackValue: 0))
  	and: [(interpreterProxy isIntegerObject: (interpreterProxy stackValue: 1))
  	and: [(interpreterProxy isIntegerObject: (interpreterProxy stackValue: 2))
  	and: [interpreterProxy isBytes: (interpreterProxy stackValue: 3)]]]) ifFalse:
  		[^interpreterProxy primitiveFailFor: PrimErrBadArgument].
  	(interpreterProxy isOopImmutable: (interpreterProxy stackValue: 3)) ifTrue:
  		[^interpreterProxy primitiveFailFor: PrimErrNoModification].
  	aString := interpreterProxy firstIndexableField: (interpreterProxy stackValue: 3).
  	start := interpreterProxy integerValueOf: (interpreterProxy stackValue: 2).
  	stop := interpreterProxy integerValueOf: (interpreterProxy stackValue: 1).
  	table := interpreterProxy firstIndexableField: (interpreterProxy stackValue: 0).
  	(start >= 1 and: [stop <= (interpreterProxy sizeOfSTArrayFromCPrimitive: aString)]) ifFalse:
  		[^interpreterProxy primitiveFailFor: PrimErrBadIndex].
+ 	(interpreterProxy sizeOfSTArrayFromCPrimitive: table) < 256 ifTrue:
+ 		[^interpreterProxy primitiveFailFor: PrimErrBadArgument].
  	start - 1 to: stop - 1 do: [ :i | aString at: i put: (table at: (aString at: i))].
  	interpreterProxy pop: interpreterProxy methodArgumentCount!



More information about the Vm-dev mailing list