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

commits at source.squeak.org commits at source.squeak.org
Mon Dec 9 23:10:45 UTC 2019


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

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

Name: VMMaker.oscog-eem.2600
Author: eem
Time: 9 December 2019, 3:10:33.106179 pm
UUID: d5e3e512-d468-4f2e-a4c8-24965edc01c4
Ancestors: VMMaker.oscog-eem.2599

InImageCompilation: use a larger memory and fix addressIsInCurrentCompilation: so that in-image compilation is less likely to mistake a high address for a pc-relative address.

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

Item was changed:
  ----- Method: Cogit>>addressIsInCurrentCompilation: (in category 'testing') -----
  addressIsInCurrentCompilation: address
  	<inline: true>
  	^address asUnsignedInteger >= methodLabel address
+ 	  and: [address asUnsignedInteger < (methodZone youngReferrers min: methodLabel address + MaxMethodSize)]!
- 	  and: [address asUnsignedInteger < methodZone youngReferrers]!

Item was changed:
  ----- Method: CurrentImageCoInterpreterFacade>>cogCodeSize (in category 'accessing') -----
  cogCodeSize
+ 	^self startOfMemory!
- 	^memory byteSize / 4!

Item was changed:
  ----- Method: CurrentImageCoInterpreterFacade>>initialize (in category 'initialize-release') -----
  initialize
  	objectMemory := self class objectMemoryClass simulatorClass new.
+ 	objectMemory allocateMemoryOfSize: 4*1024*1024.
- 	objectMemory allocateMemoryOfSize: 1024*1024.
  	memory := objectMemory memory.
  	objectMemory
  		initializeFreeSpaceForFacadeFrom: self startOfMemory
  		to: self variablesBase.
  	coInterpreter := CoInterpreter new.
  	coInterpreter
  		instVarNamed: 'objectMemory'
  			put: objectMemory;
  		instVarNamed: 'primitiveTable'
  			put: (CArrayAccessor on: CoInterpreter primitiveTable copy).
  	variables := Dictionary new!

Item was changed:
  ----- Method: CurrentImageCoInterpreterFacade>>methodCacheAddress (in category 'accessing') -----
  methodCacheAddress
+ 	"Use the top half of memory for variables, method cache and rumpCStack,
- 	"Use the top half of memory for variables, methodcache and rumpCStack,
  	 and the bottom half for allocating code and objects:
  
+ 		0Mb to 1Mb		code zone
+ 		1Mb to 2Mb		object zone
+ 		2Mb to 3Mb		variables
+ 		3Mb to 4Mb - 1k	method cache
+ 		4Mb - 1k to 4Mb	rump C stack"
- 		0 - 256k:			code zone
- 		256k to 512k		object zone
- 		512k to 768k		variables
- 		768k to 1023k		method cache
- 		 1023k to 1024k	rump C stack"
  	^memory byteSize * 3 / 4!

Item was changed:
  ----- Method: CurrentImageCoInterpreterFacade>>rumpCStackAddress (in category 'accessing') -----
  rumpCStackAddress
+ 	"Use the top half of memory for variables, method cache and rumpCStack,
- 	"Use the top half of memory for variables, methodcache and rumpCStack,
  	 and the bottom half for allocating code and objects:
  
+ 		0Mb to 1Mb		code zone
+ 		1Mb to 2Mb		object zone
+ 		2Mb to 3Mb		variables
+ 		3Mb to 4Mb - 1k	method cache
+ 		4Mb - 1k to 4Mb	rump C stack"
- 		0 - 256k:			code zone
- 		256k to 512k		object zone
- 		512k to 768k		variables
- 		768k to 1023k		method cache
- 		 1023k to 1024k	rump C stack"
  	^memory byteSize - 1024!

Item was changed:
  ----- Method: CurrentImageCoInterpreterFacade>>startOfMemory (in category 'accessing') -----
  startOfMemory
+ 	"Use the top half of memory for variables, method cache and rumpCStack,
- 	"Use the top half of memory for variables, methodcache and rumpCStack,
  	 and the bottom half for allocating code and objects:
  
+ 		0Mb to 1Mb		code zone
+ 		1Mb to 2Mb		object zone
+ 		2Mb to 3Mb		variables
+ 		3Mb to 4Mb - 1k	method cache
+ 		4Mb - 1k to 4Mb	rump C stack"
+ 	self assert: memory byteSize = (4 * 1024 * 1024).
- 		0 - 256k:			code zone
- 		256k to 512k		object zone
- 		512k to 768k		variables
- 		768k to 1023k		method cache
- 		 1023k to 1024k	rump C stack"
  	^memory byteSize / 4!

Item was changed:
  ----- Method: CurrentImageCoInterpreterFacade>>variablesBase (in category 'private') -----
  variablesBase
+ 	"Use the top half of memory for variables, method cache and rumpCStack,
+ 	 and the bottom half for allocating code and objects:
- 	"Use the top half of memory for variables, methodcache and rumpCStack, and the bottom half for allocating code and objects:
  
+ 		0Mb to 1Mb		code zone
+ 		1Mb to 2Mb		object zone
+ 		2Mb to 3Mb		variables
+ 		3Mb to 4Mb - 1k	method cache
+ 		4Mb - 1k to 4Mb	rump C stack"
- 		0 - 256k:			code zone
- 		256k to 512k		object zone
- 		512k to 768k		variables
- 		768k to 1023k		method cache
- 		 1023k to 1024k	rump C stack"
  	^memory byteSize / 2!



More information about the Vm-dev mailing list