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

commits at source.squeak.org commits at source.squeak.org
Fri Feb 11 02:14:03 UTC 2022


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

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

Name: VMMaker.oscog-eem.3153
Author: eem
Time: 10 February 2022, 6:13:52.196272 pm
UUID: 30273ce5-072e-48f7-ab75-fd98b697b8e0
Ancestors: VMMaker.oscog-eem.3152

And another. FastCPrimitive => FastCPrimitiveFlag

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

Item was changed:
  ----- Method: DeflatePlugin>>primitiveDeflateUpdateHashTable (in category 'primitives') -----
  primitiveDeflateUpdateHashTable
  	"Primitive. Update the hash tables after data has been moved by delta."
  	<export: true>
+ 	<primitiveMetadata: #(FastCPrimitiveFlag FastCPrimitiveAlignForFloatsFlag)> "Using AlignForFloats since the arithmetic is potentially vectorizable..."
- 	<primitiveMetadata: #(FastCPrimitive FastCPrimitiveAlignForFloatsFlag)> "Using AlignForFloats since the arithmetic is potentially vectorizable..."
  	| delta table tableSize tablePtr entry |
  	<var: #tablePtr type:'int *'>
  	delta := interpreterProxy stackIntegerValue: 0.
  	table := interpreterProxy stackValue: 1.
  	interpreterProxy failed ifTrue:[^nil].
  	(interpreterProxy isWords: table) ifFalse:
  		[^interpreterProxy primitiveFail].
  	tableSize := interpreterProxy slotSizeOf: table.
  	tablePtr := interpreterProxy firstIndexableField: table.
  	0 to: tableSize-1 do:[:i|
  		entry := tablePtr at: i.
  		entry >= delta
  			ifTrue:[tablePtr at: i put: entry - delta]
  			ifFalse:[tablePtr at: i put: 0]].
  	interpreterProxy pop: 2 "Leave rcvr on stack"!

Item was changed:
  ----- Method: DeflatePlugin>>primitiveUpdateAdler32 (in category 'primitives') -----
  primitiveUpdateAdler32
  	"Primitive. Update a 32bit CRC value."
  	<export: true>
+ 	<primitiveMetadata: #(FastCPrimitiveFlag FastCPrimitiveAlignForFloatsFlag)> "Using AlignForFloats since the arithmetic is potentially vectorizable..."
- 	<primitiveMetadata: #(FastCPrimitive FastCPrimitiveAlignForFloatsFlag)> "Using AlignForFloats since the arithmetic is potentially vectorizable..."
  	| collection stopIndex startIndex length bytePtr s1 adler32 s2 b |
  	<var: #adler32 type:'unsigned int '>
  	<var: #bytePtr type:'unsigned char *'>
  	collection := interpreterProxy stackValue: 0.
  	stopIndex := interpreterProxy stackIntegerValue: 1.
  	startIndex := interpreterProxy stackIntegerValue: 2.
  	adler32 := interpreterProxy positive32BitValueOf: (interpreterProxy stackValue: 3).
  	interpreterProxy failed ifTrue: [^nil].
  	((interpreterProxy isBytes: collection) and:[stopIndex >= startIndex and:[startIndex > 0]])
  		ifFalse:[^interpreterProxy primitiveFail].
  	length := interpreterProxy byteSizeOf: collection.
  	(stopIndex <= length) ifFalse:[^interpreterProxy primitiveFail].
  	bytePtr := interpreterProxy firstIndexableField: collection.
  	startIndex := startIndex - 1.
  	stopIndex := stopIndex - 1.
  	s1 := adler32 bitAnd: 16rFFFF.
  	s2 := adler32 >> 16 bitAnd: 16rFFFF.
  	startIndex to: stopIndex do:[:i|
  		b := bytePtr at: i.
  		s1 := (s1 + b) \\ 65521.
  		s2 := (s2 + s1) \\ 65521.
  	].
  	adler32 := (s2 bitShift: 16) + s1.
  	interpreterProxy methodReturnValue: (interpreterProxy positive32BitIntegerFor: adler32)!

Item was changed:
  ----- Method: DeflatePlugin>>primitiveUpdateGZipCrc32 (in category 'primitives') -----
  primitiveUpdateGZipCrc32
  	"Primitive. Update a 32bit CRC value."
  	<export: true>
+ 	<primitiveMetadata: #(FastCPrimitiveFlag FastCPrimitiveAlignForFloatsFlag)> "Using AlignForFloats since the arithmetic is potentially vectorizable..."
- 	<primitiveMetadata: #(FastCPrimitive FastCPrimitiveAlignForFloatsFlag)> "Using AlignForFloats since the arithmetic is potentially vectorizable..."
  	| collection stopIndex startIndex crc length bytePtr |
  	<var: #bytePtr type: #'unsigned char *'>
  	collection := interpreterProxy stackValue: 0.
  	stopIndex := interpreterProxy stackIntegerValue: 1.
  	startIndex := interpreterProxy stackIntegerValue: 2.
  	crc := interpreterProxy positive32BitValueOf: (interpreterProxy stackValue: 3).
  	interpreterProxy failed ifTrue: [^self].
  	((interpreterProxy isBytes: collection) and:[stopIndex >= startIndex and:[startIndex > 0]])
  		ifFalse:[^interpreterProxy primitiveFail].
  	length := interpreterProxy byteSizeOf: collection.
  	(stopIndex <= length) ifFalse:[^interpreterProxy primitiveFail].
  	bytePtr := interpreterProxy firstIndexableField: collection.
  	self cCode:'' inSmalltalk:[zipCrcTable := CArrayAccessor on: GZipWriteStream crcTable].
  	startIndex := startIndex - 1.
  	stopIndex := stopIndex - 1.
  	startIndex to: stopIndex do:
  		[:i|
  		crc := (zipCrcTable at: ((crc bitXor: (bytePtr at: i)) bitAnd: 255)) bitXor: crc >> 8].
  	interpreterProxy methodReturnValue: (interpreterProxy positive32BitIntegerFor: crc)!



More information about the Vm-dev mailing list