[Vm-dev] VM Maker: VMMaker.oscog-nice.1988.mcz
Eliot Miranda
eliot.miranda at gmail.com
Mon Nov 14 22:53:28 UTC 2016
Hi Nicolas,
also...
On Sun, Nov 13, 2016 at 1:27 AM, <commits at source.squeak.org> wrote:
>
> Nicolas Cellier uploaded a new version of VMMaker to project VM Maker:
> http://source.squeak.org/VMMaker/VMMaker.oscog-nice.1988.mcz
>
> ==================== Summary ====================
>
> Name: VMMaker.oscog-nice.1988
> Author: nice
> Time: 13 November 2016, 10:26:14.021969 am
> UUID: 01ed55f2-205d-441f-b4f6-4a8607b3327d
> Ancestors: VMMaker.oscog-nice.1987
>
> Fix inlining problem of shortPrintContext: - a side effect was eliminated
> on stack flavour.
>
> Fix prototype of unlockSurfaceFn after recent platforms source file
> revision.
>
...
> Item was changed:
> ----- Method: BitBltSimulation>>unlockSurfaces (in category 'surface
> support') -----
> unlockSurfaces
> "Unlock the bits of any OS surfaces."
> "See the comment in lockSurfaces. Similar rules apply. That is,
> the area provided in ioUnlockSurface can be used to determine the dirty
> region after drawing. If a source is unlocked, then the area will be
> (0,0,0,0) to indicate that no portion is dirty."
> | sourceHandle destHandle destLocked fn |
> + <var: #fn declareC:'int (*fn)(int, int, int, int, int)'>
> - <var: #fn declareC:'sqInt (*fn)(sqInt, sqInt, sqInt, sqInt,
> sqInt)'>
> hasSurfaceLock ifTrue:[
> unlockSurfaceFn = 0 ifTrue:[self loadSurfacePlugin
> ifFalse:[^nil]].
> + fn := self cCoerce: unlockSurfaceFn to: 'int (*)(int, int,
> int, int, int)'.
> - fn := self cCoerce: unlockSurfaceFn to: 'sqInt (*)(sqInt,
> sqInt, sqInt, sqInt, sqInt)'.
> destLocked := false.
> destHandle := interpreterProxy fetchPointer: FormBitsIndex
> ofObject: destForm.
> (interpreterProxy isIntegerObject: destHandle) ifTrue:[
> destHandle := interpreterProxy integerValueOf:
> destHandle.
> "The destBits are always assumed to be dirty"
> self cCode:'fn(destHandle, affectedL, affectedT,
> affectedR-affectedL, affectedB-affectedT)'.
> destBits := destPitch := 0.
> destLocked := true.
> ].
> noSource ifFalse:[
> sourceHandle := interpreterProxy fetchPointer:
> FormBitsIndex ofObject: sourceForm.
> (interpreterProxy isIntegerObject: sourceHandle)
> ifTrue:[
> sourceHandle := interpreterProxy
> integerValueOf: sourceHandle.
> "Only unlock sourceHandle if different
> from destHandle"
> (destLocked and:[sourceHandle =
> destHandle])
> ifFalse:[self cCode:
> 'fn(sourceHandle, 0, 0, 0, 0)'].
> sourceBits := sourcePitch := 0.
> ].
> ].
> hasSurfaceLock := false.
> self cCode: [] inSmalltalk:
> [self touch: fn.
> interpreterProxy displayObject = destForm ifTrue:
> [interpreterProxy getDeferDisplayUpdates
> "for some reason this is true..."
> ifTrue:
> [interpreterProxy
> fullDisplayUpdate]
> ifFalse:
> [interpreterProxy
> fullDisplayUpdate]]].
> ].!
>
why are you making the first argument int instead of usqIntptr_t? The
first argument is an arbitrary handle and that means it could be a pointer,
right? And so could be 64-bits, right?
_,,,^..^,,,_
best, Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20161114/cca637f9/attachment.html>
More information about the Vm-dev
mailing list