[squeak-dev] The Trunk: Compiler-eem.155.mcz

commits at source.squeak.org commits at source.squeak.org
Sun Aug 15 01:21:20 UTC 2010


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

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

Name: Compiler-eem.155
Author: eem
Time: 14 August 2010, 6:21:02.179 pm
UUID: e1d7ed32-bfbf-47c8-9a5e-8420449259ba
Ancestors: Compiler-eem.154

Fix comment and computation of error temp push in
BytecodeAgnosticMethodNode>>generate:.  Remove
a couple of unused methods.

=============== Diff against Compiler-eem.154 ===============

Item was changed:
  ----- Method: BytecodeAgnosticMethodNode>>generate: (in category 'code generation (new scheme)') -----
  generate: trailer 
  	"The receiver is the root of a parse tree. Answer a CompiledMethod.
+ 	 The argument, trailer, is arbitrary but is typically either the reference
+ 	 to the source code that is stored with every CompiledMethod, or an
+ 	 encoding of the method's temporary names."
- 	 The argument, trailer, is the reference to the source code that is
- 	 stored with every CompiledMethod."
  
  	| primErrNode blkSize nLits literals stack method |
  	self generate: trailer ifQuick:
  			[:m |
  			  m	literalAt: 2 put: encoder associationForClass;
  				properties: properties.
  			^m].
  	primErrNode := self primitiveErrorVariableName ifNotNil:
  						[encoder fixTemp: self primitiveErrorVariableName].
  	encoder supportsClosureOpcodes ifTrue:
  		[self ensureClosureAnalysisDone.
  		 encoder rootNode: self. "this is for BlockNode>>sizeCodeForClosureValue:"].
  	blkSize := (block sizeCodeForEvaluatedValue: encoder)
+ 				+ (primErrNode
+ 					ifNil: [0]
+ 					ifNotNil: [primErrNode sizeCodeForStore: encoder "The VM relies on storeIntoTemp: (129)"]).
- 				+ (primErrNode ifNil: [0] ifNotNil: [2 "We force store-long (129)"]).
  	method := CompiledMethod
  				newBytes: blkSize
  				trailerBytes: trailer 
  				nArgs: arguments size
  				nTemps: (encoder supportsClosureOpcodes
  							ifTrue: [| locals |
  									locals := arguments,
  											  temporaries,
  											  (primErrNode
  												ifNil: [#()]
  												ifNotNil: [{primErrNode}]).
  									encoder
  										noteBlockExtent: block blockExtent
  										hasLocals: locals.
  									locals size]
  							ifFalse: [encoder maxTemp])
  				nStack: 0
  				nLits: (nLits := (literals := encoder allLiterals) size)
  				primitive: primitive.
  	nLits > 255 ifTrue:
  		[^self error: 'Too many literals referenced'].
  	1 to: nLits do: [:lit | method literalAt: lit put: (literals at: lit)].
  	encoder streamToMethod: method.
  	stack := ParseStack new init.
  	primErrNode ifNotNil: [primErrNode emitCodeForStore: stack encoder: encoder].
  	stack position: method numTemps.
  	block emitCodeForEvaluatedValue: stack encoder: encoder.
  	stack position ~= (method numTemps + 1) ifTrue:
  		[^self error: 'Compiler stack discrepancy'].
  	encoder methodStreamPosition ~= (method size - trailer size) ifTrue:
  		[^self error: 'Compiler code size discrepancy'].
  	method needsFrameSize: stack size - method numTemps.
  	method properties: properties.
  	^method!

Item was removed:
- ----- Method: TempVariableNode>>cleanUpForRegeneration (in category 'debugger access') -----
- cleanUpForRegeneration
- 	remoteNode := nil.
- 	definingScope := writingScopes := readingScopes := nil!

Item was removed:
- ----- Method: BytecodeEncoder>>schematicTempNamesOn:blockExtents:fromIndex: (in category 'results') -----
- schematicTempNamesOn: aStream blockExtents: blockExtents fromIndex: startIndex
- 	"Print the locals in the blockExtent startIndex, recursing to print any locals in nested blockExtents.
- 	 Answer the index of the last blockExtent printed."
- 	| blockExtent subsequentIndex |
- 	blockExtent := blockExtents at: startIndex.
- 	((blockExtentsToLocals at: blockExtent) reject: [:local| local isRemote]) do:
- 		[:local|
- 		local isIndirectTempVector
- 			ifTrue: [local remoteTemps do:
- 						[:remoteLocal| aStream nextPut: remoteLocal key]]
- 			ifFalse: [aStream nextPut: local key]].
- 	subsequentIndex := startIndex + 1.
- 	[subsequentIndex <= blockExtents size
- 	 and: [(blockExtents at: subsequentIndex) last < blockExtent last]] whileTrue:
- 		[aStream nextPut: (Array streamContents:
- 				[:nestedTempStream|
- 				subsequentIndex := self schematicTempNamesOn: nestedTempStream
- 										blockExtents: blockExtents
- 										fromIndex: subsequentIndex])].
- 	^subsequentIndex!




More information about the Squeak-dev mailing list