[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