Tim Felgentreff uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-tfel.1706.mcz
==================== Summary ====================
Name: VMMaker.oscog-tfel.1706 Author: tfel Time: 3 March 2016, 5:23:32.478036 pm UUID: 43520f08-911f-47a8-b749-db236fb636f8 Ancestors: VMMaker.oscog-eem.1705
* Don't query Smalltalk globals for the BalloonEngineSimulation - it's always there * Simulate all primitives through BitBlt>>simulatePrimitive:args: * Add a test to make sure that simulating primitiveDisplayString through the InterpreterProxy works * Update InterpreterProxy>>showDisplayBits:Left:Top:Right:Bottom: to honor deferDisplayUpdates (like the generated VM code does) before forcing it to the screen. Needs Graphics-tfel.328
=============== Diff against VMMaker.oscog-eem.1705 ===============
Item was changed: ----- Method: BalloonEngine>>simulatePrimitive:args: (in category '*VMMaker-InterpreterSimulation') ----- simulatePrimitive: aString args: args "simulate primitives in RSqueak" | proxy bb | + proxy := InterpreterProxy new. + proxy synthesizeStackFor: self with: args. + bb := BalloonEngineSimulation simulatorClass new. + bb setInterpreter: proxy. + bb initialiseModule. + "rendering state is loaded in the primitive implementations" + bb perform: aString asSymbol. + ^ proxy stackValue: 0! - Smalltalk - at: #BalloonEngineSimulation - ifPresent: [:be | - proxy := InterpreterProxy new. - proxy synthesizeStackFor: self with: args. - bb := be simulatorClass new. - bb setInterpreter: proxy. - bb initialiseModule. - "rendering state is loaded in the primitive implementations" - bb perform: aString asSymbol. - ^ proxy stackValue: 0].!
Item was changed: ----- Method: BitBlt>>simulatePrimitive:args: (in category '*VMMaker-Interpreter') ----- simulatePrimitive: aString args: args "simulate primitives in RSqueak" + | proxy bb | + proxy := InterpreterProxy new. + proxy synthesizeStackFor: self with: args. + bb := BitBltSimulation simulatorClass new. + bb setInterpreter: proxy. + bb initialiseModule. + "rendering state is loaded in the primitive implementations" + bb perform: aString asSymbol. + ^ proxy stackValue: 0 - aString = 'primitiveCopyBits' - ifTrue: [ - args size = 1 - ifTrue: [^ self copyBitsSimulated: (args at: 1)] - ifFalse: [^ self copyBitsSimulated]]. - aString = 'primitiveWarpBits' - ifTrue: [^ self - warpBitsSimulated: (args at: 1) - sourceMap: (args at: 2)]. - ^ InterpreterProxy new primitiveFailFor: 255 !
Item was added: + ----- Method: BitBltSimulationTest>>testDisplayStringSimulated (in category 'tests') ----- + testDisplayStringSimulated + "self run: #testAlphaCompositingSimulated" + + | bb f1 font | + f1 := Form extent: 1@1 depth: 32. + bb := BitBlt toForm: f1. + bb combinationRule: 15. + bb destX: 1. + bb destY: 1. + bb sourceX: 100. + bb width: 100. + font := TextStyle default fontOfSize: 21. + bb simulatePrimitive: 'primitiveDisplayString' args: {'hello'. 1. 4. font characterToGlyphMap. font xTable. 1}. + !
Item was added: + ----- Method: InterpreterProxy>>byteAtPointer: (in category 'private') ----- + byteAtPointer: accessor + ^ self byteAt: accessor!
Item was changed: ----- Method: InterpreterProxy>>showDisplayBits:Left:Top:Right:Bottom: (in category 'other') ----- showDisplayBits: aForm Left: l Top: t Right: r Bottom: b aForm == Display ifTrue:[ + Display class isDeferringUpdates ifTrue: [^ nil]. Display forceToScreen: (Rectangle left: l right: r top: t bottom: b)].!
vm-dev@lists.squeakfoundation.org