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

commits at source.squeak.org commits at source.squeak.org
Wed Sep 25 07:36:50 UTC 2013


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

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

Name: VMMaker.oscog-eem.411
Author: eem
Time: 25 September 2013, 12:32:01.928 am
UUID: b0984765-98da-4a23-9bf3-abb88371db54
Ancestors: VMMaker.oscog-eem.410

Fix assert in eeInstantiateClassIndex:format:numSlots:.

Bootstrapped Spur image now evaluates 3+4.

Fix assignment of memory in sqGrowMemory:By: in obj mem sims.
Nuke unused methods in interpreter sims (now memory is accessed
only by objectMemory).

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

Item was removed:
- ----- Method: CogVMSimulator>>sqGrowMemory:By: (in category 'memory access') -----
- sqGrowMemory: oldLimit By: delta
- 
- 	transcript show: 'grow memory from ', oldLimit printString, ' by ', delta printString; cr.
- 	objectMemory memory: objectMemory memory , (objectMemory memory class new: delta // 4).
- 	^ objectMemory memory size * 4!

Item was changed:
  ----- Method: NewCoObjectMemorySimulator>>sqGrowMemory:By: (in category 'memory access') -----
  sqGrowMemory: oldLimit By: delta
  	| newMemory |
  	coInterpreter transcript show: 'grow memory from ', oldLimit printString, ' by ', delta printString; cr.
  	memory size * 4 < (oldLimit + delta) ifTrue:
  		[newMemory := (memory class new: oldLimit + delta + 3 // 4).
  		 newMemory replaceFrom: 1 to: memory size with: memory startingAt: 1.
+ 		 memory := newMemory].
- 		 coInterpreter objectMemory memory: (memory := newMemory)].
  	^memory size * 4!

Item was changed:
  ----- Method: NewObjectMemorySimulator>>sqGrowMemory:By: (in category 'memory access') -----
  sqGrowMemory: oldLimit By: delta
  	| newMemory |
  	coInterpreter transcript show: 'grow memory from ', oldLimit printString, ' by ', delta printString; cr.
  	memory size * 4 < (oldLimit + delta) ifTrue:
  		[newMemory := (memory class new: oldLimit + delta + 3 // 4).
  		 newMemory replaceFrom: 1 to: memory size with: memory startingAt: 1.
+ 		 memory := newMemory].
- 		 coInterpreter memory: (memory := newMemory)].
  	^memory size * 4!

Item was changed:
  ----- Method: SpurMemoryManager>>eeInstantiateClassIndex:format:numSlots: (in category 'instantiation') -----
  eeInstantiateClassIndex: knownClassIndex format: objFormat numSlots: numSlots
  	"Instantiate an instance of a compact class.  ee stands for execution engine and
  	 implies that this allocation will *NOT* cause a GC.  N.B. the instantiated object
  	 IS NOT FILLED and must be completed before returning it to Smalltalk. Since this
  	 call is used in routines that do just that we are safe.  Break this rule and die in GC.
  	 Result is guaranteed to be young."
  	<inline: true>
+ 	self assert: (numSlots >= 0 and: [knownClassIndex ~= 0]).
- 	self assert: (numSlots > 0 and: [knownClassIndex ~= 0]).
  	self assert: (objFormat < self firstByteFormat
  					ifTrue: [objFormat]
  					ifFalse: [objFormat bitAnd: self byteFormatMask])
  				= (self instSpecOfClass: (self knownClassAtIndex: knownClassIndex)).
  	^self allocateNewSpaceSlots: numSlots format: objFormat classIndex: knownClassIndex!

Item was changed:
  ----- Method: SpurMemoryManager>>isIntegerObject: (in category 'object testing') -----
  isIntegerObject: oop
  	"This list records the valid senders of isIntegerObject: as we replace uses of
  	  isIntegerObject: by isImmediate: where appropriate."
  	| sel |
  	sel := thisContext sender method selector.
  	(#(	DoIt
  		DoItIn:
  		on:do: "from the debugger"
  		makeBaseFrameFor:
  		quickFetchInteger:ofObject:
  		frameOfMarriedContext:
  		objCouldBeClassObj:
  		isMarriedOrWidowedContext:
  		shortPrint:
  		bytecodePrimAt
  		bytecodePrimAtPut
  		commonAt:
  		commonAtPut:
  		loadFloatOrIntFrom:
  		positive32BitValueOf:
  		primitiveExternalCall
  		checkedIntegerValueOf:
  		bytecodePrimAtPut
  		commonAtPut:
  		primitiveVMParameter
  		checkIsStillMarriedContext:currentFP:
  		displayBitsOf:Left:Top:Right:Bottom:
  		fetchStackPointerOf:
  		primitiveContextAt
  		primitiveContextAtPut
  		subscript:with:storing:format:
  		printContext:
  		compare31or32Bits:equal:
  		signed64BitValueOf:
  		primDigitMultiply:negative:
  		digitLength:
  		isNegativeIntegerValueOf:
  		magnitude64BitValueOf:
  		primitiveMakePoint
  		primitiveAsCharacter
  		primitiveInputSemaphore
  		baseFrameReturn
  		primitiveExternalCall
  		primDigitCompare:
  		isLiveContext:
  		numPointerSlotsOf:
  		fileValueOf:
  		loadBitBltDestForm
  		fetchIntOrFloat:ofObject:ifNil:
  		fetchIntOrFloat:ofObject:
  		loadBitBltSourceForm
  		loadPoint:from:
  		primDigitAdd:
  		primDigitSubtract:
  		positive64BitValueOf:
  		digitBitLogic:with:opIndex:
  		signed32BitValueOf:
  		isNormalized:
  		primDigitDiv:negative:
+ 		bytesOrInt:growTo:
+ 		primitiveNewMethod) includes: sel) ifFalse:
- 		bytesOrInt:growTo:) includes: sel) ifFalse:
  		[self halt].
  	^(oop bitAnd: 1) ~= 0!

Item was changed:
  ----- Method: SpurMemoryManager>>isNonIntegerObject: (in category 'object testing') -----
  isNonIntegerObject: oop
  	"This list records the valid senders of isNonIntegerObject: as we replace uses of
  	  isNonIntegerObject: by isNonImmediate: where appropriate."
+ 	(#(	reverseDisplayFrom:to:
+ 		primitiveObjectAtPut) includes: thisContext sender method selector) ifFalse:
- 	(#(reverseDisplayFrom:to:) includes: thisContext sender method selector) ifFalse:
  		[self halt].
  	^(oop bitAnd: 1) = 0!

Item was removed:
- ----- Method: StackInterpreterSimulator>>sqGrowMemory:By: (in category 'memory access') -----
- sqGrowMemory: oldLimit By: delta
- 
- 	transcript show: 'grow memory from ', oldLimit printString, ' by ', delta printString; cr.
- 	objectMemory memory: objectMemory memory , (objectMemory memory class new: delta // 4).
- 	^ objectMemory memory size * 4!



More information about the Vm-dev mailing list