[Vm-dev] VM Maker: VMMaker.oscog-eem.2443.mcz

commits at source.squeak.org commits at source.squeak.org
Wed Sep 19 17:31:36 UTC 2018


Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2443.mcz

==================== Summary ====================

Name: VMMaker.oscog-eem.2443
Author: eem
Time: 19 September 2018, 10:30:59.900508 am
UUID: fe048b98-1f17-4bc2-99ca-13809f5d7c25
Ancestors: VMMaker.oscog-eem.2442

Oops; remember to use isFakeStdinStream, and avoid isKindOf: in a couple of other places.

=============== Diff against VMMaker.oscog-eem.2442 ===============

Item was changed:
  ----- Method: FilePluginSimulator>>sqFile:Read:Into:At: (in category 'simulation') -----
  sqFile: file Read: count Into: byteArrayIndexArg At: startIndex
  	| byteArrayIndex |
  	byteArrayIndex := byteArrayIndexArg asInteger. "Coerces CArray et al correctly"
  	[[startIndex to: startIndex + count - 1 do:
  		[ :i |
  		file atEnd ifTrue:
+ 			[file isFakeStdinStream ifTrue: [file atEnd: false].
- 			[(file isKindOf: FakeStdinStream) ifTrue: [file atEnd: false].
  			 ^i - startIndex].
  		interpreterProxy
  			byteAt: byteArrayIndex + i
+ 			put: (file next ifNil: [file isFakeStdinStream ifTrue: [^0]] ifNotNil: [:c| c asInteger])]]
- 			put: (file next ifNil: [(file isKindOf: FakeStdinStream) ifTrue: [^0]] ifNotNil: [:c| c asInteger])]]
  			on: Error
  			do: [:ex|
+ 				(file isStream and: [file isTranscriptStream]) ifFalse:
+ 					[ex pass].
- 				(file isKindOf: TranscriptStream) ifFalse: [ex pass].
  				^0]]
  		ensure: [self recordStateOf: file].
  	^count!

Item was changed:
  ----- Method: SmartSyntaxPluginTMethod>>recordDeclarationsIn: (in category 'transforming') -----
  recordDeclarationsIn: aCCodeGen
  	"Record C type declarations of the forms
  		<returnTypeC: 'float'>
  		<var: #foo declareC: 'float foo'>
  		<var: #foo type:'float'>
  		<var: #foo as: Class>
  	 or the older, obsolete
  		self returnTypeC: 'float'.
  		self var: #foo declareC: 'float foo'
  		self var: #foo type:'float'.
  		self var: #foo as: Class
  	 and remove the declarations from the method body."
  
  	| newStatements |
  	properties pragmas notEmpty ifTrue:
  		[properties pragmas do:
  			[:pragma|
  			pragma keyword = #var:declareC: ifTrue:
  				[self checkedDeclarationAt: pragma arguments first asString
  					put: pragma arguments last
  					in: aCCodeGen].
  			pragma keyword = #var:type: ifTrue:
  				[| varName varType |
  				varName := pragma arguments first asString.
  				varType := pragma arguments last.
  				varType last = $* ifFalse: [varType := varType, ' '].
  				self checkedDeclarationAt: varName
  					put: varType, varName
  					in: aCCodeGen].
  			 pragma keyword = #var:as: ifTrue:
  				[| theClass |
  				 theClass := Smalltalk at: pragma arguments last name asSymbol ifAbsent: [nil].
+ 				 theClass isBehavior ifFalse:
- 				 (theClass isKindOf: Behavior) ifFalse:
  					[^self error: 'declarator must be a Behavior'].
  				 self checkedDeclarationAt: pragma arguments first value asString 
  					put: (theClass ccgDeclareCForVar: pragma arguments first asString)
  					in: aCCodeGen].
  			pragma keyword = #returnTypeC: ifTrue:
  				[self returnType: pragma arguments last].
  			pragma keyword = #doNotGenerate: ifTrue:
  				[locals removeKey: pragma arguments last]].
  		^self].
  	newStatements := OrderedCollection new: parseTree statements size.
  	parseTree statements do: 
  		[:stmt | | isDeclaration |
  		 isDeclaration := false.
  		 stmt isSend ifTrue: 
  			[stmt selector = #var:declareC: ifTrue:
  				[isDeclaration := true.
  				self declarationAt: stmt args first value asString put: stmt args last value].
  			stmt selector = #var:type: ifTrue: [
  				| varName varType |
  				isDeclaration := true.
  				varName := stmt args first value asString.
  				varType := stmt args last value.
  				varType last = $* ifFalse: [varType := varType, ' '].
  				self declarationAt: varName put: varType, varName.
  			].
  			 stmt selector = #var:as: ifTrue:
  				[| theClass |
  				 isDeclaration := true.
  				 theClass := Smalltalk  at: stmt args last name asSymbol ifAbsent: [nil].
+ 				 theClass isBehavior ifFalse:
- 				 (theClass isKindOf: Behavior) ifFalse:
  					[^self error: 'declarator must be a Behavior'].
  				 self declarationAt: stmt args first value asString 
  					put: (theClass ccgDeclareCForVar: stmt args first value asString)].
  			 stmt selector = #returnTypeC: ifTrue: 
  				[isDeclaration := true.
  				 returnType := stmt args last value]].
  		 isDeclaration ifFalse: [newStatements add: stmt]].
  	parseTree setStatements: newStatements asArray!

Item was added:
+ ----- Method: Stream>>isTranscriptStream (in category '*VMMaker-JITSimulation-testing') -----
+ isTranscriptStream
+ 	^false!

Item was added:
+ ----- Method: TranscriptStream>>isTranscriptStream (in category '*VMMaker-JITSimulation-testing') -----
+ isTranscriptStream
+ 	^true!



More information about the Vm-dev mailing list