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

commits at source.squeak.org commits at source.squeak.org
Sat Nov 11 02:33:53 UTC 2017


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

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

Name: VMMaker.oscog-eem.2276
Author: eem
Time: 10 November 2017, 6:33:10.564346 pm
UUID: 4ada0ebf-5c79-45d6-a0d4-80660c1b5575
Ancestors: VMMaker.oscog-eem.2275

Simplify flushLog in the logging framework by providing fflush on WriteStream.

Slang: Now that scavengeLog is typed isFunctionalIn: must accept FILE * as an acceptable return type of a functional method.

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

Item was changed:
  ----- Method: TMethod>>isFunctionalIn: (in category 'inlining') -----
  isFunctionalIn: aCodeGen
  	"Answer if the receiver is a functional method. That is, if it
  	 consists of a single return statement of an expression that
  	 contains no other returns, or an assert or flag followed by
  	 such a statement.
  
  	 Answer false for methods with return types other than the simple
  	 integer types to work around bugs in the inliner."
  
  	parseTree statements size = 1 ifFalse:
  		[(parseTree statements size = 2
  		  and: [parseTree statements first isSend
  		  and: [parseTree statements first selector == #flag:
  			or: [(aCodeGen isAssertSelector: parseTree statements first selector)
  				and: [parseTree statements first selector ~~ #asserta:]]]]) ifFalse:
  			[^false]].
  	parseTree statements last isReturn ifFalse:
  		[^false].
  	parseTree statements last expression nodesDo:
  		[ :n | n isReturn ifTrue: [^false]].
  	^#(int #'unsigned int' #long #'unsigned long' #'long long' #'unsigned long long'
  		sqInt usqInt #'sqIntptr_t' #'usqIntptr_t' sqLong usqLong
  		#'int *' #'unsigned int *' #'sqInt *' #'usqInt *' #'sqLong *' #'usqLong *' #'char *'
+ 		#'CogMethod *' #'AbstractInstruction *'
+ 		#'FILE *') includes: returnType!
- 		#'CogMethod *' #'AbstractInstruction *') includes: returnType!

Item was changed:
  ----- Method: VMClass>>flushLog (in category 'printf logging') -----
  flushLog
  	"Log via printf-style format strings.  Subclasses must implement logStream to answer their log stream/file."
  	<inline: #always>
  	self logStream ifNotNil:
+ 		[:s| s fflush]!
- 		[self cCode: [self logStream fflush] inSmalltalk: [self logStream flush]]!

Item was added:
+ ----- Method: WriteStream>>fflush (in category '*VMMaker-logging') -----
+ fflush
+ 	"compatibility to map the stdio fflush(FILE *) routine onto flush"
+ 	self flush!



More information about the Vm-dev mailing list