The Trunk: Compiler-eem.155.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: Compiler-eem.155.mcz

commits-2
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!