'From Croquet1.0beta of 11 April 2006 [latest update: #1] on 6 August 2008 at 12:53:02 pm'! !AssignmentNode methodsFor: 'code generation' stamp: 'eem 6/4/2008 11:26'! emitForEffect: stack on: aStream variable emitLoad: stack on: aStream. value emitForValue: stack on: aStream. pc := aStream position + 1. "debug pc is first byte of the store". variable emitStorePop: stack on: aStream! ! !AssignmentNode methodsFor: 'code generation' stamp: 'eem 6/4/2008 11:26'! emitForValue: stack on: aStream variable emitLoad: stack on: aStream. value emitForValue: stack on: aStream. pc := aStream position + 1. "debug pc is first byte of the store" variable emitStore: stack on: aStream! ! !MessageNode methodsFor: 'code generation' stamp: 'eem 7/29/2008 20:44'! emitForValue: stack on: strm "For #ifTrue:ifFalse: and #whileTrue: / #whileFalse: style messages, the pc is set to the jump instruction, so that mustBeBoolean exceptions can be shown correctly." special > 0 ifTrue: [pc := 0. self perform: (MacroEmitters at: special) with: stack with: strm with: true] ifFalse: [receiver ~~ nil ifTrue: [receiver emitForValue: stack on: strm]. arguments do: [:argument | argument emitForValue: stack on: strm]. pc := strm position + 1. "debug pc is first byte of the send, i.e. the next byte". selector emit: stack args: arguments size on: strm super: receiver == NodeSuper]! !