A new version of VMMaker was added to project The Inbox:
http://source.squeak.org/inbox/VMMaker-bak.362.mcz==================== Summary ====================
Name: VMMaker-bak.362
Author: bak
Time: 24 June 2015, 4:29:56.727 pm
UUID: 5f1bc928-2e95-4784-af79-0d9c1f3fb762
Ancestors: VMMaker-MattSpr.361
generalized primitive simulation in RSqueak
=============== Diff against VMMaker-MattSpr.361 ===============
Item was removed:
- ----- Method: BalloonEngine>>simulateBalloonPrimitive:args: (in category '*VMMaker-InterpreterSimulation') -----
- simulateBalloonPrimitive: aString args: args
- ^ Smalltalk at: #BalloonEngineSimulation ifPresent: [:be |
- be simulatePrimitive: aString receiver: self args: args]!
Item was added:
+ ----- Method: BalloonEngine>>simulatePrimitive:args: (in category '*VMMaker-InterpreterSimulation') -----
+ simulatePrimitive: aString args: args
+ "simulate primitives in RSqueak"
+ | proxy bb |
+ 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 added:
+ ----- Method: BitBlt>>simulatePrimitive:args: (in category '*VMMaker-Interpreter') -----
+ simulatePrimitive: aString args: args
+ "simulate primitives in RSqueak"
+ aString = 'primitiveCopyBits'
+ ifTrue: [^ self copyBitsSimulated].
+ aString = 'primitiveWarpBits'
+ ifTrue: [^ self
+ warpBitsSimulated: (args at: 1)
+ sourceMap: (args at: 2)].
+ ^ InterpreterProxy new primitiveFailFor: 255
+ !
Item was added:
+ ----- Method: SmalltalkImage>>simulatePrimitive:args: (in category '*VMMaker-Interpreter') -----
+ simulatePrimitive: aPrimitive args: args
+ "simulate primitives in RSqueak"
+ "IMAGE_NAME"
+ aPrimitive = 121
+ ifTrue: [^ self getSystemAttribute: 1].
+ "SNAPSHOT"
+ aPrimitive = 97
+ ifTrue: [Smalltalk
+ at: #SystemTracer2
+ ifPresent: [:st | ^ st writeImage: Smalltalk imageName]].
+ "SNAPSHOT_EMBEDDED"
+ aPrimitive = 247
+ ifTrue: [Smalltalk
+ at: #SystemTracer2
+ ifPresent: [:st | ^ st writeImage: Smalltalk imageName]].
+ ^ InterpreterProxy new primitiveFailFor: 255
+ !