[squeak-dev] The Trunk: Kernel-eem.1210.mcz

commits at source.squeak.org commits at source.squeak.org
Sat Jan 5 00:38:21 UTC 2019


Eliot Miranda uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-eem.1210.mcz

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

Name: Kernel-eem.1210
Author: eem
Time: 4 January 2019, 4:38:17.37951 pm
UUID: d4fc9cd7-ac05-442d-bfe6-8b29ee965a98
Ancestors: Kernel-eem.1209

Have printInstructionsOn: (but not printInstructionsOn:do:, which is used by the explorer) print nested full blocks indented inline, for compatibility with the behavior for embedded blocks.

=============== Diff against Kernel-eem.1209 ===============

Item was changed:
  InstructionClient subclass: #InstructionPrinter
+ 	instanceVariableNames: 'method scanner stream oldPC innerIndents indent printPC indentSpanOfFollowingJump fullBlockRecursionSelector'
- 	instanceVariableNames: 'method scanner stream oldPC innerIndents indent printPC indentSpanOfFollowingJump'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'Kernel-Methods'!
  
  !InstructionPrinter commentStamp: 'md 4/8/2003 12:47' prior: 0!
  My instances can print the object code of a CompiledMethod in symbolic format. They print into an instance variable, stream, and uses oldPC to determine how many bytes to print in the listing. The variable method  is used to hold the method being printed.!

Item was changed:
  ----- Method: InstructionPrinter>>printInstructionsOn: (in category 'initialize-release') -----
  printInstructionsOn: aStream 
  	"Append to the stream, aStream, a description of each bytecode in the
  	 instruction stream."
  	
  	| end |
  	stream := aStream.
  	scanner := InstructionStream on: method.
  	end := method endPC.
  	oldPC := scanner pc.
  	innerIndents := Array new: end withAll: 0.
+ 	fullBlockRecursionSelector := #printInstructionsOn:.
  	[scanner pc <= end] whileTrue:
  		[scanner interpretNextInstructionFor: self]!

Item was changed:
  ----- Method: InstructionPrinter>>pushFullClosure:numCopied: (in category 'printing') -----
  pushFullClosure: aCompiledBlock numCopied: numCopied
  	| literalIndex |
  	literalIndex := method literals identityIndexOf: aCompiledBlock.
  	literalIndex = 0
  		ifTrue:
  			[self print: 'closureNumCopied: ', numCopied printString
  				, ' numArgs: ', aCompiledBlock numArgs printString]
  		ifFalse:
  			[self print: 'pushFullClosure: (self literalAt: ', literalIndex printString,
  						') numCopied: ', numCopied printString,
+ 						' "numArgs: ', aCompiledBlock numArgs printString, '"'].
+ 	
+ 	fullBlockRecursionSelector ifNotNil:
+ 		[(self class on: aCompiledBlock)
+ 			indent: indent + 1;
+ 			perform: fullBlockRecursionSelector with: stream]!
- 						' "numArgs: ', aCompiledBlock numArgs printString, '"']!



More information about the Squeak-dev mailing list